diff options
Diffstat (limited to 'Source/Library/Common/OStream.proto.h')
-rw-r--r-- | Source/Library/Common/OStream.proto.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/Source/Library/Common/OStream.proto.h b/Source/Library/Common/OStream.proto.h new file mode 100644 index 0000000..2fc68e1 --- /dev/null +++ b/Source/Library/Common/OStream.proto.h @@ -0,0 +1,38 @@ +#ifndef DEF_ISTREAM_PROTO_H +#define DEF_ISTREAM_PROTO_H + +#include <String.class.h> +#include <SimpleList.class.h> +#include <Mutex.class.h> + +enum ostream_modifiers_e { + FLUSH, + ENDL +}; + +class OStream : private Mutex { + private: + SimpleList<String> *m_buffer; + SimpleList<String> *m_last; + void operator =(OStream& other); + + protected: + virtual void write(const String &s) = 0; + + public: + OStream(); + OStream(const OStream& other); + virtual ~OStream() { flush(); } + + void put(const String& s); + void flush(); + + //Formatting functions + OStream& operator << (const String& s) { put(s); if (s.contains("\n")) flush(); return *this; } + OStream& operator << (s64int i) { put(String::number(i)); return *this; } + OStream& operator << (s32int i) { put(String::number(i)); return *this; } + OStream& operator << (u32int i) { put(String::hex(i)); return *this; } + OStream& operator << (ostream_modifiers_e m); +}; + +#endif |