summaryrefslogtreecommitdiff
path: root/libs/lua/LuaBridge/detail/Namespace.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/lua/LuaBridge/detail/Namespace.h')
-rw-r--r--libs/lua/LuaBridge/detail/Namespace.h18
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();
}
//----------------------------------------------------------------------------