Ответ 1
Вы заметили, что в файле заголовка sqlite3.h
имеется дополнительный источник документации? Кроме того, поиск кода Google - ваш друг.
Не беспокойтесь о недостающих вещах, это то, на что рассчитан набор тестов. Угадайте цель каждого метода по их имени, документации и примерам реализации; перейти к реализации первого проекта; запускайте тесты на целевой платформе; итерации до тех пор, пока панель не станет зеленой. Из беглого чтения документа интерфейса, который вы указали, вот несколько образованных догадок:
int (*xOpen)(sqlite3_vfs*, const char *zName, sqlite3_file*,
int flags, int *pOutFlags);
int (*xDelete)(sqlite3_vfs*, const char *zName, int syncDir);
int (*xAccess)(sqlite3_vfs*, const char *zName, int flags, int *pResOut);
int (*xFullPathname)(sqlite3_vfs*, const char *zName, int nOut, char *zOut);
Это ваши функции управления файлами во время работы. Вы заметите, что xOpen()
в свою очередь возвращает структуру sqlite3_file
, которая имеет собственные методы указателя для чтения и записи.
void *(*xDlOpen)(sqlite3_vfs*, const char *zFilename);
void (*xDlError)(sqlite3_vfs*, int nByte, char *zErrMsg);
void (*(*xDlSym)(sqlite3_vfs*,void*, const char *zSymbol))(void);
void (*xDlClose)(sqlite3_vfs*, void*);
Это для общих библиотек (см. справочную страницу dlopen()
в Linux). Во встроенной среде вы, вероятно, можете оставить эти нереализованные (попробуйте установить их в NULL).
int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
Возможно, вам придется реализовать генератор случайных чисел, если стандартная библиотека вашей ОС уже не предоставит его. Я предлагаю линейный регистр обратной связи, который является небольшим, но хорошим.
int (*xSleep)(sqlite3_vfs*, int microseconds);
int (*xCurrentTime)(sqlite3_vfs*, double*);
int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
Это функции управления временем, чтобы подключиться к вашей ОС.
int (*xGetLastError)(sqlite3_vfs*, int, char *);
Вы можете уйти, всегда вернув 0 здесь:-) См. unixGetLastError в os_unix.c(спасибо Google Code Search!)
Удачи!