diff options
Diffstat (limited to 'c++')
-rw-r--r-- | c++/codec/data.h | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/c++/codec/data.h b/c++/codec/data.h index 3dc9c58..b2dce87 100644 --- a/c++/codec/data.h +++ b/c++/codec/data.h @@ -177,6 +177,27 @@ public: } }; +template<typename T, size_t... Dims> +class data<schema::FixedArray<T, Dims...>, encode::Native> { +private: + template<std::size_t D0, std::size_t... DN> + struct multiply_helper { + static constexpr std::size_t calc(){ + if constexpr ( sizeof...(DN) > 0 ){ + return D0 * multiply_helper<DN...>::calc(); + } + return D0; + } + }; + + using inner_type = std::array<data<T, encode::Native>, multiply_helper<Dims...>::value>; + std::unique_ptr<inner_type> value_; +public: + data(): + value_{std::make_unique<inner_type>()} + {} +}; + template<typename T, size_t Dim> class data<schema::Array<T,Dim>, encode::Native> { private: |