ヘッダーファイルに追加のドキュメントソースがあることに気づきました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のmanページを参照してください)。組み込み環境では、おそらくこれらを実装しないままにしておくことができます(これらをNULLに設定してみてください)。
int (*xRandomness)(sqlite3_vfs*, int nByte, char *zOut);
OSの標準ライブラリで乱数ジェネレータがまだ提供されていない場合は、乱数ジェネレータを実装する必要がある場合があります。小さいながらも良い線形フィードバックレジスタをお勧めします。
int (*xSleep)(sqlite3_vfs*, int microseconds);
int (*xCurrentTime)(sqlite3_vfs*, double*);
int (*xCurrentTimeInt64)(sqlite3_vfs*, sqlite3_int64*);
これらは、OSに接続するための時間管理機能です。
int (*xGetLastError)(sqlite3_vfs*, int, char *);
ここでは常に0を返すことで逃げることができます:-)os_unix.cのunixGetLastErrorを参照してください(Googleコード検索に感謝します!)
幸運を!