Skip to content

Commit 84bda19

Browse files
committed
Used untagging and unboxing attributes on external functions
1 parent 4c8388b commit 84bda19

File tree

4 files changed

+219
-111
lines changed

4 files changed

+219
-111
lines changed

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
* Improved compatibility with MSVC
44

5+
* Used untagging and unboxing attributes on external functions
6+
57

68
### 4.2.0 (2017-08-03)
79

src/sqlite3.ml

Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,10 @@ external db_close : db -> bool = "caml_sqlite3_close"
169169

170170
external errcode : db -> Rc.t = "caml_sqlite3_errcode"
171171
external errmsg : db -> string = "caml_sqlite3_errmsg"
172-
external last_insert_rowid : db -> int64 = "caml_sqlite3_last_insert_rowid"
172+
173+
external last_insert_rowid : db -> (int64 [@unboxed])
174+
= "caml_sqlite3_last_insert_rowid_bc" "caml_sqlite3_last_insert_rowid"
175+
[@@noalloc]
173176

174177
external exec :
175178
db -> ?cb : (string option array -> headers -> unit) -> string -> Rc.t
@@ -187,40 +190,59 @@ external exec_not_null_no_headers :
187190
db -> cb : (string array -> unit) -> string -> Rc.t
188191
= "caml_sqlite3_exec_not_null_no_headers"
189192

190-
external changes : db -> int = "caml_sqlite3_changes"
193+
external changes : db -> (int [@untagged])
194+
= "caml_sqlite3_changes_bc" "caml_sqlite3_changes"
191195

192196
external prepare : db -> string -> stmt = "caml_sqlite3_prepare"
193197
external prepare_tail : stmt -> stmt option = "caml_sqlite3_prepare_tail"
194198
external recompile : stmt -> unit = "caml_sqlite3_recompile"
195199

196200
external step : stmt -> Rc.t = "caml_sqlite3_step"
197201
external reset : stmt -> Rc.t = "caml_sqlite3_stmt_reset"
198-
external sleep : int -> int = "caml_sqlite3_sleep"
202+
203+
external sleep : (int [@untagged]) -> (int [@untagged])
204+
= "caml_sqlite3_sleep_bc" "caml_sqlite3_sleep"
205+
199206
external finalize : stmt -> Rc.t = "caml_sqlite3_stmt_finalize"
200207

201-
external data_count : stmt -> int = "caml_sqlite3_data_count"
202-
external column_count : stmt -> int = "caml_sqlite3_column_count"
203-
external column_blob : stmt -> int -> string option = "caml_sqlite3_column_blob"
204-
external column : stmt -> int -> Data.t = "caml_sqlite3_column"
205-
external column_name : stmt -> int -> string = "caml_sqlite3_column_name"
208+
external data_count : stmt -> (int [@untagged])
209+
= "caml_sqlite3_data_count_bc" "caml_sqlite3_data_count"
210+
211+
external column_count : stmt -> (int [@untagged])
212+
= "caml_sqlite3_column_count_bc" "caml_sqlite3_column_count"
213+
214+
external column_blob :
215+
stmt -> (int [@untagged]) -> string option
216+
= "caml_sqlite3_column_blob_bc" "caml_sqlite3_column_blob"
217+
218+
external column : stmt -> (int [@untagged]) -> Data.t
219+
= "caml_sqlite3_column_bc" "caml_sqlite3_column"
220+
221+
external column_name : stmt -> (int [@untagged]) -> string
222+
= "caml_sqlite3_column_name_bc" "caml_sqlite3_column_name"
206223

207224
external column_decltype :
208-
stmt -> int -> string option = "caml_sqlite3_column_decltype"
225+
stmt -> (int [@untagged]) -> string option
226+
= "caml_sqlite3_column_decltype_bc" "caml_sqlite3_column_decltype"
209227

210-
external bind : stmt -> int -> Data.t -> Rc.t = "caml_sqlite3_bind"
228+
external bind : stmt -> (int [@untagged]) -> Data.t -> Rc.t
229+
= "caml_sqlite3_bind_bc" "caml_sqlite3_bind"
211230

