CONSTANT: SQLITE_OPEN_SUBJOURNAL 0x00002000
CONSTANT: SQLITE_OPEN_MASTER_JOURNAL 0x00004000
+CONSTANT: SQLITE_IOCAP_ATOMIC 0x00000001
+CONSTANT: SQLITE_IOCAP_ATOMIC512 0x00000002
+CONSTANT: SQLITE_IOCAP_ATOMIC1K 0x00000004
+CONSTANT: SQLITE_IOCAP_ATOMIC2K 0x00000008
+CONSTANT: SQLITE_IOCAP_ATOMIC4K 0x00000010
+CONSTANT: SQLITE_IOCAP_ATOMIC8K 0x00000020
+CONSTANT: SQLITE_IOCAP_ATOMIC16K 0x00000040
+CONSTANT: SQLITE_IOCAP_ATOMIC32K 0x00000080
+CONSTANT: SQLITE_IOCAP_ATOMIC64K 0x00000100
+CONSTANT: SQLITE_IOCAP_SAFE_APPEND 0x00000200
+CONSTANT: SQLITE_IOCAP_SEQUENTIAL 0x00000400
+CONSTANT: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800
+CONSTANT: SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000
+CONSTANT: SQLITE_IOCAP_IMMUTABLE 0x00002000
+CONSTANT: SQLITE_IOCAP_BATCH_ATOMIC 0x00004000
+
+CONSTANT: SQLITE_LOCK_NONE 0
+CONSTANT: SQLITE_LOCK_SHARED 1
+CONSTANT: SQLITE_LOCK_RESERVED 2
+CONSTANT: SQLITE_LOCK_PENDING 3
+CONSTANT: SQLITE_LOCK_EXCLUSIVE 4
+
+CONSTANT: SQLITE_SYNC_NORMAL 0x00002
+CONSTANT: SQLITE_SYNC_FULL 0x00003
+CONSTANT: SQLITE_SYNC_DATAONLY 0x00010
+
C-TYPE: sqlite3
C-TYPE: sqlite3_stmt
C-TYPE: sqlite3_value
LIBRARY: sqlite
! FUNCTION: char sqlite3_version[]
-FUNCTION: char* sqlite3_libversion ( )
-FUNCTION: char* sqlite3_sourceid ( )
+FUNCTION: c-string sqlite3_libversion ( )
+FUNCTION: c-string sqlite3_sourceid ( )
FUNCTION: int sqlite3_libversion_number ( )
FUNCTION: int sqlite3_compileoption_used ( char* zOptName )
-FUNCTION: char* sqlite3_compileoption_get ( int N )
+FUNCTION: c-string sqlite3_compileoption_get ( int N )
FUNCTION: int sqlite3_threadsafe ( )
FUNCTION: int sqlite3_close ( sqlite3* pDb )
calendar.parser combinators db db.errors db.sqlite.errors
db.sqlite.ffi db.types io.backend io.encodings.string
io.encodings.utf8 kernel math namespaces present sequences
-serialize urls ;
+sequences.extras serialize urls ;
IN: db.sqlite.lib
+: sqlite-compile-options ( -- seq )
+ [ sqlite3_compileoption_get ] zero-loop>array ;
+
ERROR: sqlite-error < db-error n string ;
: sqlite-other-error ( n -- * )
: loop>array* ( quot: ( ..a -- ..a obj ? ) -- seq )
{ } loop>sequence* ; inline
+: with-pre-incrementer ( quot: ( ..a n -- ..a obj/f ) seq -- quot: ( ..a n -- ..a obj/f ) )
+ [ -1 ] 2dip
+ [ [ 1 + dup ] prepose ] dip
+ call nip ; inline
+
+: zero-loop>array ( quot: ( ..a n -- ..a obj ) -- seq )
+ [ loop>array ] with-pre-incrementer ; inline
+
+: zero-loop>sequence ( quot: ( ..a n -- ..a obj ) exemplar -- seq )
+ '[ _ loop>sequence ] with-pre-incrementer ; inline
+
<PRIVATE
: (reverse) ( seq -- newseq )