История изменений
Исправление dimgel, (текущая версия) :
template<class CharT, uint lengthBytes, uint maxLength> class std::basic_c_string
Или даже вычислять lengthBytes из maxLength. using Path = BasicCString<char,PATH_MAX-1>
– шикарно ж (-1 т.к. PATH_MAX включает 0-terminator, который я буду обеспечивать для всех строк аналогично std::string). Всё на стеке. Копирование и конкатенация полностью аналогично strcpy() и strcat(), только размер не надо каждый раз вычислять и о переполнении заботиться; у двух строк должен совпадать только CharT. И rfind() быстрый. Пожалуй, добавлю себе в TODO, будет совсем нечего делать – запилю и заюзаю в check-link-consistency.
Исправление dimgel, :
template<class CharT, uint lengthBytes, uint maxLength> class std::basic_c_string
Или даже вычислять lengthBytes из maxLength. using Path = BasicCString<char,PATH_MAX-1>
– шикарно ж (-1 т.к. PATH_MAX включает 0-terminator, который я буду обеспечивать для всех строк аналогично std::string). Всё на стеке. Копирование и конкатенация полностью аналогично strcpy() и strcat(), только размер не надо каждый раз вычислять и о переполнении заботиться. И rfind() быстрый. Пожалуй, добавлю себе в TODO, будет совсем нечего делать – запилю и заюзаю в check-link-consistency.
Исправление dimgel, :
template<class CharT, uint lengthBytes, uint maxLength> class std::basic_c_string
Или даже вычислять lengthBytes из maxLength. using Path = BasicCString<char,PATH_MAX-1>
– шикарно ж (-1 т.к. PATH_MAX включает 0-terminator, который я буду обеспечивать для всех строк аналогично std::string). Пожалуй, добавлю себе в TODO, будет совсем нечего делать – запилю и заюзаю в check-link-consistency.
Исходная версия dimgel, :
template<class CharT, uint lengthBytes, uint maxLength> class std::basic_c_string
Или даже вычислять lengthBytes из maxLength.