18
18
* Github: https://github.com/mikecovlee
19
19
*/
20
20
#include < regex>
21
- #include < covscript/cni.hpp>
22
21
#include < covscript/extension.hpp>
23
22
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
+
28
26
namespace cs_impl {
29
27
template <>
30
- cs::extension_t &get_ext<std::regex>()
28
+ cs::namespace_t &get_ext<std::regex>()
31
29
{
32
- return regex_ext_shared ;
30
+ return regex_ext ;
33
31
}
34
32
35
33
template <>
36
- cs::extension_t &get_ext<std::smatch>()
34
+ cs::namespace_t &get_ext<std::smatch>()
37
35
{
38
- return regex_result_ext_shared ;
36
+ return regex_result_ext ;
39
37
}
40
38
41
39
template <>
@@ -117,26 +115,31 @@ namespace regex_cs_ext {
117
115
return m.suffix ().str ();
118
116
}
119
117
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));
135
139
}
136
140
}
137
141
138
- cs::extension * cs_extension ( )
142
+ void cs_extension_main ( cs::name_space* ns )
139
143
{
140
- regex_cs_ext::init ();
141
- return ®ex_ext;
144
+ regex_cs_ext::init (ns);
142
145
}
0 commit comments