This repository has been archived on 2020-06-07. You can view files and clone it, but cannot push or open issues or pull requests.
php-armadillo/src/mat.cc

58 lines
1.7 KiB
C++

//
// php-armadillo/mat.cc
//
// @Author CismonX
//
#include "mat.hh"
#include "constants.hh"
#include "base.hh"
#include "dense.hh"
#include "matrix.hh"
#include "dense_matrix.hh"
#include "resizable.hh"
#include "resizable_matrix.hh"
#include "dense_resizable_matrix.hh"
namespace php_arma
{
template <typename T>
PHP_ARMA_START_ME(mat, T)
PHP_ARMA_END_ME();
template <typename T>
void mat<T>::ce_init(zend_class_entry *parent_ce)
{
ce = class_register<php_name::val>(parent_ce, fentry_list_concat(
PHP_ARMA_FENTRY((base <T, mat>::me)),
PHP_ARMA_FENTRY((dense <T, mat>::me)),
PHP_ARMA_FENTRY((matrix <T, mat>::me)),
PHP_ARMA_FENTRY((dense_matrix <T, mat>::me)),
PHP_ARMA_FENTRY((resizable <T, mat>::me)),
PHP_ARMA_FENTRY((resizable_matrix <T, mat>::me)),
PHP_ARMA_FENTRY((dense_resizable_matrix<T, mat>::me)),
PHP_ARMA_FENTRY(me)
));
ce->create_object = object_non_constructible;
object_handlers_init(&handlers);
handlers.offset = sizeof(native_t);
handlers.clone_obj = nullptr;
handlers.dtor_obj = object_destroy<native_t>;
handlers.count_elements = base<T, mat>::count_elements;
}
PHP_ARMA_NAME_DECLARE(mat, "DMat", double);
PHP_ARMA_NAME_DECLARE(mat, "IMat", zend_long);
PHP_ARMA_NAME_DECLARE(mat, "CxDMat", cx_double);
void mat_init()
{
mat_ce = abstract_class_register<mat_php_name>(dense_resizable_matrix_ce);
mat<double >::ce_init(mat_ce);
mat<zend_long>::ce_init(mat_ce);
mat<cx_double>::ce_init(mat_ce);
}
}