mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 08:47:17 +01:00
Include a few other extra methods.
This commit is contained in:
parent
9e0071567e
commit
f661d13d24
@ -22,8 +22,11 @@ void Register_Dictionary(HSQUIRRELVM vm, Table & ns)
|
|||||||
.Prop(_SC("Size"), &SqDictionary::Size)
|
.Prop(_SC("Size"), &SqDictionary::Size)
|
||||||
// Member Methods
|
// Member Methods
|
||||||
.Func(_SC("Get"), &SqDictionary::Get)
|
.Func(_SC("Get"), &SqDictionary::Get)
|
||||||
.Func(_SC("Set"), &SqDictionary::Set)
|
|
||||||
.Func(_SC("GetOr"), &SqDictionary::GetOr)
|
.Func(_SC("GetOr"), &SqDictionary::GetOr)
|
||||||
|
.Func(_SC("Set"), &SqDictionary::Set)
|
||||||
|
.Func(_SC("SetOr"), &SqDictionary::SetOr)
|
||||||
|
.Func(_SC("Update"), &SqDictionary::Update)
|
||||||
|
.Func(_SC("Create"), &SqDictionary::Create)
|
||||||
.Func(_SC("Clear"), &SqDictionary::Clear)
|
.Func(_SC("Clear"), &SqDictionary::Clear)
|
||||||
.Func(_SC("Erase"), &SqDictionary::Erase)
|
.Func(_SC("Erase"), &SqDictionary::Erase)
|
||||||
.Func(_SC("Contains"), &SqDictionary::Contains)
|
.Func(_SC("Contains"), &SqDictionary::Contains)
|
||||||
|
@ -166,18 +166,77 @@ struct SqDictionary
|
|||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
* Modify a value from the container.
|
* Modify a value from the container.
|
||||||
*/
|
*/
|
||||||
void Set(SqKeyHash k, LightObj & v)
|
bool Set(SqKeyHash k, LightObj & v)
|
||||||
{
|
{
|
||||||
for (auto & e : mC)
|
for (auto & e : mC)
|
||||||
{
|
{
|
||||||
if (e.first == k.mH)
|
if (e.first == k.mH)
|
||||||
{
|
{
|
||||||
e.second = std::move(v);
|
e.second = std::move(v);
|
||||||
return; // We updated existing element
|
// We updated the element
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Create the element now
|
// Create the element now
|
||||||
mC.emplace_back(k.mH, std::move(v));
|
mC.emplace_back(k.mH, std::move(v));
|
||||||
|
// We created the element
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Modify a value from the container. Use different values for update and create.
|
||||||
|
*/
|
||||||
|
bool SetOr(SqKeyHash k, LightObj & a, LightObj & b)
|
||||||
|
{
|
||||||
|
for (auto & e : mC)
|
||||||
|
{
|
||||||
|
if (e.first == k.mH)
|
||||||
|
{
|
||||||
|
e.second = std::move(a);
|
||||||
|
// We updated the element
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Create the element now
|
||||||
|
mC.emplace_back(k.mH, std::move(b));
|
||||||
|
// We created the element
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Update a value from the container. Does not create one if it doesn't exist.
|
||||||
|
*/
|
||||||
|
bool Update(SqKeyHash k, LightObj & v)
|
||||||
|
{
|
||||||
|
for (auto & e : mC)
|
||||||
|
{
|
||||||
|
if (e.first == k.mH)
|
||||||
|
{
|
||||||
|
e.second = std::move(v);
|
||||||
|
// We updated the element
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// No element was updated
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
* Create a value in the container. Does not update value from existing element.
|
||||||
|
*/
|
||||||
|
bool Create(SqKeyHash k, LightObj & v)
|
||||||
|
{
|
||||||
|
for (auto & e : mC)
|
||||||
|
{
|
||||||
|
if (e.first == k.mH)
|
||||||
|
{
|
||||||
|
return false; // No element was created
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Create the element now
|
||||||
|
mC.emplace_back(k.mH, std::move(v));
|
||||||
|
// We created the element
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------------------------------
|
/* --------------------------------------------------------------------------------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user