Changeset 34c6e1e6 for libcfa/src/collections/string.hfa
- Timestamp:
- Sep 2, 2023, 3:01:05 PM (10 months ago)
- Branches:
- master
- Children:
- 389fbf5
- Parents:
- 0f107e4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/collections/string.hfa
r0f107e4 r34c6e1e6 10 10 // Created On : Fri Sep 03 11:00:00 2021 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Aug 31 11:47:27202313 // Update Count : 4912 // Last Modified On : Sat Sep 2 11:26:28 2023 13 // Update Count : 55 14 14 // 15 15 … … 58 58 void ?|?( ifstream & in, string & this ); 59 59 60 struct _Istream_str { 60 static inline { 61 _Ostream_Manip(string) bin( string s ) { return (_Ostream_Manip(string))@{ s, 1, 0, 'b', { .all : 0 } }; } 62 _Ostream_Manip(string) oct( string s ) { return (_Ostream_Manip(string))@{ s, 1, 0, 'o', { .all : 0 } }; } 63 _Ostream_Manip(string) hex( string s ) { return (_Ostream_Manip(string))@{ s, 1, 0, 'x', { .all : 0 } }; } 64 _Ostream_Manip(string) wd( unsigned int w, string s ) { return (_Ostream_Manip(string))@{ s, w, 0, 's', { .all : 0 } }; } 65 _Ostream_Manip(string) wd( unsigned int w, unsigned int pc, string s ) { return (_Ostream_Manip(string))@{ s, w, pc, 's', { .flags.pc : true } }; } 66 _Ostream_Manip(string) & wd( unsigned int w, _Ostream_Manip(string) & fmt ) { fmt.wd = w; return fmt; } 67 _Ostream_Manip(string) & wd( unsigned int w, unsigned int pc, _Ostream_Manip(string) & fmt ) { fmt.wd = w; fmt.pc = pc; fmt.flags.pc = true; return fmt; } 68 _Ostream_Manip(string) & left( _Ostream_Manip(string) & fmt ) { fmt.flags.left = true; return fmt; } 69 _Ostream_Manip(string) & nobase( _Ostream_Manip(string) & fmt ) { fmt.flags.nobsdp = true; return fmt; } 70 } // distribution 71 ofstream & ?|?( ofstream & os, _Ostream_Manip(string) f ); 72 void ?|?( ofstream & os, _Ostream_Manip(string) ); 73 74 struct _Istream_Sstr { 61 75 string & s; 62 76 inline _Istream_str_base; 63 }; // _Istream_ str77 }; // _Istream_Sstr 64 78 65 79 static inline { 66 80 // read width does not include null terminator 67 _Istream_str wdi( unsigned int rwd, string & s ) { return (_Istream_str)@{ s, {{0p}, rwd, {.flags.rwd : true}} }; } 68 _Istream_str skip( const char scanset[] ) { return (_Istream_str)@{ *0p, {{scanset}, -1, {.all : 0}} }; } 69 _Istream_str skip( unsigned int wd ) { return (_Istream_str)@{ *0p, {{0p}, wd, {.all : 0}} }; } 70 _Istream_str getline( string & s, const char delimit = '\n' ) { 71 return (_Istream_str)@{ s, {{.delimit : { delimit, '\0' } }, -1, {.flags.delimit : true, .flags.inex : true}} }; 81 _Istream_Sstr wdi( unsigned int rwd, string & s ) { return (_Istream_Sstr)@{ s, {{0p}, rwd, {.flags.rwd : true}} }; } 82 _Istream_Sstr getline( string & s, const char delimiter = '\n' ) { 83 return (_Istream_Sstr)@{ s, {{.delimiter : { delimiter, '\0' } }, -1, {.flags.delimiter : true, .flags.inex : true}} }; 72 84 } 73 _Istream_ str & getline( _Istream_str & fmt, const char delimit= '\n' ) {74 fmt.delimit [0] = delimit; fmt.delimit[1] = '\0'; fmt.flags.delimit= true; fmt.flags.inex = true; return fmt;85 _Istream_Sstr & getline( _Istream_Sstr & fmt, const char delimiter = '\n' ) { 86 fmt.delimiter[0] = delimiter; fmt.delimiter[1] = '\0'; fmt.flags.delimiter = true; fmt.flags.inex = true; return fmt; 75 87 } 76 _Istream_ str incl( const char scanset[], string & s ) { return (_Istream_str)@{ s, {{scanset}, -1, {.flags.inex : false}} }; }77 _Istream_ str & incl( const char scanset[], _Istream_str & fmt ) { fmt.scanset = scanset; fmt.flags.inex = false; return fmt; }78 _Istream_ str excl( const char scanset[], string & s ) { return (_Istream_str)@{ s, {{scanset}, -1, {.flags.inex : true}} }; }79 _Istream_ str & excl( const char scanset[], _Istream_str & fmt ) { fmt.scanset = scanset; fmt.flags.inex = true; return fmt; }80 _Istream_ str ignore( string & s ) { return (_Istream_str)@{ s, {{0p}, -1, {.flags.ignore : true}} }; }81 _Istream_ str & ignore( _Istream_str & fmt ) { fmt.flags.ignore = true; return fmt; }88 _Istream_Sstr incl( const char scanset[], string & s ) { return (_Istream_Sstr)@{ s, {{scanset}, -1, {.flags.inex : false}} }; } 89 _Istream_Sstr & incl( const char scanset[], _Istream_Sstr & fmt ) { fmt.scanset = scanset; fmt.flags.inex = false; return fmt; } 90 _Istream_Sstr excl( const char scanset[], string & s ) { return (_Istream_Sstr)@{ s, {{scanset}, -1, {.flags.inex : true}} }; } 91 _Istream_Sstr & excl( const char scanset[], _Istream_Sstr & fmt ) { fmt.scanset = scanset; fmt.flags.inex = true; return fmt; } 92 _Istream_Sstr ignore( string & s ) { return (_Istream_Sstr)@{ s, {{0p}, -1, {.flags.ignore : true}} }; } 93 _Istream_Sstr & ignore( _Istream_Sstr & fmt ) { fmt.flags.ignore = true; return fmt; } 82 94 } // distribution 83 ifstream & ?|?( ifstream & is, _Istream_ str f );84 void ?|?( ifstream & is, _Istream_ str t );95 ifstream & ?|?( ifstream & is, _Istream_Sstr f ); 96 void ?|?( ifstream & is, _Istream_Sstr t ); 85 97 86 98 // Concatenation
Note: See TracChangeset
for help on using the changeset viewer.