Ignore:
Timestamp:
Jan 17, 2024, 2:16:04 PM (6 months ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
5bf685f
Parents:
06280ad
Message:

Tweak string assignment-strcpy-strncpy and concatenate-strcat-strncat declarations.

Implement -n- versions correctly.

Refactor to include string_res layer.

Add missing tests.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/collections/string.hfa

    r06280ad re891349  
    3636void ?{}(string & s, string & s2);
    3737
    38 void ?{}(string & s, const char);
     38void ?{}(string & s, char);
    3939void ?{}(string & s, const char * c); // copy from string literal (NULL-terminated)
    4040void ?{}(string & s, const char * c, size_t size); // copy specific length from buffer
    4141
    4242void ?=?(string & s, const char * c); // copy assignment from literal
    43 static inline string & strcpy(string & s, const char * c) { s = c; return s; }
    44 static inline string & strncpy(string & s, const char * c, size_t n) { s = c; return s; }
    4543void ?=?(string & s, const string & c);
    46 static inline string & strcpy(string & s, const string c) { s = c; return s; }
    4744void ?=?(string & s, char c);
    4845string & ?=?(string & s, string & c);  // surprising ret seems to help avoid calls to autogen
     46void assign(string & s, const string & c, size_t n);
     47void assign(string & s, const char * c, size_t n);
    4948//string ?=?( string &, string ) = void;
     49
     50static inline string & strcpy(string & s, const char * c) { s = c; return s; }
     51static inline string & strncpy(string & s, const char * c, size_t n) { assign( s, c, n); return s; }
     52static inline string & strcpy(string & s, const string & c) { s = c; return s; }
     53static inline string & strncpy(string & s, const string & c, size_t n) { assign(s, c, n); return s; }
     54
    5055void ^?{}(string & s);
    5156
     
    104109void ?+=?(string & s, char c); // append a character
    105110void ?+=?(string & s, const string & s2); // append-concatenate to first string
    106 static inline string & strcat(string & s, const string & s2) { s += s2; return s; }
    107 void ?+=?(string & s, const char * s2); // append-concatenate to first string
    108 static inline string & strcat(string & s, const char * c) { s += c; return s; }
     111void append(string & s, const string & s2, size_t maxlen);  // append-concatenate to first string, up to maxlen
     112void ?+=?(string & s, const char * s2); // append-concatenate NULL-terminated string to first string
     113void append(string & s, const char * buffer, size_t bsize);  // append-concatenate given range to first string
     114
    109115string ?+?(const string & s, char c); // add a character to a copy of the string
    110116string ?+?(const string & s, const string & s2); // copy and concatenate both strings
    111 string ?+?(const char * s1, const char * s2); // concatenate both strings
     117string ?+?(const char * s1, const char * s2); // copy and concatenate both strings
    112118string ?+?(const string & s, const char * c); // copy and concatenate with NULL-terminated string
     119
     120static inline string & strcat(string & s, const string & s2) { s += s2; return s; }
     121static inline string & strcat(string & s, const char * c) { s += c; return s; }
     122static inline string & strncat(string & s, const string & s2, size_t maxlen) { append(s, s2, maxlen); return s; }
     123static inline string & strncat(string & s, const char * buffer, size_t bsize) { append(s, buffer, bsize); return s; }
    113124
    114125// Repetition
Note: See TracChangeset for help on using the changeset viewer.