- Timestamp:
- Apr 11, 2025, 12:29:56 AM (5 months ago)
- Branches:
- master
- Children:
- d03a386
- Parents:
- 3f631d6
- Location:
- libcfa/src/collections
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/collections/string.cfa
r3f631d6 r570e7ad 40 40 } 41 41 42 void ?{}( string & s, const string & c ) {42 void ?{}( string & s, string c ) { // c is a memcpy of the real src string 43 43 (s.inner) { malloc() }; 44 44 ?{}( *s.inner, *c.inner, COPY_VALUE ); 45 45 } 46 46 47 void ?{}( string & s, const string &s2, size_t maxlen ) {47 void ?{}( string & s, string s2, size_t maxlen ) { 48 48 (s.inner) { malloc() }; 49 49 ?{}( *s.inner, *s2.inner, COPY_VALUE, maxlen ); 50 50 } 51 51 52 53 void ?{}( string & s, string & c ) { 54 ?{}( s, (const string &) c ); 55 } 56 57 void ?{}( string & s, const char c ) { 52 void ?{}( string & s, char c ) { 58 53 (s.inner) { malloc() }; 59 54 ?{}( *s.inner, c ); … … 70 65 } 71 66 72 void ?{}( string & s, s size_t rhs ) {67 void ?{}( string & s, signed long int rhs ) { 73 68 (s.inner) { malloc() }; 74 69 ?{}( *s.inner, rhs ); … … 151 146 // Assignment 152 147 153 string & ?=?( string & s, const string & c ) { 154 (*s.inner) = (*c.inner); 155 return s; 156 } 157 158 string & ?=?( string & s, string & c ) { 148 string & ?=?( string & s, string c ) { 159 149 (*s.inner) = (*c.inner); 160 150 return s; … … 181 171 } 182 172 183 string & ?=?( string & s, s size_t rhs ) {173 string & ?=?( string & s, signed long int rhs ) { 184 174 (*s.inner) = rhs; 185 175 return s; … … 324 314 } 325 315 326 string ?+?( const string &s, char c ) {316 string ?+?( string s, char c ) { 327 317 string ret = s; 328 318 ret += c; … … 330 320 } 331 321 332 string ?+?( char c, const string &s ) {322 string ?+?( char c, string s ) { 333 323 string ret = c; 334 324 ret += s; … … 336 326 } 337 327 338 string ?+?( const string & s, const string &s2 ) {328 string ?+?( string s, string s2 ) { 339 329 string ret = s; 340 330 ret += s2; … … 360 350 } 361 351 362 string ?+?( const char * s1, const string &s2 ) {352 string ?+?( const char * s1, string s2 ) { 363 353 string ret = s1; 364 354 ret += s2; … … 366 356 } 367 357 368 string ?+?( const string &s, const char * c ) {358 string ?+?( string s, const char * c ) { 369 359 string ret = s; 370 360 ret += c; … … 381 371 // Repetition 382 372 383 void ?*=?( string & s, s ize_t factor ) {373 void ?*=?( string & s, strmul_factor_t factor ) { 384 374 (*s.inner) *= factor; 385 375 } 386 376 387 string ?*?( const string & s, size_t factor ) {377 string ?*?( string s, strmul_factor_t factor ) { 388 378 string ret = s; 389 379 ret *= factor; … … 391 381 } 392 382 393 string ?*?( char c, s ize_t factor ) {383 string ?*?( char c, strmul_factor_t factor ) { 394 384 string ret = c; 395 385 ret *= factor; … … 397 387 } 398 388 399 string ?*?( const char * s, s ize_t factor ) {389 string ?*?( const char * s, strmul_factor_t factor ) { 400 390 string ret = s; 401 391 ret *= factor; -
libcfa/src/collections/string.hfa
r3f631d6 r570e7ad 27 27 28 28 void ?{}( string & s ); // empty string 29 void ?{}( string & s, const string & s2 ); 30 void ?{}( string & s, const string & s2, size_t maxlen ); 31 void ?{}( string & s, string & s2 ); 32 29 void ?{}( string & s, string s2, size_t maxlen ); 30 void ?{}( string & s, string s2 ); 33 31 void ?{}( string & s, char ); 34 32 void ?{}( string & s, const char * c ); // copy from string literal (NULL-terminated) 35 33 void ?{}( string & s, const char * c, size_t size ); // copy specific length from buffer 36 34 37 void ?{}( string & s, s size_t rhs );35 void ?{}( string & s, signed long int rhs ); 38 36 void ?{}( string & s, size_t rhs ); 39 37 void ?{}( string & s, double rhs ); … … 41 39 void ?{}( string & s, double _Complex rhs ); 42 40 void ?{}( string & s, long double _Complex rhs ); 41 static inline void ?{}( string & s, int rhs ) { (s){(signed long int) rhs}; } 43 42 44 43 // string str( ssize_t rhs ); … … 49 48 // string str( long double _Complex rhs ); 50 49 51 string & ?=?( string & s, const string & c ); 52 string & ?=?( string & s, string & c ); 50 string & ?=?( string & s, string c ); 53 51 string & ?=?( string & s, const char * c ); // copy from "literal" 54 52 string & ?=?( string & s, char c ); // copy from 'l' 55 53 string & assign( string & s, const string & c, size_t n ); 56 54 string & assign( string & s, const char * c, size_t n ); 57 string & ?=?( string & s, s size_t rhs );55 string & ?=?( string & s, signed long int rhs ); 58 56 string & ?=?( string & s, size_t rhs ); 59 57 string & ?=?( string & s, double rhs ); … … 61 59 string & ?=?( string & s, double _Complex rhs ); 62 60 string & ?=?( string & s, long double _Complex rhs ); 61 static inline string & ?=?( string & s, int rhs ) { return s = ((signed long int) rhs); } // to match cost of (char * int): int 63 62 64 63 static inline string & strcpy( string & s, const char * c ) { s = c; return s; } … … 161 160 void append( string & s, const char * buffer, size_t bsize ); 162 161 163 string ?+?( const string &s, char c );164 string ?+?( char c, const string &s );165 string ?+?( const string & s, const string &s2 );162 string ?+?( string s, char c ); 163 string ?+?( char c, string s ); 164 string ?+?( string s, string s2 ); 166 165 string ?+?( const char * s, char c ); // not backwards compatible 167 166 string ?+?( char c, const char * s ); 168 167 string ?+?( const char * c, const char * s ); 169 string ?+?( const char * c, const string &s );170 string ?+?( const string &s, const char * c );168 string ?+?( const char * c, string s ); 169 string ?+?( string s, const char * c ); 171 170 string ?+?( char, char ); // not being called 8-( 172 171 … … 177 176 178 177 // Repetition 179 void ?*=?( string & s, size_t factor ); 180 string ?*?( char c, size_t factor ); // not backwards compatible 181 string ?*?( const string & s, size_t factor ); 182 static inline string ?*?( size_t factor, const string & s ) { return s * factor; } 183 string ?*?( const char * s, size_t factor ); 184 static inline string ?*?( size_t factor, const char * s ) { return s * factor; } 178 179 // Type `signed long long int` chosen for `factor` argument to achieve cost detente. 180 // This way, the call `'a' * 3` gets the same safe conversion cost calling here as for 181 // the built-in definition `int * int`. 182 typedef signed long long int strmul_factor_t; 183 184 void ?*=?( string & s, strmul_factor_t factor ); 185 string ?*?( char c, strmul_factor_t factor ); // not backwards compatible 186 string ?*?( string s, strmul_factor_t factor ); 187 string ?*?( const char * s, strmul_factor_t factor ); 188 static inline string ?*?( strmul_factor_t factor, char s ) { return s * factor; } 189 static inline string ?*?( strmul_factor_t factor, string s ) { return s * factor; } 190 static inline string ?*?( strmul_factor_t factor, const char * s ) { return s * factor; } 185 191 186 192 // Character access
Note:
See TracChangeset
for help on using the changeset viewer.