68 static scope& subs() {
return _get()._subs; }
70 static me& extend(
const scope&
src) {
87 template <
typename... Args>
static me&
ctor() {
91 template <
typename Ret,
typename... Args>
static me&
func(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
92 return funcNonConst(name,
fptr);
95 template <
typename Ret,
typename... Args>
98 template <
typename Ret,
typename... Args>
99 static me&
func(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
100 return funcConst(name,
fptr);
103 template <
typename Ret,
typename... Args>
104 static me&
func(
const std::string* name,
Ret (T::*
fptr)(Args...)
const)
107 template <
typename Ret,
typename... Args>
108 static me& funcNonConst(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
112 template <
typename Ret,
typename... Args>
113 static me& funcNonConst(
const std::string* name,
Ret (T::*
fptr)(Args...))
116 template <
typename Ret,
typename... Args>
117 static me& funcConst(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
121 template <
typename Ret,
typename... Args>
122 static me& funcConst(
const std::string* name,
Ret (T::*
fptr)(Args...)
const)
127 template <
typename... Args>
static me& genericCtor() {
131 template <
typename Ret,
typename... Args>
132 static me& genericFunc(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
136 template <
typename Ret,
typename... Args>
137 static me& genericFunc(
const std::string* name,
Ret (T::*
fptr)(Args...))
140 template <
typename Ret,
typename... Args>
141 static me& genericFunc(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
146 template <
typename Ret,
typename... Args>
147 static me& genericFunc(
const std::string* name,
Ret (T::*
fptr)(Args...)
const)
150 template <
typename Ret,
typename... Args>
151 static me& genericFuncNonConst(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
156 template <
typename Ret,
typename... Args>
157 static me& genericFuncNonConst(
const std::string* name,
Ret (T::*
fptr)(Args...))
160 template <
typename Ret,
typename... Args>
161 static me& genericFuncConst(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
166 template <
typename Ret,
typename... Args>
167 static me& genericFuncConst(
const std::string* name,
Ret (T::*
fptr)(Args...)
const)
170 template <
typename Ret,
typename T1 = T,
typename... Args>
171 static me&
closure(
const std::string& name, std::function<
Ret(
T1&, Args...)>
c) {
175 template <
typename Ret,
typename T1 = T,
typename... Args>
176 static me&
closure(
const std::string* name, std::function<
Ret(
T1&, Args...)>
c)
179 template <
typename Ret,
typename T1 = T>
180 static me&
closure(
const std::string& name, std::function<
Ret(
T1&)>
c) {
184 template <
typename Ret,
typename T1 = T>
185 static me&
closure(
const std::string* name, std::function<
Ret(
T1&)>
c)
207 static scope& subs() {
return _get()._subs; }
209 static me& extend(
const scope&
src) {
223 template <
typename... Args>
static me&
ctor() {
231 template <
typename Ret,
typename T1 = T,
typename... Args>
232 static me&
closure(
const std::string& name, std::function<
Ret(
T1&, Args...)>
c) {
236 template <
typename Ret,
typename T1 = T>
237 static me&
closure(
const std::string& name, std::function<
Ret(
T1&)>
c) {
241 template <
typename Ret,
typename... Args>
static me&
func(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
242 return funcNonConst(name,
fptr);
245 template <
typename Ret,
typename... Args>
246 static me&
func(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
247 return funcConst(name,
fptr);
250 template <
typename Ret,
typename... Args>
251 static me& funcNonConst(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
255 template <
typename Ret,
typename... Args>
256 static me& funcConst(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
257 typedef typename T::super s;
259 fun->setSrc(*
new src(dumSrcFile::singleton(), name,
point{0, 0}));
260 return func(name, fun);
263 template <
typename Ret,
typename... Args>
264 static me& genericFunc(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
266 fun->setSrc(*
new src(dumSrcFile::singleton(), name,
point{0, 0}));
267 return func(name, fun);
270 template <
typename Ret,
typename... Args>
271 static me& genericFuncNonConst(
const std::string& name,
Ret (T::*
fptr)(Args...)) {
273 fun->setSrc(*
new src(dumSrcFile::singleton(), name,
point{0, 0}));
274 return func(name, fun);
277 template <
typename Ret,
typename... Args>
278 static me& genericFunc(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
280 fun->setSrc(*
new src(dumSrcFile::singleton(), name,
point{0, 0}));
281 return func(name, fun);
284 template <
typename Ret,
typename... Args>
285 static me& genericFuncConst(
const std::string& name,
Ret (T::*
fptr)(Args...)
const) {
287 fun->setSrc(*
new src(dumSrcFile::singleton(), name,
point{0, 0}));
288 return func(name, fun);