On Mon, Mar 2, 2009 at 9:02 PM, Stephan Beal <[email protected]> wrote: > > On Mar 2, 4:27 pm, Stephan Beal <[email protected]> wrote: >> On Mar 2, 12:50 pm, Slide <[email protected]> wrote: >> >> > This is great! >> >> :) > > It works! > > i finally got my scoping issue worked out (i had to use Persistent::New > (...) instead of Persistent(...)), which means i was able to add > sqlite3_create_function() and the supporting API. The bindings are now > more or less feature complete, with 58 (or so) bound functions. The > only notable things you can't do from JS code are: > > - Custom collators (no plans to implement that, since i don't use > them) > - SQL authorizer functions (again, no plans) > - The UTF16 API isn't yet bound. That'll be easy to do once i find the > v8::String::Utf16Value class(???). (This assumes that sqlite3 and v8 > use the same internal byte order UTF16 strings...)
Sorry, there's no UTF16 class. You can put UTF16 code points in your UC16 strings, but as far as I know there is no support in the language distinguishing between the two kinds of strings. > > The newest source and a link to the source repo are on the code's home > page: > > http://wanderinghorse.net/computing/javascript/v8/ > > Here's a demo of using custom functions: > > print("sqlite3_create_function() test..."); > function my_cb( sqcx, data, values ) > { > print( "my_cb()!!! argc =",arguments.length, ", values.length > =",values.length); > for( var i = 0; i < values.length; ++i ) > { > print( "sqlite3_value_text(value #"+i+") =",sqlite3_value_text > (values[i])); > } > sqlite3_result_value( sqcx, values[0] ); > return SQLITE_OK; > } > > var rc = sqlite3_create_function( my.db, "myfunc", -1, > SQLITE_UTF8, {msg:"hi, callback"}, my_cb ); > print("create_function() rc=",rc); > rc = sqlite3_select_int(my.db,"select myfunc(7,11,13)"); > print("myfunc() rc=",rc,', errmsg=',sqlite3_errmsg(my.db)); > > > The output: > > sqlite3_create_function() test... > create_function() rc= 0 > my_cb()!!! argc = 3 , values.length = 3 > sqlite3_value_text(value #0) = 7 > sqlite3_value_text(value #1) = 11 > sqlite3_value_text(value #2) = 13 > myfunc() rc= 7 , errmsg= not an error > > > As always: comments, criticism, suggestions, etc., are always happily > received. > > And i'll say this because someone mentioned it to me off-list earlier: > the code is BSD-licensed simply because i took the easy route and > adopted v8's license for it. If someone needs a copy under a different > license, that's not a problem (i honestly don't care what you do with > your copy, including how you choose to re-license it). > > Happy hacking! > > > -- Erik Corry, Software Engineer Google Denmark ApS. CVR nr. 28 86 69 84 c/o Philip & Partners, 7 Vognmagergade, P.O. Box 2227, DK-1018 Copenhagen K, Denmark. --~--~---------~--~----~------------~-------~--~----~ v8-users mailing list [email protected] http://groups.google.com/group/v8-users -~----------~----~----~----~------~----~------~--~---
