summaryrefslogtreecommitdiff
path: root/ACE/contrib/FaCE/CE_Screen_Output.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/contrib/FaCE/CE_Screen_Output.cpp')
-rw-r--r--ACE/contrib/FaCE/CE_Screen_Output.cpp166
1 files changed, 166 insertions, 0 deletions
diff --git a/ACE/contrib/FaCE/CE_Screen_Output.cpp b/ACE/contrib/FaCE/CE_Screen_Output.cpp
new file mode 100644
index 00000000000..caeebed5e4d
--- /dev/null
+++ b/ACE/contrib/FaCE/CE_Screen_Output.cpp
@@ -0,0 +1,166 @@
+// $Id$
+
+#include "CE_Screen_Output.h"
+#include <string.h>
+
+// This utility does not use ACE, and shouldn't.
+//FUZZ: disable check_for_lack_ACE_OS
+
+HWND CE_Screen_Output::handler_ = 0;
+
+
+CE_Screen_Output::CE_Screen_Output()
+: pFile_(0)
+{
+}
+
+
+CE_Screen_Output::~CE_Screen_Output()
+{
+ if (pFile_ != 0) {
+ fclose(pFile_);
+ }
+}
+
+
+void CE_Screen_Output::SetOutputWindow(HWND hEdit)
+{
+ handler_ = hEdit;
+}
+
+
+void CE_Screen_Output::clear()
+{
+ SetWindowText(handler_, 0);
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (wchar_t* output)
+{
+ int length = GetWindowTextLength(handler_);
+ SendMessage(handler_, EM_SETSEL, length, length);
+ SendMessage(handler_, EM_REPLACESEL, 0, (LPARAM)output);
+
+ if (pFile_ != 0)
+ {
+ fwprintf(pFile_, L"%s", output);
+ }
+
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (const wchar_t* output)
+{
+ wchar_t* buffer = _wcsdup(output);
+ if (buffer != 0)
+ {
+ *this << buffer;
+ delete buffer;
+ }
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (char* output)
+{
+ int len = MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, 0, 0);
+ wchar_t* w_output = new wchar_t[len];
+
+ MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, w_output, len);
+ *this << w_output;
+
+ delete w_output;
+
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (const char* output)
+{
+ int len = MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, 0, 0);
+ wchar_t* w_output = new wchar_t[len];
+
+ MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, output, -1, w_output, len);
+ *this << w_output;
+
+ delete w_output;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (char output)
+{
+ *this << (int)output;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (unsigned char output)
+{
+ *this << (int)output;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (unsigned short output)
+{
+ wchar_t buffer[20];
+ wsprintf(buffer, L"%u", output);
+ *this << buffer;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (int output)
+{
+ wchar_t buffer[20];
+ wsprintf(buffer, L"%d", output);
+ *this << buffer;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (unsigned int output)
+{
+ wchar_t buffer[20];
+ wsprintf(buffer, L"%du", output);
+ *this << buffer;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (float output)
+{
+ wchar_t buffer[20];
+ swprintf(buffer, L"%f", output);
+ *this << buffer;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (long output)
+{
+ wchar_t buffer[20];
+ wsprintf(buffer, L"%l", output);
+ *this << buffer;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (unsigned long output)
+{
+ wchar_t buffer[20];
+ wsprintf(buffer, L"%lu", output);
+ *this << buffer;
+ return *this;
+}
+
+
+CE_Screen_Output& CE_Screen_Output::operator << (FILE* pFile)
+{
+ pFile_ = pFile;
+ return *this;
+}
+
+//FUZZ: enable check_for_lack_ACE_OS