diff options
Diffstat (limited to 'libs/lua/LuaBridge/detail/Namespace.h')
-rw-r--r-- | libs/lua/LuaBridge/detail/Namespace.h | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/lua/LuaBridge/detail/Namespace.h b/libs/lua/LuaBridge/detail/Namespace.h index 07963f47db..7774b9f873 100644 --- a/libs/lua/LuaBridge/detail/Namespace.h +++ b/libs/lua/LuaBridge/detail/Namespace.h @@ -1298,6 +1298,21 @@ private: return *this; } + WSPtrClass <T>& addEqualCheck () + { + PRINTDOC("Member Function", _name << "sameinstance", std::string("bool"), std::string("void (*)(" + type_name <T>() + ")")) + set_weak_class (); + assert (lua_istable (L, -1)); + lua_pushcclosure (L, &CFunc::WPtrEqualCheck <T>::f, 0); + rawsetfield (L, -3, "isnil"); // class table + + set_shared_class (); + assert (lua_istable (L, -1)); + lua_pushcclosure (L, &CFunc::PtrEqualCheck <T>::f, 0); + rawsetfield (L, -3, "isnil"); // class table + + return *this; + } Namespace endClass () { @@ -1652,7 +1667,8 @@ public: WSPtrClass <T> beginWSPtrClass (char const* name) { return WSPtrClass <T> (name, this) - .addNullCheck(); + .addNullCheck() + .addEqualCheck(); } //---------------------------------------------------------------------------- |