18
18
* Github: https://github.com/mikecovlee
19
19
*/
20
20
#include < sqlite/sqlite.hpp>
21
- #include < covscript/cni.hpp>
22
21
#include < covscript/extension.hpp>
23
22
24
- static cs::extension sqlite_ext;
25
- static cs::extension sqlite_stmt_ext;
26
- static cs::extension_t sqlite_ext_shared = cs::make_shared_namespace(sqlite_ext);
27
- static cs::extension_t sqlite_stmt_ext_shared = cs::make_shared_namespace(sqlite_stmt_ext);
23
+ static cs::namespace_t sqlite_db_ext=cs::make_shared_namespace<cs::name_space>();
24
+ static cs::namespace_t sqlite_stmt_ext=cs::make_shared_namespace<cs::name_space>();
25
+
28
26
namespace cs_impl {
29
27
template <>
30
- cs::extension_t &get_ext<cs_impl::sqlite>()
28
+ cs::namespace_t &get_ext<cs_impl::sqlite>()
31
29
{
32
- return sqlite_ext_shared ;
30
+ return sqlite_db_ext ;
33
31
}
34
32
35
33
template <>
36
- cs::extension_t &get_ext<cs_impl::sqlite::statement>()
34
+ cs::namespace_t &get_ext<cs_impl::sqlite::statement>()
37
35
{
38
- return sqlite_stmt_ext_shared ;
36
+ return sqlite_stmt_ext ;
39
37
}
40
38
41
39
template <>
@@ -147,34 +145,41 @@ namespace sqlite_cs_ext {
147
145
return db.prepare (sql);
148
146
}
149
147
150
- void init ()
151
- {
152
- sqlite_ext.add_var (" statement" , var::make_protect<extension_t >(sqlite_stmt_ext_shared));
153
- sqlite_ext.add_var (" integer" , var::make_constant<sqlite::data_type>(sqlite::data_type::integer));
154
- sqlite_ext.add_var (" real" , var::make_constant<sqlite::data_type>(sqlite::data_type::real));
155
- sqlite_ext.add_var (" text" , var::make_constant<sqlite::data_type>(sqlite::data_type::text));
156
- sqlite_ext.add_var (" open" , var::make_protect<callable>(cni (open)));
157
- sqlite_ext.add_var (" prepare" , var::make_protect<callable>(cni (prepare)));
158
- sqlite_stmt_ext.add_var (" done" , var::make_protect<callable>(cni (done)));
159
- sqlite_stmt_ext.add_var (" reset" , var::make_protect<callable>(cni (reset)));
160
- sqlite_stmt_ext.add_var (" exec" , var::make_protect<callable>(cni (exec)));
161
- sqlite_stmt_ext.add_var (" column_count" , var::make_protect<callable>(cni (column_count)));
162
- sqlite_stmt_ext.add_var (" column_type" , var::make_protect<callable>(cni (column_type)));
163
- sqlite_stmt_ext.add_var (" column_name" , var::make_protect<callable>(cni (column_name)));
164
- sqlite_stmt_ext.add_var (" column_decltype" , var::make_protect<callable>(cni (column_decltype)));
165
- sqlite_stmt_ext.add_var (" column_integer" , var::make_protect<callable>(cni (column_integer)));
166
- sqlite_stmt_ext.add_var (" column_real" , var::make_protect<callable>(cni (column_real)));
167
- sqlite_stmt_ext.add_var (" column_text" , var::make_protect<callable>(cni (column_text)));
168
- sqlite_stmt_ext.add_var (" bind_param_count" , var::make_protect<callable>(cni (bind_param_count)));
169
- sqlite_stmt_ext.add_var (" bind_integer" , var::make_protect<callable>(cni (bind_integer)));
170
- sqlite_stmt_ext.add_var (" bind_real" , var::make_protect<callable>(cni (bind_real)));
171
- sqlite_stmt_ext.add_var (" bind_text" , var::make_protect<callable>(cni (bind_text)));
172
- sqlite_stmt_ext.add_var (" clear_bindings" , var::make_protect<callable>(cni (clear_bindings)));
148
+ void init (name_space* ns)
149
+ {
150
+ (*ns)
151
+ .add_var (" db" , make_namespace (sqlite_db_ext))
152
+ .add_var (" statement" , make_namespace (sqlite_stmt_ext))
153
+ .add_var (" integer" , var::make_constant<sqlite::data_type>(sqlite::data_type::integer))
154
+ .add_var (" real" , var::make_constant<sqlite::data_type>(sqlite::data_type::real))
155
+ .add_var (" text" , var::make_constant<sqlite::data_type>(sqlite::data_type::text))
156
+ .add_var (" open" , make_cni (open))
157
+ .add_var (" prepare" , make_cni (prepare));
158
+ (*sqlite_db_ext)
159
+ .add_var (" integer" , var::make_constant<sqlite::data_type>(sqlite::data_type::integer))
160
+ .add_var (" real" , var::make_constant<sqlite::data_type>(sqlite::data_type::real))
161
+ .add_var (" text" , var::make_constant<sqlite::data_type>(sqlite::data_type::text))
162
+ .add_var (" prepare" , make_cni (prepare));
163
+ (*sqlite_stmt_ext)
164
+ .add_var (" done" , make_cni (done))
165
+ .add_var (" reset" , make_cni (reset))
166
+ .add_var (" exec" , make_cni (exec))
167
+ .add_var (" column_count" , make_cni (column_count))
168
+ .add_var (" column_type" , make_cni (column_type))
169
+ .add_var (" column_name" , make_cni (column_name))
170
+ .add_var (" column_decltype" , make_cni (column_decltype))
171
+ .add_var (" column_integer" , make_cni (column_integer))
172
+ .add_var (" column_real" , make_cni (column_real))
173
+ .add_var (" column_text" , make_cni (column_text))
174
+ .add_var (" bind_param_count" , make_cni (bind_param_count))
175
+ .add_var (" bind_integer" , make_cni (bind_integer))
176
+ .add_var (" bind_real" , make_cni (bind_real))
177
+ .add_var (" bind_text" , make_cni (bind_text))
178
+ .add_var (" clear_bindings" , make_cni (clear_bindings));
173
179
}
174
180
}
175
181
176
- cs::extension * cs_extension ( )
182
+ void cs_extension_main ( cs::name_space* ns )
177
183
{
178
- sqlite_cs_ext::init ();
179
- return &sqlite_ext;
184
+ sqlite_cs_ext::init (ns);
180
185
}
0 commit comments