Ice 3.7 C++11 API Reference
ConsoleUtil.h
Go to the documentation of this file.
1 //
2 // Copyright (c) ZeroC, Inc. All rights reserved.
3 //
4 
5 #ifndef ICE_UTIL_CONSOLE_UTIL_H
6 #define ICE_UTIL_CONSOLE_UTIL_H
7 
8 #include <IceUtil/Config.h>
10 #include <iostream>
11 
12 namespace IceUtilInternal
13 {
14 
15 #if defined(_WIN32)
16 
17 class ConsoleUtil;
18 ICE_DEFINE_PTR(ConsoleUtilPtr, ConsoleUtil);
19 
20 class ICE_API ConsoleUtil
21 # ifndef ICE_CPP11_MAPPING
22  : public IceUtil::Shared
23 # endif
24 {
25 public:
26 
27  ConsoleUtil();
28  void output(const std::string&) const;
29  void error(const std::string&) const;
30 
31 private:
32 
33  std::string toConsoleEncoding(const std::string&) const;
34  IceUtil::StringConverterPtr _converter;
35  IceUtil::StringConverterPtr _consoleConverter;
36 };
37 
38 const ICE_API ConsoleUtil& getConsoleUtil();
39 
40 class ICE_API ConsoleOut
41 {
42 public:
43 
44  ConsoleOut& operator<<(ConsoleOut& (*pf)(ConsoleOut&));
45 };
46 
47 class ICE_API ConsoleErr
48 {
49 public:
50 
51  ConsoleErr& operator<<(ConsoleErr& (*pf)(ConsoleErr&));
52 };
53 
54 template<typename T>
55 ConsoleOut&
56 operator<<(ConsoleOut& out, const T& val)
57 {
58  std::ostringstream s;
59  s << val;
60  getConsoleUtil().output(s.str());
61  return out;
62 }
63 
64 ICE_API ConsoleOut& endl(ConsoleOut&);
65 ICE_API ConsoleOut& flush(ConsoleOut&);
66 
67 template<typename T>
68 ConsoleErr&
69 operator<<(ConsoleErr& err, const T& val)
70 {
71  std::ostringstream s;
72  s << val;
73  getConsoleUtil().error(s.str());
74  return err;
75 }
76 
77 ICE_API ConsoleErr& endl(ConsoleErr&);
78 ICE_API ConsoleErr& flush(ConsoleErr&);
79 
80 extern ICE_API ConsoleOut consoleOut ICE_GLOBAL_VAR_SUFFIX;
81 extern ICE_API ConsoleErr consoleErr ICE_GLOBAL_VAR_SUFFIX;
82 
83 #else
84 
85 extern ICE_API std::ostream& consoleOut ICE_GLOBAL_VAR_SUFFIX;
86 extern ICE_API std::ostream& consoleErr ICE_GLOBAL_VAR_SUFFIX;
87 
88 #endif
89 
90 }
91 
92 #endif
ICE_GLOBAL_VAR_SUFFIX
#define ICE_GLOBAL_VAR_SUFFIX
Definition: Config.h:185
ICE_DEFINE_PTR
#define ICE_DEFINE_PTR(TPtr, T)
Definition: Config.h:359
Ice::operator<<
std::ostream & operator<<(std::ostream &out, const ProtocolVersion &version)
Definition: Protocol.h:179
ICE_API
#define ICE_API
Definition: Config.h:197
IceUtil::StringConverterPtr
::std::shared_ptr< StringConverter > StringConverterPtr
Definition: StringConverter.h:80
Config.h
StringConverter.h
IceUtil::Shared
Definition: Shared.h:78