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 из исходного текста.