Changeset e8b3717 for libcfa


Ignore:
Timestamp:
Jan 18, 2024, 10:17:21 PM (3 months ago)
Author:
Michael Brooks <mlbrooks@…>
Branches:
master
Children:
f988834
Parents:
906d8fa
Message:

Modify substring interface from start-end to start-len, and add a missing test.

Location:
libcfa/src/collections
Files:
4 edited

Legend:

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

    r906d8fa re8b3717  
    3030
    3131// private (not in header)
    32 static void ?{}( string & s, string_res & src, size_t start, size_t end ) {
    33     (s.inner) { malloc() };
    34     ?{}( *s.inner, src, SHARE_EDITS, start, end );
     32static void ?{}( string & s, string_res & src, size_t start, size_t len ) {
     33    (s.inner) { malloc() };
     34    ?{}( *s.inner, src, SHARE_EDITS, start, len );
    3535}
    3636
     
    161161// Slicing
    162162
    163 string ?()( string & s, size_t start, size_t end ) {
    164     string ret = { *s.inner, start, end };
     163string ?()( string & s, size_t start, size_t len ) {
     164    string ret = { *s.inner, start, len };
    165165    return ret`shareEdits;
    166166}
    167167
    168168string ?()( string & s, size_t start ) {
    169     string ret = { *s.inner, start, size( s ) };
     169    string ret = { *s.inner, start, size( s ) - start };
    170170    return ret`shareEdits;
    171171}
     
    286286
    287287string ?[?](string & s, size_t index) {
    288     string ret = { *s.inner, index, index + 1 };
     288    string ret = { *s.inner, index, 1 };
    289289    return ret`shareEdits;
    290290}
  • libcfa/src/collections/string.hfa

    r906d8fa re8b3717  
    162162
    163163// Slicing
    164 string ?()( string & s, size_t start, size_t end );  // TODO const?
     164string ?()( string & s, size_t start, size_t len );  // TODO const?
    165165string ?()( string & s, size_t start);
    166166
  • libcfa/src/collections/string_res.cfa

    r906d8fa re8b3717  
    346346}
    347347
     348
    348349// General copy constructor
    349 void ?{}(string_res & s, const string_res & s2, StrResInitMode mode, size_t start, size_t end ) {
    350 
     350void ?{}(string_res & s, const string_res & s2, StrResInitMode mode, size_t start, size_t len ) {
     351
     352    size_t end = start + len;
    351353    verify( start <= end && end <= s2.Handle.lnth );
    352354
     
    611613
    612614void assignAt(const string_res & s, size_t index, char val) {
    613     string_res editZone = { s, SHARE_EDITS, index, index+1 };
     615    // caution: not tested (not reachable by string-api-coverage interface)
     616    // equivalent form at string level is `s[index] = val`,
     617    // which uses the overload that returns a length-1 string
     618    string_res editZone = { s, SHARE_EDITS, index, 1 };
    614619    assign(editZone, &val, 1);
    615620}
     
    656661
    657662void ?*=?(string_res & s, size_t factor) {
    658     string_res s2 = { s, COPY_VALUE, 0, size(s) };
     663    string_res s2 = { s, COPY_VALUE };
    659664    s = "";
    660665    for (factor) s += s2;
  • libcfa/src/collections/string_res.hfa

    r906d8fa re8b3717  
    8787
    8888enum StrResInitMode { COPY_VALUE, SHARE_EDITS };
    89 void ?{}(string_res & s, const string_res & src, StrResInitMode, size_t start, size_t end );
     89void ?{}(string_res & s, const string_res & src, StrResInitMode, size_t start, size_t len );
    9090static inline void ?{}(string_res & s, const string_res & src, StrResInitMode mode ) {
    9191    ?{}( s, src, mode, 0, size(src));
Note: See TracChangeset for help on using the changeset viewer.