STC 4.2 - библиотека алгоритмов и контейнеров для Си
10 апреля состоялся выпуск версии 4.2 библиотеки STC (Smart Template Containers), написанной на языке C (C99) и распространяемой по лицензии MIT.
Изменения:
- изменён адрес проекта;
- улучшена документация;
- добавлены
Coroutines
и сопутствующая документация; - добавлен новый
crand.h
. Предыдущийcrandom.h
объявлен устаревшим; - добавлен макрос
c_const_cast
; - макросы RAII удалены из примеров использования;
- макрос
c_foreach_r
переименован вc_foreach_rv
; - макрос
c_flt_count
переименован вc_flt_counter
; - макрос
c_flt_last
переименован вc_flt_getcount
; - макрос
c_ARRAYLEN
переименован вc_arraylen
; - удалён устаревший макрос
c_ARGSV()
; - удалён макрос
c_PAIR
.
По утверждениям разработчиков, STC — это современная быстрая типо-безопасная небольшая библиотека контейнеров и алгоритмов для языка Си (стандарт C99). Билиотека создана под влиянием C++ STL, а также некоторых идей из Rust и Python.
Пример использования:
#define i_extern // include external cstr, utf8, cregex functions implementation.
#include
int main() {
const char* input = "start date is 2023-03-01, end date 2025-12-31.";
const char* pattern = "\\b(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)\\b";
cregex re = cregex_from(pattern);
// Lets find the first date in the string:
csview match[4]; // full-match, year, month, date.
if (cregex_find(&re, input, match) == CREG_OK)
printf("Found date: %.*s\n", c_SV(match[0]));
else
printf("Could not find any date\n");
// Lets change all dates into US date format MM/DD/YYYY:
cstr us_input = cregex_replace(&re, input, "$2/$3/$1");
printf("%s\n", cstr_str(&us_input));
// Free allocated data
cstr_drop(&us_input);
cregex_drop(&re);
}
>>> Подробности