Skip to content

Commit 6323060

Browse files
committed
add makefile and bindings
1 parent 981848f commit 6323060

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

Makefile

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Edit for your paths
2+
EMSCRIPTEN=~/Dev/2emscripten
3+
EMCC=$(EMSCRIPTEN)/emcc
4+
5+
all: sql.js
6+
7+
sql.js: sqlite3.c
8+
$(EMCC) -O1 sqlite3.c --post-js bindings.js -o sql.js
9+

bindings.js

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
var apiTemp = Runtime.stackAlloc(4);
2+
3+
Module['open'] = function(filename) {
4+
var ret = Module['ccall']('sqlite3_open', 'number', ['string', 'number'], [filename, apiTemp]);
5+
if (ret) throw 'SQLite exception: ' + ret;
6+
return getValue(apiTemp, 'i32');
7+
}
8+
9+
Module['close'] = function(db) {
10+
var ret = Module['ccall']('sqlite3_close', 'number', ['number'], [db]);
11+
if (ret) throw 'SQLite exception: ' + ret;
12+
}
13+
14+
var callbackTemp = FUNCTION_TABLE.length;
15+
FUNCTION_TABLE.push(0, 0);
16+
17+
Module['exec'] = function(db, sql, callback) {
18+
setValue(apiTemp, 0, 'i32');
19+
FUNCTION_TABLE[callbackTemp] = function(notUsed, argc, argv, colNames) {
20+
var data = [];
21+
for (var i = 0; i < argc; i++) {
22+
data.push({
23+
column: Pointer_stringify(getValue(colNames + i*Runtime.QUANTUM_SIZE, 'i32')),
24+
value: Pointer_stringify(getValue(argv + i*Runtime.QUANTUM_SIZE, 'i32'))
25+
});
26+
}
27+
callback(data);
28+
};
29+
var ret = Module['ccall']('sqlite3_exec', 'number', ['number', 'string', 'number', 'number', 'number'], [db, sql, callbackTemp, 0, apiTemp]);
30+
var errPtr = getValue(apiTemp, 'i32');
31+
if (ret || errPtr) {
32+
var msg = 'SQLite exception: ' + ret + ', ' + (errPtr ? Pointer_stringify(errPtr) : '');
33+
if (errPtr) _sqlite3_free(errPtr);
34+
throw msg;
35+
}
36+
}
37+

0 commit comments

Comments
 (0)