summaryrefslogtreecommitdiff
path: root/c++/codec/data.h
diff options
context:
space:
mode:
Diffstat (limited to 'c++/codec/data.h')
-rw-r--r--c++/codec/data.h21
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: