Массив структур, описывающих каждое поле записи.
struct attribute_description
{
char *symbolic_name;
/* символическое название поля */
int offset;
/* смещение поля внутри записи */
short int type;
/*
* константа, определяющая формат чтения данных из
* файла условий фильтрации и их вывод.
*/
int lenght;
/* длина поля в байтах */
char secondary_db_build_flag;
/*
* Флаг, указывающий на необходимость создания
* вторичного индекса по данному атрибуту.
*/
} g_attr_description[ ];
Массив объявлен глобально. Доступ к структурам осуществляется с помощью функций - по имени поля или по его порядковому номеру.
Возвращает номер структуры в массиве, описывающей атрибут с заданным именем. int get_attr_num_by_name(const char * symbolic_name); Возвращает указатель на структуру с заданным номером. struct attr_description * get_attr_by_num(const int attr_num);
Добавление атрибута в массив осуществляется с помощью следующей функции.
int add_attr_to_array(struct attr_description * next_attr_description)
Массив структур, описывающих переменные для доступа ко вторичным базам данных.
struct attribute_db
{
DB * secondary_db_handle;
/*
* указатель на вторичную базу данных для данного
* атрибута, если её нет = NULL
*/
} attr_db[ ];