Add IsPackEnded native (IsPackReadable replacement)

This commit is contained in:
Valentin Grünbacher 2015-03-30 03:56:26 +02:00
parent 9d4c02f7ca
commit 9abe6cd8f6
2 changed files with 25 additions and 0 deletions

View File

@ -197,6 +197,19 @@ static cell AMX_NATIVE_CALL SetPackPosition(AMX* amx, cell* params)
return 1; return 1;
} }
static cell AMX_NATIVE_CALL IsPackEnded(AMX* amx, cell* params)
{
CDataPack *d = g_DataPackHandles.lookup(params[1]);
if (d == NULL)
{
LogError(amx, AMX_ERR_NATIVE, "Invalid datapack handle provided (%d)", params[1]);
return 0;
}
return d->IsReadable(1) ? false : true;
}
static cell AMX_NATIVE_CALL DestroyDataPack(AMX* amx, cell* params) static cell AMX_NATIVE_CALL DestroyDataPack(AMX* amx, cell* params)
{ {
cell *ptr = get_amxaddr(amx, params[1]); cell *ptr = get_amxaddr(amx, params[1]);
@ -230,6 +243,7 @@ AMX_NATIVE_INFO g_DatapackNatives[] =
{ "ResetPack", ResetPack }, { "ResetPack", ResetPack },
{ "GetPackPosition", GetPackPosition }, { "GetPackPosition", GetPackPosition },
{ "SetPackPosition", SetPackPosition }, { "SetPackPosition", SetPackPosition },
{ "IsPackEnded", IsPackEnded },
{ "DestroyDataPack", DestroyDataPack }, { "DestroyDataPack", DestroyDataPack },
{NULL, NULL} {NULL, NULL}
}; };

View File

@ -141,6 +141,17 @@ native GetPackPosition(DataPack:pack);
*/ */
native SetPackPosition(DataPack:pack, position); native SetPackPosition(DataPack:pack, position);
/**
* Returns if the datapack has reached its end and no more data can be read.
*
* @param pack Datapack handle
*
* @return True if datapack has reached the end, false otherwise
* @error If an invalid handle is provided, or the new position is
* out of datapack bounds, an error will be thrown.
*/
native bool:IsPackEnded(DataPack:pack);
/** /**
* Destroys the datapack and frees its memory. * Destroys the datapack and frees its memory.
* *