14#ifndef SIMICS_TYPES_ANY_TYPE_H
15#define SIMICS_TYPES_ANY_TYPE_H
25 class ValueInterface {
27 virtual ValueInterface *copy()
const = 0;
28 virtual ~ValueInterface() {}
32 class Value :
public ValueInterface {
34 explicit Value(
const T &value) : value_(value) {}
35 ValueInterface *copy()
const override {
36 return new Value<T>(value_);
48 value_ = other.value_ ? other.value_->copy() : NULL;
51 value_ = other.value_;
64 value_ = other.value_;
75 value_ = other.value_ ? other.value_->copy() : NULL;
83 value_ =
new Value<T>(
value);
89 throw std::runtime_error(
"value_ is not set");
91 return static_cast<Value<T> *
>(value_)->
value();
102 ValueInterface *value_;
Generic type class.
Definition: any_type.h:24
AnyType(const T &value)
Definition: any_type.h:55
bool isSet()
Definition: any_type.h:93
~AnyType()
Definition: any_type.h:96
AnyType(AnyType &&other)
Definition: any_type.h:50
AnyType & operator=(const T &value)
Definition: any_type.h:80
AnyType & operator=(AnyType &&other)
Definition: any_type.h:57
AnyType & operator=(const AnyType &other)
Definition: any_type.h:68
AnyType(const AnyType &other)
Definition: any_type.h:47
AnyType()
Definition: any_type.h:46
T value()
Definition: any_type.h:87