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/subview_val.hh
2019-03-24 00:24:34 +08:00

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