_sqlite3_result_int
_sqlite3_result_null
_sqlite3_result_text
+_sqlite3_shutdown
_sqlite3_sourceid
_sqlite3_sql
_sqlite3_step
["sqlite3_result_int",undefined, "*", "int"],
["sqlite3_result_null",undefined, "*"],
["sqlite3_result_text",undefined, "*", "string", "int", "*"],
+ ["sqlite3_shutdown", undefined],
["sqlite3_sourceid", "string"],
["sqlite3_sql", "string", "sqlite3_stmt*"],
["sqlite3_step", "int", "sqlite3_stmt*"],
/** Map of type names to return result conversion functions. */
cache.xWrap.convert.result = Object.create(null);
- xcv.arg.i64 = (i)=>BigInt(i);
+ if(target.bigIntEnabled){
+ xcv.arg.i64 = (i)=>BigInt(i);
+ }
xcv.arg.i32 = (i)=>(i | 0);
xcv.arg.i16 = (i)=>((i | 0) & 0xFFFF);
xcv.arg.i8 = (i)=>((i | 0) & 0xFF);
xcv.arg.f32 = xcv.arg.float = (i)=>Number(i).valueOf();
xcv.arg.f64 = xcv.arg.double = xcv.arg.f32;
xcv.arg.int = xcv.arg.i32;
- xcv.result['*'] = xcv.result['pointer'] = xcv.arg[ptrIR];
-
- for(const t of ['i8', 'i16', 'i32', 'int', 'i64',
- 'f32', 'float', 'f64', 'double']){
- xcv.arg[t+'*'] = xcv.result[t+'*'] = xcv.arg[ptrIR]
- xcv.result[t] = xcv.arg[t] || toss("Missing arg converter:",t);
+ xcv.result['*'] = xcv.result['pointer'] = xcv.arg['**'] = xcv.arg[ptrIR];
+ xcv.result['number'] = (v)=>Number(v);
+
+ {
+ const copyToResult = ['i8', 'i16', 'i32', 'int',
+ 'f32', 'float', 'f64', 'double'];
+ if(target.bigIntEnabled) copyToResult.push('i64');
+ for(const t of copyToResult){
+ xcv.arg[t+'*'] = xcv.result[t+'*'] = xcv.arg[ptrIR];
+ xcv.result[t] = xcv.arg[t] || toss("Missing arg converter:",t);
+ }
}
- xcv.arg['**'] = xcv.arg[ptrIR];
/**
In order for args of type string to work in various contexts in
type. It's primarily intended to mark output-pointer arguments.
- `i64` (args and results): passes the value to BigInt() to
- convert it to an int64.
+ convert it to an int64. Only available if bigIntEnabled is
+ true.
- `f32` (`float`), `f64` (`double`) (args and results): pass
their argument to Number(). i.e. the adaptor does not currently
distinguish between the two types of floating-point numbers.
+ - `number` (results): converts the result to a JS Number using
+ Number(theValue).valueOf(). Note that this is for result
+ conversions only, as it's not possible to generically know
+ which type of number to convert arguments to.
+
Non-numeric conversions include:
- `string` (args): has two different semantics in order to
return f._();
},
runMain: function f(){
- if(f.argv) return f.argv.rc;
+ if(f.argv) return 0===f.argv.rc;
const dbName = "/fiddle.sqlite3";
f.argv = [
'sqlite3-fiddle.wasm',
that any argv strings passed to its main() are valid until
the wasm environment shuts down. */
];
- const capi = fiddleModule.sqlite3.capi;
- f.argv.pArgv = capi.wasm.allocMainArgv(f.argv);
- f.argv.rc = capi.wasm.exports.fiddle_main(
+ const S = fiddleModule.sqlite3;
+ /* We need to call sqlite3_shutdown() in order to avoid numerous
+ legitimate warnings from the shell about it being initialized
+ after sqlite3_initialize() has been called. This mean ,
+ however, that any initialization done by the JS code may need
+ to be re-done (e.g. re-registration of dynamically-loaded
+ VFSes). */
+ S.capi.sqlite3_shutdown();
+ f.argv.pArgv = S.capi.wasm.allocMainArgv(f.argv);
+ f.argv.rc = S.capi.wasm.exports.fiddle_main(
f.argv.length, f.argv.pArgv
);
if(f.argv.rc){
fiddleModule.isDead = true;
return false;
}
- stdout("SQLite version", capi.sqlite3_libversion(),
- capi.sqlite3_sourceid().substr(0,19));
- stdout('Welcome to the "fiddle" shell');
- stdout('Enter ".help" for usage hints.');
+ stdout("SQLite version", S.capi.sqlite3_libversion(),
+ S.capi.sqlite3_sourceid().substr(0,19));
+ stdout('Welcome to the "fiddle" shell.');
+ if(S.opfs){
+ stdout("\nOPFS is available. To open a persistent db, use:\n\n",
+ " .open file:name?vfs=opfs\n\nbut note that some",
+ "features (e.g. export) do not yet work with OPFS.");
+ S.opfs.reregisterVfs();
+ }
+ stdout('\nEnter ".help" for usage hints.');
+ this.exec([ // initialization commands...
+ '.nullvalue NULL',
+ '.headers on'
+ ].join('\n'));
return true;
},
/**
} */
const opt = ev.data;
let buffer = opt.buffer;
+ stderr('open():',fixmeOPFS);
if(buffer instanceof Uint8Array){
}else if(buffer instanceof ArrayBuffer){
buffer = new Uint8Array(buffer);
initFiddleModule(fiddleModule).then(function(thisModule){
const S = thisModule.sqlite3;
const atEnd = ()=>{
- thisModule.fsUnlink = function(fn){
+ thisModule.fsUnlink = (fn)=>{
stderr("unlink:",fixmeOPFS);
- return thisModule.ccall('sqlite3_wasm_vfs_unlink','number',['string']);
+ return S.capi.wasm.sqlite3_wasm_vfs_unlink(fn);
};
wMsg('fiddle-ready');
};
- if(1){
- S.installOpfsVfs().finally(function(){
- if(S.opfs) stdout("OPFS is available.");
- atEnd();
- });
- }else{
- atEnd();
- }
+ if(S.installOpfsVfs) S.installOpfsVfs().finally(atEnd);
+ else atEnd();
})/*then()*/;
})();
-C Reworked\sout\sthe\sOPFS\sasync\sproxy\smetrics\sare\sfetched\sso\sthat\sthey\splay\smore\snicely\swith\sthe\stight\sevent-polling\sloop.
-D 2022-09-24T10:12:19.409
+C Resolve\s"already\sconfigured"\swarnings\sfrom\sshell's\smain()\swhen\sstarting\sit\sup\sin\sfiddle\smode.
+D 2022-09-24T10:15:08.912
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F ext/wasm/EXPORTED_RUNTIME_METHODS.fiddle 0e88c8cfc3719e4b7e74980d9da664c709e68acf863e48386cda376edfd3bfb0
F ext/wasm/GNUmakefile 34a84e30e6b25e24959a8264e9dec020dffa82d96879dc55ad65d3c31c95d3b1
F ext/wasm/README.md e1ee1e7c321c6a250bf78a84ca6f5882890a237a450ba5a0649c7a8399194c52
-F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 8a724a674bd2089eef9676b434c0ab709da00db33f73a94e4987e90169b1cd14
+F ext/wasm/api/EXPORTED_FUNCTIONS.sqlite3-api 77a5ee8bd209b5e75dd0e822bc3f6e7319dc9b36431463d4175c775170f92126
F ext/wasm/api/EXPORTED_RUNTIME_METHODS.sqlite3-api 1ec3c73e7d66e95529c3c64ac3de2470b0e9e7fbf7a5b41261c367cf4f1b7287
F ext/wasm/api/README.md d876597edd2b9542b6ea031adaaff1c042076fde7b670b1dc6d8a87b28a6631b
F ext/wasm/api/post-js-footer.js b64319261d920211b8700004d08b956a6c285f3b0bba81456260a713ed04900c
F ext/wasm/api/sqlite3-api-glue.js cfff894bdf98a6c579975d09dd45471b0e3399f08a6f9e44a22646e8403196ed
F ext/wasm/api/sqlite3-api-oo1.js f974e79d9af8f26bf33928c5730b0988cc706d14f59a5fe36394739b92249841
F ext/wasm/api/sqlite3-api-opfs.js 5585dc80aea9df54c3d5d3a6c62771bf741f21b23706330ba62571c57ec07abf
-F ext/wasm/api/sqlite3-api-prologue.js a50ba8618e81a10a4fecd70f8723a7295cfcc0babd6df1dd018e7c5db2904aac
+F ext/wasm/api/sqlite3-api-prologue.js 76db12cce58ec6724ec01a977dfbedabfd4916e915a6e7679ffc24dd52eef64e
F ext/wasm/api/sqlite3-api-worker1.js 2eeb2a24e1a90322d84a9b88a99919b806623de62792436446099c0988f2030b
F ext/wasm/api/sqlite3-wasi.h 25356084cfe0d40458a902afb465df8c21fc4152c1d0a59b563a3fba59a068f9
F ext/wasm/api/sqlite3-wasm.c d1c0724136480a459d9dda4b76a665691a172d5cba96729d26d26acf6480bc9b
F ext/wasm/common/SqliteTestUtil.js 529161a624265ba84271a52db58da022649832fa1c71309fb1e02cc037327a2b
F ext/wasm/common/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
F ext/wasm/common/testing.css 3a5143699c2b73a85b962271e1a9b3241b30d90e30d895e4f55665e648572962
-F ext/wasm/common/whwasmutil.js ba863cb5b837654736a6e20636c887016f08639127c08d9d985db474d1cec1a4
+F ext/wasm/common/whwasmutil.js 2a8cd8b0c936da5812971aa39c8d989306c2ad8fc841dcd037c3be62737dc652
F ext/wasm/demo-123-worker.html e419b66495d209b5211ec64903b4cfb3ca7df20d652b41fcd28bf018a773234f
F ext/wasm/demo-123.html aa281d33b7eefa755f3122b7b5a18f39a42dc5fb69c8879171bf14b4c37c4ec4
F ext/wasm/demo-123.js 234655683e35a4543a23de7b10800d76b0369947b33e089e5613171fa7795afb
F ext/wasm/demo-kvvfs1.js e884ea35022d772c0d1dd884b40011413696438394f605c6cd4808cfb1642a4a
F ext/wasm/fiddle.make fd56fa21bada6ecbf860686a9a789ebda7cc3d9b60835927000fcb00246ea50f
F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
-F ext/wasm/fiddle/fiddle-worker.js b6aea063c591c672cc575ef726d41d2b486e16bf7623a9775a374fd27b29a133
+F ext/wasm/fiddle/fiddle-worker.js 462dee066849c6cb1a0347e90d3c010ca8abb1640e63b3ed3813e88ae3558d64
F ext/wasm/fiddle/fiddle.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2
F ext/wasm/fiddle/fiddle.js e7c6dee946818d0e6a10c89b640440fd5d93cbb9bddea490b98cf54e8bb67ae6
F ext/wasm/index.html 8b4b7ea052d558262c8466f94326fb455c21049b2d1d3577ed0a5fce15101ba8
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 1b923ed6438d7fef4508936e0c4bc026a368721698b1539961e3fb3140a185cb
-R 2784cada1344182947069d02e01bbe66
+P ef503ced5c2ca842be9aea9ef13719a378ed3020e884032db09afee1b8eba0a1
+R 8ff71a36ad5ceae355c6a421e1d0952c
U stephan
-Z 8970d31318ed191d3ed86820eec133d3
+Z e3192f3e3789b47f0628d3187b22766d
# Remove this line to create a well-formed Fossil manifest.
-ef503ced5c2ca842be9aea9ef13719a378ed3020e884032db09afee1b8eba0a1
\ No newline at end of file
+114ef3552af977b272a0baddeb9a2326484b60acfc75284e43c55530f86b413f
\ No newline at end of file