diff options
author | Alexis211 <alexis211@gmail.com> | 2009-10-20 18:10:29 +0200 |
---|---|---|
committer | Alexis211 <alexis211@gmail.com> | 2009-10-20 18:10:29 +0200 |
commit | 866580161b826443bed3862b8315cefd505de37c (patch) | |
tree | 23c3f87fe43d82c47af01c908d8a056785f9217f /Source/Kernel/VTManager | |
parent | 0cca2d68451849b5ea96a3620566fd0b42dde3c0 (diff) | |
download | Melon-866580161b826443bed3862b8315cefd505de37c.tar.gz Melon-866580161b826443bed3862b8315cefd505de37c.zip |
We now have call tables for ressources.
instead of adding calls to ressource in the constructor.
Diffstat (limited to 'Source/Kernel/VTManager')
-rw-r--r-- | Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp | 30 | ||||
-rw-r--r-- | Source/Kernel/VTManager/VirtualTerminal.proto.cpp | 20 | ||||
-rw-r--r-- | Source/Kernel/VTManager/VirtualTerminal.proto.h | 5 |
3 files changed, 44 insertions, 11 deletions
diff --git a/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp b/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp index e0c6e8d..0a4e14b 100644 --- a/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp +++ b/Source/Kernel/VTManager/VirtualTerminal-sc.proto.cpp @@ -5,17 +5,18 @@ u32int VirtualTerminal::writeHexSC(u32int number) { return 0; } -u32int VirtualTerminal::writeSC(u32int wat) { - write(String::unserialize(wat)); - return 0; -} - u32int VirtualTerminal::writeDecSC(u32int n_hi, u32int n_lo) { s64int n = ((u64int)n_hi << 32) | n_lo; writeDec(n); return 0; } +u32int VirtualTerminal::writeSC(u32int wat) { + String *s = (String*)wat; + write(*s); + return 0; +} + u32int VirtualTerminal::putSC(u32int code) { put(WChar(code)); return 0; @@ -24,3 +25,22 @@ u32int VirtualTerminal::putSC(u32int code) { u32int VirtualTerminal::readLineSC() { return readLine().serialize(); } + +u32int VirtualTerminal::setColorSC(u32int x) { + setColor((x >> 8) & 0xFF, x & 0xFF); + return 0; +} + +u32int VirtualTerminal::setCursorLineSC(u32int l) { + setCursorLine(l); + return 0; +} + +u32int VirtualTerminal::setCursorColSC(u32int c) { + setCursorCol(c); + return 0; +} + +u32int VirtualTerminal::isBoxedSC() { + return (isBoxed() ? 1 : 0); +} diff --git a/Source/Kernel/VTManager/VirtualTerminal.proto.cpp b/Source/Kernel/VTManager/VirtualTerminal.proto.cpp index dfd8f84..348113d 100644 --- a/Source/Kernel/VTManager/VirtualTerminal.proto.cpp +++ b/Source/Kernel/VTManager/VirtualTerminal.proto.cpp @@ -4,13 +4,21 @@ #include <VirtualTerminal.iface.h> +call_t VirtualTerminal::m_callTable[] = { + CALL1(VTIF_WRITEHEX, &VirtualTerminal::writeHexSC), + CALL2(VTIF_WRITEDEC, &VirtualTerminal::writeDecSC), + CALL1(VTIF_WRITE, &VirtualTerminal::writeSC), + CALL1(VTIF_PUT, &VirtualTerminal::putSC), + CALL0(VTIF_READLINE, &VirtualTerminal::readLineSC), + CALL1(VTIF_SETCOLOR, &VirtualTerminal::setColorSC), + CALL1(VTIF_SETCSRLINE, &VirtualTerminal::setCursorLineSC), + CALL1(VTIF_SETCSRCOL, &VirtualTerminal::setCursorColSC), + CALL0(VTIF_ISBOXED, &VirtualTerminal::isBoxedSC), + CALL0(0, 0) +}; + VirtualTerminal::VirtualTerminal() : - Ressource(VT_IFACE_OBJTYPE), m_kbdMutex(false), m_kbdbuffMutex(false), m_kbdbuff() { - addCall1(VT_IFACE_WRITEHEX, (call1)&VirtualTerminal::writeHexSC); - addCall2(VT_IFACE_WRITEDEC, (call2)&VirtualTerminal::writeDecSC); - addCall1(VT_IFACE_WRITE, (call1)&VirtualTerminal::writeSC); - addCall1(VT_IFACE_PUT, (call1)&VirtualTerminal::putSC); - addCall0(VT_IFACE_READLINE, (call0)&VirtualTerminal::readLineSC); + Ressource(VTIF_OBJTYPE, m_callTable), m_kbdMutex(false), m_kbdbuffMutex(false), m_kbdbuff() { } VirtualTerminal::~VirtualTerminal() { diff --git a/Source/Kernel/VTManager/VirtualTerminal.proto.h b/Source/Kernel/VTManager/VirtualTerminal.proto.h index b0cd224..c81cf1a 100644 --- a/Source/Kernel/VTManager/VirtualTerminal.proto.h +++ b/Source/Kernel/VTManager/VirtualTerminal.proto.h @@ -20,11 +20,16 @@ class VirtualTerminal : public Ressource { Vector<Kbd::keypress_t> m_kbdbuff; //Key press events buffer //SYSCALLS : + static call_t m_callTable[]; u32int writeHexSC(u32int); u32int writeDecSC(u32int, u32int); u32int writeSC(u32int); u32int putSC(u32int); u32int readLineSC(); + u32int setColorSC(u32int); + u32int setCursorLineSC(u32int); + u32int setCursorColSC(u32int); + u32int isBoxedSC(); public: VirtualTerminal(); |