Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cell AMX_NATIVE_CALL algo_all_of(AMX* amx, cell* params)
- {
- cell* start = NULL;
- amx_GetAddr(amx, params[1], &start);
- cell* end = start + params[2];
- error_if(end < start, "[PLE] algorithm>> all_of: 'numcells' paramter (%d) below zero", params[2]);
- cell* func = NULL;
- amx_GetAddr(amx, params[3], &func);
- functionID fid(func);
- error_if(!fid.IsFunctionValid(1), "[PLE] algorithm>> all_of: function object 'func' is not valid");
- while (start != end)
- {
- if (!ExecuteFunctionCC1O2(amx, &fid, *start, func)) return false;
- start++;
- }
- return true;
- }
- l ExecuteFunctionCC1O2(AMX *amx, functionID *fid, cell cparam, cell oparam[])
- {
- cell retval = 0;
- switch (fid->type)
- {
- case FUNCTION_ID_TYPE_PUBLIC:
- {
- switch (fid->argc)
- {
- case 1:
- amx_Push(amx, cparam);
- break;
- case 2:
- if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
- {
- amx_Push(amx, cparam);
- amx_Push(amx, oparam[2]);
- }
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- {
- amx_Push(amx, oparam[3]);
- amx_Push(amx, cparam);
- }
- break;
- }
- amx_Exec(amx, &retval, fid->address);
- break;
- }
- case FUNCTION_ID_TYPE_DEFAULT:
- {
- switch (fid->argc)
- {
- case 1:
- retval = unary_functions[fid->address](cparam);
- break;
- case 2:
- if (fid->IsFlagSet(FUNCTION_FLAG_BIND1))
- retval = binary_functions[fid->address](oparam[2], cparam);
- else if (fid->IsFlagSet(FUNCTION_FLAG_BIND2))
- retval = binary_functions[fid->address](cparam, oparam[3]);
- break;
- }
- break;
- }
- }
- if (fid->IsFlagSet(FUNCTION_FLAG_NOT)) return !retval;
- return retval;
- }
Add Comment
Please, Sign In to add comment