Вы заметили, что в заголовочном файле есть дополнительный источник документации sqlite3.h
? Кроме того, Google Code Search является вашим другом.
Не беспокойтесь о пропущенных вещах, для этого и нужен набор тестов. Угадайте цель каждого метода по его имени, документации и примерам примеров; перейти к первому проекту реализации; запустить тесты на вашей целевой платформе; итерации, пока полоса не станет зеленой. Из краткого прочтения документа по интерфейсу, который вы цитировали, вот несколько образованных догадок:
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!)
Удачи!