Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Программные интерфейсы общего назначения > Прикладные библиотеки и технологии > Библиотека менеджера QDB > Справочник по клиентскому API менеджера QDB > struct qdb_collation



struct qdb_collation

Пользовательская функция сортировки

Прототип:

#include <qdb/qdb.h>
struct qdb_collation {
char *name;
int encoding;
void *arg;
int (*compare)( void *, int, const void *, int, const void * );
int (*setup)( void *, const void *, int, char ** );
};

Описание:

Структура хранит сведения о пользовательской функции сортировки и включает следующие поля:

name
Имя этой функции, которое используется в операторах SQL. Максимальная длина имени составляет 255 символов без учета нулевого символа на конце; имя не может содержать специальные маркеры и начинаться с цифры. При попытке создать функцию с некорректным именем возникает ошибка SQLITE_ERROR.
encoding
Символьная кодировка строк, передаваемых в функцию. Поддерживаются следующие кодировки:
SQLITE_UTF8
SQLITE_UTF16
SQLITE_UTF16BE
SQLITE_UTF16LE
arg
Произвольный указатель на пользовательские данные, который передается в функцию в качестве первого аргумента при каждом вызове. Этот указатель можно считывать с помощью функции sqlite_user_data().
compare
Указатель на функцию сортировки.
setup
Указатель на функцию динамической настройки порядка сортировки в процессе выполнения. Функция setup имеет следующий вид

int (*setup)( void *arg, const void *data, int nbytes, char **errmsg );

и параметры:

arg
Указатель контекста, который аналогичен аргументу arg функции compare и считывается из поля arg структуры struct qdb_collation.
data
nbytes
Настройки сортировки. При вызове функции на этапе запуска эти аргументы равны NULL и 0, а на этапе выполнения в них содержатся данные, которые переданы в функцию qdb_collation(). QDB никак не учитывает их формат; для обмена данными определенного формата между динамической библиотекой и программой, которая вызывает функцию qdb_collation(), необходимо согласовывать этот формат между ними.
errmsg
Указатель на строку с сообщением об ошибке, которую возвращает функция qdb_geterrmsg() (при возникновении ошибки на этапе запуска QDB и на этапе выполнения в функции qdb_collation() указанная строка считывается посредством вызова qdb_geterrmsg()).


Эта функция должна возвращать значение errno в соответствии с POSIX или код EOK.

Классификация:

ЗОСРВ «Нейтрино»




Предыдущий раздел: перейти