19 #ifndef INCLUDE_RCF_ANY_HPP 20 #define INCLUDE_RCF_ANY_HPP 24 #include <RCF/Exception.hpp> 25 #include <RCF/Tools.hpp> 30 typedef std::unique_ptr<AnyHolderBase> AnyHolderPtr;
35 virtual ~AnyHolderBase() {}
36 virtual AnyHolderPtr clone()
const = 0;
40 class AnyHolder :
public AnyHolderBase
43 AnyHolder(
const T& any) : mAny(any)
49 virtual AnyHolderPtr clone()
const 51 return AnyHolderPtr(
new AnyHolder<T>(mAny));
75 Any(
const T& t) : mAnyPtr(new AnyHolder<T>(t))
84 mAnyPtr = rhs.mAnyPtr->clone();
96 mAnyPtr = rhs.mAnyPtr->clone();
109 RCF_THROW(
Exception(
"Any cast failed. Null value."));
111 AnyHolder<T> * pHolder =
dynamic_cast<AnyHolder<T> *
>(mAnyPtr.get());
115 RCF_THROW(
Exception(
"Any cast failed. Type mismatch."));
117 return pHolder->get();
121 AnyHolderPtr mAnyPtr;
126 #endif // ! INCLUDE_RCF_ANY_HPP Generic container type used to hold arbitrary objects.
Definition: RCF/Any.hpp:64
Any(const T &t)
Constructs an Any instance holding a copy of t.
Definition: RCF/Any.hpp:75
Any(const Any &rhs)
Copy constructs an Any instance.
Definition: RCF/Any.hpp:80
Base class for all RCF exceptions.
Definition: Exception.hpp:64
Any()
Constructs an empty Any instance.
Definition: RCF/Any.hpp:69
Any & operator=(const Any &rhs)
Assigns an Any instance.
Definition: RCF/Any.hpp:89
Definition: AmiIoHandler.hpp:24