summaryrefslogtreecommitdiff
path: root/src/codec/data.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/codec/data.h')
-rw-r--r--src/codec/data.h14
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_);
}
};