49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
//
|
|
// php-armadillo/subview_val.hh
|
|
//
|
|
// @Author CismonX
|
|
//
|
|
|
|
#ifndef PHP_ARMA_SVVAL_HH
|
|
#define PHP_ARMA_SVVAL_HH
|
|
|
|
#include "php_arma.hh"
|
|
|
|
#include <armadillo>
|
|
|
|
namespace php_arma
|
|
{
|
|
template <typename T, bool IsSparse, bool IsSubview>
|
|
struct subview_val
|
|
{
|
|
using sp_svval_t = std::conditional_t<IsSubview,
|
|
arma::SpSubview_MapMat_val<T>, arma::SpMat_MapMat_val<T>>;
|
|
|
|
using native_t = std::conditional_t<IsSparse, sp_svval_t, T>;
|
|
|
|
zend_always_inline
|
|
static void set_val(zend_object *zobj, native_t &&val)
|
|
{
|
|
*to_native_object<native_t>(zobj) = std::move(val);
|
|
}
|
|
|
|
static T get_val(zend_object*);
|
|
|
|
PHP_ARMA_CE_HANDLRES_DECLARE();
|
|
|
|
private:
|
|
static ZEND_NAMED_FUNCTION(val);
|
|
static ZEND_NAMED_FUNCTION(setTo);
|
|
|
|
static void ce_init(const char*, zend_class_entry*);
|
|
|
|
PHP_ARMA_START_ME()
|
|
PHP_ARMA_ME(val, ZEND_ACC_PUBLIC)
|
|
PHP_ARMA_ME(setTo, ZEND_ACC_PUBLIC)
|
|
PHP_ARMA_END_ME();
|
|
};
|
|
|
|
}
|
|
|
|
#endif //!PHP_ARMA_SVVAL_HH
|