#ifndef STANDARDOUTPUT_H #define STANDARDOUTPUT_H class StandardOutput { private: StandardOutput(const StandardOutput ©); char digit_buffer[sizeof(long long) * 8]; unsigned char base; public: StandardOutput() : base(10) {}; void setup(); void put(char c); void write(const char *s); void flush() {} void printf_uint8(unsigned char num); void printf_float(float num); StandardOutput & operator<<(char c); StandardOutput & operator<<(unsigned char c); StandardOutput & operator<<(unsigned short number); StandardOutput & operator<<(short number); StandardOutput & operator<<(unsigned int number); StandardOutput & operator<<(int number); StandardOutput & operator<<(unsigned long number); StandardOutput & operator<<(long number); StandardOutput & operator<<(unsigned long long number); StandardOutput & operator<<(long long number); StandardOutput & operator<<(void *pointer); StandardOutput & operator<<(const char *text); StandardOutput & operator<<(StandardOutput & (*fun) (StandardOutput &)); void setBase(unsigned char b); }; // ENDL: new line character (and flush) StandardOutput & endl(StandardOutput & os); // BIN: print numbers in binary form. StandardOutput & bin(StandardOutput & os); // OCT: print numbers in octal form. StandardOutput & oct(StandardOutput & os); // DEC: print numbers in decimal form. StandardOutput & dec(StandardOutput & os); // HEX: print numbers in hexadecimal form. StandardOutput & hex(StandardOutput & os); // FLUSH: flush StandardOutput buffer StandardOutput & flush(StandardOutput & os); // TERM: zero-termination StandardOutput & term(StandardOutput & os); extern StandardOutput kout; #endif