From 565b533be55f5e2aadf110fffdf5fe384ed0f771 Mon Sep 17 00:00:00 2001 From: CismonX Date: Thu, 19 Mar 2020 15:32:33 +0800 Subject: [PATCH] add `isZero()` --- src/base.cc | 24 +++++++++++++++++++++++- src/base.hh | 1 + 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/base.cc b/src/base.cc index fe8a4d9..e634be7 100644 --- a/src/base.cc +++ b/src/base.cc @@ -110,7 +110,7 @@ namespace php_arma Z_PARAM_ZVAL(new_value) ZEND_PARSE_PARAMETERS_END(); - if (UNEXPECTED(!zval_check_scalar(old_value) || !zval_check_scalar(new_value) )) { + if (!zval_check_scalar(old_value) || !zval_check_scalar(new_value)) { return; } @@ -233,6 +233,27 @@ namespace php_arma RETVAL_BOOL(native->is_finite()); } + template + 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::result; + if (!zval_check_scalar(tol)) { + return; + } + RETVAL_BOOL(native->is_zero(zval_get_scalar(tol))); + } + template 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) diff --git a/src/base.hh b/src/base.hh index eeec6e9..0e92146 100644 --- a/src/base.hh +++ b/src/base.hh @@ -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);