1 (defpackage :sqlite-ffi
13 :sqlite3-clear-bindings
18 :sqlite3-column-double
22 :sqlite3-bind-parameter-count
23 :sqlite3-bind-parameter-name
24 :sqlite3-bind-parameter-index
32 :sqlite3-last-insert-rowid
))
34 (in-package :sqlite-ffi
)
36 (define-foreign-library sqlite3-lib
37 (:unix
(:or
"libsqlite3.so.0" "libsqlite3.so"))
38 (t (:default
"libsqlite3")))
40 (use-foreign-library sqlite3-lib
)
75 (defctype p-sqlite3
(:pointer sqlite3
))
77 (defcfun sqlite3-open error-code
79 (db (:pointer p-sqlite3
)))
81 (defcfun sqlite3-close error-code
84 (defcfun sqlite3-errmsg
:string
87 (defcstruct sqlite3-stmt
)
89 (defctype p-sqlite3-stmt
(:pointer sqlite3-stmt
))
91 (defcfun (sqlite3-prepare "sqlite3_prepare_v2") error-code
94 (sql-length-bytes :int
)
95 (stmt (:pointer p-sqlite3-stmt
))
96 (tail (:pointer
(:pointer
:char
))))
98 (defcfun sqlite3-finalize error-code
99 (statement p-sqlite3-stmt
))
101 (defcfun sqlite3-step error-code
102 (statement p-sqlite3-stmt
))
104 (defcfun sqlite3-reset error-code
105 (statement p-sqlite3-stmt
))
107 (defcfun sqlite3-clear-bindings error-code
108 (statement p-sqlite3-stmt
))
110 (defcfun sqlite3-column-count
:int
111 (statement p-sqlite3-stmt
))
120 (defcfun sqlite3-column-type type-code
121 (statement p-sqlite3-stmt
)
122 (column-number :int
))
124 (defcfun sqlite3-column-text
:string
125 (statement p-sqlite3-stmt
)
126 (column-number :int
))
128 (defcfun sqlite3-column-int64
:int64
129 (statement p-sqlite3-stmt
)
130 (column-number :int
))
132 (defcfun sqlite3-column-double
:double
133 (statement p-sqlite3-stmt
)
134 (column-number :int
))
136 (defcfun sqlite3-column-bytes
:int
137 (statement p-sqlite3-stmt
)
138 (column-number :int
))
140 (defcfun sqlite3-column-blob
:pointer
141 (statement p-sqlite3-stmt
)
142 (column-number :int
))
144 (defcfun sqlite3-column-name
:string
145 (statement p-sqlite3-stmt
)
146 (column-number :int
))
148 (defcfun sqlite3-bind-parameter-count
:int
149 (statement p-sqlite3-stmt
))
151 (defcfun sqlite3-bind-parameter-name
:string
152 (statement p-sqlite3-stmt
)
153 (column-number :int
))
155 (defcfun sqlite3-bind-parameter-index
:int
156 (statement p-sqlite3-stmt
)
159 (defcfun sqlite3-bind-double error-code
160 (statement p-sqlite3-stmt
)
161 (parameter-index :int
)
164 (defcfun sqlite3-bind-int64 error-code
165 (statement p-sqlite3-stmt
)
166 (parameter-index :int
)
169 (defcfun sqlite3-bind-null error-code
170 (statement p-sqlite3-stmt
)
171 (parameter-index :int
))
173 (defcfun sqlite3-bind-text error-code
174 (statement p-sqlite3-stmt
)
175 (parameter-index :int
)
178 (destructor :pointer
))
180 (defcfun sqlite3-bind-blob error-code
181 (statement p-sqlite3-stmt
)
182 (parameter-index :int
)
185 (destructor :pointer
))
187 (defconstant destructor-transient-address
(mod -
1 (expt 2 (* 8 (cffi:foreign-type-size
:pointer
)))))
189 (defun destructor-transient () (cffi:make-pointer destructor-transient-address
))
191 (defun destructor-static () (cffi:make-pointer
0))
193 (defcfun sqlite3-last-insert-rowid
:int64