28 #ifndef SPLA_T_DECORATION_HPP
29 #define SPLA_T_DECORATION_HPP
69 template<
typename T,
typename F,
int capacity>
77 template<
class DecorationClass>
78 DecorationClass*
get() {
return dynamic_cast<DecorationClass*
>(
get_ptr(DecorationClass::FORMAT)); }
80 [[nodiscard]]
bool is_valid_any()
const {
return m_is_valid.any(); }
81 [[nodiscard]]
bool is_valid_i(
int index)
const {
return m_is_valid.test(index); }
83 void validate(F format) { m_is_valid.set(
static_cast<int>(format),
true); }
98 std::array<ref_ptr<TDecoration<T>>, capacity> m_decorations;
99 std::bitset<capacity> m_is_valid;
102 T m_fill_value = T();
Base class for object with built-in reference counting mechanism.
Definition: ref.hpp:55
Storage for decorators with data of a particular vector or matrix object.
Definition: tdecoration.hpp:70
uint get_n_cols() const
Definition: tdecoration.hpp:90
T get_fill_value() const
Definition: tdecoration.hpp:87
ref_ptr< TDecoration< T > > & get_ref(F format)
Definition: tdecoration.hpp:74
void invalidate()
Definition: tdecoration.hpp:84
void set_fill_value(T value)
Definition: tdecoration.hpp:86
uint get_n_rows() const
Definition: tdecoration.hpp:89
void validate(F format)
Definition: tdecoration.hpp:83
bool is_valid(F format) const
Definition: tdecoration.hpp:82
DecorationClass * get()
Definition: tdecoration.hpp:78
void set_dims(uint n_rows, uint n_cols)
Definition: tdecoration.hpp:92
TDecoration< T > * get_ptr_i(int index)
Definition: tdecoration.hpp:73
TDecoration< T > * get_ptr(F format)
Definition: tdecoration.hpp:75
bool is_valid_any() const
Definition: tdecoration.hpp:80
ref_ptr< TDecoration< T > > & get_ref_i(int index)
Definition: tdecoration.hpp:72
bool is_valid_i(int index) const
Definition: tdecoration.hpp:81
Base class for typed decoration for storage object.
Definition: tdecoration.hpp:50
~TDecoration() override=default
uint values
Definition: tdecoration.hpp:58
virtual uint get_n_values() const
Definition: tdecoration.hpp:55
Automates reference counting and behaves as shared smart pointer.
Definition: ref.hpp:117
std::uint32_t uint
Library index and size type.
Definition: config.hpp:56
Definition: algorithm.hpp:37