From 63e525a09ac46cb3db7a7680ac4134454f346e40 Mon Sep 17 00:00:00 2001 From: Claudius 'keldu' Holeksa Date: Mon, 2 Sep 2024 10:39:48 +0200 Subject: Working on unit reduction --- modules/codec-unit/c++/unit.tmpl.hpp | 18 +++++++++++++++++ modules/codec-unit/c++/unit_transform.hpp | 33 +++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/modules/codec-unit/c++/unit.tmpl.hpp b/modules/codec-unit/c++/unit.tmpl.hpp index 8b13789..7412199 100644 --- a/modules/codec-unit/c++/unit.tmpl.hpp +++ b/modules/codec-unit/c++/unit.tmpl.hpp @@ -1 +1,19 @@ +namespace saw { +template +data, encode::Native> +data, encode::Native>::operator+(const +data, encode::Native>& rhs){ + auto add = dat_ + rhs.dat_; + return {add}; +} + +template +data, encode::Native> +data, encode::Native>::operator-(const +data, encode::Native>& rhs){ + auto sub = dat_ - rhs.dat_; + return {sub}; +} + +} diff --git a/modules/codec-unit/c++/unit_transform.hpp b/modules/codec-unit/c++/unit_transform.hpp index 6f40df5..3cae3c5 100644 --- a/modules/codec-unit/c++/unit_transform.hpp +++ b/modules/codec-unit/c++/unit_transform.hpp @@ -15,5 +15,38 @@ class unit_redux_list { using reduced_type = unit_redux_list<>; }; + +template +class unit_matching { + static_assert(is_always_false, "Template type not supported"); +}; + +template +class unit_matching, unit_redux_list> { + using Type = unit_redux_list; +}; + +template +class unit_matching, unit_redux_list> { + using Type = +}; } + +template +struct unit_element_reduction { + using Schema = typename impl::unit_matching, impl::unit_redux_list<>>::Schema; +}; + +template +struct unit_multiplication { + static_assert(is_always_false, "Template type not supported"); +}; + +template +class unit_multiplication< + schema::Unit...>,schema::Unit...> +> { + using Schema = typename unit_reduction..., schema::UnitElement...>::Schema; +}; + } -- cgit v1.2.3