Skip to content

Commit 05e98c1

Browse files
committed
Fix 32-bit unix issue with stdcall calling convention. Fixes #9.
1 parent 8989864 commit 05e98c1

File tree

2 files changed

+164
-44
lines changed

2 files changed

+164
-44
lines changed

src/SQLite_api.jl

Lines changed: 160 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,191 @@
11
function sqlite3_open(file::String,handle::Array{Ptr{Void},1})
2-
return ccall( (:sqlite3_open, sqlite3_lib), stdcall,
2+
@windows_only return ccall( (:sqlite3_open, sqlite3_lib), stdcall,
33
Cint, (Ptr{Uint8},Ptr{Void}),
44
file,handle)
5+
@unix_only return ccall( (:sqlite3_open, sqlite3_lib),
6+
Cint, (Ptr{Uint8},Ptr{Void}),
7+
file,handle)
58
end
69
function sqlite3_open16(file::String,handle::Array{Ptr{Void},1})
7-
return ccall( (:sqlite3_open16, sqlite3_lib), stdcall,
10+
@windows_only return ccall( (:sqlite3_open16, sqlite3_lib), stdcall,
811
Cint, (Ptr{Uint8},Ptr{Void}),
912
file,handle)
13+
@unix_only return ccall( (:sqlite3_open16, sqlite3_lib),
14+
Cint, (Ptr{Uint8},Ptr{Void}),
15+
file,handle)
1016
end
1117
function sqlite3_open_v2(file::String,handle::Array{Ptr{Void},1},flags::Cint,vfs::String)
12-
return ccall( (:sqlite3_open_v2, sqlite3_lib), stdcall,
18+
@windows_only return ccall( (:sqlite3_open_v2, sqlite3_lib), stdcall,
1319
Cint, (Ptr{Uint8},Ptr{Void},Cint,Ptr{Uint8}),
1420
file,handle,flags,vfs)
21+
@unix_only return ccall( (:sqlite3_open_v2, sqlite3_lib),
22+
Cint, (Ptr{Uint8},Ptr{Void},Cint,Ptr{Uint8}),
23+
file,handle,flags,vfs)
1524
end
1625
function sqlite3_prepare(handle::Ptr{Void},query::String,stmt::Array{Ptr{Void},1},unused::Array{Ptr{Void},1})
17-
return ccall( (:sqlite3_prepare, sqlite3_lib), stdcall,
26+
@windows_only return ccall( (:sqlite3_prepare, sqlite3_lib), stdcall,
1827
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void}),
1928
handle,query,length(query),stmt,unused)
29+
@unix_only return ccall( (:sqlite3_prepare, sqlite3_lib),
30+
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Vo
31+
handle,query,length(query),stmt,unused)
2032
end
2133
function sqlite3_prepare_v2(handle::Ptr{Void},query::String,stmt::Array{Ptr{Void},1},unused::Array{Ptr{Void},1})
22-
return ccall( (:sqlite3_prepare_v2, sqlite3_lib), stdcall,
34+
@windows_only return ccall( (:sqlite3_prepare_v2, sqlite3_lib), stdcall,
2335
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void}),
2436
handle,query,length(query),stmt,unused)
37+
@unix_only return ccall( (:sqlite3_prepare_v2, sqlite3_lib),
38+
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void}
39+
handle,query,length(query),stmt,unused)
2540
end
2641
function sqlite3_prepare16(handle::Ptr{Void},query::String,stmt::Array{Ptr{Void},1},unused::Array{Ptr{Void},1})
27-
return ccall( (:sqlite3_prepare16, sqlite3_lib), stdcall,
42+
@windows_only return ccall( (:sqlite3_prepare16, sqlite3_lib), stdcall,
2843
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void}),
2944
handle,query,length(query),stmt,unused)
45+
@unix_only return ccall( (:sqlite3_prepare16, sqlite3_lib),
46+
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void
47+
handle,query,length(query),stmt,unused)
3048
end
3149
function sqlite3_prepare16_v2(handle::Ptr{Void},query::String,stmt::Array{Ptr{Void},1},unused::Array{Ptr{Void},1})
32-
return ccall( (:sqlite3_prepare16_v2, sqlite3_lib), stdcall,
50+
@windows_only return ccall( (:sqlite3_prepare16_v2, sqlite3_lib), stdcall,
3351
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void}),
3452
handle,query,length(query),stmt,unused)
53+
@unix_only return ccall( (:sqlite3_prepare16_v2, sqlite3_lib),
54+
Cint, (Ptr{Void},Ptr{Uint8},Cint,Ptr{Void},Ptr{Void}),
55+
handle,query,length(query),stmt,unused)
3556
end
3657
function sqlite3_step(stmt::Ptr{Void})
37-
return ccall( (:sqlite3_step, sqlite3_lib), stdcall,
58+
@windows_only return ccall( (:sqlite3_step, sqlite3_lib), stdcall,
3859
Cint, (Ptr{Void},),
3960
stmt)
61+
@unix_only return ccall( (:sqlite3_step, sqlite3_lib),
62+
Cint, (Ptr{Void},),
63+
stmt)
4064
end
4165
function sqlite3_column_count(stmt::Ptr{Void})
42-
return ccall( (:sqlite3_column_count, sqlite3_lib), stdcall,
66+
@windows_only return ccall( (:sqlite3_column_count, sqlite3_lib), stdcall,
4367
Cint, (Ptr{Void},),
4468
stmt)
69+
@unix_only return ccall( (:sqlite3_column_count, sqlite3_lib),
70+
Cint, (Ptr{Void},),
71+
stmt)
4572
end
4673
function sqlite3_column_blob(stmt::Ptr{Void},col::Int)
47-
return ccall( (:sqlite3_column_blob, sqlite3_lib), stdcall,
74+
@windows_only return ccall( (:sqlite3_column_blob, sqlite3_lib), stdcall,
4875
Ptr{Void}, (Ptr{Void},Cint),
4976
stmt,col)
77+
@unix_only return ccall( (:sqlite3_column_blob, sqlite3_lib),
78+
Ptr{Void}, (Ptr{Void},Cint),
79+
stmt,col)
5080
end
5181

5282
function sqlite3_column_bytes(stmt::Ptr{Void},col::Int)
53-
return ccall( (:sqlite3_column_bytes, sqlite3_lib), stdcall,
83+
@windows_only return ccall( (:sqlite3_column_bytes, sqlite3_lib), stdcall,
5484
Cint, (Ptr{Void},Cint),
5585
stmt,col)
86+
@unix_only return ccall( (:sqlite3_column_bytes, sqlite3_lib),
87+
Cint, (Ptr{Void},Cint),
88+
stmt,col)
5689
end
5790
function sqlite3_column_bytes16(stmt::Ptr{Void},col::Int)
58-
return ccall( (:sqlite3_column_bytes16, sqlite3_lib), stdcall,
91+
@windows_only return ccall( (:sqlite3_column_bytes16, sqlite3_lib), stdcall,
5992
Cint, (Ptr{Void},Cint),
6093
stmt,col)
94+
@unix_only return ccall( (:sqlite3_column_bytes16, sqlite3_lib),
95+
Cint, (Ptr{Void},Cint),
96+
stmt,col)
6197
end
6298
function sqlite3_column_double(stmt::Ptr{Void},col::Int)
63-
return ccall( (:sqlite3_column_double, sqlite3_lib), stdcall,
99+
@windows_only return ccall( (:sqlite3_column_double, sqlite3_lib), stdcall,
64100
Cdouble, (Ptr{Void},Cint),
65101
stmt,col)
102+
@unix_only return ccall( (:sqlite3_column_double, sqlite3_lib),
103+
Cdouble, (Ptr{Void},Cint),
104+
stmt,col)
66105
end
67106
function sqlite3_column_int(stmt::Ptr{Void},col::Int)
68-
return ccall( (:sqlite3_column_int, sqlite3_lib), stdcall,
107+
@windows_only return ccall( (:sqlite3_column_int, sqlite3_lib), stdcall,
69108
Cint, (Ptr{Void},Cint),
70109
stmt,col)
110+
@unix_only return ccall( (:sqlite3_column_int, sqlite3_lib),
111+
Cint, (Ptr{Void},Cint),
112+
stmt,col)
71113
end
72114
function sqlite3_column_int64(stmt::Ptr{Void},col::Int)
73-
return ccall( (:sqlite3_column_int64, sqlite3_lib), stdcall,
115+
@windows_only return ccall( (:sqlite3_column_int64, sqlite3_lib), stdcall,
74116
Clonglong, (Ptr{Void},Cint),
75117
stmt,col)
118+
@unix_only return ccall( (:sqlite3_column_int64, sqlite3_lib),
119+
Clonglong, (Ptr{Void},Cint),
120+
stmt,col)
76121
end
77122
function sqlite3_column_text(stmt::Ptr{Void},col::Int)
78-
return ccall( (:sqlite3_column_text, sqlite3_lib), stdcall,
123+
@windows_only return ccall( (:sqlite3_column_text, sqlite3_lib), stdcall,
79124
Ptr{Uint8}, (Ptr{Void},Cint),
80125
stmt,col)
126+
@unix_only return ccall( (:sqlite3_column_text, sqlite3_lib),
127+
Ptr{Uint8}, (Ptr{Void},Cint),
128+
stmt,col)
81129
end
82130
function sqlite3_column_text16(stmt::Ptr{Void},col::Int)
83-
return ccall( (:sqlite3_column_text16, sqlite3_lib), stdcall,
131+
@windows_only return ccall( (:sqlite3_column_text16, sqlite3_lib), stdcall,
84132
Ptr{Void}, (Ptr{Void},Cint),
85133
stmt,col)
134+
@unix_only return ccall( (:sqlite3_column_text16, sqlite3_lib),
135+
Ptr{Void}, (Ptr{Void},Cint),
136+
stmt,col)
86137
end
87138
const FUNCS = [SQLITE_INTEGER=>sqlite3_column_int,SQLITE_FLOAT=>sqlite3_column_double,SQLITE3_TEXT=>sqlite3_column_text,SQLITE_BLOB=>sqlite3_column_blob,SQLITE_NULL=>sqlite3_column_text]
88139
function sqlite3_column_type(stmt::Ptr{Void},col::Int)
89-
return ccall( (:sqlite3_column_type, sqlite3_lib), stdcall,
140+
@windows_only return ccall( (:sqlite3_column_type, sqlite3_lib), stdcall,
90141
Cint, (Ptr{Void},Cint),
91142
stmt,col)
143+
@unix_only return ccall( (:sqlite3_column_type, sqlite3_lib),
144+
Cint, (Ptr{Void},Cint),
145+
stmt,col)
92146
end
93147
# function sqlite3_column_value(stmt::Ptr{Void},col::Cint)
94-
# return ccall( (:sqlite3_column_value, sqlite3_lib), stdcall,
148+
@windows_only # return ccall( (:sqlite3_column_value, sqlite3_lib), stdcall,
149+
# Ptr{Void}, (Ptr{Void},Cint),
150+
# stmt,col)
151+
@unix_only # return ccall( (:sqlite3_column_value, sqlite3_lib),
95152
# Ptr{Void}, (Ptr{Void},Cint),
96153
# stmt,col)
97154
# end
98155
# SQLITE_API sqlite3_value *sqlite3_column_value(sqlite3_stmt*, int iCol);
99156
function sqlite3_finalize(stmt::Ptr{Void})
100-
return ccall( (:sqlite3_finalize, sqlite3_lib), stdcall,
157+
@windows_only return ccall( (:sqlite3_finalize, sqlite3_lib), stdcall,
101158
Cint, (Ptr{Void},),
102159
stmt)
160+
@unix_only return ccall( (:sqlite3_finalize, sqlite3_lib),
161+
Cint, (Ptr{Void},),
162+
stmt)
103163
end
104164
function sqlite3_reset(stmt::Ptr{Void})
105-
return ccall( (:sqlite3_reset, sqlite3_lib), stdcall,
165+
@windows_only return ccall( (:sqlite3_reset, sqlite3_lib), stdcall,
106166
Cint, (Ptr{Void},),
107167
stmt)
168+
@unix_only return ccall( (:sqlite3_reset, sqlite3_lib),
169+
Cint, (Ptr{Void},),
170+
stmt)
108171
end
109172

110173
# SQLITE_API const char *sqlite3_column_name(sqlite3_stmt*, int N);
111174
function sqlite3_column_name(stmt::Ptr{Void},n::Int)
112-
return ccall( (:sqlite3_column_name, sqlite3_lib), stdcall,
175+
@windows_only return ccall( (:sqlite3_column_name, sqlite3_lib), stdcall,
113176
Ptr{Uint8}, (Ptr{Void},Cint),
114177
stmt,n)
178+
@unix_only return ccall( (:sqlite3_column_name, sqlite3_lib),
179+
Ptr{Uint8}, (Ptr{Void},Cint),
180+
stmt,n)
115181
end
116182
function sqlite3_column_name16(stmt::Ptr{Void},n::Int)
117-
return ccall( (:sqlite3_column_name16, sqlite3_lib), stdcall,
183+
@windows_only return ccall( (:sqlite3_column_name16, sqlite3_lib), stdcall,
118184
Ptr{Uint8}, (Ptr{Void},Cint),
119185
stmt,n)
186+
@unix_only return ccall( (:sqlite3_column_name16, sqlite3_lib),
187+
Ptr{Uint8}, (Ptr{Void},Cint),
188+
stmt,n)
120189
end
121190
# SQLITE_API const void *sqlite3_column_name16(sqlite3_stmt*, int N);
122191

@@ -133,39 +202,60 @@ end
133202
# SQLITE_API int sqlite3_data_count(sqlite3_stmt *pStmt);
134203

135204
function sqlite3_close(handle::Ptr{Void})
136-
return ccall( (:sqlite3_close, sqlite3_lib), stdcall,
205+
@windows_only return ccall( (:sqlite3_close, sqlite3_lib), stdcall,
137206
Cint, (Ptr{Void},),
138207
handle)
208+
@unix_only return ccall( (:sqlite3_close, sqlite3_lib),
209+
Cint, (Ptr{Void},),
210+
handle)
139211
end
140212
function sqlite3_close_v2(handle::Ptr{Void})
141-
return ccall( (:sqlite3_close_v2, sqlite3_lib), stdcall,
213+
@windows_only return ccall( (:sqlite3_close_v2, sqlite3_lib), stdcall,
142214
Cint, (Ptr{Void},),
143215
handle)
216+
@unix_only return ccall( (:sqlite3_close_v2, sqlite3_lib),
217+
Cint, (Ptr{Void},),
218+
handle)
144219
end
145220
function sqlite3_initialize()
146-
return ccall( (:sqlite3_initialize, sqlite3_lib), stdcall,
221+
@windows_only return ccall( (:sqlite3_initialize, sqlite3_lib), stdcall,
147222
Cint, (),
148223
)
224+
@unix_only return ccall( (:sqlite3_initialize, sqlite3_lib),
225+
Cint, (),
226+
)
149227
end
150228
function sqlite3_shutdown()
151-
return ccall( (:sqlite3_shutdown, sqlite3_lib), stdcall,
229+
@windows_only return ccall( (:sqlite3_shutdown, sqlite3_lib), stdcall,
152230
Cint, (),
153231
)
232+
@unix_only return ccall( (:sqlite3_shutdown, sqlite3_lib),
233+
Cint, (),
234+
)
154235
end
155236
function sqlite3_os_init()
156-
return ccall( (:sqlite3_os_init, sqlite3_lib), stdcall,
237+
@windows_only return ccall( (:sqlite3_os_init, sqlite3_lib), stdcall,
157238
Cint, (),
158239
)
240+
@unix_only return ccall( (:sqlite3_os_init, sqlite3_lib),
241+
Cint, (),
242+
)
159243
end
160244
function sqlite3_os_end()
161-
return ccall( (:sqlite3_os_end, sqlite3_lib), stdcall,
245+
@windows_only return ccall( (:sqlite3_os_end, sqlite3_lib), stdcall,
162246
Cint, (),
163247
)
248+
@unix_only return ccall( (:sqlite3_os_end, sqlite3_lib),
249+
Cint, (),
250+
)
164251
end
165252
function sqlite3_free_table(result::Array{String,1})
166-
return ccall( (:sqlite3_free_table, sqlite_lib), stdcall,
253+
@windows_only return ccall( (:sqlite3_free_table, sqlite_lib), stdcall,
167254
Void, (Ptr{Ptr{Void}},),
168255
result)
256+
@unix_only return ccall( (:sqlite3_free_table, sqlite_lib),
257+
Void, (Ptr{Ptr{Void}},),
258+
result)
169259
end
170260

171261
# SQLITE_API int sqlite3_exec(
@@ -188,37 +278,52 @@ end
188278
# SQLITE_API int sqlite3_uri_boolean(const char *zFile, const char *zParam, int bDefault);
189279
# SQLITE_API sqlite3_int64 sqlite3_uri_int64(const char*, const char*, sqlite3_int64);
190280
function sqlite3_errcode(db::Ptr{Void})
191-
return ccall( (:sqlite3_errcode, sqlite3_lib), stdcall,
281+
@windows_only return ccall( (:sqlite3_errcode, sqlite3_lib), stdcall,
192282
Cint, (Ptr{Void},),
193283
db)
284+
@unix_only return ccall( (:sqlite3_errcode, sqlite3_lib),
285+
Cint, (Ptr{Void},),
286+
db)
194287
end
195288
function sqlite3_extended_errcode(db::Ptr{Void})
196-
return ccall( (:sqlite3_extended_errcode, sqlite3_lib), stdcall,
289+
@windows_only return ccall( (:sqlite3_extended_errcode, sqlite3_lib), stdcall,
197290
Cint, (Ptr{Void},),
198291
db)
292+
@unix_only return ccall( (:sqlite3_extended_errcode, sqlite3_lib),
293+
Cint, (Ptr{Void},),
294+
db)
199295
end
200296
# SQLITE_API int sqlite3_errcode(sqlite3 *db);
201297
# SQLITE_API int sqlite3_extended_errcode(sqlite3 *db);
202298
# SQLITE_API const char *sqlite3_errmsg(sqlite3*);
203299
function sqlite3_errmsg(db::Ptr{Void})
204-
return ccall( (:sqlite3_errmsg, sqlite3_lib), stdcall,
300+
@windows_only return ccall( (:sqlite3_errmsg, sqlite3_lib), stdcall,
205301
Ptr{Uint8}, (Ptr{Void},),
206302
db)
303+
@unix_only return ccall( (:sqlite3_errmsg, sqlite3_lib),
304+
Ptr{Uint8}, (Ptr{Void},),
305+
db)
207306
end
208307
# SQLITE_API const void *sqlite3_errmsg16(sqlite3*);
209308
function sqlite3_errstr(ret::Cint)
210-
return ccall( (:sqlite3_errstr, sqlite3_lib), stdcall,
309+
@windows_only return ccall( (:sqlite3_errstr, sqlite3_lib), stdcall,
211310
Ptr{Uint8}, (Cint,),
212311
ret)
312+
@unix_only return ccall( (:sqlite3_errstr, sqlite3_lib),
313+
Ptr{Uint8}, (Cint,),
314+
ret)
213315
end
214316
# SQLITE_API const char *sqlite3_errstr(int);
215317

216318
# SQLITE_API int sqlite3_limit(sqlite3*, int id, int newVal);
217319

218320
function sqlite3_sql(stmt::Ptr{Void})
219-
return ccall( (:sqlite3_sql, sqlite3_lib), stdcall,
321+
@windows_only return ccall( (:sqlite3_sql, sqlite3_lib), stdcall,
220322
Void, (Ptr{Void},),
221323
stmt)
324+
@unix_only return ccall( (:sqlite3_sql, sqlite3_lib),
325+
Void, (Ptr{Void},),
326+
stmt)
222327
end
223328

224329
# SQLITE_API int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
@@ -228,33 +333,48 @@ end
228333
# SQLITE_API int sqlite3_bind_blob(sqlite3_stmt*, int, const void*, int n, void(*)(void*));
229334
# SQLITE_API int sqlite3_bind_double(sqlite3_stmt*, int, double);
230335
function sqlite3_bind_double(stmt::Ptr{Void},col::Int,value::Float64)
231-
return ccall( (:sqlite3_bind_double, sqlite3_lib), stdcall,
336+
@windows_only return ccall( (:sqlite3_bind_double, sqlite3_lib), stdcall,
232337
Cint, (Ptr{Void},Cint,Float64),
233338
stmt,col,value)
339+
@unix_only return ccall( (:sqlite3_bind_double, sqlite3_lib),
340+
Cint, (Ptr{Void},Cint,Float64),
341+
stmt,col,value)
234342
end
235343
# SQLITE_API int sqlite3_bind_int(sqlite3_stmt*, int, int);
236344
function sqlite3_bind_int(stmt::Ptr{Void},col::Int,value::Int32)
237-
return ccall( (:sqlite3_bind_int, sqlite3_lib), stdcall,
345+
@windows_only return ccall( (:sqlite3_bind_int, sqlite3_lib), stdcall,
238346
Cint, (Ptr{Void},Cint,Int32),
239347
stmt,col,value)
348+
@unix_only return ccall( (:sqlite3_bind_int, sqlite3_lib),
349+
Cint, (Ptr{Void},Cint,Int32),
350+
stmt,col,value)
240351
end
241352
# SQLITE_API int sqlite3_bind_int64(sqlite3_stmt*, int, sqlite3_int64);
242353
function sqlite3_bind_int64(stmt::Ptr{Void},col::Int,value::Int64)
243-
return ccall( (:sqlite3_bind_int64, sqlite3_lib), stdcall,
354+
@windows_only return ccall( (:sqlite3_bind_int64, sqlite3_lib), stdcall,
244355
Cint, (Ptr{Void},Cint,Int64),
245356
stmt,col,value)
357+
@unix_only return ccall( (:sqlite3_bind_int64, sqlite3_lib),
358+
Cint, (Ptr{Void},Cint,Int64),
359+
stmt,col,value)
246360
end
247361
# SQLITE_API int sqlite3_bind_null(sqlite3_stmt*, int);
248362
function sqlite3_bind_null(stmt::Ptr{Void},col::Int)
249-
return ccall( (:sqlite3_bind_null, sqlite3_lib), stdcall,
363+
@windows_only return ccall( (:sqlite3_bind_null, sqlite3_lib), stdcall,
250364
Cint, (Ptr{Void},Cint),
251365
stmt,col)
366+
@unix_only return ccall( (:sqlite3_bind_null, sqlite3_lib),
367+
Cint, (Ptr{Void},Cint),
368+
stmt,col)
252369
end
253370
# SQLITE_API int sqlite3_bind_text(sqlite3_stmt*, int, const char*, int n, void(*)(void*));
254371
function sqlite3_bind_text(stmt::Ptr{Void},col::Int,value::String,len::Int,cb::Ptr{Void})
255-
return ccall( (:sqlite3_bind_text, sqlite3_lib), stdcall,
372+
@windows_only return ccall( (:sqlite3_bind_text, sqlite3_lib), stdcall,
256373
Cint, (Ptr{Void},Cint,Ptr{Uint8},Cint,Ptr{Void}),
257374
stmt,col,value,len,cb)
375+
@unix_only return ccall( (:sqlite3_bind_text, sqlite3_lib),
376+
Cint, (Ptr{Void},Cint,Ptr{Uint8},Cint,Ptr{Void}),
377+
stmt,col,value,len,cb)
258378
end
259379
# SQLITE_API int sqlite3_bind_text16(sqlite3_stmt*, int, const void*, int, void(*)(void*));
260380
# SQLITE_API int sqlite3_bind_value(sqlite3_stmt*, int, const sqlite3_value*);

0 commit comments

Comments
 (0)