]> gitweb.factorcode.org Git - factor.git/commitdiff
db.sqlite: Add some more constants and a way to see which compiler options it's built...
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 29 Nov 2020 17:30:51 +0000 (11:30 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 29 Nov 2020 18:10:07 +0000 (12:10 -0600)
basis/db/sqlite/ffi/ffi.factor
basis/db/sqlite/lib/lib.factor
extra/sequences/extras/extras.factor

index ee15557130032629e11e6f1c9e0e6dc9722448f0..2371b790ac5f6ab765a49982e1177903ca2e516d 100644 (file)
@@ -103,6 +103,32 @@ CONSTANT: SQLITE_OPEN_TEMP_JOURNAL     0x00001000
 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
@@ -114,11 +140,11 @@ TYPEDEF: ulonglong sqlite3_uint64
 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 )
index 00babd6f4c63666608dadf2d48384a6e111da5b3..3c54990096b8fa7522b0ec0928be84f2e307f859 100644 (file)
@@ -4,9 +4,12 @@ USING: accessors alien.c-types alien.data arrays calendar.format
 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 -- * )
index c0b411b433a28660621b14c15b0bd7b0b6295bf1..bbbb9d71f6f160210d345cb487e618a53e2d72e1 100644 (file)
@@ -456,6 +456,17 @@ PRIVATE>
 : 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 )