1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-01-31 09:57:14 +01:00

Add a helper function to iterate over the elements in a script object more efficiently and easier.

This commit is contained in:
Sandu Liviu Catalin 2017-06-19 14:06:35 +03:00
parent c17a54b907
commit 641fa973e0

View File

@ -499,6 +499,30 @@ public:
} }
} }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Used to go through all the slots in an Object (same limitations as sq_next)
///
/// \param func Functor that is continuously called to process values on the stack
///
/// \tparam F Type of functor (usually doesnt need to be defined explicitly)
///
/// \return Nothing
///
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
template<class F>
void Foreach(F&& func) const
{
sq_pushobject(vm,obj);
sq_pushnull(vm);
while(SQ_SUCCEEDED(sq_next(vm,-2)))
{
func(vm); // -1 is the value and -2 is the key
sq_pop(vm,2); // Pop the key and value
}
// Pop the null iterator and the object
sq_pop(vm,2);
}
protected: protected:
/// @cond DEV /// @cond DEV