]> git.tdb.fi Git - libs/core.git/blobdiff - source/core/variant.h
Correct some multiple inclusion guards
[libs/core.git] / source / core / variant.h
index f2d2ee563f339bb8b64eb020b516c3792b1db08f..4a0c89cf1a9a4b22661d28e62ba192a06004aabd 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of libmspcore
-Copyright © 2008 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
 #ifndef MSP_CORE_VARIANT_H_
 #define MSP_CORE_VARIANT_H_
 
@@ -68,14 +61,28 @@ public:
                return *this;
        }
 
+private:
        template<typename T>
-       T &value() const
+       Store<typename RemoveConst<T>::Type> *get_typed_store() const
        {
                typedef typename RemoveConst<T>::Type NCT;
                Store<NCT> *s = dynamic_cast<Store<NCT> *>(store);
                if(!s)
                        throw type_mismatch(typeid(T), (store ? store->type_id() : typeid(void)));
-               return s->data;
+               return s;
+       }
+
+public:
+       template<typename T>
+       T &value()
+       {
+               return get_typed_store<T>()->data;
+       }
+
+       template<typename T>
+       const T &value() const
+       {
+               return get_typed_store<T>()->data;
        }
 
        template<typename T>