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
-~----------~----~----~----~------~----~------~--~---

Reply via email to