mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2024-11-08 00:37:15 +01:00
Fix inspection parameters.
This commit is contained in:
parent
479272d59f
commit
076d778e50
@ -304,7 +304,7 @@ void PvClass::AssignParent(const Ref & parent)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool PvClass::Can(SQInteger id) const
|
||||
bool PvClass::Can(SQInteger id, SQInteger req) const
|
||||
{
|
||||
// Get the current status of the specified entry
|
||||
SQInteger current = GetEntryValue(id);
|
||||
@ -314,7 +314,7 @@ bool PvClass::Can(SQInteger id) const
|
||||
if (!query.IsNull())
|
||||
{
|
||||
// Attempt arbitration
|
||||
LightObj r = query.Eval(current);
|
||||
LightObj r = query.Eval(current, req);
|
||||
// If NULL or false the request was denied
|
||||
if (!r.IsNull() && r.Cast< bool >())
|
||||
{
|
||||
@ -415,12 +415,12 @@ void PvClass::EachUnitID(Object & ctx, Function & func)
|
||||
}
|
||||
|
||||
// ================================================================================================
|
||||
bool SqPvClass::Can(LightObj & obj) const
|
||||
bool SqPvClass::Can(LightObj & obj, SQInteger req) const
|
||||
{
|
||||
// Entry ID?
|
||||
if (obj.GetType() == OT_INTEGER)
|
||||
{
|
||||
return Valid().Can(obj.Cast< SQInteger >());
|
||||
return Valid().Can(obj.Cast< SQInteger >(), req);
|
||||
}
|
||||
// Entry tag?
|
||||
else if (obj.GetType() == OT_STRING)
|
||||
@ -443,12 +443,12 @@ bool SqPvClass::Can(LightObj & obj) const
|
||||
// Generate and cache the hash
|
||||
tag.CacheHash();
|
||||
// Forward request
|
||||
return c.Can(c.ValidManager().GetValidEntryWithTag(tag)->mID);
|
||||
return c.Can(c.ValidManager().GetValidEntryWithTag(tag)->mID, req);
|
||||
}
|
||||
// Entry instance?
|
||||
else if (obj.GetType() == OT_INSTANCE && obj.GetTypeTag() == StaticClassTypeTag< SqPvEntry >::Get())
|
||||
{
|
||||
return Valid().Can(obj.CastI< SqPvEntry >()->Valid().mID);
|
||||
return Valid().Can(obj.CastI< SqPvEntry >()->Valid().mID, req);
|
||||
}
|
||||
STHROWF("Unknown or unsupported entry identification type (%s)", SqTypeName(obj.GetType()));
|
||||
SQ_UNREACHABLE
|
||||
|
@ -275,7 +275,7 @@ struct PvClass
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Check if this class has a certain privilege.
|
||||
*/
|
||||
SQMOD_NODISCARD bool Can(SQInteger id) const;
|
||||
SQMOD_NODISCARD bool Can(SQInteger id, SQInteger req) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* See if a unit with a certain identifier inherits this class.
|
||||
@ -354,7 +354,7 @@ struct SqPvClass
|
||||
mI.lock()->AssignParent(cls.mI.lock());
|
||||
}
|
||||
// --------------------------------------------------------------------------------------------
|
||||
bool Can(LightObj & obj) const;
|
||||
bool Can(LightObj & obj, SQInteger req) const;
|
||||
// --------------------------------------------------------------------------------------------
|
||||
void AssignPrivilegeWithID(SQInteger id, SQInteger value) { Valid().AssignPrivilege(id, value); }
|
||||
void AssignPrivilegeWithTag(StackStrF & tag, SQInteger value) { Valid().AssignPrivilege(tag, value); }
|
||||
|
@ -316,7 +316,7 @@ void PvUnit::AssignClass(const std::shared_ptr< PvClass > & cls)
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool PvUnit::Can(SQInteger id) const
|
||||
bool PvUnit::Can(SQInteger id, SQInteger req) const
|
||||
{
|
||||
// Get the current status of the specified entry
|
||||
SQInteger current = GetEntryValue(id);
|
||||
@ -326,7 +326,7 @@ bool PvUnit::Can(SQInteger id) const
|
||||
if (!query.IsNull())
|
||||
{
|
||||
// Attempt arbitration
|
||||
LightObj r = query.Eval(current);
|
||||
LightObj r = query.Eval(current, req);
|
||||
// If NULL or false the request was denied
|
||||
if (!r.IsNull() && r.Cast< bool >())
|
||||
{
|
||||
@ -372,12 +372,12 @@ inline void SqPvUnit::SetClass(const SqPvClass & cls) const
|
||||
LightObj SqPvUnit::GetManager() const { return LightObj(ValidCls().mManager); }
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
bool SqPvUnit::Can(LightObj & obj) const
|
||||
bool SqPvUnit::Can(LightObj & obj, SQInteger req) const
|
||||
{
|
||||
// Entry ID?
|
||||
if (obj.GetType() == OT_INTEGER)
|
||||
{
|
||||
return Valid().Can(obj.Cast< SQInteger >());
|
||||
return Valid().Can(obj.Cast< SQInteger >(), req);
|
||||
}
|
||||
// Entry tag?
|
||||
else if (obj.GetType() == OT_STRING)
|
||||
@ -400,12 +400,12 @@ bool SqPvUnit::Can(LightObj & obj) const
|
||||
// Generate and cache the hash
|
||||
tag.CacheHash();
|
||||
// Forward request
|
||||
return u.Can(u.ValidManager().GetValidEntryWithTag(tag)->mID);
|
||||
return u.Can(u.ValidManager().GetValidEntryWithTag(tag)->mID, req);
|
||||
}
|
||||
// Entry instance?
|
||||
else if (obj.GetType() == OT_INSTANCE && obj.GetTypeTag() == StaticClassTypeTag< SqPvEntry >::Get())
|
||||
{
|
||||
return Valid().Can(obj.CastI< SqPvEntry >()->Valid().mID);
|
||||
return Valid().Can(obj.CastI< SqPvEntry >()->Valid().mID, req);
|
||||
}
|
||||
STHROWF("Unknown or unsupported entry identification type (%s)", SqTypeName(obj.GetType()));
|
||||
SQ_UNREACHABLE
|
||||
|
@ -248,7 +248,7 @@ struct PvUnit
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Check if this unit has a certain privilege.
|
||||
*/
|
||||
SQMOD_NODISCARD bool Can(SQInteger id) const;
|
||||
SQMOD_NODISCARD bool Can(SQInteger id, SQInteger req) const;
|
||||
|
||||
/* --------------------------------------------------------------------------------------------
|
||||
* Invoke a given callback with every owned entry identifier.
|
||||
@ -300,7 +300,7 @@ struct SqPvUnit
|
||||
// --------------------------------------------------------------------------------------------
|
||||
SQMOD_NODISCARD LightObj GetManager() const;
|
||||
// --------------------------------------------------------------------------------------------
|
||||
bool Can(LightObj & obj) const;
|
||||
bool Can(LightObj & obj, SQInteger req) const;
|
||||
// --------------------------------------------------------------------------------------------
|
||||
void AssignPrivilegeWithID(SQInteger id, SQInteger value) { Valid().AssignPrivilege(id, value); }
|
||||
void AssignPrivilegeWithTag(StackStrF & tag, SQInteger value) { Valid().AssignPrivilege(tag, value); }
|
||||
|
Loading…
Reference in New Issue
Block a user