1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2024-11-08 16:57:16 +01:00
SqMod/module/Core/Privilege/Entry.cpp

67 lines
2.5 KiB
C++
Raw Normal View History

// ------------------------------------------------------------------------------------------------
#include "Core/Privilege/Entry.hpp"
#include "Core/Privilege.hpp"
// ------------------------------------------------------------------------------------------------
namespace SqMod {
// ------------------------------------------------------------------------------------------------
SQMOD_DECL_TYPENAME(EntryTn, _SC("SqPrivilegeEntry"))
// ------------------------------------------------------------------------------------------------
void PvEntry::SetTag(StackStrF & tag)
{
mTag = std::move(tag);
// Hash the name and cache it (the name hash is cached in .mRes member variable)
mTag.CacheHash();
// Propagate this change to the manager as well
if (mManager)
{
mManager->UpdateEntryHash(mID, static_cast< size_t >(mTag.mRes));
}
}
// ------------------------------------------------------------------------------------------------
void PvEntry::Release()
{
mTag.Release();
mOnQuery.Release();
mOnModify.Release();
mOnGained.Release();
mOnLost.Release();
mData.Release();
mBrief.Release();
mInfo.Release();
}
// ================================================================================================
void Register_Privilege_Entry(HSQUIRRELVM vm, Table & ns)
{
ns.Bind(_SC("Entry"),
Class< SqPvEntry, NoConstructor< SqPvEntry > >(vm, EntryTn::Str)
// Meta-methods
.SquirrelFunc(_SC("_typename"), &EntryTn::Fn)
.Func(_SC("_tostring"), &SqPvEntry::ToString)
// Core Properties
.Prop(_SC("ID"), &SqPvEntry::GetID)
.Prop(_SC("Tag"), &SqPvEntry::GetTag, &SqPvEntry::SetTag)
.Prop(_SC("Data"), &SqPvEntry::GetData, &SqPvEntry::SetData)
.Prop(_SC("Manager"), &SqPvEntry::GetManager)
.Prop(_SC("Brief"), &SqPvEntry::GetBrief, &SqPvEntry::SetBrief)
.Prop(_SC("Info"), &SqPvEntry::GetInfo, &SqPvEntry::SetInfo)
.Prop(_SC("Default"), &SqPvEntry::GetDefault, &SqPvEntry::SetDefault)
// Core Methods
.FmtFunc(_SC("SetTag"), &SqPvEntry::ApplyTag)
.CbFunc(_SC("OnQuery"), &SqPvEntry::SetOnQuery)
.CbFunc(_SC("OnModify"), &SqPvEntry::SetOnModify)
.CbFunc(_SC("OnLost"), &SqPvEntry::SetOnLost)
.CbFunc(_SC("OnGained"), &SqPvEntry::SetOnGained)
// Member Methods
.FmtFunc(_SC("SetBrief"), &SqPvEntry::ApplyBrief)
.FmtFunc(_SC("SetInfo"), &SqPvEntry::ApplyInfo)
// Raw functions
);
}
} // Namespace:: SqMod