STC 4.2 - библиотека алгоритмов и контейнеров для Си

good-penguin.png

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);
}

>>> Подробности

©  Linux.org.ru