// // php-armadillo/shared_methods.cc // // @Author CismonX // #include "shared_methods.hh" #include "mapval.hh" #include "diagonal.hh" namespace php_arma { template PHP_ARMA_METHOD(linear_element_acccess, __invoke, T, ChildT) { zend_long i; ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_LONG(i) ZEND_PARSE_PARAMETERS_END(); auto native = THIS_NATIVE; auto parent = get_parent_zval(&EX(This)); zend_object *zobj; try { zobj = mapval_dense::create(parent, &native->operator()(i)); } catch (const std::logic_error& err) { // Index out of bounds. throw_exception(err.what()); return; } RETVAL_OBJ(zobj); } template PHP_ARMA_METHOD(linear_element_acccess, at, T, ChildT) { zend_long i; ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_LONG(i) ZEND_PARSE_PARAMETERS_END(); auto native = THIS_NATIVE; auto parent = get_parent_zval(&EX(This)); auto zobj = mapval_dense::create(parent, &native->operator[](i)); RETVAL_OBJ(zobj); } PHP_ARMA_INSTANTIATE(linear_element_acccess, diagview); }