diff options
-rwxr-xr-x | CopyToFDD.sh | 6 | ||||
-rw-r--r-- | Source/Applications/PaperWork/Makefile | 2 | ||||
-rw-r--r-- | Source/Applications/PaperWork/Map.txt | 1394 | ||||
-rw-r--r-- | Source/Applications/PaperWork/PaperWork.cpp | 4 | ||||
-rw-r--r-- | Source/Applications/Shell/Shell.class.cpp | 2 | ||||
-rw-r--r-- | Source/Library/Common/IStream.proto.cpp | 73 | ||||
-rw-r--r-- | Source/Library/Common/IStream.proto.h | 29 | ||||
-rw-r--r-- | Source/Library/Makefile | 1 | ||||
-rw-r--r-- | Source/Library/Userland/App/ShellApp.proto.cpp | 23 | ||||
-rw-r--r-- | Source/Library/Userland/Binding/Process.class.h | 4 | ||||
-rw-r--r-- | Source/Library/Userland/Binding/VirtualTerminal.class.h | 6 | ||||
-rw-r--r-- | Source/Library/Userland/Syscall/RessourceCaller.class.h | 4 |
12 files changed, 1530 insertions, 18 deletions
diff --git a/CopyToFDD.sh b/CopyToFDD.sh index 7b8459a..5fe9508 100755 --- a/CopyToFDD.sh +++ b/CopyToFDD.sh @@ -17,8 +17,6 @@ cp Init.rfs Mount/System # Copy system files cp Source/Kernel/Ressources/Configuration/* Mount/System/Configuration -cp Source/Applications/PaperWork/PaperWork Mount/System/Applications/PaperWork.app -cp Source/Applications/Shell/Shell Mount/Applications/Shell/Shell.app # Create mount configuration file echo "/Volumes/InitRFS:ramfs:0" > Mount/System/Configuration/Mount @@ -28,5 +26,9 @@ echo "/Volumes/HDD:block.ata:0:1" >> Mount/System/Configuration/Mount cp Source/Applications/Demos/GOL Mount/Applications/Demos/GOL.app cp Source/Applications/Demos/asmdemo Mount/Applications/Demos/ASM.dem +# Copy system apps +cp Source/Applications/PaperWork/PaperWork Mount/System/Applications/PaperWork.app +cp Source/Applications/Shell/Shell Mount/Applications/Shell/Shell.app + #echo "*** Launching a BASH shell, if you want to do any maintenance ***" #bash || exit 0 diff --git a/Source/Applications/PaperWork/Makefile b/Source/Applications/PaperWork/Makefile index d3203cf..8d079ec 100644 --- a/Source/Applications/PaperWork/Makefile +++ b/Source/Applications/PaperWork/Makefile @@ -4,7 +4,7 @@ CXX = g++ CXXFLAGS = -nostartfiles -nostdlib -ffreestanding -fno-exceptions -fno-rtti -I ../../Library/Common -I ../../Library/Interface -I ../../Library/Userland -D THIS_IS_MELON_USERLAND LD = ld -LDFLAGS = -T ../../Library/Link.ld -L ../../Library +LDFLAGS = -T ../../Library/Link.ld -L ../../Library -Map Map.txt Objects = PaperWork.o OutFile = PaperWork diff --git a/Source/Applications/PaperWork/Map.txt b/Source/Applications/PaperWork/Map.txt new file mode 100644 index 0000000..f19b7ba --- /dev/null +++ b/Source/Applications/PaperWork/Map.txt @@ -0,0 +1,1394 @@ + +Discarded input sections + + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 ../../Library/Melon.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .group 0x00000000 0x8 PaperWork.o + .text._Znaj 0x00000000 0x13 PaperWork.o + .text._ZdlPv 0x00000000 0x13 PaperWork.o + .text._ZN15RessourceCaller5validEv + 0x00000000 0x10 PaperWork.o + .text._ZN5WChareqEj + 0x00000000 0x10 PaperWork.o + .text._ZNK5WCharcvjEv + 0x00000000 0xa PaperWork.o + .text._ZN6StringC1Ev + 0x00000000 0x1c PaperWork.o + .text._ZN6StringC1ERKS_ + 0x00000000 0x23 PaperWork.o + .text._ZN6StringaSERKS_ + 0x00000000 0x1a PaperWork.o + .text._ZNK6StringeqEPKc + 0x00000000 0x22 PaperWork.o + .text._ZN6StringpLEPKc + 0x00000000 0x22 PaperWork.o + .text._ZN6StringD1Ev + 0x00000000 0x30 PaperWork.o + .text._ZN6StringD0Ev + 0x00000000 0x30 PaperWork.o + .text._ZN7OStreamD2Ev + 0x00000000 0x30 PaperWork.o + .text._ZN7OStreamD1Ev + 0x00000000 0x30 PaperWork.o + .text._ZN7OStreamD0Ev + 0x00000000 0x30 PaperWork.o + .text._ZN7OStreamlsERK6String + 0x00000000 0x59 PaperWork.o + .text._ZN15VirtualTerminalD1Ev + 0x00000000 0x50 PaperWork.o + .text._ZN15VirtualTerminalD0Ev + 0x00000000 0x50 PaperWork.o + .text._ZN15VirtualTerminal5writeERK6String + 0x00000000 0x45 PaperWork.o + .text._ZN15VirtualTerminal4readEv + 0x00000000 0x9f PaperWork.o + .text._ZN7Process3getEv + 0x00000000 0x5a PaperWork.o + .text._ZN7ProcessC1Ej + 0x00000000 0x22 PaperWork.o + .text._ZN11ApplicationD2Ev + 0x00000000 0x25 PaperWork.o + .text._ZN11ApplicationD1Ev + 0x00000000 0x25 PaperWork.o + .text._ZN11ApplicationD0Ev + 0x00000000 0x25 PaperWork.o + .text._ZN11Application4initEv + 0x00000000 0x5 PaperWork.o + .text._ZN11Application8doEventsEv + 0x00000000 0x5 PaperWork.o + .text._ZN11BasicStringI5WCharEC2Ev + 0x00000000 0x22 PaperWork.o + .text._ZN11BasicStringI5WCharED2Ev + 0x00000000 0x3d PaperWork.o + .text._ZN11BasicStringI5WCharED1Ev + 0x00000000 0x3d PaperWork.o + .text._ZN11BasicStringI5WCharED0Ev + 0x00000000 0x3d PaperWork.o + .text._ZN11BasicStringI5WCharEC2ERKS1_ + 0x00000000 0x2d PaperWork.o + .text._ZN11BasicStringI5WCharE6affectERKS1_ + 0x00000000 0xb8 PaperWork.o + .text._ZNK11BasicStringI5WCharE8containsERKS0_ + 0x00000000 0x5a PaperWork.o + .text._ZN6VectorI6StringED1Ev + 0x00000000 0x7b PaperWork.o + .text._ZN6flag_tD1Ev + 0x00000000 0x32 PaperWork.o + .text._ZN6VectorI6flag_tED1Ev + 0x00000000 0x5b PaperWork.o + .rodata._ZTV11Application + 0x00000000 0x1c PaperWork.o + .rodata._ZTV15VirtualTerminal + 0x00000000 0x2c PaperWork.o + .rodata._ZTV7OStream + 0x00000000 0x14 PaperWork.o + .rodata._ZTV6String + 0x00000000 0x10 PaperWork.o + .rodata._ZTV11BasicStringI5WCharE + 0x00000000 0x10 PaperWork.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x00000000 0xffffffff + +Linker script and memory map + +LOAD ../../Library/Melon.o + 0x10000000 . = 0x10000000 + +.text 0x10000000 0x6490 + *(.text) + .text 0x10000000 0x5d4c ../../Library/Melon.o + 0x10000000 WChar::WChar() + 0x1000000e WChar::WChar() + 0x1000001c WChar::WChar(char) + 0x1000003e WChar::WChar(char) + 0x10000060 WChar::WChar(char const*, unsigned char) + 0x100000e6 WChar::WChar(char const*, unsigned char) + 0x1000016c WChar::ucharLen(char const*, unsigned char) + 0x10000298 WChar::utfLen(char const*, unsigned char) + 0x1000030c WChar::affectAscii(char) + 0x1000034c WChar::affectUtf8(char const*) + 0x10000514 WChar::affectUtf16be(char const*) + 0x10000684 WChar::affectUtf16le(char const*) + 0x100007f4 WChar::affectUtf32be(char const*) + 0x10000886 WChar::affectUtf32le(char const*) + 0x10000918 WChar::toAscii() + 0x10000978 WChar::toUtf8() + 0x10000a62 WChar::toUtf32be() + 0x10000a98 WChar::toUtf32le() + 0x10001894 CMem::memcpy(unsigned char*, unsigned char const*, unsigned int) + 0x1000192b CMem::memset(unsigned char*, unsigned char, int) + 0x10001962 CMem::memsetw(unsigned short*, unsigned short, int) + 0x1000199d CMem::strlen(char const*) + 0x100019cc atomic_exchange(unsigned int*, unsigned int) + 0x100019e4 Mutex::Mutex(unsigned int) + 0x100019f2 Mutex::Mutex(unsigned int) + 0x10001a00 Mutex::lock() + 0x10001a32 Mutex::waitLock() + 0x10001a7a Mutex::unlock() + 0x10001a88 Mutex::locked() + 0x10001a98 Heap::Heap() + 0x10001ae2 Heap::Heap() + 0x10001b2c Heap::~Heap() + 0x10001b32 Heap::~Heap() + 0x10001b38 Heap::create(unsigned int, unsigned int, unsigned int) + 0x10001c5e Heap::expand(unsigned int) + 0x10001d86 Heap::contract() + 0x10001ea4 Heap::alloc(unsigned int, bool) + 0x10002060 Heap::free(void*) + 0x100021fc Heap::insertIntoIndex(heap_header_t*) + 0x10002324 Heap::findIndexEntry(heap_header_t*) + 0x10002368 Heap::removeFromIndex(unsigned int) + 0x100023b6 Heap::removeFromIndex(heap_header_t*) + 0x100023ec String::hex(unsigned int) + 0x10002500 String::number(int) + 0x100026f0 String::unserialize(unsigned int) + 0x100027ae String::serialize() const + 0x10002824 String::String(char const*, unsigned char) + 0x10002874 String::String(char const*, unsigned char) + 0x100028c4 String::affect(char const*, unsigned char) + 0x100029e8 String::compare(char const*, unsigned char) const + 0x10002abe String::append(char const*, unsigned char) + 0x10002c32 String::concat(String const&) const + 0x10002c88 String::concat(char const*, unsigned char) const + 0x10002cec String::concat(WChar) const + 0x10002d42 String::toInt() const + 0x10002e44 String::toInt16() const + 0x10002f44 String::split(WChar) const + 0x1000304a String::substr(int, int) + 0x10003188 TextFile::write(String, bool) + 0x100031f6 TextFile::readLine(char) + 0x10003350 ByteArray::ByteArray(char const*) + 0x1000339c ByteArray::ByteArray(char const*) + 0x100033e8 ByteArray::affect(String const&, unsigned char) + 0x100035ea ByteArray::resize(unsigned int) + 0x100036d0 ByteArray::toString(unsigned char) + 0x10003770 Rand::rand() + 0x1000380d Rand::max() + 0x1000381c OStream::OStream() + 0x10003858 OStream::OStream() + 0x10003894 OStream::OStream(OStream const&) + 0x100038d0 OStream::OStream(OStream const&) + 0x1000390c OStream::put(String const&) + 0x100039a2 OStream::flush() + 0x10003b4a OStream::operator<<(ostream_modifiers_e) + 0x10003ba8 IStream::IStream() + 0x10003be4 IStream::IStream() + 0x10003c20 IStream::IStream(IStream const&) + 0x10003c5c IStream::IStream(IStream const&) + 0x10003c98 IStream::~IStream() + 0x10003cdc IStream::~IStream() + 0x10003d20 IStream::~IStream() + 0x10003d64 IStream::populate() + 0x10003e02 IStream::getChar() + 0x10003efa IStream::get(WChar) + 0x100040f0 __cxa_pure_virtual + 0x100040f5 __cxa_atexit + 0x100040ff memmove + 0x10004123 __udivdi3 + 0x10004169 __umoddi3 + 0x100041b8 ShellApp::ShellApp(String, String) + 0x10004364 ShellApp::ShellApp(String, String) + 0x10004510 ShellApp::init() + 0x100056ac ShellApp::getFlag(String) + 0x10005720 ShellApp::addFlag(WChar, String, String, int, String) + 0x1000582e ShellApp::sFlag(String) + 0x100058d4 ShellApp::iFlag(String) + 0x10005934 ShellApp::bFlag(String) + 0x10005994 syscall(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) + 0x100059bf threadFinishedSyscall(unsigned int) + 0x100059c9 breakPoint() + 0x100059cf putch(char) + 0x10005a17 sleep(unsigned int) + 0x10005a52 write_hex(unsigned int) + 0x10005a90 RessourceCaller::RessourceCaller(unsigned int, unsigned int) + 0x10005b00 RessourceCaller::RessourceCaller(unsigned int, unsigned int) + 0x10005b70 RessourceCaller::sCall(unsigned int, unsigned char, unsigned int, unsigned int, unsigned int, unsigned int) + 0x10005bb6 RessourceCaller::doCall(unsigned char, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) + 0x10005c18 start + 0x10005cf9 Mem::alloc(unsigned int) + 0x10005d1d Mem::free(void*) + 0x10005d39 Mem::mkXchgSpace(unsigned int) + .text 0x10005d4c 0x744 PaperWork.o + 0x10005d4c PaperWork::run() + +.text._ZN5WChareqEj + 0x10006490 0x10 + .text._ZN5WChareqEj + 0x10006490 0x10 ../../Library/Melon.o + 0x10006490 WChar::operator==(unsigned int) + +.text._ZNK5WCharcvjEv + 0x100064a0 0xa + .text._ZNK5WCharcvjEv + 0x100064a0 0xa ../../Library/Melon.o + 0x100064a0 WChar::operator unsigned int() const + +.text._ZN6Thread3getEv + 0x100064aa 0x5a + .text._ZN6Thread3getEv + 0x100064aa 0x5a ../../Library/Melon.o + 0x100064aa Thread::get() + +.text._ZN6ThreadC1Ej + 0x10006504 0x22 + .text._ZN6ThreadC1Ej + 0x10006504 0x22 ../../Library/Melon.o + 0x10006504 Thread::Thread(unsigned int) + +.text._ZN6Thread5sleepEj + 0x10006526 0x42 + .text._ZN6Thread5sleepEj + 0x10006526 0x42 ../../Library/Melon.o + 0x10006526 Thread::sleep(unsigned int) + +.text._ZN7Process3getEv + 0x10006568 0x5a + .text._ZN7Process3getEv + 0x10006568 0x5a ../../Library/Melon.o + 0x10006568 Process::get() + +.text._ZN7ProcessC1Ej + 0x100065c2 0x22 + .text._ZN7ProcessC1Ej + 0x100065c2 0x22 ../../Library/Melon.o + 0x100065c2 Process::Process(unsigned int) + +.text._ZN7Process10allocPagesEjj + 0x100065e4 0x41 + .text._ZN7Process10allocPagesEjj + 0x100065e4 0x41 ../../Library/Melon.o + 0x100065e4 Process::allocPages(unsigned int, unsigned int) + +.text._ZN7Process9freePagesEjj + 0x10006626 0x41 + .text._ZN7Process9freePagesEjj + 0x10006626 0x41 ../../Library/Melon.o + 0x10006626 Process::freePages(unsigned int, unsigned int) + +.text._ZnwjPv 0x10006667 0x8 + .text._ZnwjPv 0x10006667 0x8 ../../Library/Melon.o + 0x10006667 operator new(unsigned int, void*) + +.text._Znaj 0x1000666f 0x13 + .text._Znaj 0x1000666f 0x13 ../../Library/Melon.o + 0x1000666f operator new[](unsigned int) + +.text._ZdlPv 0x10006682 0x13 + .text._ZdlPv 0x10006682 0x13 ../../Library/Melon.o + 0x10006682 operator delete(void*) + +.text._ZdaPv 0x10006695 0x13 + .text._ZdaPv 0x10006695 0x13 ../../Library/Melon.o + 0x10006695 operator delete[](void*) + +.text._ZN5WChar6affectEPKch + 0x100066a8 0xb0 + .text._ZN5WChar6affectEPKch + 0x100066a8 0xb0 ../../Library/Melon.o + 0x100066a8 WChar::affect(char const*, unsigned char) + +.text._ZN5WCharaSEj + 0x10006758 0x10 + .text._ZN5WCharaSEj + 0x10006758 0x10 ../../Library/Melon.o + 0x10006758 WChar::operator=(unsigned int) + +.text._ZN6StringC1Ev + 0x10006768 0x1c + .text._ZN6StringC1Ev + 0x10006768 0x1c ../../Library/Melon.o + 0x10006768 String::String() + +.text._ZN6StringC1ERKS_ + 0x10006784 0x23 + .text._ZN6StringC1ERKS_ + 0x10006784 0x23 ../../Library/Melon.o + 0x10006784 String::String(String const&) + +.text._ZN6StringpLERKS_ + 0x100067a8 0x1d + .text._ZN6StringpLERKS_ + 0x100067a8 0x1d ../../Library/Melon.o + 0x100067a8 String::operator+=(String const&) + +.text._ZN6StringpLE5WChar + 0x100067c6 0x1d + .text._ZN6StringpLE5WChar + 0x100067c6 0x1d ../../Library/Melon.o + 0x100067c6 String::operator+=(WChar) + +.text._ZN6StringD1Ev + 0x100067e4 0x30 + .text._ZN6StringD1Ev + 0x100067e4 0x30 ../../Library/Melon.o + 0x100067e4 String::~String() + +.text._ZN6StringD0Ev + 0x10006814 0x30 + .text._ZN6StringD0Ev + 0x10006814 0x30 ../../Library/Melon.o + 0x10006814 String::~String() + +.text._ZN11BasicStringI5WCharEC2Ev + 0x10006844 0x22 + .text._ZN11BasicStringI5WCharEC2Ev + 0x10006844 0x22 ../../Library/Melon.o + 0x10006844 BasicString<WChar>::BasicString() + +.text._ZN11BasicStringI5WCharED2Ev + 0x10006866 0x3d + .text._ZN11BasicStringI5WCharED2Ev + 0x10006866 0x3d ../../Library/Melon.o + 0x10006866 BasicString<WChar>::~BasicString() + +.text._ZN11BasicStringI5WCharED1Ev + 0x100068a4 0x3d + .text._ZN11BasicStringI5WCharED1Ev + 0x100068a4 0x3d ../../Library/Melon.o + 0x100068a4 BasicString<WChar>::~BasicString() + +.text._ZN11BasicStringI5WCharED0Ev + 0x100068e2 0x3d + .text._ZN11BasicStringI5WCharED0Ev + 0x100068e2 0x3d ../../Library/Melon.o + 0x100068e2 BasicString<WChar>::~BasicString() + +.text._ZN11BasicStringI5WCharEC2ERKS1_ + 0x10006920 0x2d + .text._ZN11BasicStringI5WCharEC2ERKS1_ + 0x10006920 0x2d ../../Library/Melon.o + 0x10006920 BasicString<WChar>::BasicString(BasicString<WChar> const&) + +.text._ZN11BasicStringI5WCharE6affectERKS1_ + 0x1000694e 0xb8 + .text._ZN11BasicStringI5WCharE6affectERKS1_ + 0x1000694e 0xb8 ../../Library/Melon.o + 0x1000694e BasicString<WChar>::affect(BasicString<WChar> const&) + +.text._ZN11BasicStringI5WCharE6appendERKS1_ + 0x10006a06 0x105 + .text._ZN11BasicStringI5WCharE6appendERKS1_ + 0x10006a06 0x105 ../../Library/Melon.o + 0x10006a06 BasicString<WChar>::append(BasicString<WChar> const&) + +.text._ZN11BasicStringI5WCharE6appendES0_ + 0x10006b0c 0xd2 + .text._ZN11BasicStringI5WCharE6appendES0_ + 0x10006b0c 0xd2 ../../Library/Melon.o + 0x10006b0c BasicString<WChar>::append(WChar) + +.text._ZNK11BasicStringI5WCharEixEi + 0x10006bde 0x13 + .text._ZNK11BasicStringI5WCharEixEi + 0x10006bde 0x13 ../../Library/Melon.o + 0x10006bde BasicString<WChar>::operator[](int) const + +.text._ZN6VectorI6StringEC1Ev + 0x10006bf2 0x18 + .text._ZN6VectorI6StringEC1Ev + 0x10006bf2 0x18 ../../Library/Melon.o + 0x10006bf2 Vector<String>::Vector() + +.text._ZN6VectorI6StringE4pushERKS0_ + 0x10006c0a 0xb8 + .text._ZN6VectorI6StringE4pushERKS0_ + 0x10006c0a 0xb8 ../../Library/Melon.o + 0x10006c0a Vector<String>::push(String const&) + +.text._ZNK6VectorI6StringE4backEv + 0x10006cc2 0x1f + .text._ZNK6VectorI6StringE4backEv + 0x10006cc2 0x1f ../../Library/Melon.o + 0x10006cc2 Vector<String>::back() const + +.text._ZN15RessourceCaller5validEv + 0x10006ce2 0x10 + .text._ZN15RessourceCaller5validEv + 0x10006ce2 0x10 ../../Library/Melon.o + 0x10006ce2 RessourceCaller::valid() + +.text._ZN9ByteArrayC1Ev + 0x10006cf2 0x1c + .text._ZN9ByteArrayC1Ev + 0x10006cf2 0x1c ../../Library/Melon.o + 0x10006cf2 ByteArray::ByteArray() + +.text._ZN9ByteArrayC1ERK6Stringh + 0x10006d0e 0x3c + .text._ZN9ByteArrayC1ERK6Stringh + 0x10006d0e 0x3c ../../Library/Melon.o + 0x10006d0e ByteArray::ByteArray(String const&, unsigned char) + +.text._ZN9ByteArraycvPhEv + 0x10006d4a 0xb + .text._ZN9ByteArraycvPhEv + 0x10006d4a 0xb ../../Library/Melon.o + 0x10006d4a ByteArray::operator unsigned char*() + +.text._ZN4File4readEjPh + 0x10006d56 0x41 + .text._ZN4File4readEjPh + 0x10006d56 0x41 ../../Library/Melon.o + 0x10006d56 File::read(unsigned int, unsigned char*) + +.text._ZN4File5writeEjPh + 0x10006d98 0x46 + .text._ZN4File5writeEjPh + 0x10006d98 0x46 ../../Library/Melon.o + 0x10006d98 File::write(unsigned int, unsigned char*) + +.text._ZN4File4readER9ByteArray + 0x10006dde 0x89 + .text._ZN4File4readER9ByteArray + 0x10006dde 0x89 ../../Library/Melon.o + 0x10006dde File::read(ByteArray&) + +.text._ZN4File5writeER9ByteArray + 0x10006e68 0x51 + .text._ZN4File5writeER9ByteArray + 0x10006e68 0x51 ../../Library/Melon.o + 0x10006e68 File::write(ByteArray&) + +.text._ZN4File4seekEyh + 0x10006eba 0x77 + .text._ZN4File4seekEyh + 0x10006eba 0x77 ../../Library/Melon.o + 0x10006eba File::seek(unsigned long long, unsigned char) + +.text._ZN9ByteArrayD1Ev + 0x10006f32 0x30 + .text._ZN9ByteArrayD1Ev + 0x10006f32 0x30 ../../Library/Melon.o + 0x10006f32 ByteArray::~ByteArray() + +.text._ZN9ByteArrayD0Ev + 0x10006f62 0x30 + .text._ZN9ByteArrayD0Ev + 0x10006f62 0x30 ../../Library/Melon.o + 0x10006f62 ByteArray::~ByteArray() + +.text._ZN11BasicStringIhEC2Ev + 0x10006f92 0x22 + .text._ZN11BasicStringIhEC2Ev + 0x10006f92 0x22 ../../Library/Melon.o + 0x10006f92 BasicString<unsigned char>::BasicString() + +.text._ZN11BasicStringIhED2Ev + 0x10006fb4 0x3d + .text._ZN11BasicStringIhED2Ev + 0x10006fb4 0x3d ../../Library/Melon.o + 0x10006fb4 BasicString<unsigned char>::~BasicString() + +.text._ZN11BasicStringIhED1Ev + 0x10006ff2 0x3d + .text._ZN11BasicStringIhED1Ev + 0x10006ff2 0x3d ../../Library/Melon.o + 0x10006ff2 BasicString<unsigned char>::~BasicString() + +.text._ZN11BasicStringIhED0Ev + 0x10007030 0x3d + .text._ZN11BasicStringIhED0Ev + 0x10007030 0x3d ../../Library/Melon.o + 0x10007030 BasicString<unsigned char>::~BasicString() + +.text._ZNK11BasicStringIhE4sizeEv + 0x1000706e 0xb + .text._ZNK11BasicStringIhE4sizeEv + 0x1000706e 0xb ../../Library/Melon.o + 0x1000706e BasicString<unsigned char>::size() const + +.text._ZNK11BasicStringIhEixEi + 0x1000707a 0x11 + .text._ZNK11BasicStringIhEixEi + 0x1000707a 0x11 ../../Library/Melon.o + 0x1000707a BasicString<unsigned char>::operator[](int) const + +.text._ZN11BasicStringIhE5clearEv + 0x1000708c 0x34 + .text._ZN11BasicStringIhE5clearEv + 0x1000708c 0x34 ../../Library/Melon.o + 0x1000708c BasicString<unsigned char>::clear() + +.text._ZN11BasicStringIhEpLEh + 0x100070c0 0x21 + .text._ZN11BasicStringIhEpLEh + 0x100070c0 0x21 ../../Library/Melon.o + 0x100070c0 BasicString<unsigned char>::operator+=(unsigned char) + +.text._ZN11BasicStringIhE6appendEh + 0x100070e2 0x9c + .text._ZN11BasicStringIhE6appendEh + 0x100070e2 0x9c ../../Library/Melon.o + 0x100070e2 BasicString<unsigned char>::append(unsigned char) + +.text._ZN5WChar6encodeEh + 0x1000717e 0x7a + .text._ZN5WChar6encodeEh + 0x1000717e 0x7a ../../Library/Melon.o + 0x1000717e WChar::encode(unsigned char) + +.text._ZNK11BasicStringI5WCharE4sizeEv + 0x100071f8 0xb + .text._ZNK11BasicStringI5WCharE4sizeEv + 0x100071f8 0xb ../../Library/Melon.o + 0x100071f8 BasicString<WChar>::size() const + +.text._Znwj 0x10007203 0x13 + .text._Znwj 0x10007203 0x13 ../../Library/Melon.o + 0x10007203 operator new(unsigned int) + +.text._ZN6StringC1E5WCharj + 0x10007216 0x2a + .text._ZN6StringC1E5WCharj + 0x10007216 0x2a ../../Library/Melon.o + 0x10007216 String::String(WChar, unsigned int) + +.text._ZN7OStreamD1Ev + 0x10007240 0x30 + .text._ZN7OStreamD1Ev + 0x10007240 0x30 ../../Library/Melon.o + 0x10007240 OStream::~OStream() + +.text._ZN7OStreamD0Ev + 0x10007270 0x30 + .text._ZN7OStreamD0Ev + 0x10007270 0x30 ../../Library/Melon.o + 0x10007270 OStream::~OStream() + +.text._ZN11BasicStringI5WCharEC2ES0_j + 0x100072a0 0x34 + .text._ZN11BasicStringI5WCharEC2ES0_j + 0x100072a0 0x34 ../../Library/Melon.o + 0x100072a0 BasicString<WChar>::BasicString(WChar, unsigned int) + +.text._ZN10SimpleListI6StringEC1ERKS0_PS1_ + 0x100072d4 0x23 + .text._ZN10SimpleListI6StringEC1ERKS0_PS1_ + 0x100072d4 0x23 ../../Library/Melon.o + 0x100072d4 SimpleList<String>::SimpleList(String const&, SimpleList<String>*) + +.text._ZN10SimpleListI6StringE8addAtEndERKS0_ + 0x100072f8 0x94 + .text._ZN10SimpleListI6StringE8addAtEndERKS0_ + 0x100072f8 0x94 ../../Library/Melon.o + 0x100072f8 SimpleList<String>::addAtEnd(String const&) + +.text._ZN10SimpleListI6StringE4nextEv + 0x1000738c 0xb + .text._ZN10SimpleListI6StringE4nextEv + 0x1000738c 0xb ../../Library/Melon.o + 0x1000738c SimpleList<String>::next() + +.text._ZN10SimpleListI6StringE1vEv + 0x10007398 0x8 + .text._ZN10SimpleListI6StringE1vEv + 0x10007398 0x8 ../../Library/Melon.o + 0x10007398 SimpleList<String>::v() + +.text._ZN10SimpleListI6StringED1Ev + 0x100073a0 0x3c + .text._ZN10SimpleListI6StringED1Ev + 0x100073a0 0x3c ../../Library/Melon.o + 0x100073a0 SimpleList<String>::~SimpleList() + +.text._ZN11BasicStringI5WCharE6affectES0_j + 0x100073dc 0xb8 + .text._ZN11BasicStringI5WCharE6affectES0_j + 0x100073dc 0xb8 ../../Library/Melon.o + 0x100073dc BasicString<WChar>::affect(WChar, unsigned int) + +.text._ZNK11BasicStringI5WCharE5emptyEv + 0x10007494 0x10 + .text._ZNK11BasicStringI5WCharE5emptyEv + 0x10007494 0x10 ../../Library/Melon.o + 0x10007494 BasicString<WChar>::empty() const + +.text._ZN10SimpleListI6StringE7delThisEv + 0x100074a4 0x1f + .text._ZN10SimpleListI6StringE7delThisEv + 0x100074a4 0x1f ../../Library/Melon.o + 0x100074a4 SimpleList<String>::delThis() + +.text._Z5doDivyjPj + 0x100074c3 0x76 + .text._Z5doDivyjPj + 0x100074c3 0x76 ../../Library/Melon.o + 0x100074c3 doDiv(unsigned long long, unsigned int, unsigned int*) + +.text._ZN6StringaSERKS_ + 0x1000753a 0x1a + .text._ZN6StringaSERKS_ + 0x1000753a 0x1a ../../Library/Melon.o + 0x1000753a String::operator=(String const&) + +.text._ZNK6StringeqEPKc + 0x10007554 0x22 + .text._ZNK6StringeqEPKc + 0x10007554 0x22 ../../Library/Melon.o + 0x10007554 String::operator==(char const*) const + +.text._ZN6StringneEPKc + 0x10007576 0x25 + .text._ZN6StringneEPKc + 0x10007576 0x25 ../../Library/Melon.o + 0x10007576 String::operator!=(char const*) + +.text._ZNK6StringeqERKS_ + 0x1000759c 0x1a + .text._ZNK6StringeqERKS_ + 0x1000759c 0x1a ../../Library/Melon.o + 0x1000759c String::operator==(String const&) const + +.text._ZN6StringpLEPKc + 0x100075b6 0x22 + .text._ZN6StringpLEPKc + 0x100075b6 0x22 ../../Library/Melon.o + 0x100075b6 String::operator+=(char const*) + +.text._ZNK6StringplERKS_ + 0x100075d8 0x30 + .text._ZNK6StringplERKS_ + 0x100075d8 0x30 ../../Library/Melon.o + 0x100075d8 String::operator+(String const&) const + +.text._ZNK6StringplEPKc + 0x10007608 0x38 + .text._ZNK6StringplEPKc + 0x10007608 0x38 ../../Library/Melon.o + 0x10007608 String::operator+(char const*) const + +.text._ZN7OStreamD2Ev + 0x10007640 0x30 + .text._ZN7OStreamD2Ev + 0x10007640 0x30 ../../Library/Melon.o + 0x10007640 OStream::~OStream() + +.text._ZN7OStreamlsERK6String + 0x10007670 0x59 + .text._ZN7OStreamlsERK6String + 0x10007670 0x59 ../../Library/Melon.o + 0x10007670 OStream::operator<<(String const&) + +.text._ZN7OStreamlsEi + 0x100076ca 0x3d + .text._ZN7OStreamlsEi + 0x100076ca 0x3d ../../Library/Melon.o + 0x100076ca OStream::operator<<(int) + +.text._ZN15VirtualTerminalD1Ev + 0x10007708 0x50 + .text._ZN15VirtualTerminalD1Ev + 0x10007708 0x50 ../../Library/Melon.o + 0x10007708 non-virtual thunk to VirtualTerminal::~VirtualTerminal() + 0x10007710 VirtualTerminal::~VirtualTerminal() + +.text._ZN15VirtualTerminalD0Ev + 0x10007758 0x50 + .text._ZN15VirtualTerminalD0Ev + 0x10007758 0x50 ../../Library/Melon.o + 0x10007758 non-virtual thunk to VirtualTerminal::~VirtualTerminal() + 0x10007760 VirtualTerminal::~VirtualTerminal() + +.text._ZN15VirtualTerminal5getInEv + 0x100077a8 0x5e + .text._ZN15VirtualTerminal5getInEv + 0x100077a8 0x5e ../../Library/Melon.o + 0x100077a8 VirtualTerminal::getIn() + +.text._ZN15VirtualTerminal6getOutEv + 0x10007806 0x5e + .text._ZN15VirtualTerminal6getOutEv + 0x10007806 0x5e ../../Library/Melon.o + 0x10007806 VirtualTerminal::getOut() + +.text._ZN15VirtualTerminalC1Ej + 0x10007864 0x51 + .text._ZN15VirtualTerminalC1Ej + 0x10007864 0x51 ../../Library/Melon.o + 0x10007864 VirtualTerminal::VirtualTerminal(unsigned int) + +.text._ZN15VirtualTerminal5writeERK6String + 0x100078b6 0x45 + .text._ZN15VirtualTerminal5writeERK6String + 0x100078b6 0x45 ../../Library/Melon.o + 0x100078b6 VirtualTerminal::write(String const&) + +.text._ZN15VirtualTerminal4readEv + 0x100078fc 0x9f + .text._ZN15VirtualTerminal4readEv + 0x100078fc 0x9f ../../Library/Melon.o + 0x100078fc non-virtual thunk to VirtualTerminal::read() + 0x10007904 VirtualTerminal::read() + +.text._ZN7Process4argcEv + 0x1000799c 0x43 + .text._ZN7Process4argcEv + 0x1000799c 0x43 ../../Library/Melon.o + 0x1000799c Process::argc() + +.text._ZN7Process4argvEj + 0x100079e0 0x66 + .text._ZN7Process4argvEj + 0x100079e0 0x66 ../../Library/Melon.o + 0x100079e0 Process::argv(unsigned int) + +.text._ZN11ApplicationC2Ev + 0x10007a46 0x22 + .text._ZN11ApplicationC2Ev + 0x10007a46 0x22 ../../Library/Melon.o + 0x10007a46 Application::Application() + +.text._ZN11ApplicationD2Ev + 0x10007a68 0x25 + .text._ZN11ApplicationD2Ev + 0x10007a68 0x25 ../../Library/Melon.o + 0x10007a68 Application::~Application() + +.text._ZN11ApplicationD1Ev + 0x10007a8e 0x25 + .text._ZN11ApplicationD1Ev + 0x10007a8e 0x25 ../../Library/Melon.o + 0x10007a8e Application::~Application() + +.text._ZN11ApplicationD0Ev + 0x10007ab4 0x25 + .text._ZN11ApplicationD0Ev + 0x10007ab4 0x25 ../../Library/Melon.o + 0x10007ab4 Application::~Application() + +.text._ZN11Application4initEv + 0x10007ada 0x5 + .text._ZN11Application4initEv + 0x10007ada 0x5 ../../Library/Melon.o + 0x10007ada Application::init() + +.text._ZN11Application8doEventsEv + 0x10007ae0 0x5 + .text._ZN11Application8doEventsEv + 0x10007ae0 0x5 ../../Library/Melon.o + 0x10007ae0 Application::doEvents() + +.text._ZN11Application4exitEj + 0x10007ae6 0x35 + .text._ZN11Application4exitEj + 0x10007ae6 0x35 ../../Library/Melon.o + 0x10007ae6 Application::exit(unsigned int) + +.text._ZN6flag_tC1Ev + 0x10007b1c 0x3d + .text._ZN6flag_tC1Ev + 0x10007b1c 0x3d ../../Library/Melon.o + 0x10007b1c flag_t::flag_t() + +.text._ZN6flag_tD1Ev + 0x10007b5a 0x32 + .text._ZN6flag_tD1Ev + 0x10007b5a 0x32 ../../Library/Melon.o + 0x10007b5a flag_t::~flag_t() + +.text._ZNK11BasicStringI5WCharE7compareERKS1_ + 0x10007b8c 0x84 + .text._ZNK11BasicStringI5WCharE7compareERKS1_ + 0x10007b8c 0x84 ../../Library/Melon.o + 0x10007b8c BasicString<WChar>::compare(BasicString<WChar> const&) const + +.text._ZNK11BasicStringI5WCharE8containsERKS0_ + 0x10007c10 0x5a + .text._ZNK11BasicStringI5WCharE8containsERKS0_ + 0x10007c10 0x5a ../../Library/Melon.o + 0x10007c10 BasicString<WChar>::contains(WChar const&) const + +.text._ZN6VectorI6StringED1Ev + 0x10007c6a 0x7b + .text._ZN6VectorI6StringED1Ev + 0x10007c6a 0x7b ../../Library/Melon.o + 0x10007c6a Vector<String>::~Vector() + +.text._ZN6VectorI6flag_tEC1Ev + 0x10007ce6 0x18 + .text._ZN6VectorI6flag_tEC1Ev + 0x10007ce6 0x18 ../../Library/Melon.o + 0x10007ce6 Vector<flag_t>::Vector() + +.text._ZN6VectorI6flag_tED1Ev + 0x10007cfe 0x5b + .text._ZN6VectorI6flag_tED1Ev + 0x10007cfe 0x5b ../../Library/Melon.o + 0x10007cfe Vector<flag_t>::~Vector() + +.text._ZNK6VectorI6flag_tE4sizeEv + 0x10007d5a 0xb + .text._ZNK6VectorI6flag_tE4sizeEv + 0x10007d5a 0xb ../../Library/Melon.o + 0x10007d5a Vector<flag_t>::size() const + +.text._ZNK6VectorI6flag_tEixEj + 0x10007d66 0x13 + .text._ZNK6VectorI6flag_tEixEj + 0x10007d66 0x13 ../../Library/Melon.o + 0x10007d66 Vector<flag_t>::operator[](unsigned int) const + +.text._ZN6flag_tC1ERKS_ + 0x10007d7a 0x7f + .text._ZN6flag_tC1ERKS_ + 0x10007d7a 0x7f ../../Library/Melon.o + 0x10007d7a flag_t::flag_t(flag_t const&) + +.text._ZN6VectorI6flag_tE4pushERKS0_ + 0x10007dfa 0xa4 + .text._ZN6VectorI6flag_tE4pushERKS0_ + 0x10007dfa 0xa4 ../../Library/Melon.o + 0x10007dfa Vector<flag_t>::push(flag_t const&) + +.text._ZN8ShellAppD1Ev + 0x10007e9e 0x84 + .text._ZN8ShellAppD1Ev + 0x10007e9e 0x84 ../../Library/Melon.o + 0x10007e9e ShellApp::~ShellApp() + +.text._ZN8ShellAppD0Ev + 0x10007f22 0x84 + .text._ZN8ShellAppD0Ev + 0x10007f22 0x84 ../../Library/Melon.o + 0x10007f22 ShellApp::~ShellApp() + +.iplt 0x10007fa8 0x0 load address 0x10007fa6 + .iplt 0x00000000 0x0 ../../Library/Melon.o + +.text._ZNK15RessourceCaller5resIdEv + 0x10007fa6 0xa + .text._ZNK15RessourceCaller5resIdEv + 0x10007fa6 0xa PaperWork.o + 0x10007fa6 RessourceCaller::resId() const + +.text._ZN6StringaSEPKc + 0x10007fb0 0x22 + .text._ZN6StringaSEPKc + 0x10007fb0 0x22 PaperWork.o + 0x10007fb0 String::operator=(char const*) + +.text._ZN15VirtualTerminal8readLineEb + 0x10007fd2 0x89 + .text._ZN15VirtualTerminal8readLineEb + 0x10007fd2 0x89 PaperWork.o + 0x10007fd2 VirtualTerminal::readLine(bool) + +.text._ZN7Process3runERK6String + 0x1000805b 0x53 + .text._ZN7Process3runERK6String + 0x1000805b 0x53 PaperWork.o + 0x1000805b Process::run(String const&) + +.text._ZN7Process5startEv + 0x100080ae 0x43 + .text._ZN7Process5startEv + 0x100080ae 0x43 PaperWork.o + 0x100080ae Process::start() + +.text._ZN7Process4waitEv + 0x100080f2 0x43 + .text._ZN7Process4waitEv + 0x100080f2 0x43 PaperWork.o + 0x100080f2 Process::wait() + +.text._ZN7Process7pushArgERK6String + 0x10008136 0x42 + .text._ZN7Process7pushArgERK6String + 0x10008136 0x42 PaperWork.o + 0x10008136 Process::pushArg(String const&) + +.text._ZN7Process7setInVTERK15VirtualTerminal + 0x10008178 0x4d + .text._ZN7Process7setInVTERK15VirtualTerminal + 0x10008178 0x4d PaperWork.o + 0x10008178 Process::setInVT(VirtualTerminal const&) + +.text._ZN7Process8setOutVTERK15VirtualTerminal + 0x100081c6 0x4d + .text._ZN7Process8setOutVTERK15VirtualTerminal + 0x100081c6 0x4d PaperWork.o + 0x100081c6 Process::setOutVT(VirtualTerminal const&) + +.text._ZN7Process14authenticatePWE6StringS0_ + 0x10008214 0x47 + .text._ZN7Process14authenticatePWE6StringS0_ + 0x10008214 0x47 PaperWork.o + 0x10008214 Process::authenticatePW(String, String) + +.text._ZN8ShellAppD2Ev + 0x1000825c 0x84 + .text._ZN8ShellAppD2Ev + 0x1000825c 0x84 PaperWork.o + 0x1000825c ShellApp::~ShellApp() + +.text._ZN9PaperWorkC1Ev + 0x100082e0 0x2bf + .text._ZN9PaperWorkC1Ev + 0x100082e0 0x2bf PaperWork.o + 0x100082e0 PaperWork::PaperWork() + +.text._ZN9PaperWorkD1Ev + 0x100085a0 0x30 + .text._ZN9PaperWorkD1Ev + 0x100085a0 0x30 PaperWork.o + 0x100085a0 PaperWork::~PaperWork() + +.text._ZN9PaperWorkD0Ev + 0x100085d0 0x30 + .text._ZN9PaperWorkD0Ev + 0x100085d0 0x30 PaperWork.o + 0x100085d0 PaperWork::~PaperWork() + +.rodata 0x10009000 0x3d2 + *(.rodata) + .rodata 0x10009000 0x28d ../../Library/Melon.o + *fill* 0x1000928d 0x3 00 + .rodata 0x10009290 0x142 PaperWork.o + +.rodata._ZTV6String + 0x100093d8 0x10 + .rodata._ZTV6String + 0x100093d8 0x10 ../../Library/Melon.o + 0x100093d8 vtable for String + +.rodata._ZTV11BasicStringI5WCharE + 0x100093e8 0x10 + .rodata._ZTV11BasicStringI5WCharE + 0x100093e8 0x10 ../../Library/Melon.o + 0x100093e8 vtable for BasicString<WChar> + +.rodata._ZTV9ByteArray + 0x100093f8 0x10 + .rodata._ZTV9ByteArray + 0x100093f8 0x10 ../../Library/Melon.o + 0x100093f8 vtable for ByteArray + +.rodata._ZTV11BasicStringIhE + 0x10009408 0x10 + .rodata._ZTV11BasicStringIhE + 0x10009408 0x10 ../../Library/Melon.o + 0x10009408 vtable for BasicString<unsigned char> + +.rodata._ZTV7OStream + 0x10009418 0x14 + .rodata._ZTV7OStream + 0x10009418 0x14 ../../Library/Melon.o + 0x10009418 vtable for OStream + +.rodata._ZTV7IStream + 0x10009430 0x14 + .rodata._ZTV7IStream + 0x10009430 0x14 ../../Library/Melon.o + 0x10009430 vtable for IStream + +.rodata._ZTV8ShellApp + 0x10009448 0x1c + .rodata._ZTV8ShellApp + 0x10009448 0x1c ../../Library/Melon.o + 0x10009448 vtable for ShellApp + +.rodata._ZTV11Application + 0x10009468 0x1c + .rodata._ZTV11Application + 0x10009468 0x1c ../../Library/Melon.o + 0x10009468 vtable for Application + +.rodata._ZTV15VirtualTerminal + 0x100094a0 0x2c + .rodata._ZTV15VirtualTerminal + 0x100094a0 0x2c ../../Library/Melon.o + 0x100094a0 vtable for VirtualTerminal + +.rodata._ZTV9PaperWork + 0x100094d0 0x1c + .rodata._ZTV9PaperWork + 0x100094d0 0x1c PaperWork.o + 0x100094d0 vtable for PaperWork + +.rel.dyn 0x100094ec 0x0 + .rel.iplt 0x00000000 0x0 ../../Library/Melon.o + .rel.text 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6Thread3getEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7Process3getEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringC1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringC1ERKS_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringpLERKS_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringpLE5WChar + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringD0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharEC2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharED2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharED1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharED0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharEC2ERKS1_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharE6affectERKS1_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharE6appendERKS1_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharE6appendES0_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6VectorI6StringE4pushERKS0_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9ByteArrayC1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9ByteArrayC1ERK6Stringh + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN4File4readER9ByteArray + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN4File5writeER9ByteArray + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9ByteArrayD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9ByteArrayD0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhEC2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhED2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhED1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhED0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhE5clearEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhEpLEh + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringIhE6appendEh + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringC1E5WCharj + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7OStreamD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7OStreamD0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharEC2ES0_j + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN10SimpleListI6StringEC1ERKS0_PS1_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN10SimpleListI6StringE8addAtEndERKS0_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN10SimpleListI6StringED1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11BasicStringI5WCharE6affectES0_j + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6StringaSERKS_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZNK6StringeqERKS_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7OStreamD2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7OStreamlsERK6String + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7OStreamlsEi + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN15VirtualTerminalD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN15VirtualTerminalD0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN15VirtualTerminal5getInEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN15VirtualTerminal6getOutEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN15VirtualTerminalC1Ej + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN15VirtualTerminal4readEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11ApplicationC2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11ApplicationD2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11ApplicationD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11ApplicationD0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN11Application4exitEj + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6flag_tC1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6flag_tD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZNK11BasicStringI5WCharE7compareERKS1_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZNK11BasicStringI5WCharE8containsERKS0_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6VectorI6flag_tED1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6flag_tC1ERKS_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN6VectorI6flag_tE4pushERKS0_ + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN8ShellAppD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN8ShellAppD0Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV6String + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV11BasicStringI5WCharE + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV9ByteArray + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV11BasicStringIhE + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV7OStream + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV8ShellApp + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV11Application + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV15VirtualTerminal + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7Process3runERK6String + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7Process4waitEv + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7Process7setInVTERK15VirtualTerminal + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN7Process8setOutVTERK15VirtualTerminal + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN8ShellAppD2Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9PaperWorkC1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.rodata._ZTV9PaperWork + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9PaperWorkD1Ev + 0x00000000 0x0 ../../Library/Melon.o + .rel.text._ZN9PaperWorkD0Ev + 0x00000000 0x0 ../../Library/Melon.o + +.data 0x1000a000 0x24 + 0x1000a000 start_ctors = . + *(.ctor*) + .ctors 0x1000a000 0x4 ../../Library/Melon.o + .ctors 0x1000a004 0x4 PaperWork.o + 0x1000a008 end_ctors = . + 0x1000a008 start_dtors = . + *(.dtor*) + 0x1000a008 end_dtors = . + *(.data) + .data 0x1000a008 0x18 ../../Library/Melon.o + 0x1000a008 Rand::m + 0x1000a00c Rand::a + 0x1000a010 Rand::b + 0x1000a018 Rand::current + .data 0x1000a020 0x4 PaperWork.o + 0x1000a020 app + +.igot.plt 0x1000a024 0x0 + .igot.plt 0x00000000 0x0 ../../Library/Melon.o + +.bss 0x1000a040 0x2a4 + 0x1000a040 sbss = . + *(COMMON) + *(.bss) + .bss 0x1000a040 0x208 ../../Library/Melon.o + 0x1000a040 WChar::CP437 + 0x1000a240 __dso_handle + 0x1000a244 heap + *fill* 0x1000a248 0x18 00 + .bss 0x1000a260 0x84 PaperWork.o + 0x1000a2e4 ebss = . + 0x1000a2e4 end = . + 0x1000a2e4 _end = . + 0x1000a2e4 __end = . +LOAD PaperWork.o +OUTPUT(PaperWork elf32-i386) + +.note.GNU-stack + 0x00000000 0x0 + .note.GNU-stack + 0x00000000 0x0 ../../Library/Melon.o + .note.GNU-stack + 0x00000000 0x0 PaperWork.o + +.comment 0x00000000 0x27 + .comment 0x00000000 0x27 ../../Library/Melon.o + 0x280 (size before relaxing) + .comment 0x00000000 0x28 PaperWork.o diff --git a/Source/Applications/PaperWork/PaperWork.cpp b/Source/Applications/PaperWork/PaperWork.cpp index ac6f26d..15497e4 100644 --- a/Source/Applications/PaperWork/PaperWork.cpp +++ b/Source/Applications/PaperWork/PaperWork.cpp @@ -37,7 +37,7 @@ int PaperWork::run() { String user, pw; while (1) { outvt << "Username: " << FLUSH; - user = invt.readLine(); + user = invt.get(); outvt << "Password: " << FLUSH; pw = invt.readLine(false); if (!Process::get().authenticatePW(user, pw)) { @@ -45,7 +45,7 @@ int PaperWork::run() { continue; } outvt << "What shell to run [" << sFlag("shell") << "]? "<< FLUSH; - String sh = invt.readLine(); + String sh = invt.get(); if (sh == "") sh = sFlag("shell"); Process p = Process::run(sh); if (p.valid()) { diff --git a/Source/Applications/Shell/Shell.class.cpp b/Source/Applications/Shell/Shell.class.cpp index bfbf631..a2eb490 100644 --- a/Source/Applications/Shell/Shell.class.cpp +++ b/Source/Applications/Shell/Shell.class.cpp @@ -26,7 +26,7 @@ int Shell::run() { cwd = FS::cwdNode(); while (1) { outvt << "{" << cwd.getName() << "}: " << FLUSH; - String s = invt.readLine(); + String s = invt.get(); if (s.empty()) continue; while (s[0] == WChar(" ") or s[0] == WChar("\t")) { s = s.substr(1, s.size() - 1); diff --git a/Source/Library/Common/IStream.proto.cpp b/Source/Library/Common/IStream.proto.cpp new file mode 100644 index 0000000..0cc2a79 --- /dev/null +++ b/Source/Library/Common/IStream.proto.cpp @@ -0,0 +1,73 @@ +#include "IStream.proto.h" + +IStream::IStream() { + m_buffer = NULL; + m_ptr = 0; +} + +IStream::IStream(const IStream& other) { + m_buffer = NULL; + m_ptr = 0; +} + +IStream::~IStream() { + delete m_buffer; +} + +bool IStream::populate() { + String s = read(); + if (s.empty()) return false; + if (m_buffer == NULL) { + m_buffer = new SimpleList<String>(s); + } else { + m_buffer->addAtEnd(s); + } + return true; +} + +WChar IStream::getChar() { + waitLock(); + if (m_buffer == 0) { + if (!populate()) { + unlock(); + return WChar("\0"); + } + } + WChar ret = m_buffer->v()[m_ptr]; + m_ptr++; + if (m_ptr >= m_buffer->v().size()) { + m_buffer = m_buffer->delThis(); + m_ptr = 0; + } + unlock(); + return ret; +} + +String IStream::get(WChar delimiter) { + waitLock(); + //calculate length of string to read + if (m_buffer == 0) populate(); + int length = 0, ptr = m_ptr; + for (SimpleList<String> *iter = m_buffer; iter != 0;) { + if (iter->v()[ptr] == delimiter) break; + ptr++; + length++; + if (ptr >= iter->v().size()) { + if (iter->next() == 0) populate(); + iter = iter->next(); + ptr = 0; + } + } + //get it + String ret(WChar(" "), length); + for (int i = 0; i <= length; i++) { + if (i != length) ret[i] = m_buffer->v()[m_ptr]; + m_ptr++; + if (m_ptr >= m_buffer->v().size()) { + m_buffer = m_buffer->delThis(); + m_ptr = 0; + } + } + unlock(); + return ret; +} diff --git a/Source/Library/Common/IStream.proto.h b/Source/Library/Common/IStream.proto.h new file mode 100644 index 0000000..f689a22 --- /dev/null +++ b/Source/Library/Common/IStream.proto.h @@ -0,0 +1,29 @@ +#ifndef DEF_ISTREAM_PROTO_h +#define DEF_ISTREAM_PROTO_h + +#include <String.class.h> +#include <SimpleList.class.h> +#include <Mutex.class.h> + +class IStream : private Mutex { + private: + SimpleList<String> *m_buffer; + int m_ptr; + void operator =(IStream& other); + + bool populate(); + + protected: + virtual String read() = 0; + + public: + IStream(); + IStream(const IStream& other); + virtual ~IStream(); + + WChar getChar(); + String get(WChar delimiter = "\n"); + String getWord() { return get(" "); } +}; + +#endif diff --git a/Source/Library/Makefile b/Source/Library/Makefile index ed65ac4..cee4944 100644 --- a/Source/Library/Makefile +++ b/Source/Library/Makefile @@ -20,6 +20,7 @@ Objects = Common/WChar.class.uo \ Common/ByteArray.class.uo \ Common/Rand.ns.uo \ Common/OStream.proto.uo \ + Common/IStream.proto.uo \ Common/cppsupport.wtf.uo \ Userland/App/ShellApp.proto.uo \ Userland/Syscall/Syscall.wtf.uo \ diff --git a/Source/Library/Userland/App/ShellApp.proto.cpp b/Source/Library/Userland/App/ShellApp.proto.cpp index a3d9737..f2233bc 100644 --- a/Source/Library/Userland/App/ShellApp.proto.cpp +++ b/Source/Library/Userland/App/ShellApp.proto.cpp @@ -14,6 +14,7 @@ void ShellApp::init() { u32int argc = pr.argc(); for (u32int i = 0; i < argc; i++) { String arg = pr.argv(i); + if (arg.empty()) continue; if (arg == "-") { i++; if (i == argc) { @@ -26,13 +27,13 @@ void ShellApp::init() { bool found = false; for (u32int i = 0; i < flags.size(); i++) { if (flags[i].type == FT_BOOL) { - if (arg == String("--no-") + flags[i].lName) { + if (arg == (String("--no-") += flags[i].lName)) { flags[i].boolVal = false; found = true; } } } - if (!found) outvt << "Unknown option : " << arg << "\n"; + if (!found) outvt << "Unknown option : " << arg << ENDL; } else if (arg.substr(0, 2) == "--") { bool found = false; for (u32int i = 0; i < flags.size(); i++) { @@ -49,21 +50,29 @@ void ShellApp::init() { } } } - if (!found) outvt << "Unknown option : " << arg << "\n"; + if (!found) outvt << "Unknown option : " << arg << ENDL; } else { for (u32int j = 1; j < arg.size(); j++) { bool found = false; for (u32int k = 0; k < flags.size(); k++) { if (flags[k].sName == arg[j]) { found = true; - if (flags[k].type == FT_BOOL) flags[k].boolVal = true; - if (flags[k].type == FT_INT) flags[k].intVal = pr.argv(++i).toInt(); - if (flags[k].type == FT_STR) flags[k].strVal = pr.argv(++i); + if (flags[k].type == FT_BOOL) { + flags[k].boolVal = true; + } else { + i++; + if (i >= argc) { + outvt << "Missing argument for flag : -" << String(arg[j], 1) << ENDL; + } else { + flags[k].strVal = pr.argv(i); + if (flags[k].type == FT_INT) flags[k].intVal = flags[k].strVal.toInt(); + } + } break; } } if (!found) { - outvt << "Unknown option : -" << String(arg[j]) << "\n"; + outvt << "Unknown option : -" << String(arg[j], 1) << ENDL; exit(-1); } } diff --git a/Source/Library/Userland/Binding/Process.class.h b/Source/Library/Userland/Binding/Process.class.h index 2200f59..e94084b 100644 --- a/Source/Library/Userland/Binding/Process.class.h +++ b/Source/Library/Userland/Binding/Process.class.h @@ -54,10 +54,10 @@ class Process : public RessourceCaller { void pushArg(const String& arg) { doCall(PRIF_PUSHARG, (u32int)&arg); } - void setInVT(VirtualTerminal vt) { + void setInVT(const VirtualTerminal& vt) { doCall(PRIF_SETINVT, vt.resId()); } - void setOutVT(VirtualTerminal vt) { + void setOutVT(const VirtualTerminal& vt) { doCall(PRIF_SETOUTVT, vt.resId()); } bool authenticatePW(String user, String pw) { diff --git a/Source/Library/Userland/Binding/VirtualTerminal.class.h b/Source/Library/Userland/Binding/VirtualTerminal.class.h index df44124..6576c1c 100644 --- a/Source/Library/Userland/Binding/VirtualTerminal.class.h +++ b/Source/Library/Userland/Binding/VirtualTerminal.class.h @@ -7,9 +7,10 @@ #include <Kbd.iface.h> #include <OStream.proto.h> +#include <IStream.proto.h> #include <WChar.class.h> -class VirtualTerminal : public RessourceCaller, public OStream { +class VirtualTerminal : public RessourceCaller, public OStream, public IStream { public: static VirtualTerminal getIn() { u32int id = RessourceCaller::sCall(VTIF_OBJTYPE, VTIF_SGETPRINVT); @@ -30,6 +31,9 @@ class VirtualTerminal : public RessourceCaller, public OStream { void write(const String &s) { doCall(VTIF_WRITE, (u32int)&s); } + String read() { + return String::unserialize(doCall(VTIF_READLINE, 1)) += "\n"; + } keypress_t getKeypress(bool show = true, bool block = true) { keypress_t* ptr = (keypress_t*)doCall(VTIF_GETKEYPRESS, (show ? 1 : 0) | (block ? 2 : 0)); return *ptr; diff --git a/Source/Library/Userland/Syscall/RessourceCaller.class.h b/Source/Library/Userland/Syscall/RessourceCaller.class.h index f26216d..39091ed 100644 --- a/Source/Library/Userland/Syscall/RessourceCaller.class.h +++ b/Source/Library/Userland/Syscall/RessourceCaller.class.h @@ -28,8 +28,8 @@ class RessourceCaller { public: static u32int sCall(u32int type, u8int wat, u32int a = 0, u32int b = 0, u32int c = 0, u32int d = 0); - u32int resId() { return m_id; } - u32int resType() { return m_type; } + u32int resId() const { return m_id; } + u32int resType() const { return m_type; } bool valid() { return m_type != 0; } }; |