Merge pull request #213 from splewis/find-array-nonzero-blocks
Add block parameter to FindValueInArray native.
This commit is contained in:
parent
6fb9e1b30e
commit
784f9f4993
@ -550,9 +550,22 @@ static cell_t FindValueInArray(IPluginContext *pContext, const cell_t *params)
|
|||||||
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
return pContext->ThrowNativeError("Invalid Handle %x (error: %d)", params[1], err);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the blocknumber is not guaranteed to always be passed
|
||||||
|
size_t blocknumber = 0;
|
||||||
|
if (params[0] >= 3)
|
||||||
|
{
|
||||||
|
blocknumber = (size_t) params[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (blocknumber >= array->blocksize())
|
||||||
|
{
|
||||||
|
return pContext->ThrowNativeError("Invalid block %d (blocksize: %d)", blocknumber, array->blocksize());
|
||||||
|
}
|
||||||
|
|
||||||
for (unsigned int i = 0; i < array->size(); i++)
|
for (unsigned int i = 0; i < array->size(); i++)
|
||||||
{
|
{
|
||||||
if (params[2] == *array->at(i))
|
cell_t *blk = array->at(i);
|
||||||
|
if (params[2] == blk[blocknumber])
|
||||||
{
|
{
|
||||||
return (cell_t) i;
|
return (cell_t) i;
|
||||||
}
|
}
|
||||||
|
@ -202,8 +202,10 @@ methodmap ArrayList < Handle {
|
|||||||
// value cannot be located, -1 will be returned.
|
// value cannot be located, -1 will be returned.
|
||||||
//
|
//
|
||||||
// @param item Value to search for
|
// @param item Value to search for
|
||||||
|
// @param block Optionally which block to search in
|
||||||
// @return Array index, or -1 on failure
|
// @return Array index, or -1 on failure
|
||||||
public native int FindValue(any item);
|
// @error Invalid block index
|
||||||
|
public native int FindValue(any item, int block=0);
|
||||||
|
|
||||||
// Retrieve the size of the array.
|
// Retrieve the size of the array.
|
||||||
property int Length {
|
property int Length {
|
||||||
@ -431,7 +433,8 @@ native int FindStringInArray(Handle array, const char[] item);
|
|||||||
*
|
*
|
||||||
* @param array Array Handle.
|
* @param array Array Handle.
|
||||||
* @param item Value to search for
|
* @param item Value to search for
|
||||||
|
* @param block Optionally which block to search in
|
||||||
* @return Array index, or -1 on failure
|
* @return Array index, or -1 on failure
|
||||||
* @error Invalid Handle
|
* @error Invalid Handle or invalid block
|
||||||
*/
|
*/
|
||||||
native int FindValueInArray(Handle array, any item);
|
native int FindValueInArray(Handle array, any item, int block=0);
|
||||||
|
Loading…
Reference in New Issue
Block a user