add `isZero()`

This commit is contained in:
CismonX 2020-03-19 15:32:33 +08:00
parent c7c04e5e65
commit 565b533be5
2 changed files with 24 additions and 1 deletions

View File

@ -110,7 +110,7 @@ namespace php_arma
Z_PARAM_ZVAL(new_value)
ZEND_PARSE_PARAMETERS_END();
if (UNEXPECTED(!zval_check_scalar<T>(old_value) || !zval_check_scalar<T>(new_value) )) {
if (!zval_check_scalar<T>(old_value) || !zval_check_scalar<T>(new_value)) {
return;
}
@ -233,6 +233,27 @@ namespace php_arma
RETVAL_BOOL(native->is_finite());
}
template <typename T, typename T1>
PHP_ARMA_METHOD(base, isZero, T, T1)
{
zval *tol = nullptr;
ZEND_PARSE_PARAMETERS_START(0, 1)
Z_PARAM_OPTIONAL
Z_PARAM_ZVAL(tol)
ZEND_PARSE_PARAMETERS_END();
auto native = THIS_NATIVE;
if (tol == nullptr) {
RETURN_BOOL(native->is_zero());
}
using base_t = typename arma::get_pod_type<T>::result;
if (!zval_check_scalar<base_t>(tol)) {
return;
}
RETVAL_BOOL(native->is_zero(zval_get_scalar<base_t>(tol)));
}
template <typename T, typename T1>
PHP_ARMA_METHOD(base, hasInf, T, T1)
{
@ -328,6 +349,7 @@ namespace php_arma
PHP_ARMA_ME(indexMax, ZEND_ACC_PUBLIC)
PHP_ARMA_ME(isEmpty, ZEND_ACC_PUBLIC)
PHP_ARMA_ME(isFinite, ZEND_ACC_PUBLIC)
PHP_ARMA_ME(isZero, ZEND_ACC_PUBLIC)
PHP_ARMA_ME(hasInf, ZEND_ACC_PUBLIC)
PHP_ARMA_ME(hasNan, ZEND_ACC_PUBLIC)
PHP_ARMA_ME(print, ZEND_ACC_PUBLIC)

View File

@ -149,6 +149,7 @@ namespace php_arma
static PHP_FUNCTION(indexMax);
static PHP_FUNCTION(isEmpty);
static PHP_FUNCTION(isFinite);
static PHP_FUNCTION(isZero);
static PHP_FUNCTION(hasInf);
static PHP_FUNCTION(hasNan);
static PHP_FUNCTION(print);