aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/variant.h20
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 )