]> granicus.if.org Git - icinga2/commitdiff
Re-implemented integer support for the Variant class.
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 13 Jul 2012 11:09:09 +0000 (13:09 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 13 Jul 2012 11:09:09 +0000 (13:09 +0200)
base/variant.h

index 7919f759f2e96a2a21d74c1b5afb01978eab3c0e..bcd63d4fb9cbd01dcb2840696e80b4b37460ab4d 100644 (file)
@@ -35,10 +35,22 @@ public:
                : m_Value()
        { }
 
+       inline Variant(int value)
+               : m_Value(static_cast<long>(value))
+       { }
+
+       inline Variant(long value)
+               : m_Value(value)
+       { }
+
        inline Variant(double value)
                : m_Value(value)
        { }
 
+       inline Variant(bool value)
+               : m_Value(static_cast<long>(value))
+       { }
+
        inline Variant(const string& value)
                : m_Value(value)
        { }
@@ -58,17 +70,29 @@ public:
                m_Value = object;
        }
 
+       operator long(void) const
+       {
+               if (m_Value.type() != typeid(long)) {
+                       return boost::lexical_cast<long>(m_Value);
+               } else {
+                       return boost::get<long>(m_Value);
+               }
+       }
+
        operator double(void) const
        {
                if (m_Value.type() != typeid(double)) {
-                       double result = boost::lexical_cast<double>(m_Value);
-                       m_Value = result;
-                       return result;
+                       return boost::lexical_cast<double>(m_Value);
                } else {
                        return boost::get<double>(m_Value);
                }
        }
 
+       operator bool(void) const
+       {
+               return static_cast<long>(*this);
+       }
+
        operator string(void) const
        {
                if (m_Value.type() != typeid(string)) {
@@ -105,7 +129,7 @@ public:
        }
 
 private:
-       mutable boost::variant<boost::blank, double, string, Object::Ptr> m_Value;
+       mutable boost::variant<boost::blank, long, double, string, Object::Ptr> m_Value;
 };
 
 }