Массив структур, описывающих каждое поле записи.
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[ ];