obj.h - Man Page
Составные объекты
Synopsis
#include 'bee2/defs.h'
Классы
struct obj_hdr_t
Заголовок объекта
Макросы
#define objKeep(obj)
Размер объекта
#define objPCount(obj)
Число указателей
#define objOCount(obj)
Число указателей на объекты
#define objPtr(obj, i, type)
Указатель
#define objCPtr(obj, i, type)
Const-указатель
#define objEnd(obj, type)
Окончание объекта
Функции
bool_t objIsOperable (const void *obj)
Работоспособный объект?
bool_t objIsOperable2 (const void *obj)
Работоспособный отдельный объект?
void objCopy (void *dest, const void *src)
Копирование объекта
void objAppend (void *dest, const void *src, size_t i)
Присоединение объекта
Подробное описание
Объект представляет собой размеченный фрагмент памяти. Для разметки используются указатели, которые ссылаются на различные участки фрагмента. Ссылочными участками могут быть другие объекты, которые называются вложенными. Ссылки на внутренние участки обновляются при перемещении объекта.
Объект начинается с заголовка типа obj_hdr_t. В заголовке указывается размер участка памяти, занимаемой объектом (keep), количество указателей (p_count) и количество указателей на ссылочные объекты (o_count).
После заголовка следует таблица указателей. Указатели на объекты помещаются в начало списка.
Указатели в таблице могут ссылаться не только на внутренние участки памяти, но и на внешние, т.е. лежащие вне фрагмента, принадлежащего объекту. Внешние ссылки остаются постоянными при перемещении объекта.
Макросы
#define objCPtr( obj, i, type)
Макроопределение:
(((const type* const*)((const octet*)(obj) + sizeof(obj_hdr_t)))[i])
Определяется i-й элемент таблицы указателей, который интерпретируется как указатель на тип const type.
#define objEnd( obj, type)
Макроопределение:
((type*)((octet*)(obj) + objKeep(obj)))
Определяется адрес окончания фрагмента памяти, занимаемой объектом obj. Адрес интерпретируется как указатель на тип type
#define objPtr( obj, i, type)
Макроопределение:
(((type**)((octet*)(obj) + sizeof(obj_hdr_t)))[i])
Определяется i-й элемент таблицы указателей, который интерпретируется как указатель на тип type.
Функции
void objAppend (void * dest, const void * src, size_t i)
Объект src записывается в конец объекта src. В i-ую ячейку таблицы указателей dest записывается ссылка на копию src. Длина dest увеличивается на длину src.
Предусловие
Объекты src и dest работоспособны.
По адресу objEnd(dest, void) зарезервировано objKeep(src) октетов.
i < objOCount(dest).
- Аргументы
dest объект-контейнер
src присоединяемый объект
i номер присоединяемого объекта
void objCopy (void * dest, const void * src)
Объект src копируется по адресу dest.
Предусловие
Объект src работоспособен.
По адресу dest зарезервировано objKeep(src) октетов.
Прим.
При копировании настраиваются указатели, в том числе указатели на вложенные объекты.
- Аргументы
dest объект-назначение
src объект-источник
bool_t objIsOperable (const void * obj)
Проверяется работоспособность объекта obj и вложенных в него объектов.
Возвращает
Признак работоспособности.
- Аргументы
obj объект
bool_t objIsOperable2 (const void * obj)
Проверяется работоспособность объекта obj. Работоспособность вложенных в obj объектов не проверяется.
Возвращает
Признак работоспособности.
- Аргументы
obj объект
Автор
Автоматически создано Doxygen для Библиотека Bee2 из исходного текста.