Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 912d86c62f
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 73 lines (63 sloc) 3.572 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
use NativeCall;
use MiniDBD;

enum SQLITE (
    SQLITE_OK => 0 , # Successful result
    SQLITE_ERROR => 1 , # SQL error or missing database
    SQLITE_INTERNAL => 2 , # Internal logic error in SQLite
    SQLITE_PERM => 3 , # Access permission denied
    SQLITE_ABORT => 4 , # Callback routine requested an abort
    SQLITE_BUSY => 5 , # The database file is locked
    SQLITE_LOCKED => 6 , # A table in the database is locked
    SQLITE_NOMEM => 7 , # A malloc() failed
    SQLITE_READONLY => 8 , # Attempt to write a readonly database
    SQLITE_INTERRUPT => 9 , # Operation terminated by sqlite3_interrupt()
    SQLITE_IOERR => 10 , # Some kind of disk I/O error occurred
    SQLITE_CORRUPT => 11 , # The database disk image is malformed
    SQLITE_NOTFOUND => 12 , # Unknown opcode in sqlite3_file_control()
    SQLITE_FULL => 13 , # Insertion failed because database is full
    SQLITE_CANTOPEN => 14 , # Unable to open the database file
    SQLITE_PROTOCOL => 15 , # Database lock protocol error
    SQLITE_EMPTY => 16 , # Database is empty
    SQLITE_SCHEMA => 17 , # The database schema changed
    SQLITE_TOOBIG => 18 , # String or BLOB exceeds size limit
    SQLITE_CONSTRAINT=> 19 , # Abort due to constraint violation
    SQLITE_MISMATCH => 20 , # Data type mismatch
    SQLITE_MISUSE => 21 , # Library used incorrectly
    SQLITE_NOLFS => 22 , # Uses OS features not supported on host
    SQLITE_AUTH => 23 , # Authorization denied
    SQLITE_FORMAT => 24 , # Auxiliary database format error
    SQLITE_RANGE => 25 , # 2nd parameter to sqlite3_bind out of range
    SQLITE_NOTADB => 26 , # File opened that is not a database file
    SQLITE_ROW => 100, # sqlite3_step() has another row ready
    SQLITE_DONE => 101, # sqlite3_step() has finished executing
);


sub sqlite_open(Str $filename, CArray[OpaquePointer] $handle)
    returns Int
    is native('sqlite3')
    { ... }


sub sqlite3_prepare_v2 (
        OpaquePointer $handle,
        Str $statement,
        Int $statement_length,
        CArray[OpaquePointer] $statement_handle,
        CArray[OpaquePointer] $pz_tail
    )
    returns Int
    is native('sqlite3')
    { ... }

sub sqlite3_step(OpaquePointer $statement_handle)
    returns Int
    is native('sqlite3')
    { ... }

sub sqlite3_bind_blob(OpaquePointer $stmt, int, OpaquePointer, Int, OpaquePointer) returns Int is native('sqlite3') { ... };
sub sqlite3_bind_double(OpaquePointer $stmt, Int, Num) returns Int is native('sqlite3') { ... };
sub sqlite3_bind_int(OpaquePointer $stmt, Int, Int) returns Int is native('sqlite3') { ... };
sub sqlite3_bind_null(OpaquePointer $stmt, Int) returns Int is native('sqlite3') { ... };
sub sqlite3_bind_text(OpaquePointer $stmt, Int, Str, Int, OpaquePointer) returns Int is native('sqlite3') { ... };

proto sub sqlite3_bind($, $, $) {*}
multi sub sqlite3_bind($stmt, Int $n, Buf:D $b) { sqlite3_bind_blob($stmt, $n, $b, $b.bytes, OpaquePointer) }
multi sub sqlite3_bind($stmt, Int $n, Real:D $d) { sqlite3_bind_double($stmt, $n, $d.Num) }
multi sub sqlite3_bind($stmt, Int $n, Int:D $i) { sqlite3_bind_int($stmt, $n, $i) }
multi sub sqlite3_bind($stmt, Int $n, Any:U) { sqlite3_bind_null($stmt, $n) }
multi sub sqlite3_bind($stmt, Int $n, Str:D $d) { sqlite3_bind_text($stmt, $n, $d, -1, OpaquePointer) }

sub sqlite3_reset(OpaquePointer) returns Int is native('sqlite3') { ... }
Something went wrong with that request. Please try again.