diff options
author | Mike Buland <eichlan@xagasoft.com> | 2010-07-30 23:34:31 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2010-07-30 23:34:31 +0000 |
commit | 31bae0662ad7b579af22912df420571c26c2f0b8 (patch) | |
tree | 53013d2a2c891e29d08e2149fd68d4ceafb1ad5b /src/variant.h | |
parent | d473e27a38126a58b9a793e6cc62768cd02c0c46 (diff) | |
download | libbu++-31bae0662ad7b579af22912df420571c26c2f0b8.tar.gz libbu++-31bae0662ad7b579af22912df420571c26c2f0b8.tar.bz2 libbu++-31bae0662ad7b579af22912df420571c26c2f0b8.tar.xz libbu++-31bae0662ad7b579af22912df420571c26c2f0b8.zip |
A few fixes and stuff in the Variant.
Diffstat (limited to 'src/variant.h')
-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 ) |