mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 16:57:16 +01:00
0670a8dadf
Add basic map container.
43 lines
1.6 KiB
C++
43 lines
1.6 KiB
C++
// ------------------------------------------------------------------------------------------------
|
|
#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
|