Add an extra example extension
This commit is contained in:
@@ -58,6 +58,9 @@
|
||||
"$CC" -c subext.c
|
||||
"$AR" rcs libsubext.a subext.o
|
||||
|
||||
"$CC" -c multext.c
|
||||
"$AR" rcs libmultext.a multext.o
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
@@ -83,6 +86,10 @@
|
||||
library = "${sqlite-example-exts-static}/lib/libsubext.a";
|
||||
init = "sqlite3_subext_init";
|
||||
}
|
||||
{
|
||||
library = "${sqlite-example-exts-static}/lib/libmultext.a";
|
||||
init = "sqlite3_multext_init";
|
||||
}
|
||||
];
|
||||
};
|
||||
in {
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#include <sqlite3ext.h>
|
||||
|
||||
SQLITE_EXTENSION_INIT1
|
||||
|
||||
static void mult_func(
|
||||
sqlite3_context *ctx,
|
||||
int argc,
|
||||
sqlite3_value **argv
|
||||
) {
|
||||
if (argc != 2) {
|
||||
sqlite3_result_null(ctx);
|
||||
return;
|
||||
}
|
||||
|
||||
int a = sqlite3_value_int(argv[0]);
|
||||
int b = sqlite3_value_int(argv[1]);
|
||||
|
||||
sqlite3_result_int(ctx, a * b);
|
||||
}
|
||||
|
||||
int sqlite3_multext_init(
|
||||
sqlite3 *db,
|
||||
char **pzErrMsg,
|
||||
const sqlite3_api_routines *pApi
|
||||
) {
|
||||
SQLITE_EXTENSION_INIT2(pApi);
|
||||
|
||||
return sqlite3_create_function(
|
||||
db,
|
||||
"mymult",
|
||||
2,
|
||||
SQLITE_UTF8 | SQLITE_DETERMINISTIC,
|
||||
0,
|
||||
mult_func,
|
||||
0,
|
||||
0
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user