212-
external bind_parameter_count :
213-
stmt -> int = "caml_sqlite3_bind_parameter_count"
231+
external bind_parameter_count : stmt -> (int [@untagged])
232+
= "caml_sqlite3_bind_parameter_count_bc" "caml_sqlite3_bind_parameter_count"
214233

215234
external bind_parameter_name :
216-
stmt -> int -> string option = "caml_sqlite3_bind_parameter_name"
235+
stmt -> (int [@untagged]) -> string option
236+
= "caml_sqlite3_bind_parameter_name_bc" "caml_sqlite3_bind_parameter_name"
217237

218238
external bind_parameter_index :
219-
stmt -> string -> int = "caml_sqlite3_bind_parameter_index"
239+
stmt -> string -> (int [@untagged])
240+
= "caml_sqlite3_bind_parameter_index_bc" "caml_sqlite3_bind_parameter_index"
220241

221242
external clear_bindings : stmt -> Rc.t = "caml_sqlite3_clear_bindings"
222243

223-
external busy_timeout : db -> int -> unit = "caml_sqlite3_busy_timeout"
244+
external busy_timeout : db -> (int [@untagged]) -> unit
245+
= "caml_sqlite3_busy_timeout_bc" "caml_sqlite3_busy_timeout"
224246

225247
external enable_load_extension :
226248
db -> bool -> bool = "caml_sqlite3_enable_load_extension"
@@ -234,8 +256,8 @@ let row_decltypes stmt = Array.init (data_count stmt) (column_decltype stmt)
234256
(* Function registration *)
235257

236258
external create_function :
237-
db -> string -> int -> (Data.t array -> Data.t) -> unit =
238-
"caml_sqlite3_create_function"
259+
db -> string -> (int [@untagged]) -> (Data.t array -> Data.t) -> unit
260+
= "caml_sqlite3_create_function_bc" "caml_sqlite3_create_function"
239261

240262
let create_funN db name f = create_function db name (-1) f
241263
let create_fun0 db name f = create_function db name 0 (fun _ -> f ())
@@ -251,10 +273,10 @@ external delete_function : db -> string -> unit = "caml_sqlite3_delete_function"
251273

252274
module Aggregate = struct
253275
external create_function :
254-
db -> string -> int ->
276+
db -> string -> (int [@untagged]) ->
255277
'a -> ('a -> Data.t array -> 'a) -> ('a -> Data.t) -> unit =
256278
"caml_sqlite3_create_aggregate_function_bc"
257-
"caml_sqlite3_create_aggregate_function_nc"
279+
"caml_sqlite3_create_aggregate_function"
258280

259281
let create_funN db name ~init ~step ~final =
260282
create_function db name (-1) init step final
@@ -281,10 +303,18 @@ module Backup = struct
281303
dst : db -> dst_name : string ->
282304
src : db -> src_name : string -> t = "caml_sqlite3_backup_init"
283305

284-
external step : t -> int -> Rc.t = "caml_sqlite3_backup_step"
306+
external step : t -> (int [@untagged]) -> Rc.t
307+
= "caml_sqlite3_backup_step_bc" "caml_sqlite3_backup_step"
308+
285309
external finish : t -> Rc.t = "caml_sqlite3_backup_finish"
286-
external remaining : t -> int = "caml_sqlite3_backup_remaining"
287-
external pagecount : t -> int = "caml_sqlite3_backup_pagecount"
310+
311+
external remaining : t -> (int [@untagged])
312+
= "caml_sqlite3_backup_remaining_bc" "caml_sqlite3_backup_remaining"
313+
[@@noalloc]
314+
315+
external pagecount : t -> (int [@untagged])
316+
= "caml_sqlite3_backup_pagecount_bc" "caml_sqlite3_backup_pagecount"
317+
[@@noalloc]
288318
end
289319

290320
(* Initialisation *)

0 commit comments

Comments
 (0)