- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/collections/string.hfa
re8b3717 r416b443 10 10 // Created On : Fri Sep 03 11:00:00 2021 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : S un Jan 14 12:03:46 202413 // Update Count : 8112 // Last Modified On : Sat Sep 2 11:26:28 2023 13 // Update Count : 55 14 14 // 15 15 … … 29 29 // Getters 30 30 size_t size(const string & s); 31 static inline size_t strlen(const string & s) { return size( s ); }32 31 33 32 // RAII, assignment 34 void ?{}(string & s); // empty string 33 void ?{}(string & this); // empty string 34 void ?{}(string & s, const char * initial); // copy from string literal (NULL-terminated) 35 void ?{}(string & s, const char * buffer, size_t bsize); // copy specific length from buffer 36 35 37 void ?{}(string & s, const string & s2); 36 void ?{}(string & s, const string & s2, size_t maxlen);37 38 void ?{}(string & s, string & s2); 38 39 39 void ?{}(string & s, char); 40 void ?{}(string & s, const char * c); // copy from string literal (NULL-terminated) 41 void ?{}(string & s, const char * c, size_t size); // copy specific length from buffer 42 43 void ?=?(string & s, const char * c); // copy assignment from literal 44 void ?=?(string & s, const string & c); 45 void ?=?(string & s, char c); 46 string & ?=?(string & s, string & c); // surprising ret seems to help avoid calls to autogen 47 void assign(string & s, const string & c, size_t n); 48 void assign(string & s, const char * c, size_t n); 40 void ?=?(string & s, const char * other); // copy assignment from literal 41 void ?=?(string & s, const string & other); 42 void ?=?(string & s, char other); 43 string & ?=?(string & s, string & other); // surprising ret seems to help avoid calls to autogen 49 44 //string ?=?( string &, string ) = void; 50 51 static inline string & strcpy(string & s, const char * c) { s = c; return s; }52 static inline string & strncpy(string & s, const char * c, size_t n) { assign( s, c, n); return s; }53 static inline string & strcpy(string & s, const string & c) { s = c; return s; }54 static inline string & strncpy(string & s, const string & c, size_t n) { assign(s, c, n); return s; }55 56 45 void ^?{}(string & s); 57 46 … … 60 49 string * s; 61 50 }; 62 string_WithSharedEdits ?`shareEdits( string & s );63 void ?{}( string & s, string_WithSharedEdits src );51 string_WithSharedEdits ?`shareEdits( string & this ); 52 void ?{}( string & this, string_WithSharedEdits src ); 64 53 65 54 // IO Operator … … 67 56 void ?|?(ofstream & out, const string & s); 68 57 ifstream & ?|?(ifstream & in, string & s); 69 void ?|?( ifstream & in, string & s );58 void ?|?( ifstream & in, string & this ); 70 59 71 60 static inline { … … 92 81 _Istream_Sstr wdi( unsigned int rwd, string & s ) { return (_Istream_Sstr)@{ s, {{0p}, rwd, {.flags.rwd : true}} }; } 93 82 _Istream_Sstr getline( string & s, const char delimiter = '\n' ) { 94 return (_Istream_Sstr)@{ s, {{.delimiter s: { delimiter, '\0' } }, -1, {.flags.delimiter : true, .flags.inex : true}} };83 return (_Istream_Sstr)@{ s, {{.delimiter : { delimiter, '\0' } }, -1, {.flags.delimiter : true, .flags.inex : true}} }; 95 84 } 96 85 _Istream_Sstr & getline( _Istream_Sstr & fmt, const char delimiter = '\n' ) { 97 fmt.delimiter s[0] = delimiter; fmt.delimiters[1] = '\0'; fmt.flags.delimiter = true; fmt.flags.inex = true; return fmt;86 fmt.delimiter[0] = delimiter; fmt.delimiter[1] = '\0'; fmt.flags.delimiter = true; fmt.flags.inex = true; return fmt; 98 87 } 99 88 _Istream_Sstr incl( const char scanset[], string & s ) { return (_Istream_Sstr)@{ s, {{scanset}, -1, {.flags.inex : false}} }; } … … 108 97 109 98 // Concatenation 110 void ?+=?(string & s, char c); // append a character99 void ?+=?(string & s, char other); // append a character 111 100 void ?+=?(string & s, const string & s2); // append-concatenate to first string 112 void append(string & s, const string & s2, size_t maxlen); // append-concatenate to first string, up to maxlen 113 void ?+=?(string & s, const char * s2); // append-concatenate NULL-terminated string to first string 114 void append(string & s, const char * buffer, size_t bsize); // append-concatenate given range to first string 115 116 string ?+?(const string & s, char c); // add a character to a copy of the string 101 void ?+=?(string & s, const char * other); // append-concatenate to first string 102 string ?+?(const string & s, char other); // add a character to a copy of the string 117 103 string ?+?(const string & s, const string & s2); // copy and concatenate both strings 118 string ?+?(const char * s1, const char * s2); // copy and concatenate both strings 119 string ?+?(const string & s, const char * c); // copy and concatenate with NULL-terminated string 120 121 static inline string & strcat(string & s, const string & s2) { s += s2; return s; } 122 static inline string & strcat(string & s, const char * c) { s += c; return s; } 123 static inline string & strncat(string & s, const string & s2, size_t maxlen) { append(s, s2, maxlen); return s; } 124 static inline string & strncat(string & s, const char * buffer, size_t bsize) { append(s, buffer, bsize); return s; } 104 string ?+?(const char * s1, const char * s2); // concatenate both strings 105 string ?+?(const string & s, const char * other); // copy and concatenate with NULL-terminated string 125 106 126 107 // Repetition 127 108 string ?*?(const string & s, size_t factor); 128 void ?*=?(string & s, size_t factor); 129 string ?*?(char c, size_t factor); 130 string ?*?(const char *s, size_t factor); 109 string ?*?(char c, size_t size); 110 string ?*?(const char *s, size_t size); 131 111 132 112 // Character access … … 136 116 137 117 // Comparisons 138 int strcmp (const string &, const string &);118 int cmp (const string &, const string &); 139 119 bool ?==?(const string &, const string &); 140 120 bool ?!=?(const string &, const string &); … … 144 124 bool ?<? (const string &, const string &); 145 125 146 int strcmp (const string &, const char*);147 bool ?==?(const string &, const char 148 bool ?!=?(const string &, const char 149 bool ?>? (const string &, const char 150 bool ?>=?(const string &, const char 151 bool ?<=?(const string &, const char 152 bool ?<? (const string &, const char 153 154 int strcmp (const char*, const string &);155 bool ?==?(const char 156 bool ?!=?(const char 157 bool ?>? (const char 158 bool ?>=?(const char 159 bool ?<=?(const char 160 bool ?<? (const char 126 int cmp (const string &, const char*); 127 bool ?==?(const string &, const char*); 128 bool ?!=?(const string &, const char*); 129 bool ?>? (const string &, const char*); 130 bool ?>=?(const string &, const char*); 131 bool ?<=?(const string &, const char*); 132 bool ?<? (const string &, const char*); 133 134 int cmp (const char*, const string &); 135 bool ?==?(const char*, const string &); 136 bool ?!=?(const char*, const string &); 137 bool ?>? (const char*, const string &); 138 bool ?>=?(const char*, const string &); 139 bool ?<=?(const char*, const string &); 140 bool ?<? (const char*, const string &); 161 141 162 142 163 143 // Slicing 164 string ?()( string & s, size_t start, size_t len); // TODO const?165 string ?()( string & s, size_t start);144 string ?()( string & this, size_t start, size_t end ); // TODO const? 145 string ?()( string & this, size_t start); 166 146 167 147 // String search … … 197 177 198 178 179 199 180 struct charclass { 200 181 charclass_res * inner;
Note:
See TracChangeset
for help on using the changeset viewer.