1818* Github: https://github.com/mikecovlee
1919*/
2020#include < regex>
21- #include < covscript/cni.hpp>
2221#include < covscript/extension.hpp>
2322
24- static cs::extension regex_ext;
25- static cs::extension regex_result_ext;
26- static cs::extension_t regex_ext_shared = cs::make_shared_namespace(regex_ext);
27- static cs::extension_t regex_result_ext_shared = cs::make_shared_namespace(regex_result_ext);
23+ static cs::namespace_t regex_ext=cs::make_shared_namespace<cs::name_space>();
24+ static cs::namespace_t regex_result_ext=cs::make_shared_namespace<cs::name_space>();
25+
2826namespace cs_impl {
2927 template <>
30- cs::extension_t &get_ext<std::regex>()
28+ cs::namespace_t &get_ext<std::regex>()
3129 {
32- return regex_ext_shared ;
30+ return regex_ext ;
3331 }
3432
3533 template <>
36- cs::extension_t &get_ext<std::smatch>()
34+ cs::namespace_t &get_ext<std::smatch>()
3735 {
38- return regex_result_ext_shared ;
36+ return regex_result_ext ;
3937 }
4038
4139 template <>
@@ -117,26 +115,31 @@ namespace regex_cs_ext {
117115 return m.suffix ().str ();
118116 }
119117
120- void init ()
121- {
122- regex_ext.add_var (" result" , var::make_protect<extension_t >(regex_result_ext_shared));
123- regex_ext.add_var (" build" , var::make_protect<callable>(cni (build)));
124- regex_ext.add_var (" match" , var::make_protect<callable>(cni (match)));
125- regex_ext.add_var (" search" , var::make_protect<callable>(cni (search)));
126- regex_ext.add_var (" replace" , var::make_protect<callable>(cni (replace)));
127- regex_result_ext.add_var (" ready" , var::make_protect<callable>(cni (ready)));
128- regex_result_ext.add_var (" empty" , var::make_protect<callable>(cni (empty)));
129- regex_result_ext.add_var (" size" , var::make_protect<callable>(cni (size)));
130- regex_result_ext.add_var (" length" , var::make_protect<callable>(cni (length)));
131- regex_result_ext.add_var (" position" , var::make_protect<callable>(cni (position)));
132- regex_result_ext.add_var (" str" , var::make_protect<callable>(cni (str)));
133- regex_result_ext.add_var (" prefix" , var::make_protect<callable>(cni (prefix)));
134- regex_result_ext.add_var (" suffix" , var::make_protect<callable>(cni (suffix)));
118+ void init (name_space* ns)
119+ {
120+ (*ns)
121+ .add_var (" result" , make_namespace (regex_result_ext))
122+ .add_var (" build" , make_cni (build))
123+ .add_var (" match" , make_cni (match))
124+ .add_var (" search" , make_cni (search))
125+ .add_var (" replace" , make_cni (replace));
126+ (*regex_ext)
127+ .add_var (" match" , make_cni (match))
128+ .add_var (" search" , make_cni (search))
129+ .add_var (" replace" , make_cni (replace));
130+ (*regex_result_ext)
131+ .add_var (" ready" , make_cni (ready))
132+ .add_var (" empty" , make_cni (empty))
133+ .add_var (" size" , make_cni (size))
134+ .add_var (" length" , make_cni (length))
135+ .add_var (" position" , make_cni (position))
136+ .add_var (" str" , make_cni (str))
137+ .add_var (" prefix" , make_cni (prefix))
138+ .add_var (" suffix" , make_cni (suffix));
135139 }
136140}
137141
138- cs::extension * cs_extension ( )
142+ void cs_extension_main ( cs::name_space* ns )
139143{
140- regex_cs_ext::init ();
141- return ®ex_ext;
144+ regex_cs_ext::init (ns);
142145}
0 commit comments