Add IsNullVector and IsNullString natives

Let plugins check if a string or vector passed to a function is their
NULL_VECTOR or NULL_STRING.
This commit is contained in:
Peace-Maker 2017-03-03 11:45:39 -07:00
parent d705f6a2e1
commit 9fa4ed8bac
2 changed files with 39 additions and 0 deletions

View File

@ -759,6 +759,27 @@ static cell_t StoreToAddress(IPluginContext *pContext, const cell_t *params)
return 0; return 0;
} }
static cell_t IsNullVector(IPluginContext *pContext, const cell_t *params)
{
cell_t *pNullVec = pContext->GetNullRef(SP_NULL_VECTOR);
if (!pNullVec)
return 0;
cell_t *addr;
pContext->LocalToPhysAddr(params[1], &addr);
return addr == pNullVec;
}
static cell_t IsNullString(IPluginContext *pContext, const cell_t *params)
{
char *str;
if (pContext->LocalToStringNULL(params[1], &str) != SP_ERROR_NONE)
return 0;
return str == nullptr;
}
REGISTER_NATIVES(coreNatives) REGISTER_NATIVES(coreNatives)
{ {
{"ThrowError", ThrowError}, {"ThrowError", ThrowError},
@ -787,5 +808,7 @@ REGISTER_NATIVES(coreNatives)
{"RequireFeature", RequireFeature}, {"RequireFeature", RequireFeature},
{"LoadFromAddress", LoadFromAddress}, {"LoadFromAddress", LoadFromAddress},
{"StoreToAddress", StoreToAddress}, {"StoreToAddress", StoreToAddress},
{"IsNullVector", IsNullVector},
{"IsNullString", IsNullString},
{NULL, NULL}, {NULL, NULL},
}; };

View File

@ -143,6 +143,22 @@ struct SharedPlugin
public float NULL_VECTOR[3]; /**< Pass this into certain functions to act as a C++ NULL */ public float NULL_VECTOR[3]; /**< Pass this into certain functions to act as a C++ NULL */
public const char NULL_STRING[1]; /**< pass this into certain functions to act as a C++ NULL */ public const char NULL_STRING[1]; /**< pass this into certain functions to act as a C++ NULL */
/**
* Check if the given vector is the NULL_VECTOR.
*
* @param vec The vector to test.
* @return True if NULL_VECTOR, false otherwise.
*/
native bool IsNullVector(const float vec[3]);
/**
* Check if the given string is the NULL_STRING.
*
* @param str The string to test.
* @return True if NULL_STRING, false otherwise.
*/
native bool IsNullString(const char[] str);
/** /**
* Horrible compatibility shim. * Horrible compatibility shim.
*/ */