From 2d3c5a9c47d99c8f4f5561f9eae16497c1cde63a Mon Sep 17 00:00:00 2001 From: Alexis211 Date: Sun, 20 Dec 2009 16:13:44 +0100 Subject: Added file streams and string streams --- Source/Applications/PaperWork/Map.txt | 910 ++++++++++----------- Source/Kernel/VFS/FSNode-sc.proto.cpp | 1 + .../Kernel/VTManager/VirtualTerminal-kbd.proto.cpp | 3 + Source/Library/Common/FileStream.class.cpp | 67 ++ Source/Library/Common/FileStream.class.h | 41 + Source/Library/Common/IStream.proto.cpp | 7 +- Source/Library/Common/IStream.proto.h | 3 + Source/Library/Common/OStream.proto.cpp | 3 + Source/Library/Common/OStream.proto.h | 3 +- Source/Library/Common/StringStream.class.cpp | 28 + Source/Library/Common/StringStream.class.h | 35 + Source/Library/Common/WChar.class.h | 2 + Source/Library/Makefile | 2 + Source/Library/Userland/App/ShellApp.proto.cpp | 4 + Source/Library/Userland/App/ShellApp.proto.h | 1 + .../Userland/Binding/VirtualTerminal.class.h | 13 +- 16 files changed, 625 insertions(+), 498 deletions(-) create mode 100644 Source/Library/Common/FileStream.class.cpp create mode 100644 Source/Library/Common/FileStream.class.h create mode 100644 Source/Library/Common/StringStream.class.cpp create mode 100644 Source/Library/Common/StringStream.class.h (limited to 'Source') diff --git a/Source/Applications/PaperWork/Map.txt b/Source/Applications/PaperWork/Map.txt index f19b7ba..d44ef4f 100644 --- a/Source/Applications/PaperWork/Map.txt +++ b/Source/Applications/PaperWork/Map.txt @@ -116,27 +116,6 @@ 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 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 @@ -191,40 +170,16 @@ Discarded input sections 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 @@ -241,18 +196,6 @@ Discarded input sections 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 @@ -268,9 +211,9 @@ Linker script and memory map LOAD ../../Library/Melon.o 0x10000000 . = 0x10000000 -.text 0x10000000 0x6490 +.text 0x10000000 0x66e0 *(.text) - .text 0x10000000 0x5d4c ../../Library/Melon.o + .text 0x10000000 0x5f9c ../../Library/Melon.o 0x10000000 WChar::WChar() 0x1000000e WChar::WChar() 0x1000001c WChar::WChar(char) @@ -345,779 +288,764 @@ LOAD ../../Library/Melon.o 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() + 0x10003bf4 IStream::IStream() + 0x10003c36 IStream::IStream() + 0x10003c78 IStream::IStream(IStream const&) + 0x10003cb4 IStream::IStream(IStream const&) + 0x10003cf0 IStream::~IStream() + 0x10003d34 IStream::~IStream() + 0x10003d78 IStream::~IStream() + 0x10003dbc IStream::populate() + 0x10003e76 IStream::getChar() + 0x10003f6e IStream::get(WChar) + 0x10004164 __cxa_pure_virtual + 0x10004169 __cxa_atexit + 0x10004173 memmove + 0x10004197 __udivdi3 + 0x100041dd __umoddi3 + 0x1000422c ShellApp::ShellApp(String, String) + 0x100043dc ShellApp::ShellApp(String, String) + 0x1000458c ShellApp::~ShellApp() + 0x10004626 ShellApp::~ShellApp() + 0x100046c0 ShellApp::~ShellApp() + 0x1000475a ShellApp::init() + 0x100058fa ShellApp::getFlag(String) + 0x1000596e ShellApp::addFlag(WChar, String, String, int, String) + 0x10005a7c ShellApp::sFlag(String) + 0x10005b22 ShellApp::iFlag(String) + 0x10005b82 ShellApp::bFlag(String) + 0x10005be4 syscall(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) + 0x10005c0f threadFinishedSyscall(unsigned int) + 0x10005c19 breakPoint() + 0x10005c1f putch(char) + 0x10005c67 sleep(unsigned int) + 0x10005ca2 write_hex(unsigned int) + 0x10005ce0 RessourceCaller::RessourceCaller(unsigned int, unsigned int) + 0x10005d50 RessourceCaller::RessourceCaller(unsigned int, unsigned int) + 0x10005dc0 RessourceCaller::sCall(unsigned int, unsigned char, unsigned int, unsigned int, unsigned int, unsigned int) + 0x10005e06 RessourceCaller::doCall(unsigned char, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) + 0x10005e68 start + 0x10005f49 Mem::alloc(unsigned int) + 0x10005f6d Mem::free(void*) + 0x10005f89 Mem::mkXchgSpace(unsigned int) + .text 0x10005f9c 0x744 PaperWork.o + 0x10005f9c PaperWork::run() .text._ZN5WChareqEj - 0x10006490 0x10 + 0x100066e0 0x10 .text._ZN5WChareqEj - 0x10006490 0x10 ../../Library/Melon.o - 0x10006490 WChar::operator==(unsigned int) + 0x100066e0 0x10 ../../Library/Melon.o + 0x100066e0 WChar::operator==(unsigned int) .text._ZNK5WCharcvjEv - 0x100064a0 0xa + 0x100066f0 0xa .text._ZNK5WCharcvjEv - 0x100064a0 0xa ../../Library/Melon.o - 0x100064a0 WChar::operator unsigned int() const + 0x100066f0 0xa ../../Library/Melon.o + 0x100066f0 WChar::operator unsigned int() const .text._ZN6Thread3getEv - 0x100064aa 0x5a + 0x100066fa 0x5a .text._ZN6Thread3getEv - 0x100064aa 0x5a ../../Library/Melon.o - 0x100064aa Thread::get() + 0x100066fa 0x5a ../../Library/Melon.o + 0x100066fa Thread::get() .text._ZN6ThreadC1Ej - 0x10006504 0x22 + 0x10006754 0x22 .text._ZN6ThreadC1Ej - 0x10006504 0x22 ../../Library/Melon.o - 0x10006504 Thread::Thread(unsigned int) + 0x10006754 0x22 ../../Library/Melon.o + 0x10006754 Thread::Thread(unsigned int) .text._ZN6Thread5sleepEj - 0x10006526 0x42 + 0x10006776 0x42 .text._ZN6Thread5sleepEj - 0x10006526 0x42 ../../Library/Melon.o - 0x10006526 Thread::sleep(unsigned int) + 0x10006776 0x42 ../../Library/Melon.o + 0x10006776 Thread::sleep(unsigned int) .text._ZN7Process3getEv - 0x10006568 0x5a + 0x100067b8 0x5a .text._ZN7Process3getEv - 0x10006568 0x5a ../../Library/Melon.o - 0x10006568 Process::get() + 0x100067b8 0x5a ../../Library/Melon.o + 0x100067b8 Process::get() .text._ZN7ProcessC1Ej - 0x100065c2 0x22 + 0x10006812 0x22 .text._ZN7ProcessC1Ej - 0x100065c2 0x22 ../../Library/Melon.o - 0x100065c2 Process::Process(unsigned int) + 0x10006812 0x22 ../../Library/Melon.o + 0x10006812 Process::Process(unsigned int) .text._ZN7Process10allocPagesEjj - 0x100065e4 0x41 + 0x10006834 0x41 .text._ZN7Process10allocPagesEjj - 0x100065e4 0x41 ../../Library/Melon.o - 0x100065e4 Process::allocPages(unsigned int, unsigned int) + 0x10006834 0x41 ../../Library/Melon.o + 0x10006834 Process::allocPages(unsigned int, unsigned int) .text._ZN7Process9freePagesEjj - 0x10006626 0x41 + 0x10006876 0x41 .text._ZN7Process9freePagesEjj - 0x10006626 0x41 ../../Library/Melon.o - 0x10006626 Process::freePages(unsigned int, unsigned int) + 0x10006876 0x41 ../../Library/Melon.o + 0x10006876 Process::freePages(unsigned int, unsigned int) -.text._ZnwjPv 0x10006667 0x8 - .text._ZnwjPv 0x10006667 0x8 ../../Library/Melon.o - 0x10006667 operator new(unsigned int, void*) +.text._ZnwjPv 0x100068b7 0x8 + .text._ZnwjPv 0x100068b7 0x8 ../../Library/Melon.o + 0x100068b7 operator new(unsigned int, void*) -.text._Znaj 0x1000666f 0x13 - .text._Znaj 0x1000666f 0x13 ../../Library/Melon.o - 0x1000666f operator new[](unsigned int) +.text._Znaj 0x100068bf 0x13 + .text._Znaj 0x100068bf 0x13 ../../Library/Melon.o + 0x100068bf operator new[](unsigned int) -.text._ZdlPv 0x10006682 0x13 - .text._ZdlPv 0x10006682 0x13 ../../Library/Melon.o - 0x10006682 operator delete(void*) +.text._ZdlPv 0x100068d2 0x13 + .text._ZdlPv 0x100068d2 0x13 ../../Library/Melon.o + 0x100068d2 operator delete(void*) -.text._ZdaPv 0x10006695 0x13 - .text._ZdaPv 0x10006695 0x13 ../../Library/Melon.o - 0x10006695 operator delete[](void*) +.text._ZdaPv 0x100068e5 0x13 + .text._ZdaPv 0x100068e5 0x13 ../../Library/Melon.o + 0x100068e5 operator delete[](void*) .text._ZN5WChar6affectEPKch - 0x100066a8 0xb0 + 0x100068f8 0xb0 .text._ZN5WChar6affectEPKch - 0x100066a8 0xb0 ../../Library/Melon.o - 0x100066a8 WChar::affect(char const*, unsigned char) + 0x100068f8 0xb0 ../../Library/Melon.o + 0x100068f8 WChar::affect(char const*, unsigned char) .text._ZN5WCharaSEj - 0x10006758 0x10 + 0x100069a8 0x10 .text._ZN5WCharaSEj - 0x10006758 0x10 ../../Library/Melon.o - 0x10006758 WChar::operator=(unsigned int) + 0x100069a8 0x10 ../../Library/Melon.o + 0x100069a8 WChar::operator=(unsigned int) .text._ZN6StringC1Ev - 0x10006768 0x1c + 0x100069b8 0x1c .text._ZN6StringC1Ev - 0x10006768 0x1c ../../Library/Melon.o - 0x10006768 String::String() + 0x100069b8 0x1c ../../Library/Melon.o + 0x100069b8 String::String() .text._ZN6StringC1ERKS_ - 0x10006784 0x23 + 0x100069d4 0x23 .text._ZN6StringC1ERKS_ - 0x10006784 0x23 ../../Library/Melon.o - 0x10006784 String::String(String const&) + 0x100069d4 0x23 ../../Library/Melon.o + 0x100069d4 String::String(String const&) .text._ZN6StringpLERKS_ - 0x100067a8 0x1d + 0x100069f8 0x1d .text._ZN6StringpLERKS_ - 0x100067a8 0x1d ../../Library/Melon.o - 0x100067a8 String::operator+=(String const&) + 0x100069f8 0x1d ../../Library/Melon.o + 0x100069f8 String::operator+=(String const&) .text._ZN6StringpLE5WChar - 0x100067c6 0x1d + 0x10006a16 0x1d .text._ZN6StringpLE5WChar - 0x100067c6 0x1d ../../Library/Melon.o - 0x100067c6 String::operator+=(WChar) + 0x10006a16 0x1d ../../Library/Melon.o + 0x10006a16 String::operator+=(WChar) .text._ZN6StringD1Ev - 0x100067e4 0x30 + 0x10006a34 0x30 .text._ZN6StringD1Ev - 0x100067e4 0x30 ../../Library/Melon.o - 0x100067e4 String::~String() + 0x10006a34 0x30 ../../Library/Melon.o + 0x10006a34 String::~String() .text._ZN6StringD0Ev - 0x10006814 0x30 + 0x10006a64 0x30 .text._ZN6StringD0Ev - 0x10006814 0x30 ../../Library/Melon.o - 0x10006814 String::~String() + 0x10006a64 0x30 ../../Library/Melon.o + 0x10006a64 String::~String() .text._ZN11BasicStringI5WCharEC2Ev - 0x10006844 0x22 + 0x10006a94 0x22 .text._ZN11BasicStringI5WCharEC2Ev - 0x10006844 0x22 ../../Library/Melon.o - 0x10006844 BasicString::BasicString() + 0x10006a94 0x22 ../../Library/Melon.o + 0x10006a94 BasicString::BasicString() .text._ZN11BasicStringI5WCharED2Ev - 0x10006866 0x3d + 0x10006ab6 0x3d .text._ZN11BasicStringI5WCharED2Ev - 0x10006866 0x3d ../../Library/Melon.o - 0x10006866 BasicString::~BasicString() + 0x10006ab6 0x3d ../../Library/Melon.o + 0x10006ab6 BasicString::~BasicString() .text._ZN11BasicStringI5WCharED1Ev - 0x100068a4 0x3d + 0x10006af4 0x3d .text._ZN11BasicStringI5WCharED1Ev - 0x100068a4 0x3d ../../Library/Melon.o - 0x100068a4 BasicString::~BasicString() + 0x10006af4 0x3d ../../Library/Melon.o + 0x10006af4 BasicString::~BasicString() .text._ZN11BasicStringI5WCharED0Ev - 0x100068e2 0x3d + 0x10006b32 0x3d .text._ZN11BasicStringI5WCharED0Ev - 0x100068e2 0x3d ../../Library/Melon.o - 0x100068e2 BasicString::~BasicString() + 0x10006b32 0x3d ../../Library/Melon.o + 0x10006b32 BasicString::~BasicString() .text._ZN11BasicStringI5WCharEC2ERKS1_ - 0x10006920 0x2d + 0x10006b70 0x2d .text._ZN11BasicStringI5WCharEC2ERKS1_ - 0x10006920 0x2d ../../Library/Melon.o - 0x10006920 BasicString::BasicString(BasicString const&) + 0x10006b70 0x2d ../../Library/Melon.o + 0x10006b70 BasicString::BasicString(BasicString const&) .text._ZN11BasicStringI5WCharE6affectERKS1_ - 0x1000694e 0xb8 + 0x10006b9e 0xb8 .text._ZN11BasicStringI5WCharE6affectERKS1_ - 0x1000694e 0xb8 ../../Library/Melon.o - 0x1000694e BasicString::affect(BasicString const&) + 0x10006b9e 0xb8 ../../Library/Melon.o + 0x10006b9e BasicString::affect(BasicString const&) .text._ZN11BasicStringI5WCharE6appendERKS1_ - 0x10006a06 0x105 + 0x10006c56 0x105 .text._ZN11BasicStringI5WCharE6appendERKS1_ - 0x10006a06 0x105 ../../Library/Melon.o - 0x10006a06 BasicString::append(BasicString const&) + 0x10006c56 0x105 ../../Library/Melon.o + 0x10006c56 BasicString::append(BasicString const&) .text._ZN11BasicStringI5WCharE6appendES0_ - 0x10006b0c 0xd2 + 0x10006d5c 0xd2 .text._ZN11BasicStringI5WCharE6appendES0_ - 0x10006b0c 0xd2 ../../Library/Melon.o - 0x10006b0c BasicString::append(WChar) + 0x10006d5c 0xd2 ../../Library/Melon.o + 0x10006d5c BasicString::append(WChar) .text._ZNK11BasicStringI5WCharEixEi - 0x10006bde 0x13 + 0x10006e2e 0x13 .text._ZNK11BasicStringI5WCharEixEi - 0x10006bde 0x13 ../../Library/Melon.o - 0x10006bde BasicString::operator[](int) const + 0x10006e2e 0x13 ../../Library/Melon.o + 0x10006e2e BasicString::operator[](int) const .text._ZN6VectorI6StringEC1Ev - 0x10006bf2 0x18 + 0x10006e42 0x18 .text._ZN6VectorI6StringEC1Ev - 0x10006bf2 0x18 ../../Library/Melon.o - 0x10006bf2 Vector::Vector() + 0x10006e42 0x18 ../../Library/Melon.o + 0x10006e42 Vector::Vector() .text._ZN6VectorI6StringE4pushERKS0_ - 0x10006c0a 0xb8 + 0x10006e5a 0xb8 .text._ZN6VectorI6StringE4pushERKS0_ - 0x10006c0a 0xb8 ../../Library/Melon.o - 0x10006c0a Vector::push(String const&) + 0x10006e5a 0xb8 ../../Library/Melon.o + 0x10006e5a Vector::push(String const&) .text._ZNK6VectorI6StringE4backEv - 0x10006cc2 0x1f + 0x10006f12 0x1f .text._ZNK6VectorI6StringE4backEv - 0x10006cc2 0x1f ../../Library/Melon.o - 0x10006cc2 Vector::back() const + 0x10006f12 0x1f ../../Library/Melon.o + 0x10006f12 Vector::back() const .text._ZN15RessourceCaller5validEv - 0x10006ce2 0x10 + 0x10006f32 0x10 .text._ZN15RessourceCaller5validEv - 0x10006ce2 0x10 ../../Library/Melon.o - 0x10006ce2 RessourceCaller::valid() + 0x10006f32 0x10 ../../Library/Melon.o + 0x10006f32 RessourceCaller::valid() .text._ZN9ByteArrayC1Ev - 0x10006cf2 0x1c + 0x10006f42 0x1c .text._ZN9ByteArrayC1Ev - 0x10006cf2 0x1c ../../Library/Melon.o - 0x10006cf2 ByteArray::ByteArray() + 0x10006f42 0x1c ../../Library/Melon.o + 0x10006f42 ByteArray::ByteArray() .text._ZN9ByteArrayC1ERK6Stringh - 0x10006d0e 0x3c + 0x10006f5e 0x3c .text._ZN9ByteArrayC1ERK6Stringh - 0x10006d0e 0x3c ../../Library/Melon.o - 0x10006d0e ByteArray::ByteArray(String const&, unsigned char) + 0x10006f5e 0x3c ../../Library/Melon.o + 0x10006f5e ByteArray::ByteArray(String const&, unsigned char) .text._ZN9ByteArraycvPhEv - 0x10006d4a 0xb + 0x10006f9a 0xb .text._ZN9ByteArraycvPhEv - 0x10006d4a 0xb ../../Library/Melon.o - 0x10006d4a ByteArray::operator unsigned char*() + 0x10006f9a 0xb ../../Library/Melon.o + 0x10006f9a ByteArray::operator unsigned char*() .text._ZN4File4readEjPh - 0x10006d56 0x41 + 0x10006fa6 0x41 .text._ZN4File4readEjPh - 0x10006d56 0x41 ../../Library/Melon.o - 0x10006d56 File::read(unsigned int, unsigned char*) + 0x10006fa6 0x41 ../../Library/Melon.o + 0x10006fa6 File::read(unsigned int, unsigned char*) .text._ZN4File5writeEjPh - 0x10006d98 0x46 + 0x10006fe8 0x46 .text._ZN4File5writeEjPh - 0x10006d98 0x46 ../../Library/Melon.o - 0x10006d98 File::write(unsigned int, unsigned char*) + 0x10006fe8 0x46 ../../Library/Melon.o + 0x10006fe8 File::write(unsigned int, unsigned char*) .text._ZN4File4readER9ByteArray - 0x10006dde 0x89 + 0x1000702e 0x89 .text._ZN4File4readER9ByteArray - 0x10006dde 0x89 ../../Library/Melon.o - 0x10006dde File::read(ByteArray&) + 0x1000702e 0x89 ../../Library/Melon.o + 0x1000702e File::read(ByteArray&) .text._ZN4File5writeER9ByteArray - 0x10006e68 0x51 + 0x100070b8 0x51 .text._ZN4File5writeER9ByteArray - 0x10006e68 0x51 ../../Library/Melon.o - 0x10006e68 File::write(ByteArray&) + 0x100070b8 0x51 ../../Library/Melon.o + 0x100070b8 File::write(ByteArray&) .text._ZN4File4seekEyh - 0x10006eba 0x77 + 0x1000710a 0x77 .text._ZN4File4seekEyh - 0x10006eba 0x77 ../../Library/Melon.o - 0x10006eba File::seek(unsigned long long, unsigned char) + 0x1000710a 0x77 ../../Library/Melon.o + 0x1000710a File::seek(unsigned long long, unsigned char) .text._ZN9ByteArrayD1Ev - 0x10006f32 0x30 + 0x10007182 0x30 .text._ZN9ByteArrayD1Ev - 0x10006f32 0x30 ../../Library/Melon.o - 0x10006f32 ByteArray::~ByteArray() + 0x10007182 0x30 ../../Library/Melon.o + 0x10007182 ByteArray::~ByteArray() .text._ZN9ByteArrayD0Ev - 0x10006f62 0x30 + 0x100071b2 0x30 .text._ZN9ByteArrayD0Ev - 0x10006f62 0x30 ../../Library/Melon.o - 0x10006f62 ByteArray::~ByteArray() + 0x100071b2 0x30 ../../Library/Melon.o + 0x100071b2 ByteArray::~ByteArray() .text._ZN11BasicStringIhEC2Ev - 0x10006f92 0x22 + 0x100071e2 0x22 .text._ZN11BasicStringIhEC2Ev - 0x10006f92 0x22 ../../Library/Melon.o - 0x10006f92 BasicString::BasicString() + 0x100071e2 0x22 ../../Library/Melon.o + 0x100071e2 BasicString::BasicString() .text._ZN11BasicStringIhED2Ev - 0x10006fb4 0x3d + 0x10007204 0x3d .text._ZN11BasicStringIhED2Ev - 0x10006fb4 0x3d ../../Library/Melon.o - 0x10006fb4 BasicString::~BasicString() + 0x10007204 0x3d ../../Library/Melon.o + 0x10007204 BasicString::~BasicString() .text._ZN11BasicStringIhED1Ev - 0x10006ff2 0x3d + 0x10007242 0x3d .text._ZN11BasicStringIhED1Ev - 0x10006ff2 0x3d ../../Library/Melon.o - 0x10006ff2 BasicString::~BasicString() + 0x10007242 0x3d ../../Library/Melon.o + 0x10007242 BasicString::~BasicString() .text._ZN11BasicStringIhED0Ev - 0x10007030 0x3d + 0x10007280 0x3d .text._ZN11BasicStringIhED0Ev - 0x10007030 0x3d ../../Library/Melon.o - 0x10007030 BasicString::~BasicString() + 0x10007280 0x3d ../../Library/Melon.o + 0x10007280 BasicString::~BasicString() .text._ZNK11BasicStringIhE4sizeEv - 0x1000706e 0xb + 0x100072be 0xb .text._ZNK11BasicStringIhE4sizeEv - 0x1000706e 0xb ../../Library/Melon.o - 0x1000706e BasicString::size() const + 0x100072be 0xb ../../Library/Melon.o + 0x100072be BasicString::size() const .text._ZNK11BasicStringIhEixEi - 0x1000707a 0x11 + 0x100072ca 0x11 .text._ZNK11BasicStringIhEixEi - 0x1000707a 0x11 ../../Library/Melon.o - 0x1000707a BasicString::operator[](int) const + 0x100072ca 0x11 ../../Library/Melon.o + 0x100072ca BasicString::operator[](int) const .text._ZN11BasicStringIhE5clearEv - 0x1000708c 0x34 + 0x100072dc 0x34 .text._ZN11BasicStringIhE5clearEv - 0x1000708c 0x34 ../../Library/Melon.o - 0x1000708c BasicString::clear() + 0x100072dc 0x34 ../../Library/Melon.o + 0x100072dc BasicString::clear() .text._ZN11BasicStringIhEpLEh - 0x100070c0 0x21 + 0x10007310 0x21 .text._ZN11BasicStringIhEpLEh - 0x100070c0 0x21 ../../Library/Melon.o - 0x100070c0 BasicString::operator+=(unsigned char) + 0x10007310 0x21 ../../Library/Melon.o + 0x10007310 BasicString::operator+=(unsigned char) .text._ZN11BasicStringIhE6appendEh - 0x100070e2 0x9c + 0x10007332 0x9c .text._ZN11BasicStringIhE6appendEh - 0x100070e2 0x9c ../../Library/Melon.o - 0x100070e2 BasicString::append(unsigned char) + 0x10007332 0x9c ../../Library/Melon.o + 0x10007332 BasicString::append(unsigned char) .text._ZN5WChar6encodeEh - 0x1000717e 0x7a + 0x100073ce 0x7a .text._ZN5WChar6encodeEh - 0x1000717e 0x7a ../../Library/Melon.o - 0x1000717e WChar::encode(unsigned char) + 0x100073ce 0x7a ../../Library/Melon.o + 0x100073ce WChar::encode(unsigned char) .text._ZNK11BasicStringI5WCharE4sizeEv - 0x100071f8 0xb + 0x10007448 0xb .text._ZNK11BasicStringI5WCharE4sizeEv - 0x100071f8 0xb ../../Library/Melon.o - 0x100071f8 BasicString::size() const + 0x10007448 0xb ../../Library/Melon.o + 0x10007448 BasicString::size() const -.text._Znwj 0x10007203 0x13 - .text._Znwj 0x10007203 0x13 ../../Library/Melon.o - 0x10007203 operator new(unsigned int) +.text._Znwj 0x10007453 0x13 + .text._Znwj 0x10007453 0x13 ../../Library/Melon.o + 0x10007453 operator new(unsigned int) .text._ZN6StringC1E5WCharj - 0x10007216 0x2a + 0x10007466 0x2a .text._ZN6StringC1E5WCharj - 0x10007216 0x2a ../../Library/Melon.o - 0x10007216 String::String(WChar, unsigned int) + 0x10007466 0x2a ../../Library/Melon.o + 0x10007466 String::String(WChar, unsigned int) .text._ZN7OStreamD1Ev - 0x10007240 0x30 + 0x10007490 0x30 .text._ZN7OStreamD1Ev - 0x10007240 0x30 ../../Library/Melon.o - 0x10007240 OStream::~OStream() + 0x10007490 0x30 ../../Library/Melon.o + 0x10007490 OStream::~OStream() .text._ZN7OStreamD0Ev - 0x10007270 0x30 + 0x100074c0 0x30 .text._ZN7OStreamD0Ev - 0x10007270 0x30 ../../Library/Melon.o - 0x10007270 OStream::~OStream() + 0x100074c0 0x30 ../../Library/Melon.o + 0x100074c0 OStream::~OStream() .text._ZN11BasicStringI5WCharEC2ES0_j - 0x100072a0 0x34 + 0x100074f0 0x34 .text._ZN11BasicStringI5WCharEC2ES0_j - 0x100072a0 0x34 ../../Library/Melon.o - 0x100072a0 BasicString::BasicString(WChar, unsigned int) + 0x100074f0 0x34 ../../Library/Melon.o + 0x100074f0 BasicString::BasicString(WChar, unsigned int) .text._ZN10SimpleListI6StringEC1ERKS0_PS1_ - 0x100072d4 0x23 + 0x10007524 0x23 .text._ZN10SimpleListI6StringEC1ERKS0_PS1_ - 0x100072d4 0x23 ../../Library/Melon.o - 0x100072d4 SimpleList::SimpleList(String const&, SimpleList*) + 0x10007524 0x23 ../../Library/Melon.o + 0x10007524 SimpleList::SimpleList(String const&, SimpleList*) .text._ZN10SimpleListI6StringE8addAtEndERKS0_ - 0x100072f8 0x94 + 0x10007548 0x94 .text._ZN10SimpleListI6StringE8addAtEndERKS0_ - 0x100072f8 0x94 ../../Library/Melon.o - 0x100072f8 SimpleList::addAtEnd(String const&) + 0x10007548 0x94 ../../Library/Melon.o + 0x10007548 SimpleList::addAtEnd(String const&) .text._ZN10SimpleListI6StringE4nextEv - 0x1000738c 0xb + 0x100075dc 0xb .text._ZN10SimpleListI6StringE4nextEv - 0x1000738c 0xb ../../Library/Melon.o - 0x1000738c SimpleList::next() + 0x100075dc 0xb ../../Library/Melon.o + 0x100075dc SimpleList::next() .text._ZN10SimpleListI6StringE1vEv - 0x10007398 0x8 + 0x100075e8 0x8 .text._ZN10SimpleListI6StringE1vEv - 0x10007398 0x8 ../../Library/Melon.o - 0x10007398 SimpleList::v() + 0x100075e8 0x8 ../../Library/Melon.o + 0x100075e8 SimpleList::v() .text._ZN10SimpleListI6StringED1Ev - 0x100073a0 0x3c + 0x100075f0 0x3c .text._ZN10SimpleListI6StringED1Ev - 0x100073a0 0x3c ../../Library/Melon.o - 0x100073a0 SimpleList::~SimpleList() + 0x100075f0 0x3c ../../Library/Melon.o + 0x100075f0 SimpleList::~SimpleList() .text._ZN11BasicStringI5WCharE6affectES0_j - 0x100073dc 0xb8 + 0x1000762c 0xb8 .text._ZN11BasicStringI5WCharE6affectES0_j - 0x100073dc 0xb8 ../../Library/Melon.o - 0x100073dc BasicString::affect(WChar, unsigned int) + 0x1000762c 0xb8 ../../Library/Melon.o + 0x1000762c BasicString::affect(WChar, unsigned int) .text._ZNK11BasicStringI5WCharE5emptyEv - 0x10007494 0x10 + 0x100076e4 0x10 .text._ZNK11BasicStringI5WCharE5emptyEv - 0x10007494 0x10 ../../Library/Melon.o - 0x10007494 BasicString::empty() const + 0x100076e4 0x10 ../../Library/Melon.o + 0x100076e4 BasicString::empty() const .text._ZN10SimpleListI6StringE7delThisEv - 0x100074a4 0x1f + 0x100076f4 0x1f .text._ZN10SimpleListI6StringE7delThisEv - 0x100074a4 0x1f ../../Library/Melon.o - 0x100074a4 SimpleList::delThis() + 0x100076f4 0x1f ../../Library/Melon.o + 0x100076f4 SimpleList::delThis() .text._Z5doDivyjPj - 0x100074c3 0x76 + 0x10007713 0x76 .text._Z5doDivyjPj - 0x100074c3 0x76 ../../Library/Melon.o - 0x100074c3 doDiv(unsigned long long, unsigned int, unsigned int*) + 0x10007713 0x76 ../../Library/Melon.o + 0x10007713 doDiv(unsigned long long, unsigned int, unsigned int*) .text._ZN6StringaSERKS_ - 0x1000753a 0x1a + 0x1000778a 0x1a .text._ZN6StringaSERKS_ - 0x1000753a 0x1a ../../Library/Melon.o - 0x1000753a String::operator=(String const&) + 0x1000778a 0x1a ../../Library/Melon.o + 0x1000778a String::operator=(String const&) .text._ZNK6StringeqEPKc - 0x10007554 0x22 + 0x100077a4 0x22 .text._ZNK6StringeqEPKc - 0x10007554 0x22 ../../Library/Melon.o - 0x10007554 String::operator==(char const*) const + 0x100077a4 0x22 ../../Library/Melon.o + 0x100077a4 String::operator==(char const*) const .text._ZN6StringneEPKc - 0x10007576 0x25 + 0x100077c6 0x25 .text._ZN6StringneEPKc - 0x10007576 0x25 ../../Library/Melon.o - 0x10007576 String::operator!=(char const*) + 0x100077c6 0x25 ../../Library/Melon.o + 0x100077c6 String::operator!=(char const*) .text._ZNK6StringeqERKS_ - 0x1000759c 0x1a + 0x100077ec 0x1a .text._ZNK6StringeqERKS_ - 0x1000759c 0x1a ../../Library/Melon.o - 0x1000759c String::operator==(String const&) const + 0x100077ec 0x1a ../../Library/Melon.o + 0x100077ec String::operator==(String const&) const .text._ZN6StringpLEPKc - 0x100075b6 0x22 + 0x10007806 0x22 .text._ZN6StringpLEPKc - 0x100075b6 0x22 ../../Library/Melon.o - 0x100075b6 String::operator+=(char const*) + 0x10007806 0x22 ../../Library/Melon.o + 0x10007806 String::operator+=(char const*) .text._ZNK6StringplERKS_ - 0x100075d8 0x30 + 0x10007828 0x30 .text._ZNK6StringplERKS_ - 0x100075d8 0x30 ../../Library/Melon.o - 0x100075d8 String::operator+(String const&) const + 0x10007828 0x30 ../../Library/Melon.o + 0x10007828 String::operator+(String const&) const .text._ZNK6StringplEPKc - 0x10007608 0x38 + 0x10007858 0x38 .text._ZNK6StringplEPKc - 0x10007608 0x38 ../../Library/Melon.o - 0x10007608 String::operator+(char const*) const + 0x10007858 0x38 ../../Library/Melon.o + 0x10007858 String::operator+(char const*) const .text._ZN7OStreamD2Ev - 0x10007640 0x30 + 0x10007890 0x30 .text._ZN7OStreamD2Ev - 0x10007640 0x30 ../../Library/Melon.o - 0x10007640 OStream::~OStream() + 0x10007890 0x30 ../../Library/Melon.o + 0x10007890 OStream::~OStream() .text._ZN7OStreamlsERK6String - 0x10007670 0x59 + 0x100078c0 0x59 .text._ZN7OStreamlsERK6String - 0x10007670 0x59 ../../Library/Melon.o - 0x10007670 OStream::operator<<(String const&) + 0x100078c0 0x59 ../../Library/Melon.o + 0x100078c0 OStream::operator<<(String const&) .text._ZN7OStreamlsEi - 0x100076ca 0x3d + 0x1000791a 0x3d .text._ZN7OStreamlsEi - 0x100076ca 0x3d ../../Library/Melon.o - 0x100076ca OStream::operator<<(int) + 0x1000791a 0x3d ../../Library/Melon.o + 0x1000791a OStream::operator<<(int) .text._ZN15VirtualTerminalD1Ev - 0x10007708 0x50 + 0x10007958 0x50 .text._ZN15VirtualTerminalD1Ev - 0x10007708 0x50 ../../Library/Melon.o - 0x10007708 non-virtual thunk to VirtualTerminal::~VirtualTerminal() - 0x10007710 VirtualTerminal::~VirtualTerminal() + 0x10007958 0x50 ../../Library/Melon.o + 0x10007958 non-virtual thunk to VirtualTerminal::~VirtualTerminal() + 0x10007960 VirtualTerminal::~VirtualTerminal() .text._ZN15VirtualTerminalD0Ev - 0x10007758 0x50 + 0x100079a8 0x50 .text._ZN15VirtualTerminalD0Ev - 0x10007758 0x50 ../../Library/Melon.o - 0x10007758 non-virtual thunk to VirtualTerminal::~VirtualTerminal() - 0x10007760 VirtualTerminal::~VirtualTerminal() + 0x100079a8 0x50 ../../Library/Melon.o + 0x100079a8 non-virtual thunk to VirtualTerminal::~VirtualTerminal() + 0x100079b0 VirtualTerminal::~VirtualTerminal() .text._ZN15VirtualTerminal5getInEv - 0x100077a8 0x5e + 0x100079f8 0x5e .text._ZN15VirtualTerminal5getInEv - 0x100077a8 0x5e ../../Library/Melon.o - 0x100077a8 VirtualTerminal::getIn() + 0x100079f8 0x5e ../../Library/Melon.o + 0x100079f8 VirtualTerminal::getIn() .text._ZN15VirtualTerminal6getOutEv - 0x10007806 0x5e + 0x10007a56 0x5e .text._ZN15VirtualTerminal6getOutEv - 0x10007806 0x5e ../../Library/Melon.o - 0x10007806 VirtualTerminal::getOut() + 0x10007a56 0x5e ../../Library/Melon.o + 0x10007a56 VirtualTerminal::getOut() .text._ZN15VirtualTerminalC1Ej - 0x10007864 0x51 + 0x10007ab4 0x58 .text._ZN15VirtualTerminalC1Ej - 0x10007864 0x51 ../../Library/Melon.o - 0x10007864 VirtualTerminal::VirtualTerminal(unsigned int) + 0x10007ab4 0x58 ../../Library/Melon.o + 0x10007ab4 VirtualTerminal::VirtualTerminal(unsigned int) .text._ZN15VirtualTerminal5writeERK6String - 0x100078b6 0x45 + 0x10007b0c 0x45 .text._ZN15VirtualTerminal5writeERK6String - 0x100078b6 0x45 ../../Library/Melon.o - 0x100078b6 VirtualTerminal::write(String const&) + 0x10007b0c 0x45 ../../Library/Melon.o + 0x10007b0c VirtualTerminal::write(String const&) .text._ZN15VirtualTerminal4readEv - 0x100078fc 0x9f + 0x10007b52 0x173 .text._ZN15VirtualTerminal4readEv - 0x100078fc 0x9f ../../Library/Melon.o - 0x100078fc non-virtual thunk to VirtualTerminal::read() - 0x10007904 VirtualTerminal::read() + 0x10007b52 0x173 ../../Library/Melon.o + 0x10007b52 non-virtual thunk to VirtualTerminal::read() + 0x10007b5a VirtualTerminal::read() .text._ZN7Process4argcEv - 0x1000799c 0x43 + 0x10007cc6 0x43 .text._ZN7Process4argcEv - 0x1000799c 0x43 ../../Library/Melon.o - 0x1000799c Process::argc() + 0x10007cc6 0x43 ../../Library/Melon.o + 0x10007cc6 Process::argc() .text._ZN7Process4argvEj - 0x100079e0 0x66 + 0x10007d0a 0x66 .text._ZN7Process4argvEj - 0x100079e0 0x66 ../../Library/Melon.o - 0x100079e0 Process::argv(unsigned int) + 0x10007d0a 0x66 ../../Library/Melon.o + 0x10007d0a Process::argv(unsigned int) .text._ZN11ApplicationC2Ev - 0x10007a46 0x22 + 0x10007d70 0x22 .text._ZN11ApplicationC2Ev - 0x10007a46 0x22 ../../Library/Melon.o - 0x10007a46 Application::Application() + 0x10007d70 0x22 ../../Library/Melon.o + 0x10007d70 Application::Application() .text._ZN11ApplicationD2Ev - 0x10007a68 0x25 + 0x10007d92 0x25 .text._ZN11ApplicationD2Ev - 0x10007a68 0x25 ../../Library/Melon.o - 0x10007a68 Application::~Application() + 0x10007d92 0x25 ../../Library/Melon.o + 0x10007d92 Application::~Application() .text._ZN11ApplicationD1Ev - 0x10007a8e 0x25 + 0x10007db8 0x25 .text._ZN11ApplicationD1Ev - 0x10007a8e 0x25 ../../Library/Melon.o - 0x10007a8e Application::~Application() + 0x10007db8 0x25 ../../Library/Melon.o + 0x10007db8 Application::~Application() .text._ZN11ApplicationD0Ev - 0x10007ab4 0x25 + 0x10007dde 0x25 .text._ZN11ApplicationD0Ev - 0x10007ab4 0x25 ../../Library/Melon.o - 0x10007ab4 Application::~Application() + 0x10007dde 0x25 ../../Library/Melon.o + 0x10007dde Application::~Application() .text._ZN11Application4initEv - 0x10007ada 0x5 + 0x10007e04 0x5 .text._ZN11Application4initEv - 0x10007ada 0x5 ../../Library/Melon.o - 0x10007ada Application::init() + 0x10007e04 0x5 ../../Library/Melon.o + 0x10007e04 Application::init() .text._ZN11Application8doEventsEv - 0x10007ae0 0x5 + 0x10007e0a 0x5 .text._ZN11Application8doEventsEv - 0x10007ae0 0x5 ../../Library/Melon.o - 0x10007ae0 Application::doEvents() + 0x10007e0a 0x5 ../../Library/Melon.o + 0x10007e0a Application::doEvents() .text._ZN11Application4exitEj - 0x10007ae6 0x35 + 0x10007e10 0x35 .text._ZN11Application4exitEj - 0x10007ae6 0x35 ../../Library/Melon.o - 0x10007ae6 Application::exit(unsigned int) + 0x10007e10 0x35 ../../Library/Melon.o + 0x10007e10 Application::exit(unsigned int) .text._ZN6flag_tC1Ev - 0x10007b1c 0x3d + 0x10007e46 0x3d .text._ZN6flag_tC1Ev - 0x10007b1c 0x3d ../../Library/Melon.o - 0x10007b1c flag_t::flag_t() + 0x10007e46 0x3d ../../Library/Melon.o + 0x10007e46 flag_t::flag_t() .text._ZN6flag_tD1Ev - 0x10007b5a 0x32 + 0x10007e84 0x32 .text._ZN6flag_tD1Ev - 0x10007b5a 0x32 ../../Library/Melon.o - 0x10007b5a flag_t::~flag_t() + 0x10007e84 0x32 ../../Library/Melon.o + 0x10007e84 flag_t::~flag_t() .text._ZNK11BasicStringI5WCharE7compareERKS1_ - 0x10007b8c 0x84 + 0x10007eb6 0x84 .text._ZNK11BasicStringI5WCharE7compareERKS1_ - 0x10007b8c 0x84 ../../Library/Melon.o - 0x10007b8c BasicString::compare(BasicString const&) const + 0x10007eb6 0x84 ../../Library/Melon.o + 0x10007eb6 BasicString::compare(BasicString const&) const .text._ZNK11BasicStringI5WCharE8containsERKS0_ - 0x10007c10 0x5a + 0x10007f3a 0x5a .text._ZNK11BasicStringI5WCharE8containsERKS0_ - 0x10007c10 0x5a ../../Library/Melon.o - 0x10007c10 BasicString::contains(WChar const&) const + 0x10007f3a 0x5a ../../Library/Melon.o + 0x10007f3a BasicString::contains(WChar const&) const .text._ZN6VectorI6StringED1Ev - 0x10007c6a 0x7b + 0x10007f94 0x7b .text._ZN6VectorI6StringED1Ev - 0x10007c6a 0x7b ../../Library/Melon.o - 0x10007c6a Vector::~Vector() + 0x10007f94 0x7b ../../Library/Melon.o + 0x10007f94 Vector::~Vector() .text._ZN6VectorI6flag_tEC1Ev - 0x10007ce6 0x18 + 0x10008010 0x18 .text._ZN6VectorI6flag_tEC1Ev - 0x10007ce6 0x18 ../../Library/Melon.o - 0x10007ce6 Vector::Vector() + 0x10008010 0x18 ../../Library/Melon.o + 0x10008010 Vector::Vector() .text._ZN6VectorI6flag_tED1Ev - 0x10007cfe 0x5b + 0x10008028 0x5b .text._ZN6VectorI6flag_tED1Ev - 0x10007cfe 0x5b ../../Library/Melon.o - 0x10007cfe Vector::~Vector() + 0x10008028 0x5b ../../Library/Melon.o + 0x10008028 Vector::~Vector() .text._ZNK6VectorI6flag_tE4sizeEv - 0x10007d5a 0xb + 0x10008084 0xb .text._ZNK6VectorI6flag_tE4sizeEv - 0x10007d5a 0xb ../../Library/Melon.o - 0x10007d5a Vector::size() const + 0x10008084 0xb ../../Library/Melon.o + 0x10008084 Vector::size() const .text._ZNK6VectorI6flag_tEixEj - 0x10007d66 0x13 + 0x10008090 0x13 .text._ZNK6VectorI6flag_tEixEj - 0x10007d66 0x13 ../../Library/Melon.o - 0x10007d66 Vector::operator[](unsigned int) const + 0x10008090 0x13 ../../Library/Melon.o + 0x10008090 Vector::operator[](unsigned int) const .text._ZN6flag_tC1ERKS_ - 0x10007d7a 0x7f + 0x100080a4 0x7f .text._ZN6flag_tC1ERKS_ - 0x10007d7a 0x7f ../../Library/Melon.o - 0x10007d7a flag_t::flag_t(flag_t const&) + 0x100080a4 0x7f ../../Library/Melon.o + 0x100080a4 flag_t::flag_t(flag_t const&) .text._ZN6VectorI6flag_tE4pushERKS0_ - 0x10007dfa 0xa4 + 0x10008124 0xa4 .text._ZN6VectorI6flag_tE4pushERKS0_ - 0x10007dfa 0xa4 ../../Library/Melon.o - 0x10007dfa Vector::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 + 0x10008124 0xa4 ../../Library/Melon.o + 0x10008124 Vector::push(flag_t const&) + +.iplt 0x100081c8 0x0 .iplt 0x00000000 0x0 ../../Library/Melon.o .text._ZNK15RessourceCaller5resIdEv - 0x10007fa6 0xa + 0x100081c8 0xa .text._ZNK15RessourceCaller5resIdEv - 0x10007fa6 0xa PaperWork.o - 0x10007fa6 RessourceCaller::resId() const + 0x100081c8 0xa PaperWork.o + 0x100081c8 RessourceCaller::resId() const .text._ZN6StringaSEPKc - 0x10007fb0 0x22 + 0x100081d2 0x22 .text._ZN6StringaSEPKc - 0x10007fb0 0x22 PaperWork.o - 0x10007fb0 String::operator=(char const*) + 0x100081d2 0x22 PaperWork.o + 0x100081d2 String::operator=(char const*) .text._ZN15VirtualTerminal8readLineEb - 0x10007fd2 0x89 + 0x100081f4 0x89 .text._ZN15VirtualTerminal8readLineEb - 0x10007fd2 0x89 PaperWork.o - 0x10007fd2 VirtualTerminal::readLine(bool) + 0x100081f4 0x89 PaperWork.o + 0x100081f4 VirtualTerminal::readLine(bool) .text._ZN7Process3runERK6String - 0x1000805b 0x53 + 0x1000827d 0x53 .text._ZN7Process3runERK6String - 0x1000805b 0x53 PaperWork.o - 0x1000805b Process::run(String const&) + 0x1000827d 0x53 PaperWork.o + 0x1000827d Process::run(String const&) .text._ZN7Process5startEv - 0x100080ae 0x43 + 0x100082d0 0x43 .text._ZN7Process5startEv - 0x100080ae 0x43 PaperWork.o - 0x100080ae Process::start() + 0x100082d0 0x43 PaperWork.o + 0x100082d0 Process::start() .text._ZN7Process4waitEv - 0x100080f2 0x43 + 0x10008314 0x43 .text._ZN7Process4waitEv - 0x100080f2 0x43 PaperWork.o - 0x100080f2 Process::wait() + 0x10008314 0x43 PaperWork.o + 0x10008314 Process::wait() .text._ZN7Process7pushArgERK6String - 0x10008136 0x42 + 0x10008358 0x42 .text._ZN7Process7pushArgERK6String - 0x10008136 0x42 PaperWork.o - 0x10008136 Process::pushArg(String const&) + 0x10008358 0x42 PaperWork.o + 0x10008358 Process::pushArg(String const&) .text._ZN7Process7setInVTERK15VirtualTerminal - 0x10008178 0x4d + 0x1000839a 0x4d .text._ZN7Process7setInVTERK15VirtualTerminal - 0x10008178 0x4d PaperWork.o - 0x10008178 Process::setInVT(VirtualTerminal const&) + 0x1000839a 0x4d PaperWork.o + 0x1000839a Process::setInVT(VirtualTerminal const&) .text._ZN7Process8setOutVTERK15VirtualTerminal - 0x100081c6 0x4d + 0x100083e8 0x4d .text._ZN7Process8setOutVTERK15VirtualTerminal - 0x100081c6 0x4d PaperWork.o - 0x100081c6 Process::setOutVT(VirtualTerminal const&) + 0x100083e8 0x4d PaperWork.o + 0x100083e8 Process::setOutVT(VirtualTerminal const&) .text._ZN7Process14authenticatePWE6StringS0_ - 0x10008214 0x47 + 0x10008436 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() + 0x10008436 0x47 PaperWork.o + 0x10008436 Process::authenticatePW(String, String) .text._ZN9PaperWorkC1Ev - 0x100082e0 0x2bf + 0x1000847e 0x2bf .text._ZN9PaperWorkC1Ev - 0x100082e0 0x2bf PaperWork.o - 0x100082e0 PaperWork::PaperWork() + 0x1000847e 0x2bf PaperWork.o + 0x1000847e PaperWork::PaperWork() .text._ZN9PaperWorkD1Ev - 0x100085a0 0x30 + 0x1000873e 0x30 .text._ZN9PaperWorkD1Ev - 0x100085a0 0x30 PaperWork.o - 0x100085a0 PaperWork::~PaperWork() + 0x1000873e 0x30 PaperWork.o + 0x1000873e PaperWork::~PaperWork() .text._ZN9PaperWorkD0Ev - 0x100085d0 0x30 + 0x1000876e 0x30 .text._ZN9PaperWorkD0Ev - 0x100085d0 0x30 PaperWork.o - 0x100085d0 PaperWork::~PaperWork() + 0x1000876e 0x30 PaperWork.o + 0x1000876e PaperWork::~PaperWork() -.rodata 0x10009000 0x3d2 +.rodata 0x10009000 0x3d6 *(.rodata) - .rodata 0x10009000 0x28d ../../Library/Melon.o - *fill* 0x1000928d 0x3 00 - .rodata 0x10009290 0x142 PaperWork.o + .rodata 0x10009000 0x291 ../../Library/Melon.o + *fill* 0x10009291 0x3 00 + .rodata 0x10009294 0x142 PaperWork.o .rodata._ZTV6String 0x100093d8 0x10 @@ -1304,10 +1232,6 @@ LOAD ../../Library/Melon.o 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 @@ -1332,8 +1256,6 @@ LOAD ../../Library/Melon.o 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 @@ -1364,7 +1286,7 @@ LOAD ../../Library/Melon.o .igot.plt 0x1000a024 0x0 .igot.plt 0x00000000 0x0 ../../Library/Melon.o -.bss 0x1000a040 0x2a4 +.bss 0x1000a040 0x2ac 0x1000a040 sbss = . *(COMMON) *(.bss) @@ -1373,11 +1295,11 @@ LOAD ../../Library/Melon.o 0x1000a240 __dso_handle 0x1000a244 heap *fill* 0x1000a248 0x18 00 - .bss 0x1000a260 0x84 PaperWork.o - 0x1000a2e4 ebss = . - 0x1000a2e4 end = . - 0x1000a2e4 _end = . - 0x1000a2e4 __end = . + .bss 0x1000a260 0x8c PaperWork.o + 0x1000a2ec ebss = . + 0x1000a2ec end = . + 0x1000a2ec _end = . + 0x1000a2ec __end = . LOAD PaperWork.o OUTPUT(PaperWork elf32-i386) diff --git a/Source/Kernel/VFS/FSNode-sc.proto.cpp b/Source/Kernel/VFS/FSNode-sc.proto.cpp index 717ccef..d86014c 100644 --- a/Source/Kernel/VFS/FSNode-sc.proto.cpp +++ b/Source/Kernel/VFS/FSNode-sc.proto.cpp @@ -90,6 +90,7 @@ bool FSNode::readable(User* user) { } bool FSNode::writable(User* user) { + if (!m_fs->isWritable()) return false; if (ISROOT) return true; if (user == 0) user = Usr::user(); if (user->getUid() == m_uid) diff --git a/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp b/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp index 5b551eb..e96c327 100644 --- a/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp +++ b/Source/Kernel/VTManager/VirtualTerminal-kbd.proto.cpp @@ -64,6 +64,9 @@ String VirtualTerminal::readLine(bool show) { else if (show) put(" "); //Put a space so that cursor stays at same place } else if (tmp.hascmd && !tmp.haschar && tmp.command == KBDC_TAB) { ret += "\t"; + } else if (tmp.hascmd && tmp.haschar && tmp.modifiers == STATUS_CTRL && tmp.character == WChar("d")) { + ret += EOF; + break; } else if (tmp.haschar && !tmp.hascmd) { ret += tmp.character; } diff --git a/Source/Library/Common/FileStream.class.cpp b/Source/Library/Common/FileStream.class.cpp new file mode 100644 index 0000000..6154b2f --- /dev/null +++ b/Source/Library/Common/FileStream.class.cpp @@ -0,0 +1,67 @@ +#include "FileStream.class.h" + +//************************************ +// INPUT FILE STREAM +// ******************** + +FileIStream::FileIStream(const String &filename, u8int encoding, FSNode start) { + m_file = new File(filename, FM_READ, start); + m_encoding = encoding; +} + +FileIStream::~FileIStream() { + if (m_file != 0) { + m_file->close(); + delete m_file; + } +} + +void FileIStream::appendFile(const String &filename) { + if (m_filenames == 0) { + m_filenames = new SimpleList(filename); + } else { + m_filenames->addAtEnd(filename); + } +} + +String FileIStream::read() { + if (m_file == 0) return ""; + while (m_file->eof() or !m_file->valid()) { + m_file->close(); + delete m_file; + m_file = 0; + if (m_filenames == 0) { + return ""; + } else { +#ifdef THIS_IS_MELON_KERNEL + m_file = new File(m_filenames->v(), FM_READ); +#else + m_file = new File(m_filenames->v(), FM_READ, FS::cwdNode()); +#endif + m_filenames = m_filenames->delThis(); + } + } + ByteArray temp; + temp.resize(512); + u32int r = m_file->read(temp); + temp.resize(r); + return temp.toString(m_encoding); +} + +//************************************ +// OUTPUT FILE STREAM +// ******************** + +FileOStream::FileOStream(const String& filename, u8int mode, u8int encoding, FSNode start) { + m_file = new File(filename, mode, start); + m_encoding = encoding; +} + +FileOStream::~FileOStream() { + delete m_file; +} + +void FileOStream::write(const String &s) { + ByteArray a(s, m_encoding); + m_file->write(a); +} diff --git a/Source/Library/Common/FileStream.class.h b/Source/Library/Common/FileStream.class.h new file mode 100644 index 0000000..d0fb971 --- /dev/null +++ b/Source/Library/Common/FileStream.class.h @@ -0,0 +1,41 @@ +#ifndef DEF_FILESTREAM_CLASS_H +#define DEF_FILESTREAM_CLASS_H + +#include +#include + +#ifdef THIS_IS_MELON_KERNEL +#include +#else +#include +#endif + +class FileIStream : public IStream { + private: + String read(); + + SimpleList *m_filenames; + + File *m_file; + u8int m_encoding; + + public: + FileIStream(const String &filename, u8int encoding = UE_UTF8, FSNode start = FSNode(0)); + ~FileIStream(); + + void appendFile(const String &filename); +}; + +class FileOStream : public OStream { + private: + File *m_file; + u8int m_encoding; + + public: + FileOStream(const String &filename, u8int mode, u8int encoding = UE_UTF8, FSNode start = FSNode(0)); + ~FileOStream(); + + void write(const String &s); +}; + +#endif diff --git a/Source/Library/Common/IStream.proto.cpp b/Source/Library/Common/IStream.proto.cpp index 0cc2a79..59c623e 100644 --- a/Source/Library/Common/IStream.proto.cpp +++ b/Source/Library/Common/IStream.proto.cpp @@ -3,6 +3,7 @@ IStream::IStream() { m_buffer = NULL; m_ptr = 0; + m_eof = false; } IStream::IStream(const IStream& other) { @@ -15,8 +16,12 @@ IStream::~IStream() { } bool IStream::populate() { + if (m_eof) return false; String s = read(); - if (s.empty()) return false; + if (s.empty()) { + m_eof = true; + return false; + } if (m_buffer == NULL) { m_buffer = new SimpleList(s); } else { diff --git a/Source/Library/Common/IStream.proto.h b/Source/Library/Common/IStream.proto.h index f689a22..e844726 100644 --- a/Source/Library/Common/IStream.proto.h +++ b/Source/Library/Common/IStream.proto.h @@ -10,6 +10,7 @@ class IStream : private Mutex { SimpleList *m_buffer; int m_ptr; void operator =(IStream& other); + bool m_eof; bool populate(); @@ -21,6 +22,8 @@ class IStream : private Mutex { IStream(const IStream& other); virtual ~IStream(); + bool eof() const { return m_eof && (m_buffer == NULL); } + WChar getChar(); String get(WChar delimiter = "\n"); String getWord() { return get(" "); } diff --git a/Source/Library/Common/OStream.proto.cpp b/Source/Library/Common/OStream.proto.cpp index bbf5dc3..ba876b3 100644 --- a/Source/Library/Common/OStream.proto.cpp +++ b/Source/Library/Common/OStream.proto.cpp @@ -55,6 +55,9 @@ OStream& OStream::operator<< (ostream_modifiers_e m) { flush(); } else if (m == ENDL) { put("\n"); + } else if (m == END) { + put(String(EOF, 1)); + flush(); } return *this; } diff --git a/Source/Library/Common/OStream.proto.h b/Source/Library/Common/OStream.proto.h index 2fc68e1..ff19e7b 100644 --- a/Source/Library/Common/OStream.proto.h +++ b/Source/Library/Common/OStream.proto.h @@ -7,7 +7,8 @@ enum ostream_modifiers_e { FLUSH, - ENDL + ENDL, + END }; class OStream : private Mutex { diff --git a/Source/Library/Common/StringStream.class.cpp b/Source/Library/Common/StringStream.class.cpp new file mode 100644 index 0000000..c4377ce --- /dev/null +++ b/Source/Library/Common/StringStream.class.cpp @@ -0,0 +1,28 @@ +#include "StringStream.class.h" + +StringIStream::StringIStream(const String &e) { + m_elements = new SimpleList(e); +} + +StringIStream::StringIStream() { + m_elements = 0; +} + +StringIStream::~StringIStream() { + if (m_elements != 0) delete m_elements; +} + +String StringIStream::read() { + if (m_elements == 0) return ""; + String ret = m_elements->v(); + m_elements = m_elements->delThis(); + return ret; +} + +void StringIStream::append(const String &e) { + if (m_elements == 0) { + m_elements = new SimpleList(e); + } else { + m_elements->addAtEnd(e); + } +} diff --git a/Source/Library/Common/StringStream.class.h b/Source/Library/Common/StringStream.class.h new file mode 100644 index 0000000..814b539 --- /dev/null +++ b/Source/Library/Common/StringStream.class.h @@ -0,0 +1,35 @@ +#ifndef DEF_STRINGSTREAM_CLASS_H +#define DEF_STRINGSTREAM_CLASS_H + +#include +#include + +class StringIStream : public IStream { + private: + SimpleList *m_elements; + + String read(); + + public: + StringIStream(const String &e); + StringIStream(); + ~StringIStream(); + + void append(const String &e); +}; + +class StringOStream : public OStream { + private: + String m_str; + + void write(const String& s) { m_str += s; } + + public: + + const String &str() const { return m_str; } + void clear() { m_str = ""; } +}; + + +#endif + diff --git a/Source/Library/Common/WChar.class.h b/Source/Library/Common/WChar.class.h index afaeb44..6db4b1b 100644 --- a/Source/Library/Common/WChar.class.h +++ b/Source/Library/Common/WChar.class.h @@ -7,6 +7,8 @@ #include #endif +#define EOF "\3" + enum { UE_UTF8, UE_UTF16_LE, diff --git a/Source/Library/Makefile b/Source/Library/Makefile index cee4944..83e3689 100644 --- a/Source/Library/Makefile +++ b/Source/Library/Makefile @@ -21,6 +21,8 @@ Objects = Common/WChar.class.uo \ Common/Rand.ns.uo \ Common/OStream.proto.uo \ Common/IStream.proto.uo \ + Common/FileStream.class.uo \ + Common/StringStream.class.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 f2233bc..9528ca2 100644 --- a/Source/Library/Userland/App/ShellApp.proto.cpp +++ b/Source/Library/Userland/App/ShellApp.proto.cpp @@ -9,6 +9,10 @@ ShellApp::ShellApp(String name, String desc) addFlag("h", "help", "Show this help screen"); } +ShellApp::~ShellApp() { + outvt << END; +} + void ShellApp::init() { //Parse flags u32int argc = pr.argc(); diff --git a/Source/Library/Userland/App/ShellApp.proto.h b/Source/Library/Userland/App/ShellApp.proto.h index 5575112..2308fd1 100644 --- a/Source/Library/Userland/App/ShellApp.proto.h +++ b/Source/Library/Userland/App/ShellApp.proto.h @@ -24,6 +24,7 @@ class ShellApp : public Application { Vector flags; String appName, appDesc; ShellApp(String name, String desc); + ~ShellApp(); virtual void init(); diff --git a/Source/Library/Userland/Binding/VirtualTerminal.class.h b/Source/Library/Userland/Binding/VirtualTerminal.class.h index 6576c1c..54bdc53 100644 --- a/Source/Library/Userland/Binding/VirtualTerminal.class.h +++ b/Source/Library/Userland/Binding/VirtualTerminal.class.h @@ -11,6 +11,9 @@ #include class VirtualTerminal : public RessourceCaller, public OStream, public IStream { + private: + bool m_eof; + public: static VirtualTerminal getIn() { u32int id = RessourceCaller::sCall(VTIF_OBJTYPE, VTIF_SGETPRINVT); @@ -20,7 +23,7 @@ class VirtualTerminal : public RessourceCaller, public OStream, public IStream { u32int id = RessourceCaller::sCall(VTIF_OBJTYPE, VTIF_SGETPROUTVT); return VirtualTerminal(id); } - VirtualTerminal(u32int id) : RessourceCaller(id, VTIF_OBJTYPE) {} + VirtualTerminal(u32int id) : RessourceCaller(id, VTIF_OBJTYPE) { m_eof = false; } /*void writeHex(u32int number) { doCall(VTIF_WRITEHEX, number); @@ -32,7 +35,13 @@ class VirtualTerminal : public RessourceCaller, public OStream, public IStream { doCall(VTIF_WRITE, (u32int)&s); } String read() { - return String::unserialize(doCall(VTIF_READLINE, 1)) += "\n"; + if (m_eof) return ""; + String ret = String::unserialize(doCall(VTIF_READLINE, 1)); + if (ret[ret.size() - 1] == WChar(EOF)) { + ret = ret.substr(0, ret.size() - 1); + m_eof = true; + } + return ret += "\n"; } keypress_t getKeypress(bool show = true, bool block = true) { keypress_t* ptr = (keypress_t*)doCall(VTIF_GETKEYPRESS, (show ? 1 : 0) | (block ? 2 : 0)); -- cgit v1.2.3