8 2.6. vtype_string
Gregory Lirent edited this page 2022-08-17 21:48:15 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

vtype_string

include/string.h

Базовый блок
  • void string_init(vtype_string* x, const char* value)

    • Принимает указатель на область памяти, содержащую инициализируемую строку x.
    • Принимает указатель на C-строку, которая будет установлена в качестве значения x. Если вместо указателя передан NULL, строка будет инициализированна пустым значением.
    • Инициализирует строку, позволяя использовать его в дальнейшей логике приложения.
  • char* string_at(const vtype_string* s, ssize_t index)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение индекса юникод символа index, указатель на который следует вернуть. Отрицательные значения индекса указывают на символы, начианая с последнего (где индекс -1 указывает на последний символ строки). Если отрицательное значение индекса по модулю превышает количество юникод символов в строке, то будет считаться, что запрос сделан с индексом равным нулю.
    • Возвращает указатель на запрошенный символ, либо NULL, если индекс превышает количество юникод символов в строке.
  • bool string_slice(vtype_string* x, vtype_string* src, ssize_t index, size_t nchars, bool cut)

    • Принимает указатель на область памяти, содержащую инициализируемую строку x.
    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string src.
    • Принимает значение индекса юникод символа index, начиная с которого, требуется начать "срез" строки. Отрицательные значения индекса указывают на символы, начианая с последнего (где индекс -1 указывает на последний символ строки). Если отрицательное значение индекса по модулю превышает количество юникод символов в строке, то будет считаться, что запрос сделан с индексом равным нулю.
    • Принимает значение количества юникод символов count, которыми необходимо инициализировать x в рамках "среза" данных src, начиная с index. В случае, если количество элементов, начиная с index меньше count, вместо count будет использовано количество оставшихся юникод символов.
    • Принимает булевое значение cut, сообщающее о необходимости вырезать полученный "срез" данных из src.
    • Возвращает итоговое количество элементов, вошедших в "срез".
Макросы
  • ssize_t string_indexof(const vtype_string* s, T arg)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string s.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, в качестве значения, которое нужно найти в строке.
    • Возвращает индекс, указывающий на начальный символ первого найденного отрезка, равного arg.
  • size_t string_count(const vtype_string* s, T arg)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string s.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, в качестве значения, которое нужно найти в строке.
    • Возвращает количество найденных соответствий с arg в строке.
  • bool string_concat(vtype_string* x, T value)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, в качестве значения, которое необходимо добавить к строке x.
    • Добавляет значение arg в конец строки x.
  • void string_trim_spaces(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Удаляет пробельные символы в начале и конце строки.
  • void string_ltrim_spaces(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Удаляет пробельные символы в начале строки.
  • void string_rtrim_spaces(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Удаляет пробельные символы в конце строки.
  • size_t string_replace(vtype_string* x, T src, T dest, size_t maxn)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, в качестве значения, которое будет заменено.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, в качестве значения, на которое будет произведена замена.
    • Принимает значение maxn, которое устанавливает лимит замен.
    • Производит не более maxn замен значений, равных src в строке x, на значения равные dest.
    • Возвращает количество произведенных замен.

include/extra/string.h

Макросы
  • vtype_array string_split(const vtype_string* s, T sep, size_t maxn)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, в качестве значения, по которому будет производиться деление строки на части.
    • Принимает значение maxn, которое устанавливает лимит разделений строки.
    • Производит не более maxn разделений строки s на блоки, с sep в качестве основания для разделения.
    • Возвращает инициализированное значение vtype_array, содержащее результат запрошенного разделения.
  • int string_case_compare(const vtype_string* s0, const vtype_string* s1)

    • Принимает два указателя на области памяти, содержащие инициализированные значения vtype_string.
    • Производит сравнение строк без учета регистра (с поддержкой юникод-символов)
    • Возвращает 0 если значения контейнеров равны, значения < 0 и > 0, если значения s0 меньше или больше значений s1 соответственно.
  • size_t string_replace_r(vtype_string* x, T src, T dest, size_t maxn)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, restrict указатель на C-строку или restrict указатель на область памяти, содержащую vtype_string, в качестве значения, которое будет заменено.
    • Принимает значение char/char16_t/char32_t, restrict указатель на C-строку или restrict указатель на область памяти, содержащую vtype_string, в качестве значения, на которое будет произведена замена.
    • Принимает значение maxn, которое устанавливает лимит замен.
    • Производит не более maxn замен значений, равных src в строке x, на значения равные dest. В отличии от size_t string_replace(vtype_string* x, T src, T dest, size_t maxn) не производит проверку на то, что указатели src и dest указывают на один и тот же блок памяти, так как программист дает гарантию непересечение оных.
    • Возвращает количество произведенных замен.
  • void string_trim(vtype_string* x, T arg)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, содержащее юникод символы, которые будут отсечены от строки.
    • Удаляет юникод символы, содержащиеся в arg, в начале и конце строки x.
  • void string_ltrim(vtype_string* x, T arg)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, содержащее юникод символы, которые будут отсечены от строки.
    • Удаляет юникод символы, содержащиеся в arg, в начале строки x.
  • void string_rtrim(vtype_string* x, T arg)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение char/char16_t/char32_t, указатель на C-строку или указатель на область памяти, содержащую vtype_string, содержащее юникод символы, которые будут отсечены от строки.
    • Удаляет юникод символы, содержащиеся в arg, в конце строки x.
Дополнительный блок
  • size_t string_to_lower(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Переводит каждый юникод символ строки в нижний регистр.
    • Возвращает количество юникод символов, переведенных в нижний регистр.
  • size_t string_to_upper(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Переводит каждый юникод символ строки в верхний регистр.
    • Возвращает количество юникод символов, переведенных в верхний регистр.
  • size_t string_capitalize(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Переводит первый юникод символ строки в верхний регистр, а остальные - в нижний.
    • Возвращает количество юникод символов, у которых был изменен регистр.
  • size_t string_reverse(vtype_string* x)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Переворачивает строку.
    • Возвращает количество юникод символов в строке.
  • size_t string_align_center(vtype_string* x, size_t padsize, int padchr)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение padsize, устанавливающее размер области (в количестве юникод символов), в рамках которой будет производиться выравнивание.
    • Принимает значение char/char16_t/char32_t, устанавливающее символ, которым будет дополняться строка. Если задан некорректный юникод символ или использовано значение 0, будет использован обычный пробел.
    • Производит центрирование значение строки x, в области, с размером padsize, дополняя значение строки x символом padchr слева и справа.
    • Вовзращает итоговое количество юникод символов в строке.
  • size_t string_align_right(vtype_string* x, size_t padsize, int padchr)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение padsize, устанавливающее размер области (в количестве юникод символов), в рамках которой будет производиться выравнивание.
    • Принимает значение char/char16_t/char32_t, устанавливающее символ, которым будет дополняться строка. Если задан некорректный юникод символ или использовано значение 0, будет использован обычный пробел.
    • Производит дополнение строки x символами padchr слева, до размера padsize
    • Вовзращает итоговое количество юникод символов в строке.
  • size_t string_align_left(vtype_string* x, size_t padsize, int padchr)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает значение padsize, устанавливающее размер области (в количестве юникод символов), в рамках которой будет производиться выравнивание.
    • Принимает значение char/char16_t/char32_t, устанавливающее символ, которым будет дополняться строка. Если задан некорректный юникод символ или использовано значение 0, будет использован обычный пробел.
    • Производит дополнение строки x символами padchr справа, до размера padsize
    • Вовзращает итоговое количество юникод символов в строке.
  • void libcdsb_string_replace(vtype_string* x, char* dest, size_t dest_nmemb, const char* src, size_t nmemb)

    • Принимает указатель на область памяти, содержащую инициализированное значение vtype_string x.
    • Принимает указатель dest на любой символ из области выделенной памяти в x->buffer
    • Принимает размер заменяемой области памяти dest_nmemb
    • Принимает указатель на последовательность символов, на которые будет производится замена dest
    • Принимает размер заменяющей последовательности символов nmemb
    • Производит замену dest с размером dest_nmemb на src с размером nmemb. Значение dest должно принадлежать выделенной памяти x->buffer, а выражение dest + dest_nmemb не должно указывать за пределы выделенной памяти. Подобную гарантию дает программист.

Далее: 2.7. Дополнительно