1obj.h(3)                   Library Functions Manual                   obj.h(3)
2
3
4

NAME

6       obj.h - Составные объекты
7
8

SYNOPSIS

10       #include 'bee2/defs.h'
11
12
13   Классы
14       struct obj_hdr_t
15           Заголовок объекта
16
17   Макросы
18       #define objKeep(obj)     (((const obj_hdr_t*)(obj))->keep)
19           Размер объекта
20       #define objPCount(obj)        (((const obj_hdr_t*)(obj))->p_count)
21           Число указателей
22       #define objOCount(obj)        (((const obj_hdr_t*)(obj))->o_count)
23           Число указателей на объекты
24       #define objPtr(obj,  i,  type)     (((type**)((octet*)(obj) +
25           sizeof(obj_hdr_t)))[i])
26           Указатель
27       #define objCPtr(obj,  i,  type)    (((const type* const*)((const
28           octet*)(obj) + sizeof(obj_hdr_t)))[i])
29           Const-указатель
30       #define objEnd(obj,  type)    ((type*)((octet*)(obj) + objKeep(obj)))
31           Окончание объекта
32
33   Функции
34       bool_t objIsOperable (const void *obj)
35           Работоспособный объект?
36       bool_t objIsOperable2 (const void *obj)
37           Работоспособный отдельный объект?
38       void objCopy (void *dest, const void *src)
39           Копирование объекта
40       void objAppend (void *dest, const void *src, size_t i)
41           Присоединение объекта
42

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

44       Объект представляет собой размеченный фрагмент памяти. Для разметки
45       используются указатели, которые ссылаются на различные участки
46       фрагмента. Ссылочными участками могут быть другие объекты, которые
47       называются вложенными. Ссылки на внутренние участки обновляются при
48       перемещении объекта.
49
50       Объект начинается с заголовка типа obj_hdr_t. В заголовке указывается
51       размер участка памяти, занимаемой объектом (keep), количество
52       указателей (p_count) и количество указателей на ссылочные объекты
53       (o_count).
54
55       После заголовка следует таблица указателей. Указатели на объекты
56       помещаются в начало списка.
57
58       Указатели в таблице могут ссылаться не только на внутренние участки
59       памяти, но и на внешние, т.е. лежащие вне фрагмента, принадлежащего
60       объекту. Внешние ссылки остаются постоянными при перемещении объекта.
61

Макросы

63   #define objCPtr(obj, i, type)      (((const type* const*)((const
64       octet*)(obj) + sizeof(obj_hdr_t)))[i])
65       Определяется i-й элемент таблицы указателей, который интерпретируется
66       как указатель на тип const type.
67
68   #define objEnd(obj, type)     ((type*)((octet*)(obj) + objKeep(obj)))
69       Определяется адрес окончания фрагмента памяти, занимаемой объектом obj.
70       Адрес интерпретируется как указатель на тип type
71
72   #define objPtr(obj, i, type)       (((type**)((octet*)(obj) +
73       sizeof(obj_hdr_t)))[i])
74       Определяется i-й элемент таблицы указателей, который интерпретируется
75       как указатель на тип type.
76

Функции

78   void objAppend (void * dest, const void * src, size_t i)
79       Объект src записывается в конец объекта src. В i-ую ячейку таблицы
80       указателей dest записывается ссылка на копию src. Длина dest
81       увеличивается на длину src.
82
83       Предусловие
84           Объекты src и dest работоспособны.
85
86           По адресу objEnd(dest, void) зарезервировано objKeep(src) октетов.
87
88           i < objOCount(dest).
89
90       Аргументы
91           dest объект-контейнер
92           src присоединяемый объект
93           i номер присоединяемого объекта
94
95   void objCopy (void * dest, const void * src)
96       Объект src копируется по адресу dest.
97
98       Предусловие
99           Объект src работоспособен.
100
101           По адресу dest зарезервировано objKeep(src) октетов.
102
103       Прим.
104           При копировании настраиваются указатели, в том числе указатели на
105           вложенные объекты.
106
107       Аргументы
108           dest объект-назначение
109           src объект-источник
110
111   bool_t objIsOperable (const void * obj)
112       Проверяется работоспособность объекта obj и вложенных в него объектов.
113
114       Возвращает
115           Признак работоспособности.
116
117       Аргументы
118           obj объект
119
120   bool_t objIsOperable2 (const void * obj)
121       Проверяется работоспособность объекта obj. Работоспособность вложенных
122       в obj объектов не проверяется.
123
124       Возвращает
125           Признак работоспособности.
126
127       Аргументы
128           obj объект
129

Автор

131       Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.
132
133
134
135Библиотека Bee2                 Пт 23 Июн 2023                        obj.h(3)
Impressum