diff options
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_); } }; |