blob.h - Man Page

Блобы

Synopsis

#include 'bee2/defs.h'

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

typedef void * blob_t

Функции

blob_t blobCreate (size_t size)
Создание блоба
blob_t blobCreate2 (size_t c1,...)
Создание блоба с разметкой памяти
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 размер

blob_t blobCreate2 (size_t c1,  ...)

Создается блоб blob для хранения фрагментов памяти [с1]p1, [с2]p2, ...., [сn]pn. Фрагменты описываются параметрами c1 и .... Описание имеет вид: c1, pp1, c2, pp2, ..., cn, ppn, SIZE_MAX, где сi -- длина фрагмента в октетах (size_t), ppi -- указатель на pi (const void**), SIZE_MAX -- маркер окончания списка параметров. Действуют правила функции memSlice(). В частности,

  • указатели pi выровнены на границу фундаментального блока;
  • при установке в ci флага SIZE_HI указатель pi повторяет предыдущий, если таковой имеется.

Возвращает

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

Постусловие

Указатели pi, если они формируются, выровнены на границу фундаментального блока.

Аргументы

c1 начало описания фрагментов памяти  
... окончание описания

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

Вс 25 Янв 2026 00:00:00 Библиотека Bee2