1818* Github: https://github.com/mikecovlee
1919*/
2020#include < sqlite/sqlite.hpp>
21- #include < covscript/cni.hpp>
2221#include < covscript/extension.hpp>
2322
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+
2826namespace cs_impl {
2927 template <>
30- cs::extension_t &get_ext<cs_impl::sqlite>()
28+ cs::namespace_t &get_ext<cs_impl::sqlite>()
3129 {
32- return sqlite_ext_shared ;
30+ return sqlite_db_ext ;
3331 }
3432
3533 template <>
36- cs::extension_t &get_ext<cs_impl::sqlite::statement>()
34+ cs::namespace_t &get_ext<cs_impl::sqlite::statement>()
3735 {
38- return sqlite_stmt_ext_shared ;
36+ return sqlite_stmt_ext ;
3937 }
4038
4139 template <>
@@ -147,34 +145,41 @@ namespace sqlite_cs_ext {
147145 return db.prepare (sql);
148146 }
149147
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));
173179 }
174180}
175181
176- cs::extension * cs_extension ( )
182+ void cs_extension_main ( cs::name_space* ns )
177183{
178- sqlite_cs_ext::init ();
179- return &sqlite_ext;
184+ sqlite_cs_ext::init (ns);
180185}
0 commit comments