From 26bf108fa613c3aa24235e101ee29d3079003263 Mon Sep 17 00:00:00 2001 From: Gregory Lirent Date: Wed, 17 Aug 2022 17:07:57 +0300 Subject: [PATCH] Update page '2.1. vtype_array' --- 2.1. vtype_array.md | 62 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/2.1. vtype_array.md b/2.1. vtype_array.md index 64e2b91..1ee83c7 100644 --- a/2.1. vtype_array.md +++ b/2.1. vtype_array.md @@ -12,60 +12,95 @@ ##### Базовый блок + + - `void array_init(vtype_array* x, vtype type)` - Принимает указатель на область памяти, содержащую инициализируемый контейнер `x`. - Принимает значение типа `type`, определяющий содержащиеся данные внутри инициализируемого контейнера. + + - `void* array_at(const vtype_array* s, ssize_t index)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `s`. - Принимает значение индекса данных `index`, которые следует вернуть. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. - Возвращает указатель на область памяти, в которой находятся запрошенные данные, либо **NULL**, если индекс выходит за границы области памяти, принадлежащей контейнеру. + + - `size_t array_slice(vtype_array* x, vtype_array* src, ssize_t index, size_t count, bool cut)` + - Принимает указатель на область памяти, содержащую инициализируемый контейнер `x`. - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `src`. - Принимает значение индекса данных `index`, начиная с которого, требуется начать "срез" данных. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. - Принимает значение количества элементов `count`, которым необходимо инициализировать `x` в рамках "среза" данных `src`, начиная с `index`. В случае, если количество элементов, начиная с `index` меньше `count`, вместо `count` будет использовано количество оставшихся элементов. - Принимает булевое значение `cut`, сообщающее о необходимости вырезать полученный "срез" данных из `src`. - Возвращает итоговое количество элементов, вошедших в "срез". + + - `void array_sort(vtype_array* x)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Производит быструю сортировку значений в контейнере (от меньшего к большему). + + - `void array_reverse(vtype_array* x)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Переворачивает последовательность элементов в контейнере. ##### Макросы + + - `void array_push_back(vtype_array* x, T value)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Добавляет полученное значение `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 array_countof(vtype_array* x, T value)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Возвращает количество элементов, равных `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 array_remove(vtype_array* x, T value)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Возвращает `0`, в случае успешного удаления элемента, или `-1` в случае, если значение `value` не было найдено. + + - `bool in_array(vtype_array* x, T value)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Возвращает `true` если значение `value` есть в контейнере, в противном случае, возвращает `false` + + - `int array_pop(vtype_array* x, T value, void* data, CallbackT callback)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Принимает указатель на произвольные пользовательские данные `data` - Принимает указатель на функцию-callback (см. начало текущего документа) - Вызывает callback-функцию c первым найденным значением, равным `value`, в качестве аргумента. После чего удаляет найденный объект из контейнера. - Возвращает -1, если значение равное `value` не было найдено внутри контейнера. В противном случае возвращает значение возвращенное callback-функцией. + + - `int array_find(vtype_array* x, T value, void* data, CallbackT callback)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Принимает указатель на произвольные пользовательские данные `data` - Принимает указатель на функцию-callback (см. начало текущего документа) - Вызывает callback-функцию c первым найденным значением, равным `value`, в качестве аргумента. - Возвращает -1, если значение равное `value` не было найдено внутри контейнера. В противном случае возвращает значение возвращенное callback-функцией. + + - `int array_rfind(vtype_array* x, T value, void* data, CallbackT callback)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает числовое значение, указатель на C-строку или указатель на область памяти, содержащую один из контейнеров, поставляемых вместе с данным проектом. - Принимает указатель на произвольные пользовательские данные `data` @@ -78,25 +113,37 @@ ##### Макросы + + - `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 (см. начало текущего документа). @@ -104,18 +151,27 @@ - Возвращает 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, CallbackT callback, bool reverse, bool cut)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает указатель на передаваемые данные `value`. - Принимает константу идентификатора типа данных `value_type`. @@ -125,14 +181,20 @@ - Принимает **bool** значение `cut`, указывающее на необходимость удаление найденного элемента. - Вызывает callback-функцию c первым найденным значением, равным `value`, в качестве аргумента. - Возвращает -1, если значение равное `value` не было найдено внутри контейнера. В противном случае возвращает значение возвращенное callback-функцией. + + - `int libcdsb_array_get(vtype_array* x, ssize_t index, void* data, CallbackT callback, bool cut)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает значение индекса данных `index`, которые следует вернуть. Отрицательные значения индекса указывают на элементы, начианая с последнего (где индекс -1 указывает на последний элемент массива). Если отрицательное значение индекса по модулю превышает размерность массива, то будет считаться, что запрос сделан с индексом равным нулю. - Принимает указатель на произвольные пользовательские данные `data`. - Принимает указатель на функцию-callback (см. начало текущего документа). - Принимает **bool** значение `cut`, указывающее на необходимость удаление элемента по указанному индексу. - Возвращает -1, если индекс выходит за границы области памяти, принадлежащей контейнеру. В противном случае возвращает значение возвращенное callback-функцией. + + - `int libcdsb_array_foreach(vtype_array* x, void* data, CallbackT callback, bool flush)` + - Принимает указатель на область памяти, содержащую инициализированное значение **vtype_array** `x`. - Принимает указатель на произвольные пользовательские данные `data`. - Принимает указатель на функцию-callback (см. начало текущего документа).