1blob.h(3) Library Functions Manual blob.h(3)
2
3
4
6 blob.h - Блобы
7
8
10 #include 'bee2/defs.h'
11
12
13 Определения типов
14 typedef void * blob_t
15
16 Функции
17 blob_t blobCreate (size_t size)
18 Создание блоба
19 bool_t blobIsValid (const blob_t blob)
20 Корректный блоб?
21 blob_t blobResize (blob_t blob, size_t size)
22 Изменение размера блоба
23 void blobWipe (blob_t blob)
24 Очистка блоба
25 void blobClose (blob_t blob)
26 Очистка и освобождение блоба
27 size_t blobSize (const blob_t blob)
28 Размер блоба
29 blob_t blobCopy (blob_t dest, const blob_t src)
30 Копирование блоба
31 bool_t blobEq (const blob_t blob1, const blob_t blob2)
32 Совпадение блобов
33 int blobCmp (const blob_t blob1, const blob_t blob2)
34 Сравнение блобов
35
37 Блоб -- объект в памяти определенного размера. В функциях работы с
38 блобами используются их дескрипторы -- 'умные' указатели. С
39 дескрипторами можно работать как с обычными указателями, т.е.
40 использовать их в функциях типа memcpy, memset. Дополнительно по
41 указателю можно определить размер блоба.
42
43 Реализация работы с блобами может быть платформенно-зависимой.
44
45 Реализация должна гарантировать защиту содержимого блобов от утечек,
46 например, через файл подкачки. Поэтому в блобах рекомендуется размещать
47 ключи и другие критические объекты.
48
49 Предусловие
50 В функциях работы с блобами дескрипторы входных блобов корректны.
51
53 typedef void* blob_t
54 Дескриптор блоба.
55
57 void blobClose (blob_t blob)
58 Выполняется очистка и освобождение блоба blob.
59
60 Аргументы
61 blob блоб
62
63 int blobCmp (const blob_t blob1, const blob_t blob2)
64 Блоб blob1 сравнивается с блобом blob2: a < b, если size(a) < size(b)
65 или size(a) == size(b) и value(a) < value(b). Условие value(a) <
66 value(b) означает, что имеется i < size(a) т.ч. value(a)[0..i - 1] ==
67 value(b)[0..i - 1] и value(a)[i] < value(b)[i].
68
69 Возвращает
70 0, если блобы совпадают, < 0, если blob1 меньше blob2,
71
72 0, если blob1 больше blob2.
73
74 Аргументы
75 blob1 первый блоб
76 blob2 второй блоб
77
78 blob_t blobCopy (blob_t dest, const blob_t src)
79 Блоб src копируется в блоб dest.
80
81 Возвращает
82 Дескриптор блоба-приемника. Дескриптор совпадает c dest при
83 совпадении размеров dest и src. Нулевой дескриптор возвращается при
84 нулевом src и при нехватке памяти.
85
86 Прим.
87 При нулевом dest блоб-приемник создается, при ненулевом --
88 настраивается размер блоба.
89
90 Аргументы
91 dest назначение
92 src источник
93
94 blob_t blobCreate (size_t size)
95 Создается блоб размера size.
96
97 Возвращает
98 Дескриптор созданного блоба. Нулевой дескриптор возвращается при
99 нулевом size и при нехватке памяти.
100
101 Постусловие
102 Выходной блоб корректен.
103
104 Прим.
105 При создании блоба все его октеты обнуляются.
106
107 Аргументы
108 size размер
109
110 bool_t blobEq (const blob_t blob1, const blob_t blob2)
111 Проверяется совпадение блобов blob1 и blob2: a == b, если size(a) ==
112 size(b) и value(a) < value(b).
113
114 Возвращает
115 Признак совпадения.
116
117 Аргументы
118 blob1 первый блоб
119 blob2 второй блоб
120
121 bool_t blobIsValid (const blob_t blob)
122 Проверяется корректность блоба blob.
123
124 Возвращает
125 Признак корректности.
126
127 Прим.
128 Блоб с нулевым дескриптором считается корректным.
129
130 Аргументы
131 blob блоб
132
133 blob_t blobResize (blob_t blob, size_t size)
134 Размер блоба blob изменяется на size с сохранением содержимого.
135
136 Возвращает
137 Дескриптор созданного блоба. Нулевой дескриптор возвращается при
138 нулевом size и при нехватке памяти.
139
140 Прим.
141 Если блоб еще не создан, то он создается.
142
143 При ошибках выделения памяти blob остается действительным.
144
145 Если размер блоба не меняется, то и дескриптор не меняется.
146
147 Вызов с нулевым size эквивалентен вызову blobClose().
148
149 При увеличении размера в блоб дописываются нулевые октеты.
150
151 При уменьшении размера ненужные октеты отбрасываются, но первые
152 size октетов сохраняются.
153
154 Аргументы
155 blob блоб
156 size новый размер
157
158 size_t blobSize (const blob_t blob)
159 Определяется размер блоба blob.
160
161 Возвращает
162 Размер блоба.
163
164 Аргументы
165 blob блоб
166
167 void blobWipe (blob_t blob)
168 Выполняется очистка блоба blob.
169
170 Аргументы
171 blob блоб
172
174 Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
175
176
177
178Библиотека Bee2 Пт 23 Июн 2023 blob.h(3)