From 901a640e2a68ec2ae61607c6023e0cf772db8ff4 Mon Sep 17 00:00:00 2001 From: Gregory Lirent Date: Wed, 17 Aug 2022 16:43:41 +0300 Subject: [PATCH] Update page '2.1. vtype_array' --- 2.1. vtype_array.md | 65 ++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/2.1. vtype_array.md b/2.1. vtype_array.md index 6514724..52576b9 100644 --- a/2.1. vtype_array.md +++ b/2.1. vtype_array.md @@ -76,22 +76,69 @@ ### [include/extra/array.h](https://gogs.lirent.ru/lirent/libcdsb/src/master/include/extra/array.h) -##### Базовый блок -- `ssize_t libcdsb_array_push(vtype_array* x, const void* value, vtype value_type)` -- `size_t libcdsb_array_count(const vtype_array* s, const void* value, vtype type)` -- `int libcdsb_array_find(vtype_array* x, const void* value, vtype type, void* data, array_access_callback, bool reverse, bool cut)` -- `int libcdsb_array_get(vtype_array* x, ssize_t index, void* data, array_access_callback, bool cut)` -- `int libcdsb_array_foreach(vtype_array* x, void* data, array_access_callback, bool flush)` - ##### Макросы - `int array_get_by_index(vtype_array* x, ssize_t index, void* data, CallbackT callback)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает значение индекса данных `index`, которые следует вернуть. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. + - Принимает указатель на произвольные пользовательские данные `data`. + - Принимает указатель на функцию-callback (см. начало текущего документа). + - Вызывает callback-функцию cо значением находящимся по запрошенному индексу, в качестве аргумента. + - Возвращает -1, если индекс выходит за границы области памяти, принадлежащей контейнеру. В противном случае возвращает значение возвращенное callback-функцией. - `int array_pop_by_index(vtype_array* x, ssize_t index, void* data, CallbackT callback)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает значение индекса данных `index`, которые следует вернуть. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. + - Принимает указатель на произвольные пользовательские данные `data`. + - Принимает указатель на функцию-callback (см. начало текущего документа). + - Вызывает callback-функцию cо значением находящимся по запрошенному индексу, в качестве аргумента. После чего удаляет данный объект из контейнера. + - Возвращает -1, если индекс выходит за границы области памяти, принадлежащей контейнеру. В противном случае возвращает значение возвращенное callback-функцией. - `int array_remove_by_index(vtype_array* x, ssize_t index)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает значение индекса данных `index`, которые следует вернуть. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. + - Возвращает `0`, в случае успешного удаления элемента, или `-1` в случае, если индекс выходит за границы области памяти, принадлежащей контейнеру. - `int array_foreach(vtype_array* x, void* data, CallbackT callback)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает указатель на произвольные пользовательские данные `data`. + - Принимает указатель на функцию-callback (см. начало текущего документа). + - Вызывает callback-функцию последовательно, с каждым элементом контейнера, в качестве аргумента. Если callback возвращает значение отличное от 0, то перебор будет прерван. + - Возвращает 0, в случае успеха, или любое другое значение, возвращенное пользовательской callback-функцией. - - +##### Дополнительный блок +- `ssize_t libcdsb_array_push(vtype_array* x, const void* value, vtype value_type)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает указатель на передаваемые данные `value`. + - Принимает константу идентификатора типа данных `value_type`. + - Добавляет полученное значение `value` в конец последовательности элементов контейнера. В случае, если производится попытка добавить значение, с несравнимым типом относительно типа, которым был инициализирован контейнер, находящийся в области памяти `x` (см. [1.1. Система типов](https://gogs.lirent.ru/lirent/libcdsb/wiki/1.1.+%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0+%D1%82%D0%B8%D0%BF%D0%BE%D0%B2)), будет вызван системный вызов `abort()`. + - Возвращает индекс, по которому находятся добавленные в контейнер данные. +- `size_t libcdsb_array_count(const vtype_array* s, const void* value, vtype type)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает указатель на передаваемые данные `value`. + - Принимает константу идентификатора типа данных `value_type`. + - Возвращает количество элементов, равных `value` (см. [1.1. Система типов](https://gogs.lirent.ru/lirent/libcdsb/wiki/1.1.+%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0+%D1%82%D0%B8%D0%BF%D0%BE%D0%B2)). +- `int libcdsb_array_find(vtype_array* x, const void* value, vtype type, void* data, array_access_callback, bool reverse, bool cut)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает указатель на передаваемые данные `value`. + - Принимает константу идентификатора типа данных `value_type`. + - Принимает указатель на произвольные пользовательские данные `data`. + - Принимает указатель на функцию-callback (см. начало текущего документа). + - Принимает **bool** значение `reverse` указывающее на необходимость поиска значения с конца. + - Принимает **bool** значение `cut`, указывающее на необходимость удаление найденного элемента. + - Вызывает callback-функцию c первым найденным значением, равным `value`, в качестве аргумента. + - Возвращает -1, если значение равное `value` не было найдено внутри контейнера. В противном случае возвращает значение возвращенное callback-функцией. +- `int libcdsb_array_get(vtype_array* x, ssize_t index, void* data, array_access_callback, bool cut)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает значение индекса данных `index`, которые следует вернуть. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. + - Принимает указатель на произвольные пользовательские данные `data`. + - Принимает указатель на функцию-callback (см. начало текущего документа). + - Принимает **bool** значение `cut`, указывающее на необходимость удаление элемента по указанному индексу. + - Возвращает -1, если индекс выходит за границы области памяти, принадлежащей контейнеру. В противном случае возвращает значение возвращенное callback-функцией. +- `int libcdsb_array_foreach(vtype_array* x, void* data, array_access_callback, bool flush)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. + - Принимает указатель на произвольные пользовательские данные `data`. + - Принимает указатель на функцию-callback (см. начало текущего документа). + - Принимает **bool** значение `flush`, указывающее на необходимость очистки контейнера после выполнения перебора. + - Вызывает callback-функцию последовательно, с каждым элементом контейнера, в качестве аргумента. Если callback возвращает значение отличное от 0, то перебор будет прерван. Если установлен флаг `flush`, то очистка контейнера произойдет в любом случае, вне зависимости от того, было ли прерывание перебора со стороны пользователя. + - Возвращает 0, в случае успеха, или любое другое значение, возвращенное пользовательской callback-функцией. [Далее: 2.2. vtype_dict](https://gogs.lirent.ru/lirent/libcdsb/wiki/2.2.+vtype_dict) \ No newline at end of file