From fc98eaf2a00e000841cb16d962f83c118e4824c2 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Sat, 13 Jul 2013 12:58:22 -0700 Subject: gras: added comments and renamed tmpl args --- include/gras/detail/callable.hpp | 320 +++++++++++++++++++-------------------- include/gras/detail/factory.hpp | 160 ++++++++++---------- 2 files changed, 240 insertions(+), 240 deletions(-) (limited to 'include/gras/detail') diff --git a/include/gras/detail/callable.hpp b/include/gras/detail/callable.hpp index 7a82a45..68766fe 100644 --- a/include/gras/detail/callable.hpp +++ b/include/gras/detail/callable.hpp @@ -70,490 +70,490 @@ void Callable::register_call(const std::string &name, void(ClassType::*fcn)()) /*********************************************************************** * Registration for return with 1 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl1 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &); CallableRegistryEntryImpl1(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 1) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl1(obj, fcn); + void *fr = new CallableRegistryEntryImpl1(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid1 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &); + typedef void(ClassType::*Fcn)(const A0 &); CallableRegistryEntryImplVoid1(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 1) throw a; - (_obj->*_fcn)(a[0].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid1(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid1(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 2 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl2 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &); CallableRegistryEntryImpl2(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 2) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl2(obj, fcn); + void *fr = new CallableRegistryEntryImpl2(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid2 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &); CallableRegistryEntryImplVoid2(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 2) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid2(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid2(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 3 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl3 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &); CallableRegistryEntryImpl3(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 3) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl3(obj, fcn); + void *fr = new CallableRegistryEntryImpl3(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid3 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &); CallableRegistryEntryImplVoid3(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 3) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid3(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid3(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 4 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl4 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &); CallableRegistryEntryImpl4(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 4) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl4(obj, fcn); + void *fr = new CallableRegistryEntryImpl4(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid4 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &); CallableRegistryEntryImplVoid4(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 4) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid4(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid4(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 5 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl5 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &); CallableRegistryEntryImpl5(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 5) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl5(obj, fcn); + void *fr = new CallableRegistryEntryImpl5(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid5 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &); CallableRegistryEntryImplVoid5(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 5) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid5(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid5(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 6 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl6 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &); CallableRegistryEntryImpl6(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 6) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl6(obj, fcn); + void *fr = new CallableRegistryEntryImpl6(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid6 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &); CallableRegistryEntryImplVoid6(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 6) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid6(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid6(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 7 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl7 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &); CallableRegistryEntryImpl7(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 7) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl7(obj, fcn); + void *fr = new CallableRegistryEntryImpl7(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid7 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &); CallableRegistryEntryImplVoid7(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 7) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid7(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid7(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 8 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl8 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &); CallableRegistryEntryImpl8(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 8) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl8(obj, fcn); + void *fr = new CallableRegistryEntryImpl8(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid8 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &); CallableRegistryEntryImplVoid8(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 8) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid8(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid8(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 9 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl9 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &); CallableRegistryEntryImpl9(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 9) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl9(obj, fcn); + void *fr = new CallableRegistryEntryImpl9(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid9 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &); CallableRegistryEntryImplVoid9(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 9) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid9(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid9(obj, fcn); _register_call(name, fr); } /*********************************************************************** * Registration for return with 10 args **********************************************************************/ -template +template struct CallableRegistryEntryImpl10 : CallableRegistryEntry { - typedef ReturnType(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &); + typedef ReturnType(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &); CallableRegistryEntryImpl10(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 10) throw a; - return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as(), a[9].safe_as())); + return PMC_M((_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as(), a[9].safe_as())); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &)) +template +void Callable::register_call(const std::string &name, ReturnType(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImpl10(obj, fcn); + void *fr = new CallableRegistryEntryImpl10(obj, fcn); _register_call(name, fr); } -template +template struct CallableRegistryEntryImplVoid10 : CallableRegistryEntry { - typedef void(ClassType::*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &); + typedef void(ClassType::*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &); CallableRegistryEntryImplVoid10(ClassType *obj, Fcn fcn): _obj(obj), _fcn(fcn){} PMCC call(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 10) throw a; - (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as(), a[9].safe_as()); return PMCC(); + (_obj->*_fcn)(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as(), a[9].safe_as()); return PMCC(); } ClassType *_obj; Fcn _fcn; }; -template -void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &)) +template +void Callable::register_call(const std::string &name, void(ClassType::*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &)) { ClassType *obj = dynamic_cast(this); - void *fr = new CallableRegistryEntryImplVoid10(obj, fcn); + void *fr = new CallableRegistryEntryImplVoid10(obj, fcn); _register_call(name, fr); } @@ -578,8 +578,8 @@ void Callable::x(const std::string &name) /*********************************************************************** * Call implementations with 1 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0) +template +ReturnType Callable::x(const std::string &name, const A0 &a0) { PMCList args(1); args[0] = PMC_M(a0); @@ -587,8 +587,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0) return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0) +template +void Callable::x(const std::string &name, const A0 &a0) { PMCList args(1); args[0] = PMC_M(a0); @@ -598,8 +598,8 @@ void Callable::x(const std::string &name, const Arg0 &a0) /*********************************************************************** * Call implementations with 2 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1) { PMCList args(2); args[0] = PMC_M(a0); @@ -608,8 +608,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1) return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1) { PMCList args(2); args[0] = PMC_M(a0); @@ -620,8 +620,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1) /*********************************************************************** * Call implementations with 3 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2) { PMCList args(3); args[0] = PMC_M(a0); @@ -631,8 +631,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2) { PMCList args(3); args[0] = PMC_M(a0); @@ -644,8 +644,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 4 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3) { PMCList args(4); args[0] = PMC_M(a0); @@ -656,8 +656,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3) { PMCList args(4); args[0] = PMC_M(a0); @@ -670,8 +670,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 5 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) { PMCList args(5); args[0] = PMC_M(a0); @@ -683,8 +683,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) { PMCList args(5); args[0] = PMC_M(a0); @@ -698,8 +698,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 6 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5) { PMCList args(6); args[0] = PMC_M(a0); @@ -712,8 +712,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5) { PMCList args(6); args[0] = PMC_M(a0); @@ -728,8 +728,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 7 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6) { PMCList args(7); args[0] = PMC_M(a0); @@ -743,8 +743,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6) { PMCList args(7); args[0] = PMC_M(a0); @@ -760,8 +760,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 8 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7) { PMCList args(8); args[0] = PMC_M(a0); @@ -776,8 +776,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7) { PMCList args(8); args[0] = PMC_M(a0); @@ -794,8 +794,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 9 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7, const Arg8 &a8) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) { PMCList args(9); args[0] = PMC_M(a0); @@ -811,8 +811,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7, const Arg8 &a8) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) { PMCList args(9); args[0] = PMC_M(a0); @@ -830,8 +830,8 @@ void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const /*********************************************************************** * Call implementations with 10 args **********************************************************************/ -template -ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7, const Arg8 &a8, const Arg9 &a9) +template +ReturnType Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9) { PMCList args(10); args[0] = PMC_M(a0); @@ -848,8 +848,8 @@ ReturnType Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, return r.safe_as(); } -template -void Callable::x(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7, const Arg8 &a8, const Arg9 &a9) +template +void Callable::x(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9) { PMCList args(10); args[0] = PMC_M(a0); diff --git a/include/gras/detail/factory.hpp b/include/gras/detail/factory.hpp index 6570da4..a2de116 100644 --- a/include/gras/detail/factory.hpp +++ b/include/gras/detail/factory.hpp @@ -45,240 +45,240 @@ void Factory::register_make(const std::string &name, ReturnType(*fcn)()) /*********************************************************************** * Templated registration - 1 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl1 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &); + typedef ReturnType(*Fcn)(const A0 &); FactoryRegistryEntryImpl1(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 1) throw a; - return _fcn(a[0].safe_as()); + return _fcn(a[0].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &)) { - void *r = new FactoryRegistryEntryImpl1(fcn); + void *r = new FactoryRegistryEntryImpl1(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 2 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl2 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &); FactoryRegistryEntryImpl2(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 2) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &)) { - void *r = new FactoryRegistryEntryImpl2(fcn); + void *r = new FactoryRegistryEntryImpl2(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 3 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl3 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &); FactoryRegistryEntryImpl3(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 3) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &)) { - void *r = new FactoryRegistryEntryImpl3(fcn); + void *r = new FactoryRegistryEntryImpl3(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 4 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl4 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &); FactoryRegistryEntryImpl4(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 4) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &)) { - void *r = new FactoryRegistryEntryImpl4(fcn); + void *r = new FactoryRegistryEntryImpl4(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 5 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl5 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &); FactoryRegistryEntryImpl5(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 5) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &)) { - void *r = new FactoryRegistryEntryImpl5(fcn); + void *r = new FactoryRegistryEntryImpl5(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 6 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl6 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &); FactoryRegistryEntryImpl6(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 6) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &)) { - void *r = new FactoryRegistryEntryImpl6(fcn); + void *r = new FactoryRegistryEntryImpl6(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 7 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl7 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &); FactoryRegistryEntryImpl7(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 7) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &)) { - void *r = new FactoryRegistryEntryImpl7(fcn); + void *r = new FactoryRegistryEntryImpl7(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 8 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl8 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &); FactoryRegistryEntryImpl8(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 8) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &)) { - void *r = new FactoryRegistryEntryImpl8(fcn); + void *r = new FactoryRegistryEntryImpl8(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 9 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl9 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &); FactoryRegistryEntryImpl9(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 9) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &)) { - void *r = new FactoryRegistryEntryImpl9(fcn); + void *r = new FactoryRegistryEntryImpl9(fcn); Factory::_register_make(name, r); } /*********************************************************************** * Templated registration - 10 args **********************************************************************/ -template +template struct FactoryRegistryEntryImpl10 : FactoryRegistryEntry { - typedef ReturnType(*Fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &); + typedef ReturnType(*Fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &); FactoryRegistryEntryImpl10(Fcn fcn):_fcn(fcn){} Element *make(const PMCC &args) { const PMCList &a = args.as(); if (a.size() < 10) throw a; - return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as(), a[9].safe_as()); + return _fcn(a[0].safe_as(), a[1].safe_as(), a[2].safe_as(), a[3].safe_as(), a[4].safe_as(), a[5].safe_as(), a[6].safe_as(), a[7].safe_as(), a[8].safe_as(), a[9].safe_as()); } Fcn _fcn; }; -template -void Factory::register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &)) +template +void Factory::register_make(const std::string &name, ReturnType(*fcn)(const A0 &, const A1 &, const A2 &, const A3 &, const A4 &, const A5 &, const A6 &, const A7 &, const A8 &, const A9 &)) { - void *r = new FactoryRegistryEntryImpl10(fcn); + void *r = new FactoryRegistryEntryImpl10(fcn); Factory::_register_make(name, r); } @@ -292,16 +292,16 @@ Element *Factory::make(const std::string &name) return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0) +template +Element *Factory::make(const std::string &name, const A0 &a0) { PMCList args(1); args[0] = PMC_M(a0); return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1) { PMCList args(2); args[0] = PMC_M(a0); @@ -309,8 +309,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1) return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2) { PMCList args(3); args[0] = PMC_M(a0); @@ -319,8 +319,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3) { PMCList args(4); args[0] = PMC_M(a0); @@ -330,8 +330,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4) { PMCList args(5); args[0] = PMC_M(a0); @@ -342,8 +342,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5) { PMCList args(6); args[0] = PMC_M(a0); @@ -355,8 +355,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6) { PMCList args(7); args[0] = PMC_M(a0); @@ -369,8 +369,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7) { PMCList args(8); args[0] = PMC_M(a0); @@ -384,8 +384,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7, const Arg8 &a8) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8) { PMCList args(9); args[0] = PMC_M(a0); @@ -400,8 +400,8 @@ Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, return Factory::_handle_make(name, PMC_M(args)); } -template -Element *Factory::make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2, const Arg3 &a3, const Arg4 &a4, const Arg5 &a5, const Arg6 &a6, const Arg7 &a7, const Arg8 &a8, const Arg9 &a9) +template +Element *Factory::make(const std::string &name, const A0 &a0, const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 &a5, const A6 &a6, const A7 &a7, const A8 &a8, const A9 &a9) { PMCList args(10); args[0] = PMC_M(a0); -- cgit