diff options
Diffstat (limited to 'ACE/tests/CE_fostream.cpp')
-rw-r--r-- | ACE/tests/CE_fostream.cpp | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/ACE/tests/CE_fostream.cpp b/ACE/tests/CE_fostream.cpp new file mode 100644 index 00000000000..a57c9d7199e --- /dev/null +++ b/ACE/tests/CE_fostream.cpp @@ -0,0 +1,163 @@ +//============================================================================= +/** + * @file CE_fostream.cpp + * + * $Id$ + * + * @author Si Mong Park <spark@ociweb.com> + * + * This is a helper class to simulate basic functions of fostream for + * Windows CE since WinCE does not have IO stream. + * + * Note that the numeric base conversion does not work and will be displayed + * as received. + */ +// ============================================================================ + +#include "CE_fostream.h" + +// This is CE only, prior to availability of iostreams (VC 8). +#if defined (ACE_HAS_WINCE) && defined (ACE_LACKS_IOSTREAM_TOTALLY) + +ACE_CE_fostream* ACE_CE_fostream::instance_ = 0; + + +ACE_CE_fostream* ACE_CE_fostream::instance (void) +{ + if (instance_ == 0) { + instance_ = new ACE_CE_fostream(); + } + + return instance_; +} + + +ACE_CE_fostream::ACE_CE_fostream() +: ostream_(0) +, displayMode_(dec) +{ +} + + +ACE_CE_fostream::~ACE_CE_fostream() +{ + fclose(ostream_); +} + + +FILE* ACE_CE_fostream::open(const ACE_TCHAR *prog_name) +{ + ostream_ = _wfopen(prog_name, ACE_TEXT("a+")); + + return ostream_; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (NUM_TYPE num_type) +{ + displayMode_ = num_type; + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (const ACE_ANTI_TCHAR* c) +{ + fprintf(ostream_, "%s", c); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (ACE_ANTI_TCHAR c) +{ + fprintf(ostream_, "%c", c); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (const ACE_TCHAR* c) +{ + fwprintf(ostream_, ACE_TEXT("%s"), c); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (ACE_TCHAR c) +{ + fwprintf(ostream_, ACE_TEXT("%c"), c); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (short s) +{ + if (displayMode_ == oct) { + const NUM_BITS = ACE_SIZEOF_SHORT * 8; + short currentMax = 16384; + + for (int i = 0; i < NUM_BITS; ++i) { + } + } + else if (displayMode_ == hex) { + } + + fwprintf(ostream_, ACE_TEXT("%d"), s); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (int i) +{ + fwprintf(ostream_, ACE_TEXT("%d"), i); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (unsigned int i) +{ + fwprintf(ostream_, ACE_TEXT("%d"), i); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (long l) +{ + fwprintf(ostream_, ACE_TEXT("%f"), l); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (unsigned long l) +{ + fwprintf(ostream_, ACE_TEXT("%f"), l); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (float f) +{ + fwprintf(ostream_, ACE_TEXT("%f"), f); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (double d) +{ + fwprintf(ostream_, ACE_TEXT("%f"), d); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (long double d) +{ + fwprintf(ostream_, ACE_TEXT("%f"), d); + return *this; +} + + +ACE_CE_fostream& ACE_CE_fostream::operator << (const void* v) +{ + fwprintf(ostream_, ACE_TEXT("%d"), v); + return *this; +} + +#endif /* ACE_HAS_WINCE && ACE_LACKS_IOSTREAMS_TOTALLY */ |