1 #ifndef MSP_DATAFILE_VALUE_H_
2 #define MSP_DATAFILE_VALUE_H_
5 #include <msp/core/attributes.h>
6 #include <msp/core/meta.h>
7 #include <msp/core/variant.h>
22 sig(TypeInfo<T>::signature),
23 data(static_cast<typename TypeInfo<T>::Store>(std::forward<T>(d)))
26 Value(const Symbol &d): sig(TypeInfo<Symbol>::signature), data(d) { }
27 Value(Symbol &&d): sig(TypeInfo<Symbol>::signature), data(std::move(d)) { }
30 typename TypeInfo<T>::Load get() const
31 { return get_<typename TypeInfo<T>::Store>(); }
33 char get_signature() const { return sig; }
40 inline T Value::get_() const
42 return data.value<typename TypeInfo<T>::Store>();
46 inline FloatType::Store Value::get_<FloatType::Store>() const
48 if(sig==IntType::signature)
49 return data.value<IntType::Store>();
51 return data.value<FloatType::Store>();
54 } // namespace DataFile