Kernel: Shell is no longer singleton

This commit is contained in:
Bananymous 2023-01-16 15:16:39 +02:00
parent 1545850be3
commit 8881c1e117
3 changed files with 6 additions and 24 deletions

View File

@ -11,17 +11,12 @@ namespace Kernel
class Shell
{
public:
Shell(TTY*);
Shell(const Shell&) = delete;
static Shell& Get();
void SetTTY(TTY* tty);
void SetPrompt(BAN::StringView);
void Run();
private:
Shell();
void ReRenderBuffer() const;
void ProcessCommand(const BAN::Vector<BAN::StringView>&);
void KeyEventCallback(Input::KeyEvent);

View File

@ -18,7 +18,7 @@ namespace Kernel
{
using namespace BAN;
static Shell* s_instance = nullptr;
static auto s_default_prompt = "\\[\e[32m\\]user\\[\e[m\\]# "_sv;
static uint8_t s_pointer[] {
________,
@ -39,18 +39,12 @@ namespace Kernel
X_______,
};
Shell& Shell::Get()
Shell::Shell(TTY* tty)
: m_tty(tty)
{
if (!s_instance)
s_instance = new Shell();
return *s_instance;
}
Shell::Shell()
{
SetPrompt("\\[\e[32m\\]user\\[\e[m\\]# "_sv);
Input::register_key_event_callback({ &Shell::KeyEventCallback, this });
Input::register_mouse_move_event_callback({ &Shell::MouseMoveEventCallback, this });
SetPrompt(s_default_prompt);
MUST(m_buffer.PushBack(""_sv));
}
@ -78,14 +72,8 @@ namespace Kernel
}
}
void Shell::SetTTY(TTY* tty)
{
m_tty = tty;
}
void Shell::Run()
{
ASSERT(m_tty);
TTY_PRINT("{}", m_prompt);
for (;;)
{

View File

@ -95,8 +95,7 @@ extern "C" void kernel_main()
kprintln("Hello from the kernel!");
auto& shell = Kernel::Shell::Get();
shell.SetTTY(tty1);
Kernel::Shell shell(tty1);
shell.Run();
for (;;)