Ignore:
File:
1 edited

Legend:

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

    r9018dcf red5023d1  
    1010// Created On       : Fri Sep 03 11:00:00 2021
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Apr  9 22:27:41 2025
    13 // Update Count     : 259
     12// Last Modified On : Sat Apr  5 15:16:23 2025
     13// Update Count     : 180
    1414//
    1515
     
    1717
    1818#include <fstream.hfa>
    19 #include <string_res.hfa>
     19
     20
     21// in string_res.hfa
     22struct string_res;
     23struct charclass_res;
    2024
    2125struct string {
     
    2428
    2529// Getters
    26 static inline size_t len( const string & s ) { return len( *s.inner ); }
    2730static inline size_t len( const char * cs ) { return strlen( cs ); };
     31size_t len( const string & s );
    2832static inline size_t strlen( const string & s ) { return len( s ); }
    2933
     
    211215bool contains( const string & s, char ch );                             // single character
    212216
    213 //int find( const string & s, size_t start, size_t len, const string & key, size_t kstart, size_t klen );
    214 size_t find$( const string_res & s, size_t start, size_t len, const string & key_res, size_t kstart, size_t klen );
    215 
    216 size_t find( const string & s, char key );
    217 size_t find( const string & s, const char * key );
    218 size_t find( const string & s, const string & key );
    219 size_t find( const string & s, const char * key, size_t keysize );
    220 
    221 size_t find( const string & s, size_t start, char key );
    222 size_t find( const string & s, size_t start, const string & key );
    223 size_t find( const string & s, size_t start, const char * key );
    224 size_t find( const string & s, size_t start, const char * key, size_t keysize );
    225 static inline ?^?( const string & key, const string & s ) { return find( s, key ); }
    226 static inline ?^?( const char * key, const string & s ) { return find( s, key ); }
     217int find( const string & s, char key );
     218static inline int ?^? ( const string & s, char key ) { return find( s, key ); }
     219int find( const string & s, const char * key );
     220static inline int ?^? ( const string & s, const char * key ) { return find( s, key ); }
     221int find( const string & s, const string & key );
     222static inline int ?^? ( const string & s, const string & key ) { return find( s, key ); }
     223int find( const string & s, const char * key, size_t keysize );
     224
     225int find( const string & s, size_t start, char key );
     226int find( const string & s, size_t start, const string & key );
     227int find( const string & s, size_t start, const char * key );
     228int find( const string & s, size_t start, const char * key, size_t keysize );
    227229
    228230bool includes( const string & s, const string & mask );
     
    239241
    240242// Slicing
    241 string ?()( string & s, ssize_t start, ssize_t len );
    242 static inline string ?()( const string & s, ssize_t start, ssize_t len ) { string & w = (string &)s; return w( start, len ); } // FIX ME
     243string ?()( string & s, ssize_t start, ssize_t len );           // TODO const?
    243244string ?()( string & s, ssize_t start );
    244 static inline string ?()( const string & s, ssize_t start ) { string & w = (string &)s; return w( start ); } // FIX ME
    245245static inline string ?()( string & s, char m ) { return s( find( s, m ), 1 )`share; }
    246 static inline string ?()( const string & s, char m ) { string & w = (string &)s; return w( find( s, m ), 1 )`share; } // FIX ME
    247246static inline string ?()( string & s, const char * m ) { return s( find( s, m ), len( m ) )`share; }
    248 static inline string ?()( const string & s, const char * m ) { string & w = (string &)s; return w( find( s, m ), len( m ) )`share; } // FIX ME
    249247static inline string ?()( string & s, const string & m ) { return s( find( s, m ), len( m ) )`share; }
    250 static inline string ?()( const string & s, const string & m ) { string & w = (string &)s; return w( find( s, m ), len( m ) )`share; } // FIX ME
     248
     249// Modifiers
     250void padStart( string & s, size_t n );
     251void padStart( string & s, size_t n, char padding );
     252void padEnd( string & s, size_t n );
     253void padEnd( string & s, size_t n, char padding );
     254
    251255
    252256struct charclass {
     
    263267void ^?{}( charclass & );
    264268
    265 size_t include( const string & s, const charclass & mask );
    266 static inline size_t include( const char * s, const charclass & mask ) { string temp = s; return include( temp, mask ); }
    267 static inline string include( const string & s, const charclass & mask ) { ssize_t i = include( s, mask ); return s( 0, i )`share; }
    268 static inline string include( const char * s, const charclass & mask ) { string temp = s; ssize_t i = include( temp, mask ); return temp( 0, i ); }
    269 
    270 size_t exclude( const string & s, const charclass & mask );
    271 static inline size_t exclude( const char * s, const charclass & mask ) { string temp = s; return exclude( temp, mask ); }
    272 static inline string exclude( const string & s, const charclass & mask ) { ssize_t i = exclude( s, mask ); return s( 0, i )`share; }
    273 static inline string exclude( const char * s, const charclass & mask ) { string temp = s; ssize_t i = exclude( temp, mask ); return temp( 0, i ); }
    274 
    275 size_t test( const string & s, int (*f)( int ) );
    276 static inline size_t test( const char * c, int (*f)( int ) ) {
    277         const string S = c;
    278         return test( S, f );
    279 }
    280 
    281 string replace( string & s, const string & from, const string & to );
    282 static inline string replace( const char * s, const char * from, const char * to ) {
    283         string S = s, From = from, To = to;
    284         return replace( S, From, To );
    285 }
    286 static inline string replace( string & s, const char * from, const char * to ) {
    287         string From = from, To = to;
    288         return replace( s, From, To );
    289 }
    290 static inline string replace( string & s, const char * from, const string & to ) {
    291         string From = from;
    292         return replace( s, From, to );
    293 }
    294 static inline string replace( string & s, string & from, const char * to ) {
    295         string To = to;
    296         return replace( s, from, To );
    297 }
    298 
    299 string translate( const string & s, int (*f)( int ) );
    300 static inline string translate( const char * c, int (*f)( int ) ) {
    301         const string S = c;
    302         return translate( S, f );
    303 }
     269int include( const string & s, const charclass & mask );
     270
     271int exclude( const string & s, const charclass & mask );
     272
     273/*
     274What to do with?
     275StrRet include( string & s, const charclass & mask );
     276StrRet exclude( string & s, const charclass & mask );
     277*/
Note: See TracChangeset for help on using the changeset viewer.