Compare commits
No commits in common. "57947fb5ddcd59aeccd262527371a1cd845da029" and "f01b447af45fe74cacc216acbd190b33c2b1ca5b" have entirely different histories.
57947fb5dd
...
f01b447af4
|
@ -45,8 +45,6 @@ class Vector {
|
||||||
template <typename... Args>
|
template <typename... Args>
|
||||||
void EmplaceBack(Args&&... args);
|
void EmplaceBack(Args&&... args);
|
||||||
|
|
||||||
T&& PopBack();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
T* data_;
|
T* data_;
|
||||||
uint64_t size_;
|
uint64_t size_;
|
||||||
|
@ -121,12 +119,6 @@ void Vector<T>::EmplaceBack(Args&&... args) {
|
||||||
data_[size_++] = T(args...);
|
data_[size_++] = T(args...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
T&& Vector<T>::PopBack() {
|
|
||||||
size_--;
|
|
||||||
return glcr::Move(data_[size_]);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void Vector<T>::Expand() {
|
void Vector<T>::Expand() {
|
||||||
uint64_t new_capacity = capacity_ == 0 ? 1 : capacity_ * 2;
|
uint64_t new_capacity = capacity_ == 0 ? 1 : capacity_ * 2;
|
||||||
|
|
|
@ -19,14 +19,6 @@ void VariableStringBuilder::PushBack(const StringView& str) {
|
||||||
|
|
||||||
void VariableStringBuilder::PushBack(const char str) { data_.PushBack(str); }
|
void VariableStringBuilder::PushBack(const char str) { data_.PushBack(str); }
|
||||||
|
|
||||||
void VariableStringBuilder::DeleteLast() {
|
|
||||||
if (data_.size() > 0) {
|
|
||||||
data_.PopBack();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void VariableStringBuilder::Reset() { data_ = glcr::Vector<char>(); }
|
|
||||||
|
|
||||||
String VariableStringBuilder::ToString() const {
|
String VariableStringBuilder::ToString() const {
|
||||||
return String(data_.RawPtr(), size());
|
return String(data_.RawPtr(), size());
|
||||||
}
|
}
|
||||||
|
@ -58,12 +50,4 @@ FixedStringBuilder::operator StringView() const {
|
||||||
return StringView(buffer_, size_);
|
return StringView(buffer_, size_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FixedStringBuilder::DeleteLast() {
|
|
||||||
if (size_ > 0) {
|
|
||||||
size_--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FixedStringBuilder::Reset() { size_ = 0; }
|
|
||||||
|
|
||||||
} // namespace glcr
|
} // namespace glcr
|
||||||
|
|
|
@ -12,9 +12,6 @@ class StringBuilder {
|
||||||
virtual void PushBack(const StringView& str) = 0;
|
virtual void PushBack(const StringView& str) = 0;
|
||||||
virtual void PushBack(const char str) = 0;
|
virtual void PushBack(const char str) = 0;
|
||||||
|
|
||||||
virtual void DeleteLast() = 0;
|
|
||||||
virtual void Reset() = 0;
|
|
||||||
|
|
||||||
virtual String ToString() const = 0;
|
virtual String ToString() const = 0;
|
||||||
|
|
||||||
virtual operator StringView() const = 0;
|
virtual operator StringView() const = 0;
|
||||||
|
@ -33,9 +30,6 @@ class VariableStringBuilder : public StringBuilder {
|
||||||
virtual void PushBack(const StringView& str) override;
|
virtual void PushBack(const StringView& str) override;
|
||||||
virtual void PushBack(const char str) override;
|
virtual void PushBack(const char str) override;
|
||||||
|
|
||||||
virtual void DeleteLast() override;
|
|
||||||
virtual void Reset() override;
|
|
||||||
|
|
||||||
virtual String ToString() const override;
|
virtual String ToString() const override;
|
||||||
|
|
||||||
// Note that this could become invalidated
|
// Note that this could become invalidated
|
||||||
|
@ -62,9 +56,6 @@ class FixedStringBuilder : public StringBuilder {
|
||||||
virtual void PushBack(const StringView& str) override;
|
virtual void PushBack(const StringView& str) override;
|
||||||
virtual void PushBack(const char str) override;
|
virtual void PushBack(const char str) override;
|
||||||
|
|
||||||
virtual void DeleteLast() override;
|
|
||||||
virtual void Reset() override;
|
|
||||||
|
|
||||||
virtual String ToString() const override;
|
virtual String ToString() const override;
|
||||||
|
|
||||||
virtual operator StringView() const override;
|
virtual operator StringView() const override;
|
||||||
|
|
|
@ -102,8 +102,6 @@ void KeyboardListenerBase::HandleKeycode(Keycode code, Action action) {
|
||||||
c = ' ';
|
c = ' ';
|
||||||
} else if (code == kTab) {
|
} else if (code == kTab) {
|
||||||
c = '\t';
|
c = '\t';
|
||||||
} else if (code == kBackspace) {
|
|
||||||
c = '\b';
|
|
||||||
} else if (code == kLShift) {
|
} else if (code == kLShift) {
|
||||||
lshift_ = true;
|
lshift_ = true;
|
||||||
} else if (code == kRShift) {
|
} else if (code == kRShift) {
|
||||||
|
|
|
@ -2,7 +2,7 @@ add_executable(teton
|
||||||
framebuffer/console.cpp
|
framebuffer/console.cpp
|
||||||
framebuffer/framebuffer.cpp
|
framebuffer/framebuffer.cpp
|
||||||
framebuffer/psf.cpp
|
framebuffer/psf.cpp
|
||||||
terminal.cpp
|
keyboard_listener.cpp
|
||||||
teton.cpp
|
teton.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -7,16 +7,6 @@ void Console::WriteChar(char c) {
|
||||||
CursorReturn();
|
CursorReturn();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (c == '\t') {
|
|
||||||
WriteString(" ");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (c == '\b') {
|
|
||||||
cursor_pos_--;
|
|
||||||
WriteChar(' ');
|
|
||||||
cursor_pos_--;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t row = cursor_pos_ / cols();
|
uint64_t row = cursor_pos_ / cols();
|
||||||
if (row >= rows()) {
|
if (row >= rows()) {
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
#include "keyboard_listener.h"
|
||||||
|
|
||||||
|
void KeyboardListener::HandleCharacter(char c) { console_.WriteChar(c); }
|
|
@ -0,0 +1,12 @@
|
||||||
|
#include <mammoth/input/keyboard.h>
|
||||||
|
|
||||||
|
#include "framebuffer/console.h"
|
||||||
|
|
||||||
|
class KeyboardListener : public mmth::KeyboardListenerBase {
|
||||||
|
public:
|
||||||
|
KeyboardListener(Console& c) : mmth::KeyboardListenerBase(), console_(c) {}
|
||||||
|
virtual void HandleCharacter(char c) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
Console& console_;
|
||||||
|
};
|
|
@ -1,26 +0,0 @@
|
||||||
#include "terminal.h"
|
|
||||||
|
|
||||||
void Terminal::HandleCharacter(char c) {
|
|
||||||
console_.WriteChar(c);
|
|
||||||
if (c == '\n') {
|
|
||||||
glcr::String str = current_command_.ToString();
|
|
||||||
ExecuteCommand(str);
|
|
||||||
current_command_.Reset();
|
|
||||||
} else if (c == '\b') {
|
|
||||||
current_command_.DeleteLast();
|
|
||||||
} else {
|
|
||||||
current_command_.PushBack(c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Terminal::ExecuteCommand(const glcr::String& command) {
|
|
||||||
if (command == "cwd") {
|
|
||||||
console_.WriteString(cwd_);
|
|
||||||
console_.WriteChar('\n');
|
|
||||||
} else {
|
|
||||||
console_.WriteString("Unknown command: ");
|
|
||||||
console_.WriteString(command);
|
|
||||||
console_.WriteChar('\n');
|
|
||||||
}
|
|
||||||
console_.WriteChar('>');
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
#include <glacier/string/string_builder.h>
|
|
||||||
#include <mammoth/input/keyboard.h>
|
|
||||||
|
|
||||||
#include "framebuffer/console.h"
|
|
||||||
|
|
||||||
class Terminal : public mmth::KeyboardListenerBase {
|
|
||||||
public:
|
|
||||||
Terminal(Console& c) : mmth::KeyboardListenerBase(), console_(c) {}
|
|
||||||
|
|
||||||
virtual void HandleCharacter(char c) override;
|
|
||||||
|
|
||||||
void ExecuteCommand(const glcr::String& command);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Console& console_;
|
|
||||||
glcr::VariableStringBuilder current_command_;
|
|
||||||
|
|
||||||
glcr::String cwd_ = "/";
|
|
||||||
};
|
|
|
@ -7,7 +7,7 @@
|
||||||
#include "framebuffer/console.h"
|
#include "framebuffer/console.h"
|
||||||
#include "framebuffer/framebuffer.h"
|
#include "framebuffer/framebuffer.h"
|
||||||
#include "framebuffer/psf.h"
|
#include "framebuffer/psf.h"
|
||||||
#include "terminal.h"
|
#include "keyboard_listener.h"
|
||||||
|
|
||||||
uint64_t main(uint64_t init_port) {
|
uint64_t main(uint64_t init_port) {
|
||||||
ParseInitPort(init_port);
|
ParseInitPort(init_port);
|
||||||
|
@ -34,10 +34,10 @@ uint64_t main(uint64_t init_port) {
|
||||||
Console console(fbuf, psf);
|
Console console(fbuf, psf);
|
||||||
console.WriteChar('>');
|
console.WriteChar('>');
|
||||||
|
|
||||||
Terminal terminal(console);
|
KeyboardListener listener(console);
|
||||||
terminal.Register();
|
listener.Register();
|
||||||
|
|
||||||
Thread lthread = terminal.Listen();
|
Thread lthread = listener.Listen();
|
||||||
|
|
||||||
check(lthread.Join());
|
check(lthread.Join());
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue