[svn:parrot] r41150 - in trunk: . runtime/parrot/library

tene at svn.parrot.org tene at svn.parrot.org
Tue Sep 8 05:38:40 UTC 2009


Author: tene
Date: Tue Sep  8 05:38:32 2009
New Revision: 41150
URL: https://trac.parrot.org/parrot/changeset/41150

Log:
[library]
* Move SQLite3.pir from ext/ to library/ so it can be installed
* I'm not sure what to do with the leftovers still in ext/SQLite3/

Added:
   trunk/runtime/parrot/library/SQLite3.pir
Modified:
   trunk/MANIFEST

Modified: trunk/MANIFEST
==============================================================================
--- trunk/MANIFEST	Tue Sep  8 02:11:22 2009	(r41149)
+++ trunk/MANIFEST	Tue Sep  8 05:38:32 2009	(r41150)
@@ -1209,6 +1209,7 @@
 runtime/parrot/library/SDL/Sprite.pir                       [library]
 runtime/parrot/library/SDL/StopWatch.pir                    [library]
 runtime/parrot/library/SDL/Surface.pir                      [library]
+runtime/parrot/library/SQLite3.pir                          [library]
 runtime/parrot/library/Stream/Base.pir                      [library]
 runtime/parrot/library/Stream/Combiner.pir                  [library]
 runtime/parrot/library/Stream/Coroutine.pir                 [library]

Added: trunk/runtime/parrot/library/SQLite3.pir
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/runtime/parrot/library/SQLite3.pir	Tue Sep  8 05:38:32 2009	(r41150)
@@ -0,0 +1,135 @@
+# Copyright (C) 2008-2009, Parrot Foundation.
+# $Id$
+
+.namespace ['SQLite3']
+
+.const int SQLITE_OK         =   0   # Successful result
+# beginning-of-error-codes
+.const int SQLITE_ERROR      =   1   # SQL error or missing database
+.const int SQLITE_INTERNAL   =   2   # Internal logic error in SQLite
+.const int SQLITE_PERM       =   3   # Access permission denied
+.const int SQLITE_ABORT      =   4   # Callback routine requested an abort
+.const int SQLITE_BUSY       =   5   # The database file is locked
+.const int SQLITE_LOCKED     =   6   # A table in the database is locked
+.const int SQLITE_NOMEM      =   7   # A malloc() failed
+.const int SQLITE_READONLY   =   8   # Attempt to write a readonly database
+.const int SQLITE_INTERRUPT  =   9   # Operation terminated by sqlite3_interrupt()
+.const int SQLITE_IOERR      =  10   # Some kind of disk I/O error occurred
+.const int SQLITE_CORRUPT    =  11   # The database disk image is malformed
+.const int SQLITE_NOTFOUND   =  12   # NOT USED. Table or record not found
+.const int SQLITE_FULL       =  13   # Insertion failed because database is full
+.const int SQLITE_CANTOPEN   =  14   # Unable to open the database file
+.const int SQLITE_PROTOCOL   =  15   # NOT USED. Database lock protocol error
+.const int SQLITE_EMPTY      =  16   # Database is empty
+.const int SQLITE_SCHEMA     =  17   # The database schema changed
+.const int SQLITE_TOOBIG     =  18   # String or BLOB exceeds size limit
+.const int SQLITE_CONSTRAINT =  19   # Abort due to constraint violation
+.const int SQLITE_MISMATCH   =  20   # Data type mismatch
+.const int SQLITE_MISUSE     =  21   # Library used incorrectly
+.const int SQLITE_NOLFS      =  22   # Uses OS features not supported on host
+.const int SQLITE_AUTH       =  23   # Authorization denied
+.const int SQLITE_FORMAT     =  24   # Auxiliary database format error
+.const int SQLITE_RANGE      =  25   # 2nd parameter to sqlite3_bind out of range
+.const int SQLITE_NOTADB     =  26   # File opened that is not a database file
+.const int SQLITE_ROW        =  100  # sqlite3_step() has another row ready
+.const int SQLITE_DONE       =  101  # sqlite3_step() has finished executing
+
+.sub '_sqlite_init' :load
+    .local pmc libname
+    .local pmc function
+    .local pmc sqlite_funcs
+
+    libname = loadlib 'libsqlite3'
+    set_global '_sqlite3', libname
+
+    sqlite_funcs = new 'ResizableStringArray'
+    push sqlite_funcs, 'step'
+    push sqlite_funcs, 'ip'
+    push sqlite_funcs, 'finalize'
+    push sqlite_funcs, 'ip'
+    push sqlite_funcs, 'close'
+    push sqlite_funcs, 'ip'
+    push sqlite_funcs, 'errmsg'
+    push sqlite_funcs, 'tp'
+    push sqlite_funcs, 'errcode'
+    push sqlite_funcs, 'ip'
+    push sqlite_funcs, 'bind_int'
+    push sqlite_funcs, 'ipii'
+    push sqlite_funcs, 'bind_double'
+    push sqlite_funcs, 'ipid'
+    push sqlite_funcs, 'bind_text'
+    push sqlite_funcs, 'ipitii'
+    push sqlite_funcs, 'column_name'
+    push sqlite_funcs, 'tpi'
+    push sqlite_funcs, 'column_count'
+    push sqlite_funcs, 'ip'
+    push sqlite_funcs, 'column_type'
+    push sqlite_funcs, 'ipi'
+    push sqlite_funcs, 'column_int'
+    push sqlite_funcs, 'ipi'
+    push sqlite_funcs, 'column_double'
+    push sqlite_funcs, 'lpi'
+    push sqlite_funcs, 'column_text'
+    push sqlite_funcs, 'tpi'
+
+    function  = dlfunc libname, 'sqlite3_open', 'itV'
+    set_global 'open_raw', function
+
+    function  = dlfunc libname, 'sqlite3_prepare_v2', 'iptiVp'
+    set_global 'prepare_raw', function
+
+    .local pmc list_iter
+    list_iter = iter sqlite_funcs
+    .local string func_name, signature
+    .local pmc    function
+
+  list_loop:
+    unless list_iter goto done
+    func_name = shift list_iter
+    signature = shift list_iter
+    $S0 = concat 'sqlite3_', func_name
+    function  = dlfunc libname, $S0, signature
+    set_global func_name, function
+    goto list_loop
+
+  done:
+
+.end
+
+.sub 'open'
+  .param string connectstr
+  .local pmc dbhandle
+  .local pmc open_raw
+  .local int rc
+
+  open_raw = get_global 'open_raw'
+  dbhandle = new 'Pointer'
+  rc = open_raw(connectstr, dbhandle)
+
+  .return(dbhandle)
+.end
+
+.sub 'prepare'
+  .param pmc dbhandle
+  .param string psstr
+  .local int psstrlen
+  .local pmc pshandle
+  .local pmc dummy
+  .local pmc prepare_raw
+  .local int rc
+
+  prepare_raw = get_global 'prepare_raw'
+
+  pshandle = new 'Pointer'
+  dummy = new 'Pointer'
+  psstrlen = length psstr
+  rc = prepare_raw(dbhandle, psstr, psstrlen, pshandle, dummy)
+
+  .return(pshandle)
+.end
+
+# Local Variables:
+#   mode: pir
+#   fill-column: 100
+# End:
+# vim: expandtab shiftwidth=4 ft=pir:


More information about the parrot-commits mailing list