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:
parent
d705f6a2e1
commit
9fa4ed8bac
@ -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},
|
||||||
};
|
};
|
||||||
|
@ -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.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user