1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 08:47:17 +01:00
SqMod/module/Library/Utils/Map.cpp

43 lines
1.6 KiB
C++
Raw Normal View History

// ------------------------------------------------------------------------------------------------
#include "Library/Utils/Map.hpp"
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
SQMOD_DECL_TYPENAME(SqMapInteger, _SC("SqMapInteger"))
SQMOD_DECL_TYPENAME(SqMapString, _SC("SqMapString"))
// ------------------------------------------------------------------------------------------------
template < class T, class U >
static void Register_Map(HSQUIRRELVM vm, Table & ns, const SQChar * name)
{
using Container = SqMap< T >;
// --------------------------------------------------------------------------------------------
ns.Bind(name,
Class< Container, NoCopy< Container > >(vm, U::Str)
// Constructors
.Ctor()
// Meta-methods
.SquirrelFunc(_SC("_typename"), &U::Fn)
// Properties
.Prop(_SC("Null"), &Container::IsNull)
.Prop(_SC("Empty"), &Container::Empty)
.Prop(_SC("Size"), &Container::Size)
// Member Methods
.Func(_SC("Get"), &Container::Get)
.Func(_SC("Set"), &Container::Set)
.Func(_SC("Clear"), &Container::Clear)
.Func(_SC("Erase"), &Container::Erase)
);
}
// ================================================================================================
void Register_Map(HSQUIRRELVM vm, Table & ns)
{
Register_Map< SQInteger, SqMapInteger >(vm, ns, _SC("IntMap"));
Register_Map< String, SqMapString >(vm, ns, _SC("StrMap"));
}
} // Namespace:: SqMod