Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "os/rtstreams.hpp"
00038 #include "os/fosi.h"
00039 #include <cstring>
00040
00041 namespace RTT
00042 {namespace os
00043 {
00044
00045 printstream cout;
00046
00047 basic_streams::~basic_streams()
00048 {}
00049
00050 basic_ostreams& basic_ostreams::write( const char * c, streamsize n )
00051 {
00052 buf.sputn( c, n);
00053 return *this;
00054 }
00055
00056 basic_ostreams& basic_ostreams::put( char c )
00057 {
00058 buf.sputc( c );
00059 return *this;
00060 }
00061
00062 basic_istreams& basic_istreams::read(char* c, streamsize n)
00063 {
00064 buf.sgetn(c,n);
00065 return *this;
00066 }
00067
00068 basic_istreams::streamsize basic_istreams::readsome(char* c, streamsize n)
00069 {
00070 return buf.sgetn(c,n);
00071 }
00072
00073 basic_istreams& basic_istreams::get( char& c )
00074 {
00075 c = buf.sgetc();
00076 return *this;
00077 }
00078
00079 basic_istreams& basic_istreams::get( char*c ,streamsize n, char delim)
00080 {
00081 streamsize i=0;
00082 int res;
00083 do {
00084 res = buf.sgetc();
00085 c[i++] = res;
00086 } while ( res != EOF && c[i-1] != delim && i != n );
00087
00088 if ( i == n)
00089 c[i] = 0;
00090 else
00091 c[i-1] = 0;
00092
00093 return *this;
00094 }
00095
00096 basic_istreams& basic_istreams::get( char*c, char delim)
00097 {
00098 streamsize i=0;
00099 int res;
00100 do {
00101 res = buf.sgetc();
00102 c[i++] = res;
00103 } while ( res != EOF && c[i-1] != delim );
00104
00105 c[i-1] = 0;
00106
00107 return *this;
00108 }
00109
00110 basic_ostreams & endl( basic_ostreams & s )
00111 {
00112 return s << '\n';
00113 }
00114
00115 basic_ostreams& basic_ostreams::operator<<( int i )
00116 {
00117 std::string result( int_to_string( i ) );
00118 write(result.c_str(), result.length() );
00119 return *this;
00120 }
00121
00122 basic_ostreams& basic_ostreams::operator<<( long l )
00123 {
00124 std::string result( int_to_string( l ) );
00125 write(result.c_str(), result.length() );
00126 return *this;
00127 }
00128
00129 basic_ostreams& basic_ostreams::operator<<( char c )
00130 {
00131 buf.sputc( c );
00132 return *this;
00133 }
00134
00135 basic_ostreams& basic_ostreams::operator<<( char * c )
00136 {
00137 buf.sputn( c, strlen(c) );
00138 return *this;
00139 }
00140
00141 basic_ostreams& basic_ostreams::operator<<( basic_ostreams & ( *f ) ( basic_ostreams & ) )
00142 {
00143 return ( *f ) ( *this );
00144 }
00145
00146 basic_ostreams& basic_ostreams::operator<<( double f )
00147 {
00148 std::string result( float_to_string( float(f) ) );
00149 write( result.c_str(), result.length() );
00150 return *this;
00151 }
00152
00153 basic_ostreams& basic_ostreams::operator<<( std::string s )
00154 {
00155 write( s.c_str(), s.length() );
00156 return *this;
00157 }
00158
00159 basic_ostreams& basic_ostreams::operator<<( unsigned int u )
00160 {
00161 std::string result( unsigned_int_to_string( u ) );
00162 write( result.c_str(), result.length() );
00163 return *this;
00164 }
00165
00166 basic_istreams& basic_istreams::operator>>( int &i )
00167 {
00168 std::string result;
00169 result.reserve(10);
00170 int i_res = buf.sgetc();
00171 while ( (i_res != EOF) && (i_res != ' ') )
00172 {
00173 result += char(i_res);
00174 i_res = buf.sgetc();
00175 }
00176 i = string_to_int( result );
00177 return *this;
00178 }
00179
00180 basic_istreams& basic_istreams::operator>>( char &c )
00181 {
00182 c = buf.sgetc();
00183 return *this;
00184 }
00185
00186 basic_istreams& basic_istreams::operator>>( double &f )
00187 {
00188 std::string result;
00189 result.reserve(40);
00190 int i_res = buf.sgetc();
00191 while ( (i_res != EOF) && (i_res != ' ') )
00192 {
00193 result += char(i_res);
00194 i_res = buf.sgetc();
00195 }
00196
00197 f = -1;
00198 return * this;
00199 }
00200
00201 basic_istreams& basic_istreams::operator>>( std::string &s )
00202 {
00203 std::string result;
00204 int i_res;
00205 do {
00206 i_res = buf.sgetc();
00207 if (i_res == EOF )
00208 break;
00209 result += char(i_res);
00210 } while ( i_res != ' ' );
00211
00212 s = result;
00213
00214 return *this;
00215 }
00216
00217 basic_istreams& basic_istreams::operator>>( unsigned int &u )
00218 {
00219 std::string result;
00220 result.reserve(10);
00221 int i_res = buf.sgetc();
00222 while ( (i_res != EOF) && (i_res != ' ') )
00223 {
00224 result += char(i_res);
00225 i_res = buf.sgetc();
00226 }
00227
00228 u = string_to_unsigned_int( result );
00229
00230 return *this;
00231 }
00232
00233 basic_istreams::~basic_istreams()
00234 {}
00235
00236 basic_ostreams::~basic_ostreams()
00237 {}
00238
00239
00240 printstream::~printstream()
00241 {}
00242
00243 stringstreams::~stringstreams()
00244 {}
00245
00246
00247 }}