summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
Diffstat (limited to 'Source')
-rw-r--r--Source/Applications/PaperWork/Makefile2
-rw-r--r--Source/Applications/PaperWork/Map.txt1394
-rw-r--r--Source/Applications/PaperWork/PaperWork.cpp4
-rw-r--r--Source/Applications/Shell/Shell.class.cpp2
-rw-r--r--Source/Library/Common/IStream.proto.cpp73
-rw-r--r--Source/Library/Common/IStream.proto.h29
-rw-r--r--Source/Library/Makefile1
-rw-r--r--Source/Library/Userland/App/ShellApp.proto.cpp23
-rw-r--r--Source/Library/Userland/Binding/Process.class.h4
-rw-r--r--Source/Library/Userland/Binding/VirtualTerminal.class.h6
-rw-r--r--Source/Library/Userland/Syscall/RessourceCaller.class.h4
11 files changed, 1526 insertions, 16 deletions
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; }
};