82 lines
4.3 KiB
C++
82 lines
4.3 KiB
C++
//
|
|
// php-armadillo/interfaces.cc
|
|
//
|
|
// @Author CismonX
|
|
//
|
|
|
|
#include "interfaces.hh"
|
|
#include "php_arma.hh"
|
|
|
|
#define N_INT "Internal\\"
|
|
|
|
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 <typename... Ts>
|
|
zend_always_inline
|
|
zend_class_entry *interface_register(const char *name, Ts... parents)
|
|
{
|
|
return ce_init(name, nullptr, zend_register_internal_class, parents...);
|
|
}
|
|
|
|
void internal_interfaces_init()
|
|
{
|
|
base_ce = interface_register(N_INT "Base");
|
|
|
|
vector_ce = interface_register(N_INT "Vector");
|
|
matrix_ce = interface_register(N_INT "Matrix");
|
|
|
|
dense_ce = interface_register(N_INT "Dense",
|
|
base_ce);
|
|
sparse_ce = interface_register(N_INT "Sparse",
|
|
base_ce);
|
|
|
|
dense_vector_ce = interface_register(N_INT "DenseVector",
|
|
vector_ce, dense_ce);
|
|
dense_matrix_ce = interface_register(N_INT "DenseMatrix",
|
|
matrix_ce, dense_ce);
|
|
sparse_vector_ce = interface_register(N_INT "SparseVector",
|
|
vector_ce, sparse_ce);
|
|
sparse_matrix_ce = interface_register(N_INT "SparseMatrix",
|
|
matrix_ce, sparse_ce);
|
|
|
|
resizable_ce = interface_register(N_INT "Resizable");
|
|
resizable_vector_ce = interface_register(N_INT "ResizableVector",
|
|
resizable_ce, vector_ce);
|
|
resizable_matrix_ce = interface_register(N_INT "ResizableMatrix",
|
|
resizable_ce, matrix_ce);
|
|
dense_resizable_vector_ce = interface_register(N_INT "DenseResizableVector",
|
|
dense_vector_ce, resizable_vector_ce);
|
|
dense_resizable_matrix_ce = interface_register(N_INT "DenseResizableMatrix",
|
|
dense_matrix_ce, resizable_matrix_ce);
|
|
sparse_resizable_vector_ce = interface_register(N_INT "SparseResizableVector",
|
|
sparse_vector_ce, resizable_vector_ce);
|
|
sparse_resizable_matrix_ce = interface_register(N_INT "SparseResizableMatrix",
|
|
sparse_matrix_ce, resizable_matrix_ce);
|
|
|
|
non_resizable_ce = interface_register(N_INT "NonResizable");
|
|
non_resizable_vector_ce = interface_register(N_INT "NonResizableVector",
|
|
non_resizable_ce);
|
|
non_resizable_matrix_ce = interface_register(N_INT "NonResizableMatrix",
|
|
non_resizable_ce);
|
|
dense_non_resizable_vector_ce = interface_register(N_INT "DenseNonResizableVector",
|
|
dense_vector_ce, non_resizable_vector_ce);
|
|
dense_non_resizable_matrix_ce = interface_register(N_INT "DenseNonResizableMatrix",
|
|
dense_matrix_ce, non_resizable_matrix_ce);
|
|
sparse_non_resizable_matrix_ce = interface_register(N_INT "SparseNonResizableMatrix",
|
|
sparse_matrix_ce, non_resizable_matrix_ce);
|
|
|
|
subview_ce = interface_register(N_INT "Subview");
|
|
diagonal_ce = interface_register(N_INT "Diagonal",
|
|
base_ce, non_resizable_ce, subview_ce);
|
|
scalar_ce = interface_register(N_INT "Scalar");
|
|
}
|
|
}
|