blob.h(3)
🌸 NAME 🌸
Okay so this is blob.h, bestie — it lives in section 3 of the Library Functions Manual, and it's literally all about блобы (blobs). Chunks of memory. But make it ✨fancy✨. 🫶
🎀 SYNOPSIS 🎀
#include 'bee2/defs.h'
💜 Определения типов (typedefs, the cast list)
typedef void * blob_t
👑 Функции (the whole roster, no cap)
blob_t blobCreate (size_t size)— Создание блоба (making a blob ✨)blob_t blobCreate2 (size_t c1,...)— Создание блоба с разметкой памяти (making a blob and laying out its memory)bool_t blobIsValid (const blob_t blob)— Корректный блоб? (is this blob valid, or is it giving chaos?)blob_t blobResize (blob_t blob, size_t size)— Изменение размера блоба (glow-up, new size)void blobWipe (blob_t blob)— Очистка блоба (wipe it clean 🧼)void blobClose (blob_t blob)— Очистка и освобождение блоба (wipe and free, the full send-off)size_t blobSize (const blob_t blob)— Размер блоба (how big is it tho)blob_t blobCopy (blob_t dest, const blob_t src)— Копирование блоба (copy-paste but make it safe)bool_t blobEq (const blob_t blob1, const blob_t blob2)— Совпадение блобов (are these two the same?)int blobCmp (const blob_t blob1, const blob_t blob2)— Сравнение блобов (the ranking, the vibe check)
🌈 ПОДРОБНОЕ ОПИСАНИЕ 🌈 (the full tea)
So a blob is an object in memory of a certain size, periodt. The functions that work with blobs use their descriptors — "smart" pointers. You can use descriptors like regular pointers, i.e. pass them into functions like memcpy, memset. And bonus: from the pointer you can also figure out the size of the blob. 💅
The implementation of blob handling may be platform-dependent. Not my problem, it's a feature.
The implementation must guarantee that blob contents are protected from leaks — for example, through the swap file. So yes, this is exactly why you're supposed to put keys and other critical objects inside blobs. 🔐✨
Предусловие (precondition, aka the rules of entry):
- In the blob functions, the descriptors of the input blobs are correct. That's the bare minimum, bestie.
🦋 ТИПЫ 🦋
typedef void* blob_t
Дескриптор блоба — the blob descriptor. It's a pointer. It's smart. It's the main character. 👑
💖 ФУНКЦИИ 💖
void blobClose (blob_t blob)
Выполняется очистка и освобождение блоба blob. So it gets wiped and freed. It's giving "clean exit, no loose ends". 🧚
Аргументы
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]. Okay so it compares sizes first, then byte-by-byte. Very methodical. Very demure. 🎀
Возвращает
0, если блобы совпадают,< 0, еслиblob1меньшеblob2,0, еслиblob1большеblob2.
Аргументы
blob1— первый блобblob2— второй блоб
blob_t blobCopy (blob_t dest, const blob_t src)
Блоб src копируется в блоб dest. Just move the whole vibe over. 💫
Возвращает
- Дескриптор блоба-приемника. Дескриптор совпадает c
destпри совпадении размеровdestиsrc. Нулевой дескриптор возвращается при нулевомsrcи при нехватке памяти.
Прим.
- При нулевом
destблоб-приемник создается, при ненулевом — настраивается размер блоба.
Аргументы
dest— назначениеsrc— источник
blob_t blobCreate (size_t size)
Создается блоб размера size. Fresh blob, fresh start, no cap. ✨
Возвращает
- Дескриптор созданного блоба. Нулевой дескриптор возвращается при нулевом
sizeи при нехватке памяти.
Постусловие
- Выходной блоб корректен.
Прим.
- При создании блоба все его октеты обнуляются. Every single octet. Zeroed. Clean slate. 🫧
Аргументы
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). Same size, and then the byte comparison does its thing. 🤝
Возвращает
- Признак совпадения.
Аргументы
blob1— первый блобblob2— второй блоб
bool_t blobIsValid (const blob_t blob)
Проверяется корректность блоба blob. Vibe check on the blob itself. 🔍
Возвращает
- Признак корректности.
Прим.
- Блоб с нулевым дескриптором считается корректным. Yes, a NULL descriptor counts as valid. Iconic behaviour, honestly.
Аргументы
blob— блоб
blob_t blobResize (blob_t blob, size_t size)
Размер блоба blob изменяется на size с сохранением содержимого. Glow-up, but you keep your personality. 🌟
Возвращает
- Дескриптор созданного блоба. Нулевой дескриптор возвращается при нулевом
sizeи при нехватке памяти.
Прим.
- Если блоб еще не создан, то он создается.
- При ошибках выделения памяти
blobостается действительным. - Если размер блоба не меняется, то и дескриптор не меняется.
- Вызов с нулевым
sizeэквивалентен вызовуblobClose(). - При увеличении размера в блоб дописываются нулевые октеты.
- При уменьшении размера ненужные октеты отбрасываются, но первые
sizeоктетов сохраняются.
Аргументы
blob— блобsize— новый размер
size_t blobSize (const blob_t blob)
Определяется размер блоба blob. Just asking the blob how big it is. No judgment. 📏
Возвращает
- Размер блоба.
Аргументы
blob— блоб
void blobWipe (blob_t blob)
Выполняется очистка блоба blob. Wipe it down, leave no trace of what was there. 💅
Аргументы
blob— блоб
🌟 АВТОР 🌟
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста. Yes bestie, the machine wrote this one — Doxygen did it, not me. 🤖💖
Heads up, gorgeous: everything here is for Библиотека Bee2, and the page stamp says Вс 25 Янв 2026 00:00:00 for blob.h(3). Go protect your keys, stay hydrated, and never let a blob leak. 🫶✨🌸
📦 where this page comes from
- fedora 44: bee2-devel 2.2.0-1.fc44 · GPL-3.0-only and GPL-3.0-or-later
- fedora 44: bee2-devel 2.2.0-1.fc44 · GPL-3.0-only and GPL-3.0-or-later
- 💖 girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms