00001 #ifndef _IT_BUS_USTRING_IO_H_
00002 #define _IT_BUS_USTRING_IO_H_
00003
00004
00005
00006
00007
00008
00009
00010 #include <it_bus/string.h>
00011 #include <it_cal/iostream.h>
00012
00013
00014
00015
00016
00017
00018
00019
00020 #if IT_STD
00021
00022 template<class T>
00023 class IT_StdUStringIO
00024 {
00025 public:
00026
00027 static IT_istream&
00028 read_string(
00029 IT_istream& is,
00030 T& s
00031 );
00032
00033 static IT_istream&
00034 getline(
00035 IT_istream& is,
00036 T& s,
00037 char c
00038 );
00039 };
00040
00041 #else
00042
00043 template<class T>
00044 class IT_CiosUStringIO
00045 {
00046 public:
00047
00048 static IT_istream&
00049 read_string(
00050 IT_istream& is,
00051 T& s
00052 );
00053
00054 static IT_istream&
00055 getline(
00056 IT_istream& is,
00057 T& s,
00058 char c
00059 );
00060 };
00061 #endif
00062
00063 inline IT_istream&
00064 operator>>(
00065 IT_istream& is,
00066 IT_Bus::String& s
00067 )
00068 {
00069 #if IT_STD
00070 return IT_StdUStringIO<IT_Bus::String>::read_string(is, s);
00071 #else
00072 return IT_CiosUStringIO<IT_Bus::String>::read_string(is, s);
00073 #endif
00074
00075 }
00076 inline IT_istream&
00077 getline(
00078 IT_istream& is,
00079 IT_Bus::String& s,
00080 char c = '\n'
00081 )
00082 {
00083 #if IT_STD
00084 return IT_StdUStringIO<IT_Bus::String>::getline(is, s, c);
00085 #else
00086 return IT_CiosUStringIO<IT_Bus::String>::getline(is, s, c);
00087 #endif
00088 }
00089
00090 #if IT_SUPPORTS_COMPILE_TIME_INSTANTIATION
00091 #include <it_bus/string_io.cxx>
00092 #endif
00093
00094 #endif