From 242d6be1febb31cde848f324c0e10d81709d6d18 Mon Sep 17 00:00:00 2001 From: Sandu Liviu Catalin Date: Tue, 15 Nov 2016 21:43:18 +0200 Subject: [PATCH] Implement the pure typename meta-methods in Command types using the standard method. --- source/Command.cpp | 26 +++++++------------------- source/Command.hpp | 10 ---------- 2 files changed, 7 insertions(+), 29 deletions(-) diff --git a/source/Command.cpp b/source/Command.cpp index fd07783a..b7c49dd2 100644 --- a/source/Command.cpp +++ b/source/Command.cpp @@ -12,20 +12,8 @@ Controllers Controller::s_Controllers; Listener * Listener::s_Head = nullptr; // ------------------------------------------------------------------------------------------------ -SQInteger Manager::Typename(HSQUIRRELVM vm) -{ - static const SQChar name[] = _SC("SqCmdManager"); - sq_pushstring(vm, name, sizeof(name)); - return 1; -} - -// ------------------------------------------------------------------------------------------------ -SQInteger Listener::Typename(HSQUIRRELVM vm) -{ - static const SQChar name[] = _SC("SqCmdListener"); - sq_pushstring(vm, name, sizeof(name)); - return 1; -} +SQMODE_DECL_TYPENAME(ManagerTypename, _SC("SqCmdManager")) +SQMODE_DECL_TYPENAME(ListenerTypename, _SC("SqCmdListener")) // ------------------------------------------------------------------------------------------------ Guard::Guard(const CtrRef & ctr, Object & invoker) @@ -1036,10 +1024,10 @@ void Register(HSQUIRRELVM vm) Table cmdns(vm); cmdns.Bind(_SC("Manager"), - Class< Manager, NoCopy< Manager > >(vm, _SC("SqCmdManager")) + Class< Manager, NoCopy< Manager > >(vm, ManagerTypename::Str) // Meta-methods - .Func(_SC("_cmp"), &Manager::Cmp) - .SquirrelFunc(_SC("_typename"), &Manager::Typename) + .SquirrelFunc(_SC("_typename"), &ManagerTypename::Fn) + .Func(_SC("cmp"), &Manager::Cmp) .Func(_SC("_tostring"), &Manager::ToString) // Member Properties .Prop(_SC("Count"), &Manager::GetCount) @@ -1074,7 +1062,7 @@ void Register(HSQUIRRELVM vm) ); cmdns.Bind(_SC("Listener"), - Class< Listener, NoCopy< Listener > >(vm, _SC("SqCmdListener")) + Class< Listener, NoCopy< Listener > >(vm, ListenerTypename::Str) // Constructors .Ctor< CSStr >() .Ctor< CSStr, CSStr >() @@ -1085,8 +1073,8 @@ void Register(HSQUIRRELVM vm) .Ctor< CSStr, CSStr, Array &, Uint8, Uint8, SQInteger, bool >() .Ctor< CSStr, CSStr, Array &, Uint8, Uint8, SQInteger, bool, bool >() // Meta-methods + .SquirrelFunc(_SC("_typename"), &ListenerTypename::Fn) .Func(_SC("_cmp"), &Listener::Cmp) - .SquirrelFunc(_SC("_typename"), &Listener::Typename) .Func(_SC("_tostring"), &Listener::ToString) // Member Properties .Prop(_SC("References"), &Listener::GetRefCount) diff --git a/source/Command.hpp b/source/Command.hpp index 9aeac60a..7c1d6996 100644 --- a/source/Command.hpp +++ b/source/Command.hpp @@ -869,11 +869,6 @@ public: return ToStrF("%d", m_Controller.Count()); } - /* -------------------------------------------------------------------------------------------- - * Used by the script engine to retrieve the name from instances of this type. - */ - static SQInteger Typename(HSQUIRRELVM vm); - /* -------------------------------------------------------------------------------------------- * Retrieve the associated controller reference. */ @@ -1335,11 +1330,6 @@ public: return m_Name; } - /* -------------------------------------------------------------------------------------------- - * Used by the script engine to retrieve the name from instances of this type. - */ - static SQInteger Typename(HSQUIRRELVM vm); - /* -------------------------------------------------------------------------------------------- * Retrieve the number of weak references to the managed controller. */