diff options
-rw-r--r-- | src/variant.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/variant.h b/src/variant.h index 1eda584..809aab9 100644 --- a/src/variant.h +++ b/src/variant.h | |||
@@ -134,6 +134,20 @@ namespace Bu | |||
134 | } | 134 | } |
135 | 135 | ||
136 | template<class t> | 136 | template<class t> |
137 | t &get() const | ||
138 | { | ||
139 | if( !pCore ) | ||
140 | { | ||
141 | throw Bu::ExceptionBase("No data!"); | ||
142 | } | ||
143 | if( pCore->getType() != typeid(t) ) | ||
144 | { | ||
145 | throw Bu::ExceptionBase("Invalid type conversion."); | ||
146 | } | ||
147 | return dynamic_cast<VariantType<t> *>(pCore)->getData(); | ||
148 | } | ||
149 | |||
150 | template<class t> | ||
137 | void set( const t &val ) | 151 | void set( const t &val ) |
138 | { | 152 | { |
139 | if( pCore && pCore->getType() != typeid(t) ) | 153 | if( pCore && pCore->getType() != typeid(t) ) |
@@ -146,6 +160,12 @@ namespace Bu | |||
146 | } | 160 | } |
147 | 161 | ||
148 | template<class t> | 162 | template<class t> |
163 | bool isType() const | ||
164 | { | ||
165 | return pCore->getType() == typeid(t); | ||
166 | } | ||
167 | |||
168 | template<class t> | ||
149 | operator t() | 169 | operator t() |
150 | { | 170 | { |
151 | if( !pCore ) | 171 | if( !pCore ) |