update
This commit is contained in:
parent
8163e4af9d
commit
1461b148b2
|
@ -1,2 +1,6 @@
|
|||
# ext-armadillo
|
||||
PHP binding for Armadillo.
|
||||
# php-armadillo
|
||||
|
||||
[![Travis-CI](https://travis-ci.org/CismonX/php-armadillo.svg?branch=master)](https://travis-ci.org/CismonX/php-armadillo)
|
||||
[![MIT license](https://img.shields.io/badge/licence-MIT-blue.svg)](https://opensource.org/licenses/MIT)
|
||||
|
||||
PHP bindings for Armadillo.
|
||||
|
|
|
@ -90,7 +90,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR(double, add)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -105,7 +105,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR_ASSIGN(double, add)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -120,7 +120,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR(double, sub)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -135,7 +135,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR_ASSIGN(double, sub)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -150,7 +150,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR(double, mul)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -165,7 +165,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR_ASSIGN(double, mul)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -180,7 +180,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR(double, div)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -195,7 +195,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR_ASSIGN(double, div)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -210,7 +210,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR(double, pow)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -225,7 +225,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR_ASSIGN(double, pow)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -240,7 +240,7 @@ namespace php_arma
|
|||
return false;
|
||||
}
|
||||
|
||||
PHP_ARMA_OPERATOR_BEGIN(Z_OBJCE_P(zv1), complex_ce)
|
||||
PHP_ARMA_OPERATOR_BEGIN(zv1, complex_ce)
|
||||
PHP_ARMA_COMPLEX_OPERATOR(double, conj)
|
||||
PHP_ARMA_OPERATOR_END();
|
||||
|
||||
|
@ -248,18 +248,29 @@ namespace php_arma
|
|||
});
|
||||
}
|
||||
|
||||
template <typename... Ts>
|
||||
zend_always_inline
|
||||
void set_op_handlers(Ts... op_handlers)
|
||||
{
|
||||
for (auto [opcode, handler] : { op_handlers... }) {
|
||||
zend_set_user_opcode_handler(opcode, handler);
|
||||
}
|
||||
}
|
||||
|
||||
void operators_init()
|
||||
{
|
||||
zend_set_user_opcode_handler(ZEND_ADD, add_handler);
|
||||
zend_set_user_opcode_handler(ZEND_ASSIGN_ADD, add_assign_handler);
|
||||
zend_set_user_opcode_handler(ZEND_SUB, sub_handler);
|
||||
zend_set_user_opcode_handler(ZEND_ASSIGN_SUB, sub_assign_handler);
|
||||
zend_set_user_opcode_handler(ZEND_MUL, mul_handler);
|
||||
zend_set_user_opcode_handler(ZEND_ASSIGN_MUL, mul_assign_handler);
|
||||
zend_set_user_opcode_handler(ZEND_DIV, div_handler);
|
||||
zend_set_user_opcode_handler(ZEND_ASSIGN_DIV, div_assign_handler);
|
||||
zend_set_user_opcode_handler(ZEND_POW, pow_handler);
|
||||
zend_set_user_opcode_handler(ZEND_ASSIGN_POW, pow_assign_handler);
|
||||
zend_set_user_opcode_handler(ZEND_BW_NOT, bw_not_handler);
|
||||
set_op_handlers(
|
||||
std::tuple(ZEND_ADD, add_handler),
|
||||
std::tuple(ZEND_ASSIGN_ADD, add_assign_handler),
|
||||
std::tuple(ZEND_SUB, sub_handler),
|
||||
std::tuple(ZEND_ASSIGN_SUB, sub_assign_handler),
|
||||
std::tuple(ZEND_MUL, mul_handler),
|
||||
std::tuple(ZEND_ASSIGN_MUL, mul_assign_handler),
|
||||
std::tuple(ZEND_DIV, div_handler),
|
||||
std::tuple(ZEND_ASSIGN_DIV, div_assign_handler),
|
||||
std::tuple(ZEND_POW, pow_handler),
|
||||
std::tuple(ZEND_ASSIGN_POW, pow_assign_handler),
|
||||
std::tuple(ZEND_BW_NOT, bw_not_handler)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
// @Author CismonX
|
||||
//
|
||||
|
||||
#ifndef PHP_ARMA_OPERATOR_HH
|
||||
#define PHP_ARMA_OPERATOR_HH
|
||||
#ifndef PHP_ARMA_OPERATORS_HH
|
||||
#define PHP_ARMA_OPERATORS_HH
|
||||
|
||||
namespace php_arma
|
||||
{
|
||||
void operators_init();
|
||||
}
|
||||
|
||||
#endif // !PHP_ARMA_OPERATOR_HH
|
||||
#endif // !PHP_ARMA_OPERATORS_HH
|
||||
|
|
|
@ -69,9 +69,9 @@ extern zend_module_entry arma_module_entry;
|
|||
|
||||
/// Helper macros for handling operator overloading.
|
||||
|
||||
#define PHP_ARMA_OPERATOR_BEGIN(ce, parent_ce) \
|
||||
#define PHP_ARMA_OPERATOR_BEGIN(zv, parent_ce) \
|
||||
{ \
|
||||
auto _ce = ce; \
|
||||
auto _ce = Z_OBJCE_P(zv); \
|
||||
if (instanceof_function(_ce, parent_ce)) {
|
||||
|
||||
#define PHP_ARMA_OPERATOR_END() \
|
||||
|
|
Reference in New Issue