// // php-armadillo/diagonal.cc // // @Author CismonX // #include "diagonal.hh" #include "base.hh" #include "non_resizable.hh" #include "subview.hh" #include "dense.hh" // #include "sparse.hh" namespace php_arma { template PHP_ARMA_START_ME(diagonal, T, B) PHP_ARMA_ME_EX(linear, __invoke, ZEND_ACC_PUBLIC | ZEND_ACC_CALL_VIA_HANDLER) PHP_ARMA_ME_EX(linear, at, ZEND_ACC_PUBLIC) PHP_ARMA_END_ME(); template void diagonal::ce_init(zend_class_entry *parent_ce) { // TODO: edit this line when sparse is added. using parent_t = std::conditional_t, dense>; ce = class_register(parent_ce, fentry_list_concat( PHP_ARMA_FENTRY((base ::me)), PHP_ARMA_FENTRY((parent_t ::me)), PHP_ARMA_FENTRY((non_resizable::me)), PHP_ARMA_FENTRY((subview ::me)), PHP_ARMA_FENTRY(me) )); ce->create_object = object_non_constructible; declare_subview_parent(ce); object_handlers_init(&handlers); handlers.offset = sizeof(native_t); handlers.clone_obj = nullptr; handlers.count_elements = base::count_elements; } PHP_ARMA_NAME_DECLARE(diagview, "DDiagView", double); PHP_ARMA_NAME_DECLARE(diagview, "IDiagView", zend_long); PHP_ARMA_NAME_DECLARE(diagview, "CxDDiagView", cx_double); PHP_ARMA_NAME_DECLARE(spdiagview, "SpDDiagView", double); PHP_ARMA_NAME_DECLARE(spdiagview, "SpIDiagView", zend_long); PHP_ARMA_NAME_DECLARE(spdiagview, "SpCxDDiagView", cx_double); void diagonal_init() { diagonal_ce = interface_register(base_ce, non_resizable_ce, subview_ce); diagview_ce = abstract_class_register(diagonal_ce, dense_ce); diagview::ce_init(diagview_ce); diagview::ce_init(diagview_ce); diagview::ce_init(diagview_ce); // spdiagview_ce = abstract_class_register(diagonal_ce, sparse_ce); // spdiagview::ce_init(spdiagview_ce); // spdiagview::ce_init(spdiagview_ce); // spdiagview::ce_init(spdiagview_ce); } }