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/diagonal.hh

57 lines
1.4 KiB
C++

//
// php-armadillo/diagonal.hh
//
// @Author CismonX
//
#ifndef PHP_ARMA_DIAGONAL_HH
#define PHP_ARMA_DIAGONAL_HH
#include "common/php_arma.hh"
#include "common/instantiable.hh"
#include "complex.hh"
#include "linear_element_access.hh"
namespace php_arma
{
template <typename T> struct mat;
template <typename T, bool IsSparse>
struct diagonal : instantiable<diagonal<T, IsSparse>, true>
{
using native_t = std::conditional_t<IsSparse, arma::spdiagview<T>, arma::diagview<T>>;
using orig_t = mat<T>;
using subview_t = mat<T>;
using with_int_elem_t = mat<zend_long>;
friend void diagonal_init();
PHP_ARMA_CE_HANDLRES_DECLARE();
private:
PHP_ARMA_COMMON_DECLARE();
using linear = linear_element_access<T, diagonal>;
static void ce_init(zend_class_entry*);
};
template <typename T>
using diagview = diagonal<T, false>;
template <typename T>
using spdiagview = diagonal<T, true>;
void diagonal_init();
constexpr const char diagonal_php_name[] = "Diagonal";
constexpr const char diagview_php_name[] = "DiagView";
constexpr const char spdiagview_php_name[] = "SpDiagView";
inline zend_class_entry *diagonal_ce;
inline zend_class_entry *diagview_ce;
inline zend_class_entry *spdiagview_ce;
}
#endif // !PHP_ARMA_DIAGONAL_HH