// // php-armadillo/interfaces.hh // // @Author CismonX // #ifndef PHP_ARMA_INTERFACES_HH #define PHP_ARMA_INTERFACES_HH #include "php_arma.hh" namespace php_arma { zend_always_inline zend_class_entry *interface_register(const char *name) { // Although methods are declared in interfaces as you see in the stubs, // nothing is declared in the internal interface implementation. return ce_init(name, nullptr, zend_register_internal_class); } template zend_class_entry *interface_register(const char *name, Ts... parents) { return ce_init(name, nullptr, zend_register_internal_class, parents...); } void internal_interfaces_init(); extern zend_class_entry *base_ce; extern zend_class_entry *vector_ce, *matrix_ce; extern zend_class_entry *dense_ce, *sparse_ce; extern zend_class_entry *dense_vector_ce, *dense_matrix_ce; extern zend_class_entry *sparse_vector_ce, *sparse_matrix_ce; extern zend_class_entry *resizable_ce; extern zend_class_entry *resizable_vector_ce, *resizable_matrix_ce; extern zend_class_entry *dense_resizable_vector_ce, *dense_resizable_matrix_ce; extern zend_class_entry *sparse_resizable_vector_ce, *sparse_resizable_matrix_ce; extern zend_class_entry *non_resizable_ce; extern zend_class_entry *non_resizable_vector_ce, *non_resizable_matrix_ce; extern zend_class_entry *dense_non_resizable_vector_ce, *dense_non_resizable_matrix_ce; extern zend_class_entry *sparse_non_resizable_matrix_ce; extern zend_class_entry *subview_ce; extern zend_class_entry *diagonal_ce; extern zend_class_entry *scalar_ce; } #endif //!PHP_ARMA_INTERFACES_HH