@@ -1310,50 +1310,6 @@ struct c_static_string
13101310 set (s);
13111311 }
13121312
1313- void null_terminate_buffer ()
1314- {
1315- m_string[k_maximum_count - 1 ] = 0 ;
1316- }
1317-
1318- void set_character (int32 index, char character)
1319- {
1320- ASSERT (VALID_INDEX (index, k_maximum_count - 1 ));
1321-
1322- // int32 initial_length = length();
1323- // ASSERT(VALID_COUNT(index, initial_length));
1324- //
1325- // if (index >= initial_length)
1326- // {
1327- // if (index == initial_length && index < k_maximum_count - 1)
1328- // {
1329- // m_string[index] = character;
1330- // m_string[index + 1] = 0;
1331- // }
1332- // }
1333- // else
1334- // {
1335- // m_string[index] = character;
1336- // }
1337-
1338- if (!m_string[index])
1339- m_string[index + 1 ] = 0 ;
1340-
1341- m_string[index] = character;
1342- }
1343-
1344- void set_length (int32 length)
1345- {
1346- if (VALID_COUNT (length, k_maximum_count - 1 ))
1347- {
1348- m_string[length] = 0 ;
1349- }
1350- }
1351-
1352- void set (char const * s)
1353- {
1354- csstrnzcpy (m_string, s, k_maximum_count);
1355- }
1356-
13571313 void append (char const * s)
13581314 {
13591315 csstrnzcat (m_string, s, k_maximum_count);
@@ -1366,38 +1322,6 @@ struct c_static_string
13661322 csstrnzcat (m_string, " \r\n " , k_maximum_count);
13671323 }
13681324
1369- char const * print (char const * format, ...)
1370- {
1371- va_list list;
1372- va_start (list, format);
1373-
1374- print_va (format, list);
1375-
1376- va_end (list);
1377-
1378- return m_string;
1379- }
1380-
1381- char const * print_line (char const * format, ...)
1382- {
1383- va_list list;
1384- va_start (list, format);
1385-
1386- print_va (format, list);
1387- append_line ();
1388-
1389- va_end (list);
1390-
1391- return m_string;
1392- }
1393-
1394- char const * print_va (char const * format, va_list list)
1395- {
1396- cvsnzprintf (m_string, k_maximum_count, format, list);
1397-
1398- return m_string;
1399- }
1400-
14011325 char const * append_print (char const * format, ...)
14021326 {
14031327 va_list list;
@@ -1421,14 +1345,14 @@ struct c_static_string
14211345 return result;
14221346 }
14231347
1424- char const * append_print_va (char const * format, va_list list )
1348+ char const * append_print_va (char const * format, va_list argument_list )
14251349 {
14261350 uns32 current_length = length ();
14271351
14281352 ASSERT (format);
14291353 ASSERT (current_length >= 0 && current_length < k_maximum_count);
14301354
1431- cvsnzprintf (m_string + current_length, k_maximum_count - current_length, format, list );
1355+ cvsnzprintf (m_string + current_length, k_maximum_count - current_length, format, argument_list );
14321356
14331357 return m_string;
14341358 }
@@ -1438,12 +1362,31 @@ struct c_static_string
14381362 csmemset (m_string, 0 , sizeof (m_string));
14391363 }
14401364
1441- bool is_empty () const
1365+ char * copy_to ( char * string, uns32 string_length) const
14421366 {
1443- return !m_string[0 ];
1367+ if (string_length > k_maximum_count)
1368+ string_length = k_maximum_count;
1369+
1370+ return csstrnzcpy (string, m_string, string_length);
14441371 }
14451372
1446- char const * get_string () const
1373+ bool ends_with (char const * string) const
1374+ {
1375+ ASSERT (string);
1376+
1377+ int32 _length = length ();
1378+ int32 suffix_length = csstrnlen (string, k_maximum_count);
1379+
1380+ if (suffix_length > _length)
1381+ return false ;
1382+
1383+ char const * suffix = get_string () + (_length - suffix_length);
1384+
1385+ bool result = csmemcmp (suffix, string, suffix_length) == 0 ;
1386+ return result;
1387+ }
1388+
1389+ char * get_buffer ()
14471390 {
14481391 return m_string;
14491392 }
@@ -1456,14 +1399,21 @@ struct c_static_string
14561399 return " " ;
14571400 }
14581401
1459- char * get_buffer ()
1402+ char const * get_string () const
14601403 {
14611404 return m_string;
14621405 }
14631406
1464- int32 length ( ) const
1407+ int32 index_of ( char const * string ) const
14651408 {
1466- return csstrnlen (m_string, k_maximum_count);
1409+ ASSERT (string);
1410+
1411+ return next_index_of (string, 0 );
1412+ }
1413+
1414+ bool is_empty () const
1415+ {
1416+ return !m_string[0 ];
14671417 }
14681418
14691419 bool is_equal (char const * string) const
@@ -1473,78 +1423,133 @@ struct c_static_string
14731423 return csstrnlen (string, k_maximum_count) == length () && csmemcmp (get_string (), string, length ()) == 0 ;
14741424 }
14751425
1476- bool starts_with (char const * string) const
1426+ int32 length () const
1427+ {
1428+ return csstrnlen (m_string, k_maximum_count);
1429+ }
1430+
1431+ int32 next_index_of (char const * string, int32 start_at) const
14771432 {
14781433 ASSERT (string);
14791434
1480- return csmemcmp (string, get_string (), csstrnlen (string, k_maximum_count)) == 0 ;
1435+ int32 result = NONE;
1436+
1437+ if (start_at < length ())
1438+ {
1439+ char const * s = csstrstr (m_string + start_at, string);
1440+ if (s)
1441+ result = s - get_string ();
1442+ }
1443+
1444+ return result;
14811445 }
14821446
1483- bool ends_with ( char const * string) const
1447+ void null_terminate_buffer ()
14841448 {
1485- ASSERT (string);
1449+ m_string[k_maximum_count - 1 ] = 0 ;
1450+ }
14861451
1487- int32 _length = length ();
1488- int32 suffix_length = csstrnlen (string, k_maximum_count);
1452+ char const * print (char const * format, ...)
1453+ {
1454+ va_list list;
1455+ va_start (list, format);
14891456
1490- if (suffix_length > _length)
1491- return false ;
1457+ print_va (format, list);
14921458
1493- char const * suffix = get_string () + (_length - suffix_length );
1459+ va_end (list );
14941460
1495- bool result = csmemcmp (suffix, string, suffix_length) == 0 ;
1496- return result;
1461+ return m_string;
14971462 }
14981463
1499- int32 next_index_of (char const * string, int32 index) const
1464+ char const * print_line (char const * format, ...)
15001465 {
1501- ASSERT (string);
1466+ va_list list;
1467+ va_start (list, format);
15021468
1503- int32 result = NONE;
1469+ print_va (format, list);
1470+ append_line ();
15041471
1505- if (index < length ())
1506- {
1507- char const * s = csstrstr (m_string + index, string);
1508- if (s)
1509- result = s - get_string ();
1510- }
1472+ va_end (list);
15111473
1512- return result ;
1474+ return m_string ;
15131475 }
15141476
1515- int32 index_of (char const * string) const
1477+ char const * print_va (char const * format, va_list argument_list)
15161478 {
1517- ASSERT (string );
1479+ cvsnzprintf (m_string, k_maximum_count, format, argument_list );
15181480
1519- return next_index_of (string, 0 ) ;
1481+ return m_string ;
15201482 }
15211483
1522- void set_bounded (char const * string, int32 _length )
1484+ void set (char const * s )
15231485 {
1524- if (_length + 1 < k_maximum_count)
1525- _length++;
1486+ csstrnzcpy (m_string, s, k_maximum_count);
1487+ }
1488+
1489+ void set_bounded (char const * src, int32 length)
1490+ {
1491+ if (length + 1 < k_maximum_count)
1492+ length++;
15261493 else
1527- _length = k_maximum_count;
1494+ length = k_maximum_count;
15281495
1529- csstrnzcpy (m_string, string, _length );
1496+ csstrnzcpy (m_string, src, length );
15301497 }
15311498
1532- bool substring (int32 index, int32 _length, c_static_string<k_maximum_count>& s) const
1499+ void set_character (int32 index, char character)
15331500 {
1534- if (index < 0 || _length <= 0 || index + _length > length ())
1535- return false ;
1501+ ASSERT (VALID_INDEX (index, k_maximum_count - 1 ));
1502+
1503+ // int32 initial_length = length();
1504+ // ASSERT(VALID_COUNT(index, initial_length));
1505+ //
1506+ // if (index >= initial_length)
1507+ // {
1508+ // if (index == initial_length && index < k_maximum_count - 1)
1509+ // {
1510+ // m_string[index] = character;
1511+ // m_string[index + 1] = 0;
1512+ // }
1513+ // }
1514+ // else
1515+ // {
1516+ // m_string[index] = character;
1517+ // }
15361518
1537- s.set_bounded (get_offset (index), _length);
1519+ if (!m_string[index])
1520+ m_string[index + 1 ] = 0 ;
15381521
1539- return true ;
1522+ m_string[index] = character ;
15401523 }
15411524
1542- char * copy_to ( char * s, unsigned int size) const
1525+ void set_length (int32 desired_length)
15431526 {
1544- if (size > k_maximum_count)
1545- size = k_maximum_count;
1527+ if (VALID_COUNT (desired_length, k_maximum_count - 1 ))
1528+ {
1529+ m_string[desired_length] = 0 ;
1530+ }
1531+ }
1532+
1533+ // void set_wchar(wchar_t const* src)
1534+ // {
1535+ // wchar_string_to_ascii_string(src, m_string, k_maximum_count, nullptr);
1536+ // }
15461537
1547- return csstrnzcpy (s, m_string, size);
1538+ bool starts_with (char const * string) const
1539+ {
1540+ ASSERT (string);
1541+
1542+ return csmemcmp (string, get_string (), csstrnlen (string, k_maximum_count)) == 0 ;
1543+ }
1544+
1545+ bool substring (int32 start_index, int32 count, c_static_string<k_maximum_count>& sub) const
1546+ {
1547+ if (start_index < 0 || count <= 0 || start_index + count > length ())
1548+ return false ;
1549+
1550+ sub.set_bounded (get_offset (start_index), count);
1551+
1552+ return true ;
15481553 }
15491554
15501555protected:
0 commit comments