2019-03-14 15:04:34 +00:00
|
|
|
//
|
|
|
|
// php-armadillo/interfaces.hh
|
|
|
|
//
|
|
|
|
// @Author CismonX
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef PHP_ARMA_INTERFACES_HH
|
|
|
|
#define PHP_ARMA_INTERFACES_HH
|
|
|
|
|
2019-03-18 14:49:42 +00:00
|
|
|
#include "php_arma.hh"
|
2019-03-14 15:04:34 +00:00
|
|
|
|
|
|
|
namespace php_arma
|
|
|
|
{
|
2019-03-18 14:49:42 +00:00
|
|
|
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 <typename... Ts>
|
|
|
|
zend_class_entry *interface_register(const char *name, Ts... parents)
|
|
|
|
{
|
|
|
|
return ce_init(name, nullptr, zend_register_internal_class, parents...);
|
|
|
|
}
|
|
|
|
|
2019-03-14 15:04:34 +00:00
|
|
|
void internal_interfaces_init();
|
|
|
|
|
2019-03-18 14:49:42 +00:00
|
|
|
extern zend_class_entry *base_ce;
|
2019-03-14 15:04:34 +00:00
|
|
|
|
2019-03-18 14:49:42 +00:00
|
|
|
extern zend_class_entry *vector_ce, *matrix_ce;
|
2019-03-14 15:04:34 +00:00
|
|
|
|
2019-03-18 14:49:42 +00:00
|
|
|
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;
|
2019-03-14 15:04:34 +00:00
|
|
|
|
|
|
|
extern zend_class_entry *resizable_ce;
|
2019-03-18 14:49:42 +00:00
|
|
|
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;
|
2019-03-14 15:04:34 +00:00
|
|
|
|
|
|
|
extern zend_class_entry *subview_ce;
|
|
|
|
extern zend_class_entry *diagonal_ce;
|
|
|
|
extern zend_class_entry *scalar_ce;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif //!PHP_ARMA_INTERFACES_HH
|