Lua_icxx  1.02 (Aug 2011)
luaFuncCalls.h
00001 /*
00002 This file is part of the Lua_icxx library. 
00003 Copyright 2010 (c) by Oliver Schoenborn. 
00004 License terms in LICENSE.txt.
00005 */
00006 
00007 
00008 #pragma once
00009 
00010 #ifndef LUA_ICXX_FUNC_CALLS_INCLUDED
00011 #define LUA_ICXX_FUNC_CALLS_INCLUDED
00012 
00013 
00014 #define DECL_FN_CALL_1(METH, T_ARG)                                                                      template <typename T_ARG>                                                                                                                                          inline LuaTempResult METH  (const T_ARG& ) const
00015 #define DECL_FN_CALL_2(METH, T_ARG1, T_ARG2)                                                             template <typename T_ARG1, typename T_ARG2>                                                                                                                        inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&) const
00016 #define DECL_FN_CALL_3(METH, T_ARG1, T_ARG2, T_ARG3)                                                     template <typename T_ARG1, typename T_ARG2, typename T_ARG3>                                                                                                       inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&) const
00017 #define DECL_FN_CALL_4(METH, T_ARG1, T_ARG2, T_ARG3, T_ARG4)                                             template <typename T_ARG1, typename T_ARG2, typename T_ARG3, typename T_ARG4>                                                                                      inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&, const T_ARG4&) const
00018 #define DECL_FN_CALL_5(METH, T_ARG1, T_ARG2, T_ARG3, T_ARG4, T_ARG5)                                     template <typename T_ARG1, typename T_ARG2, typename T_ARG3, typename T_ARG4, typename T_ARG5>                                                                     inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&, const T_ARG4&, const T_ARG5&) const
00019 #define DECL_FN_CALL_6(METH, T_ARG1, T_ARG2, T_ARG3, T_ARG4, T_ARG5, T_ARG6)                             template <typename T_ARG1, typename T_ARG2, typename T_ARG3, typename T_ARG4, typename T_ARG5, typename T_ARG6>                                                    inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&, const T_ARG4&, const T_ARG5&, const T_ARG6&) const
00020 #define DECL_FN_CALL_7(METH, T_ARG1, T_ARG2, T_ARG3, T_ARG4, T_ARG5, T_ARG6, T_ARG7)                     template <typename T_ARG1, typename T_ARG2, typename T_ARG3, typename T_ARG4, typename T_ARG5, typename T_ARG6, typename T_ARG7>                                   inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&, const T_ARG4&, const T_ARG5&, const T_ARG6&, const T_ARG7&) const
00021 #define DECL_FN_CALL_8(METH, T_ARG1, T_ARG2, T_ARG3, T_ARG4, T_ARG5, T_ARG6, T_ARG7, T_ARG8)             template <typename T_ARG1, typename T_ARG2, typename T_ARG3, typename T_ARG4, typename T_ARG5, typename T_ARG6, typename T_ARG7, typename T_ARG8>                  inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&, const T_ARG4&, const T_ARG5&, const T_ARG6&, const T_ARG7&, const T_ARG8&) const
00022 #define DECL_FN_CALL_9(METH, T_ARG1, T_ARG2, T_ARG3, T_ARG4, T_ARG5, T_ARG6, T_ARG7, T_ARG8, T_ARG9)     template <typename T_ARG1, typename T_ARG2, typename T_ARG3, typename T_ARG4, typename T_ARG5, typename T_ARG6, typename T_ARG7, typename T_ARG8, typename T_ARG9> inline LuaTempResult METH  (const T_ARG1&, const T_ARG2&, const T_ARG3&, const T_ARG4&, const T_ARG5&, const T_ARG6&, const T_ARG7&, const T_ARG8&, const T_ARG9&) const
00023 #define DECL_FN_CALLS(METH)  \
00024     inline LuaTempResult METH () const;                                \
00025     DECL_FN_CALL_1(METH, TT1);                                         \
00026     DECL_FN_CALL_2(METH, TT1, TT2);                                    \
00027     DECL_FN_CALL_3(METH, TT1, TT2, TT3);                               \
00028     DECL_FN_CALL_4(METH, TT1, TT2, TT3, TT4);                          \
00029     DECL_FN_CALL_5(METH, TT1, TT2, TT3, TT4, TT5);                     \
00030     DECL_FN_CALL_6(METH, TT1, TT2, TT3, TT4, TT5, TT6);                \
00031     DECL_FN_CALL_7(METH, TT1, TT2, TT3, TT4, TT5, TT6, TT7);           \
00032     DECL_FN_CALL_8(METH, TT1, TT2, TT3, TT4, TT5, TT6, TT7, TT8);      \
00033     DECL_FN_CALL_9(METH, TT1, TT2, TT3, TT4, TT5, TT6, TT7, TT8, TT9)  
00034 
00035 
00036 #define DEF_FN_CALL_0(CLASS_METH, BODY) inline LuaTempResult CLASS_METH() const { return BODY; }
00037 #define DEF_FN_CALL_1(CLASS_METH, BODY) template <typename TT1>                                                                                                                 inline LuaTempResult CLASS_METH( const TT1& arg1 ) const                                                                                                                                         { return BODY; }
00038 #define DEF_FN_CALL_2(CLASS_METH, BODY) template <typename TT1, typename TT2>                                                                                                   inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2 ) const                                                                                                                        { return BODY; }
00039 #define DEF_FN_CALL_3(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3>                                                                                     inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3 ) const                                                                                                       { return BODY; }
00040 #define DEF_FN_CALL_4(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3, typename TT4>                                                                       inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3, const TT4& arg4 ) const                                                                                      { return BODY; }
00041 #define DEF_FN_CALL_5(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3, typename TT4, typename TT5>                                                         inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3, const TT4& arg4, const TT5& arg5 ) const                                                                     { return BODY; }
00042 #define DEF_FN_CALL_6(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3, typename TT4, typename TT5, typename TT6>                                           inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3, const TT4& arg4, const TT5& arg5, const TT6& arg6 ) const                                                    { return BODY; }
00043 #define DEF_FN_CALL_7(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3, typename TT4, typename TT5, typename TT6, typename TT7>                             inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3, const TT4& arg4, const TT5& arg5, const TT6& arg6, const TT7& arg7 ) const                                   { return BODY; }
00044 #define DEF_FN_CALL_8(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3, typename TT4, typename TT5, typename TT6, typename TT7, typename TT8>               inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3, const TT4& arg4, const TT5& arg5, const TT6& arg6, const TT7& arg7, const TT8& arg8 ) const                  { return BODY; }
00045 #define DEF_FN_CALL_9(CLASS_METH, BODY) template <typename TT1, typename TT2, typename TT3, typename TT4, typename TT5, typename TT6, typename TT7, typename TT8, typename TT9> inline LuaTempResult CLASS_METH( const TT1& arg1, const TT2& arg2, const TT3& arg3, const TT4& arg4, const TT5& arg5, const TT6& arg6, const TT7& arg7, const TT8& arg8, const TT9& arg9 ) const { return BODY; } 
00046 
00047 
00048 #endif // LUA_ICXX_FUNC_CALLS_INCLUDED