summaryrefslogtreecommitdiff
path: root/modules/codec
diff options
context:
space:
mode:
Diffstat (limited to 'modules/codec')
-rw-r--r--modules/codec/c++/data.hpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/modules/codec/c++/data.hpp b/modules/codec/c++/data.hpp
index dd70cd9..05bd8e2 100644
--- a/modules/codec/c++/data.hpp
+++ b/modules/codec/c++/data.hpp
@@ -147,7 +147,7 @@ public:
* Casts
*/
template<typename Target>
- data<Target, encode::Native, Storage> cast_to(){
+ data<Target, encode::Native, Storage> cast_to() const {
auto raw_to = static_cast<typename saw::native_data_type<Target>::type>(value_);
return {raw_to};
}
@@ -170,9 +170,13 @@ public:
typename saw::native_data_type<typename Schema::InterfaceSchema>::type get() const {
return value_.template cast_to<typename Schema::InterfaceSchema>().get();
}
+
+ data(const saw::data<typename Schema::InterfaceSchema, encode::Native, Storage>& val){
+ value_ = val.template cast_to<typename Schema::StorageSchema>();
+ }
void set(typename saw::native_data_type<typename Schema::InterfaceSchema>::type val){
- value_.set(val.template cast_to<typename Schema::StorageSchema>().get());
+ value_.set(static_cast<typename Schema::StorageSchema>(val));
}
data<Schema, encode::Native, Storage> operator*(const data<Schema, encode::Native, Storage>& rhs) const {
@@ -182,7 +186,7 @@ public:
return {left * right};
}
- data<Schema, encode::Native, Storage> operator*(const data<typename Schema::InterfaceSchema, encode::Native, Storage>& rhs) const {
+ data<typename Schema::InterfaceSchema, encode::Native, Storage> operator*(const data<typename Schema::InterfaceSchema, encode::Native, Storage>& rhs) const {
using CalcType = typename native_data_type<typename Schema::InterfaceSchema>::type;
CalcType left = static_cast<CalcType>(value_.get());
CalcType right = rhs.get();