summaryrefslogtreecommitdiff
path: root/include/gras/factory.hpp
diff options
context:
space:
mode:
authorJosh Blum2013-07-13 11:23:41 -0700
committerJosh Blum2013-07-13 11:23:41 -0700
commit92c8b4646d77d569480d7c3120a00df6a9645aba (patch)
tree4b8543b56f57352d4656e140c10a765423326ea8 /include/gras/factory.hpp
parentf99744a072d97c83f5a7da6c0626a38475c4fc44 (diff)
downloadsandhi-92c8b4646d77d569480d7c3120a00df6a9645aba.tar.gz
sandhi-92c8b4646d77d569480d7c3120a00df6a9645aba.tar.bz2
sandhi-92c8b4646d77d569480d7c3120a00df6a9645aba.zip
gras: work on generator scripts for template madness
Diffstat (limited to 'include/gras/factory.hpp')
-rw-r--r--include/gras/factory.hpp52
1 files changed, 47 insertions, 5 deletions
diff --git a/include/gras/factory.hpp b/include/gras/factory.hpp
index 52ed881..b60b1e7 100644
--- a/include/gras/factory.hpp
+++ b/include/gras/factory.hpp
@@ -37,7 +37,7 @@ struct GRAS_API Factory
* Register API - don't look here, template magic, not helpful
******************************************************************/
template <typename ReturnType>
- static void register_make(const std::string &name, ReturnType(*fcn)(void));
+ static void register_make(const std::string &name, ReturnType(*fcn)());
template <typename ReturnType, typename Arg0>
static void register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &));
@@ -48,20 +48,62 @@ struct GRAS_API Factory
template <typename ReturnType, typename Arg0, typename Arg1, typename Arg2>
static void register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &));
+ template <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3>
+ static void register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &));
+
+ template <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ static void register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &));
+
+ template <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+ static void register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &));
+
+ template <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
+ static void register_make(const std::string &name, ReturnType(*fcn)(const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &));
+
+ template <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7>
+ static void 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 <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7, typename Arg8>
+ static void 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 <typename ReturnType, typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7, typename Arg8, typename Arg9>
+ static void 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 &));
+
/*******************************************************************
* Make API - don't look here, template magic, not helpful
- ******************************************************************/
+ ******************************************************************/;
inline
static Element *make(const std::string &name);
template <typename Arg0>
- static Element *make(const std::string &name, const Arg0 &a0);
+ static Element *make(const std::string &name, const Arg0 &);
template <typename Arg0, typename Arg1>
- static Element *make(const std::string &name, const Arg0 &a0, const Arg1 &a1);
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &);
template <typename Arg0, typename Arg1, typename Arg2>
- static Element *make(const std::string &name, const Arg0 &a0, const Arg1 &a1, const Arg2 &a2);
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7, typename Arg8>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &);
+
+ template <typename Arg0, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5, typename Arg6, typename Arg7, typename Arg8, typename Arg9>
+ static Element *make(const std::string &name, const Arg0 &, const Arg1 &, const Arg2 &, const Arg3 &, const Arg4 &, const Arg5 &, const Arg6 &, const Arg7 &, const Arg8 &, const Arg9 &);
/*******************************************************************
* Private registration hooks