diff options
author | Claudius Holeksa <mail@keldu.de> | 2023-06-27 12:41:56 +0200 |
---|---|---|
committer | Claudius Holeksa <mail@keldu.de> | 2023-06-27 12:41:56 +0200 |
commit | 5688c721c610e2a8931d6ec6f84dee2d4d65c763 (patch) | |
tree | 3d38ec081061f2d6226a12af93ee092f27882d8c /src/codec/data.h | |
parent | 7668b8aceb42b5a46e1f9ca36d16dbfabe291748 (diff) |
c++,codec,core: Added Union to KelSimple and fixed the native data type.
Made some errors more clear as well
Diffstat (limited to 'src/codec/data.h')
-rw-r--r-- | src/codec/data.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/codec/data.h b/src/codec/data.h index 9eb2bfc..397aed1 100644 --- a/src/codec/data.h +++ b/src/codec/data.h @@ -91,12 +91,22 @@ public: SAW_DEFAULT_MOVE(data); template<string_literal lit> + void set(data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native> val){ + value_ = std::move(val); + } + + template<string_literal lit> bool holds_alternative() const { - return std::holds_alternative<parameter_key_pack_index<lit, literals...>::value>(value_); + return (parameter_key_pack_index<lit, literals...>::value == value_.index()); } template<string_literal lit> - data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value>::type, encode::Native>& get(){ + data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native>& get(){ + return std::get<parameter_key_pack_index<lit, literals...>::value>(value_); + } + + template<string_literal lit> + const data<typename parameter_pack_type<parameter_key_pack_index<lit, literals...>::value, T...>::type, encode::Native>& get() const{ return std::get<parameter_key_pack_index<lit, literals...>::value>(value_); } }; |