Changes in libcfa/src/iostream.hfa [51230f1b:65240bb]
- File:
-
- 1 edited
-
libcfa/src/iostream.hfa (modified) (20 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/iostream.hfa
r51230f1b r65240bb 10 10 // Created On : Wed May 27 17:56:53 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Aug 11 22:16:14 202013 // Update Count : 3 5012 // Last Modified On : Fri Jul 12 12:08:38 2019 13 // Update Count : 334 14 14 // 15 15 … … 19 19 20 20 21 // *********************************** ostream ***********************************21 //*********************************** ostream *********************************** 22 22 23 23 24 24 trait ostream( dtype ostype ) { 25 25 // private 26 bool $sepPrt( ostype & ); // get separator state (on/off)27 void $sepReset( ostype & ); // set separator state to default state28 void $sepReset( ostype &, bool ); // set separator and default state29 const char * $sepGetCur( ostype & );// get current separator string30 void $sepSetCur( ostype &, const char []); // set current separator string31 bool $getNL( ostype & );// check newline32 void $setNL( ostype &, bool ); // saw newline33 bool $getANL( ostype & ); // get auto newline (on/off)34 bool $getPrt( ostype & ); // get fmt called in output cascade35 void $setPrt( ostype &, bool ); // set fmt called in output cascade26 bool sepPrt( ostype & ); // get separator state (on/off) 27 void sepReset( ostype & ); // set separator state to default state 28 void sepReset( ostype &, bool ); // set separator and default state 29 const char * sepGetCur( ostype & ); // get current separator string 30 void sepSetCur( ostype &, const char * ); // set current separator string 31 bool getNL( ostype & ); // check newline 32 void setNL( ostype &, bool ); // saw newline 33 bool getANL( ostype & ); // get auto newline (on/off) 34 bool getPrt( ostype & ); // get fmt called in output cascade 35 void setPrt( ostype &, bool ); // set fmt called in output cascade 36 36 // public 37 37 void sepOn( ostype & ); // turn separator state on … … 43 43 44 44 const char * sepGet( ostype & ); // get separator string 45 void sepSet( ostype &, const char []); // set separator to string (15 character maximum)45 void sepSet( ostype &, const char * ); // set separator to string (15 character maximum) 46 46 const char * sepGetTuple( ostype & ); // get tuple separator string 47 void sepSetTuple( ostype &, const char [] );// set tuple separator to string (15 character maximum)47 void sepSetTuple( ostype &, const char * ); // set tuple separator to string (15 character maximum) 48 48 49 49 void ends( ostype & os ); // end of output statement 50 50 int fail( ostype & ); 51 51 int flush( ostype & ); 52 void open( ostype & os, const char name[], const char mode[]);52 void open( ostype & os, const char * name, const char * mode ); 53 53 void close( ostype & os ); 54 ostype & write( ostype &, const char [], size_t );54 ostype & write( ostype &, const char *, size_t ); 55 55 int fmt( ostype &, const char format[], ... ) __attribute__(( format(printf, 2, 3) )); 56 56 }; // ostream … … 67 67 68 68 forall( dtype ostype | ostream( ostype ) ) { 69 ostype & ?|?( ostype &, zero_t ); 70 void ?|?( ostype &, zero_t ); 71 ostype & ?|?( ostype &, one_t ); 72 void ?|?( ostype &, one_t ); 73 69 74 ostype & ?|?( ostype &, bool ); 70 75 void ?|?( ostype &, bool ); … … 93 98 ostype & ?|?( ostype &, unsigned long long int ); 94 99 void ?|?( ostype &, unsigned long long int ); 95 #if defined( __SIZEOF_INT128__ )96 ostype & ?|?( ostype &, int128 );97 void ?|?( ostype &, int128 );98 ostype & ?|?( ostype &, unsigned int128 );99 void ?|?( ostype &, unsigned int128 );100 #endif // __SIZEOF_INT128__101 100 102 101 ostype & ?|?( ostype &, float ); … … 114 113 void ?|?( ostype &, long double _Complex ); 115 114 116 ostype & ?|?( ostype &, const char []);117 void ?|?( ostype &, const char []);115 ostype & ?|?( ostype &, const char * ); 116 void ?|?( ostype &, const char * ); 118 117 // ostype & ?|?( ostype &, const char16_t * ); 119 118 #if ! ( __ARM_ARCH_ISA_ARM == 1 && __ARM_32BIT_STATE == 1 ) // char32_t == wchar_t => ambiguous … … 151 150 } // distribution 152 151 153 // *********************************** manipulators ***********************************152 //*********************************** manipulators *********************************** 154 153 155 154 forall( otype T ) … … 161 160 unsigned char all; 162 161 struct { 163 unsigned char neg:1; // val is negative164 162 unsigned char pc:1; // precision specified 165 163 unsigned char left:1; // left justify … … 171 169 }; // _Ostream_Manip 172 170 173 // *********************************** integral ***********************************171 //*********************************** integral *********************************** 174 172 175 173 // See 6.7.9. 19) The initialization shall occur in initializer list order, each initializer provided for a particular … … 208 206 IntegralFMTDecl( signed long long int, 'd' ) 209 207 IntegralFMTDecl( unsigned long long int, 'u' ) 210 #if defined( __SIZEOF_INT128__ ) 211 IntegralFMTDecl( int128, 'd' ) 212 IntegralFMTDecl( unsigned int128, 'u' ) 213 #endif // __SIZEOF_INT128__ 214 215 // *********************************** floating point *********************************** 208 209 //*********************************** floating point *********************************** 216 210 217 211 // Default suffix for values with no fraction is "." … … 242 236 FloatingPointFMTDecl( long double ) 243 237 244 // *********************************** character ***********************************238 //*********************************** character *********************************** 245 239 246 240 static inline { … … 259 253 } // ?|? 260 254 261 // *********************************** C string ***********************************255 //*********************************** C string *********************************** 262 256 263 257 static inline { 264 _Ostream_Manip(const char *) bin( const char s[]) { return (_Ostream_Manip(const char *))@{ s, 1, 0, 'b', { .all : 0 } }; }265 _Ostream_Manip(const char *) oct( const char s[]) { return (_Ostream_Manip(const char *))@{ s, 1, 0, 'o', { .all : 0 } }; }266 _Ostream_Manip(const char *) hex( const char s[]) { return (_Ostream_Manip(const char *))@{ s, 1, 0, 'x', { .all : 0 } }; }267 _Ostream_Manip(const char *) wd( unsigned int w, const char s[]) { return (_Ostream_Manip(const char *))@{ s, w, 0, 's', { .all : 0 } }; }268 _Ostream_Manip(const char *) wd( unsigned int w, unsigned char pc, const char s[]) { return (_Ostream_Manip(const char *))@{ s, w, pc, 's', { .flags.pc : true } }; }258 _Ostream_Manip(const char *) bin( const char * s ) { return (_Ostream_Manip(const char *))@{ s, 1, 0, 'b', { .all : 0 } }; } 259 _Ostream_Manip(const char *) oct( const char * s ) { return (_Ostream_Manip(const char *))@{ s, 1, 0, 'o', { .all : 0 } }; } 260 _Ostream_Manip(const char *) hex( const char * s ) { return (_Ostream_Manip(const char *))@{ s, 1, 0, 'x', { .all : 0 } }; } 261 _Ostream_Manip(const char *) wd( unsigned int w, const char * s ) { return (_Ostream_Manip(const char *))@{ s, w, 0, 's', { .all : 0 } }; } 262 _Ostream_Manip(const char *) wd( unsigned int w, unsigned char pc, const char * s ) { return (_Ostream_Manip(const char *))@{ s, w, pc, 's', { .flags.pc : true } }; } 269 263 _Ostream_Manip(const char *) & wd( unsigned int w, _Ostream_Manip(const char *) & fmt ) { fmt.wd = w; return fmt; } 270 264 _Ostream_Manip(const char *) & wd( unsigned int w, unsigned char pc, _Ostream_Manip(const char *) & fmt ) { fmt.wd = w; fmt.pc = pc; fmt.flags.pc = true; return fmt; } … … 278 272 279 273 280 // *********************************** istream ***********************************274 //*********************************** istream *********************************** 281 275 282 276 … … 287 281 int fail( istype & ); 288 282 int eof( istype & ); 289 void open( istype & is, const char name[]);283 void open( istype & is, const char * name ); 290 284 void close( istype & is ); 291 285 istype & read( istype &, char *, size_t ); … … 310 304 istype & ?|?( istype &, unsigned int & ); 311 305 istype & ?|?( istype &, long int & ); 306 istype & ?|?( istype &, long long int & ); 312 307 istype & ?|?( istype &, unsigned long int & ); 313 istype & ?|?( istype &, long long int & );314 308 istype & ?|?( istype &, unsigned long long int & ); 315 #if defined( __SIZEOF_INT128__ )316 istype & ?|?( istype &, int128 & );317 istype & ?|?( istype &, unsigned int128 & );318 #endif // __SIZEOF_INT128__319 309 320 310 istype & ?|?( istype &, float & ); … … 326 316 istype & ?|?( istype &, long double _Complex & ); 327 317 328 // istype & ?|?( istype &, const char []);318 // istype & ?|?( istype &, const char * ); 329 319 istype & ?|?( istype &, char * ); 330 320 … … 336 326 } // distribution 337 327 338 // *********************************** manipulators ***********************************328 //*********************************** manipulators *********************************** 339 329 340 330 struct _Istream_Cstr { … … 353 343 static inline { 354 344 _Istream_Cstr skip( unsigned int n ) { return (_Istream_Cstr){ 0p, 0p, n, { .all : 0 } }; } 355 _Istream_Cstr skip( const char scanset[]) { return (_Istream_Cstr){ 0p, scanset, -1, { .all : 0 } }; }356 _Istream_Cstr incl( const char scanset[], char * s ) { return (_Istream_Cstr){ s, scanset, -1, { .flags.inex : false } }; }357 _Istream_Cstr & incl( const char scanset[], _Istream_Cstr & fmt ) { fmt.scanset = scanset; fmt.flags.inex = false; return fmt; }358 _Istream_Cstr excl( const char scanset[], char * s ) { return (_Istream_Cstr){ s, scanset, -1, { .flags.inex : true } }; }359 _Istream_Cstr & excl( const char scanset[], _Istream_Cstr & fmt ) { fmt.scanset = scanset; fmt.flags.inex = true; return fmt; }360 _Istream_Cstr ignore( c har s[]) { return (_Istream_Cstr)@{ s, 0p, -1, { .flags.ignore : true } }; }345 _Istream_Cstr skip( const char * scanset ) { return (_Istream_Cstr){ 0p, scanset, -1, { .all : 0 } }; } 346 _Istream_Cstr incl( const char * scanset, char * s ) { return (_Istream_Cstr){ s, scanset, -1, { .flags.inex : false } }; } 347 _Istream_Cstr & incl( const char * scanset, _Istream_Cstr & fmt ) { fmt.scanset = scanset; fmt.flags.inex = false; return fmt; } 348 _Istream_Cstr excl( const char * scanset, char * s ) { return (_Istream_Cstr){ s, scanset, -1, { .flags.inex : true } }; } 349 _Istream_Cstr & excl( const char * scanset, _Istream_Cstr & fmt ) { fmt.scanset = scanset; fmt.flags.inex = true; return fmt; } 350 _Istream_Cstr ignore( const char * s ) { return (_Istream_Cstr)@{ s, 0p, -1, { .flags.ignore : true } }; } 361 351 _Istream_Cstr & ignore( _Istream_Cstr & fmt ) { fmt.flags.ignore = true; return fmt; } 362 _Istream_Cstr wdi( unsigned int w, char s[]) { return (_Istream_Cstr)@{ s, 0p, w, { .all : 0 } }; }352 _Istream_Cstr wdi( unsigned int w, char * s ) { return (_Istream_Cstr)@{ s, 0p, w, { .all : 0 } }; } 363 353 _Istream_Cstr & wdi( unsigned int w, _Istream_Cstr & fmt ) { fmt.wd = w; return fmt; } 364 354 } // distribution … … 370 360 371 361 static inline { 372 _Istream_Char ignore( const char ) { return (_Istream_Char)@{ true }; }362 _Istream_Char ignore( const char c ) { return (_Istream_Char)@{ true }; } 373 363 _Istream_Char & ignore( _Istream_Char & fmt ) { fmt.ignore = true; return fmt; } 374 364 } // distribution 375 365 forall( dtype istype | istream( istype ) ) istype & ?|?( istype & is, _Istream_Char f ); 376 366 377 forall( dtype T | sized( T ))367 forall( otype T ) 378 368 struct _Istream_Manip { 379 369 T & val; // polymorphic base-type … … 413 403 414 404 415 // *********************************** time ***********************************405 //*********************************** time *********************************** 416 406 417 407
Note:
See TracChangeset
for help on using the changeset viewer.