//
// 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