Changeset 829a955 for libcfa/src


Ignore:
Timestamp:
Sep 15, 2025, 5:11:15 PM (10 days ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
8317671
Parents:
fae93a40
Message:

update strings, update for-control and string documentation

Location:
libcfa/src/collections
Files:
2 edited

Legend:

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

    rfae93a40 r829a955  
    1010// Created On       : Fri Sep 03 11:00:00 2021
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Apr 13 07:58:55 2025
    13 // Update Count     : 390
     12// Last Modified On : Mon Sep 15 10:26:35 2025
     13// Update Count     : 394
    1414//
    1515
     
    9797}
    9898
    99 string str( ssize_t rhs ) {
    100         string s = rhs;
    101         return s;
    102 }
    103 
    104 string str( size_t rhs ) {
    105         string s = rhs;
    106         return s;
    107 }
    108 
    109 string str( double rhs ) {
    110         string s = rhs;
    111         return s;
    112 }
    113 
    114 string str( long double rhs ) {
    115         string s = rhs;
    116         return s;
    117 }
    118 
    119 string str( double _Complex rhs ) {
    120         string s = rhs;
    121         return s;
    122 }
    123 
    124 string str( long double _Complex rhs ) {
    125         string s = rhs;
    126         return s;
    127 }
    128 
    12999void ^?{}( string & s ) {
    130100        ^(*s.inner){};
     
    204174
    205175////////////////////////////////////////////////////////
    206 // Getter
     176// C-style
     177
     178// safe conversion from string to char *
     179char * strncpy( char * dst, string & src, size_t n ) {
     180        size_t l = min( n - 1, len( src ) );                            // ensure null terminated
     181        for ( i; l ) dst[i] = src[i];
     182        dst[l] = '\0';
     183        return dst;
     184}
     185char * ?=?( char *& dst, string & src ) {
     186        dst = aalloc( len( src ) + 1 );                                 // ensure null terminated
     187        for ( i; len( src ) ) dst[i] = src[i];
     188        dst[len(src)] = '\0';
     189        return dst;
     190}
     191void ?{}( char *& dst, string & src ) {
     192        dst = aalloc( len( src ) + 1 );                                 // ensure null terminated
     193        for ( i; len( src ) ) dst[i] = src[i];
     194        dst[len(src)] = '\0';
     195}
    207196
    208197size_t strnlen( const string & s, size_t maxlen ) { return min( len( s ), maxlen ); }
     
    255244
    256245string ?()( string & s, ssize_t start, ssize_t len ) {
    257         if ( start < 0 ) { start += len( s ); }
    258         if ( len < 0 ) { len = -len; start -= len; }
    259         if ( start >= len( s ) ) return (string){ "" };
     246        if ( start < 0 ) start += len( s );
     247        if ( len < 0 ) { len = -len; start -= len - 1; }
     248        if ( start < 0 || start >= len( s ) ) return (string){ "" };
    260249        if ( start + len > len( s ) ) len = len( s ) - start;
    261250        string ret = { *s.inner, start, len };
  • libcfa/src/collections/string.hfa

    rfae93a40 r829a955  
    1010// Created On       : Fri Sep 03 11:00:00 2021
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Sep  5 15:51:08 2025
    13 // Update Count     : 310
     12// Last Modified On : Sun Sep 14 10:58:28 2025
     13// Update Count     : 311
    1414//
    1515
     
    4343void ?{}( string & s, long double _Complex rhs );
    4444static inline void ?{}( string & s, int rhs ) { (s){(signed long int) rhs}; }
    45 
    46 // string str( ssize_t rhs );
    47 // string str( size_t rhs );
    48 // string str( double rhs );
    49 // string str( long double rhs );
    50 // string str( double _Complex rhs );
    51 // string str( long double _Complex rhs );
    5245
    5346PBOOST string & ?=?( string & s, string c );
     
    6861static inline string & strcpy( string & s, const string & c ) { s = c; return s; }
    6962static inline string & strncpy( string & s, const string & c, size_t n ) { assign( s, c, n ); return s; }
     63char * strncpy( char * dst, string & src, size_t n );
     64char * ?=?( char *& dst, string & src );
     65void ?{}( char *& dst, string & src );
    7066
    7167// Alternate construction: request shared edits
Note: See TracChangeset for help on using the changeset viewer.