blob.h - Man Page

Блобы

Synopsis

#include 'bee2/defs.h'

Определения типов

typedef void * blob_t

Функции

blob_t blobCreate (size_t size)
Создание блоба
bool_t blobIsValid (const blob_t blob)
Корректный блоб?
blob_t blobResize (blob_t blob, size_t size)
Изменение размера блоба
void blobWipe (blob_t blob)
Очистка блоба
void blobClose (blob_t blob)
Очистка и освобождение блоба
size_t blobSize (const blob_t blob)
Размер блоба
blob_t blobCopy (blob_t dest, const blob_t src)
Копирование блоба
bool_t blobEq (const blob_t blob1, const blob_t blob2)
Совпадение блобов
int blobCmp (const blob_t blob1, const blob_t blob2)
Сравнение блобов

Подробное описание

Блоб -- объект в памяти определенного размера. В функциях работы с блобами используются их дескрипторы -- 'умные' указатели. С дескрипторами можно работать как с обычными указателями, т.е. использовать их в функциях типа memcpy, memset. Дополнительно по указателю можно определить размер блоба.

Реализация работы с блобами может быть платформенно-зависимой.

Реализация должна гарантировать защиту содержимого блобов от утечек, например, через файл подкачки. Поэтому в блобах рекомендуется размещать ключи и другие критические объекты.

Предусловие

В функциях работы с блобами дескрипторы входных блобов корректны.

Типы

typedef void* blob_t

Дескриптор блоба.

Функции

void blobClose (blob_t blob)

Выполняется очистка и освобождение блоба blob.

Аргументы

blob блоб

int blobCmp (const blob_t blob1, const blob_t blob2)

Блоб blob1 сравнивается с блобом blob2: a < b, если size(a) < size(b) или size(a) == size(b) и value(a) < value(b). Условие value(a) < value(b) означает, что имеется i < size(a) т.ч. value(a)[0..i - 1] == value(b)[0..i - 1] и value(a)[i] < value(b)[i].

Возвращает

0, если блобы совпадают, < 0, если blob1 меньше blob2,

0, если blob1 больше blob2.

Аргументы

blob1 первый блоб  
blob2 второй блоб

blob_t blobCopy (blob_t dest, const blob_t src)

Блоб src копируется в блоб dest.

Возвращает

Дескриптор блоба-приемника. Дескриптор совпадает c dest при совпадении размеров dest и src. Нулевой дескриптор возвращается при нулевом src и при нехватке памяти.

Прим.

При нулевом dest блоб-приемник создается, при ненулевом -- настраивается размер блоба.

Аргументы

dest назначение  
src источник

blob_t blobCreate (size_t size)

Создается блоб размера size.

Возвращает

Дескриптор созданного блоба. Нулевой дескриптор возвращается при нулевом size и при нехватке памяти.

Постусловие

Выходной блоб корректен.

Прим.

При создании блоба все его октеты обнуляются.

Аргументы

size размер

bool_t blobEq (const blob_t blob1, const blob_t blob2)

Проверяется совпадение блобов blob1 и blob2: a == b, если size(a) == size(b) и value(a) < value(b).

Возвращает

Признак совпадения.

Аргументы

blob1 первый блоб  
blob2 второй блоб

bool_t blobIsValid (const blob_t blob)

Проверяется корректность блоба blob.

Возвращает

Признак корректности.

Прим.

Блоб с нулевым дескриптором считается корректным.

Аргументы

blob блоб

blob_t blobResize (blob_t blob, size_t size)

Размер блоба blob изменяется на size с сохранением содержимого.

Возвращает

Дескриптор созданного блоба. Нулевой дескриптор возвращается при нулевом size и при нехватке памяти.

Прим.

Если блоб еще не создан, то он создается.

При ошибках выделения памяти blob остается действительным.

Если размер блоба не меняется, то и дескриптор не меняется.

Вызов с нулевым size эквивалентен вызову blobClose().

При увеличении размера в блоб дописываются нулевые октеты.

При уменьшении размера ненужные октеты отбрасываются, но первые size октетов сохраняются.

Аргументы

blob блоб  
size новый размер

size_t blobSize (const blob_t blob)

Определяется размер блоба blob.

Возвращает

Размер блоба.

Аргументы

blob блоб

void blobWipe (blob_t blob)

Выполняется очистка блоба blob.

Аргументы

blob блоб

Автор

Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.

Info

Вт 23 Янв 2024 00:00:00 Библиотека Bee2