diff options
author | Daniel Friesel <derf@finalrewind.org> | 2017-12-08 15:07:52 +0100 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2017-12-08 15:07:52 +0100 |
commit | dcf84169ae75b11c1656d45dbc6c626d93da6a10 (patch) | |
tree | d78ad84e6aba1f5f13037e40141013f3a3061d54 /include/object | |
parent | 56f2d90751f1c1b2db925da215a14721cf18d483 (diff) |
Add output support (broken on esp8266)
Diffstat (limited to 'include/object')
-rw-r--r-- | include/object/outputstream.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/include/object/outputstream.h b/include/object/outputstream.h new file mode 100644 index 0000000..43e61f3 --- /dev/null +++ b/include/object/outputstream.h @@ -0,0 +1,65 @@ +#ifndef OUTPUTSTREAM_H +#define OUTPUTSTREAM_H + +#include <stdint.h> + +class OutputStream { + private: + OutputStream(const OutputStream& copy); + + char digit_buffer[sizeof(long long) * 8]; + uint8_t base; + + public: + OutputStream(); + + virtual void put(char c) = 0; + + virtual void write(const char *s) { + while (*s) { + put(*s++); + } + } + + virtual void flush() {} + + OutputStream & operator<<(char c); + OutputStream & operator<<(unsigned char c); + OutputStream & operator<<(unsigned short number); + OutputStream & operator<<(short number); + OutputStream & operator<<(unsigned int number); + OutputStream & operator<<(int number); + OutputStream & operator<<(unsigned long number); + OutputStream & operator<<(long number); + OutputStream & operator<<(unsigned long long number); + OutputStream & operator<<(long long number); + OutputStream & operator<<(void *pointer); + OutputStream & operator<<(const char *text); + OutputStream & operator<<(OutputStream & (*fun) (OutputStream &)); + + void setBase(uint8_t b); +}; + + +// ENDL: new line character (and flush) +OutputStream & endl(OutputStream & os); + +// BIN: print numbers in binary form. +OutputStream & bin(OutputStream & os); + +// OCT: print numbers in octal form. +OutputStream & oct(OutputStream & os); + +// DEC: print numbers in decimal form. +OutputStream & dec(OutputStream & os); + +// HEX: print numbers in hexadecimal form. +OutputStream & hex(OutputStream & os); + +// FLUSH: flush OutputStream buffer +OutputStream & flush(OutputStream & os); + +// TERM: zero-termination +OutputStream & term(OutputStream & os); + +#endif //OUTPUTSTREAM_H |