diff options
Diffstat (limited to 'libs/lua/LuaBridge/detail/Namespace.h')
-rw-r--r-- | libs/lua/LuaBridge/detail/Namespace.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libs/lua/LuaBridge/detail/Namespace.h b/libs/lua/LuaBridge/detail/Namespace.h index 590f25be4a..79a0786d40 100644 --- a/libs/lua/LuaBridge/detail/Namespace.h +++ b/libs/lua/LuaBridge/detail/Namespace.h @@ -1048,6 +1048,22 @@ private: return *this; } + template <class U> + Class <T>& addCast (char const* name) + { + PRINTDOC("Cast", _name << name, + type_name< U >(), + type_name< U >() << " (" << type_name< T >() << "::*)()") + + assert (lua_istable (L, -1)); + lua_pushcclosure (L, &CFunc::CastClass <T, U>::f, 0); + rawsetfield (L, -3, name); // class table + + lua_pushcclosure (L, &CFunc::CastConstClass <T, U>::f, 0); + rawsetfield (L, -4, name); // const table + return *this; + } + }; /** C Array to/from table */ |