diff --git a/avogadro/core/variant-inline.h b/avogadro/core/variant-inline.h index 4b6426d2ab..16836f4dcb 100644 --- a/avogadro/core/variant-inline.h +++ b/avogadro/core/variant-inline.h @@ -13,9 +13,7 @@ namespace Avogadro { namespace Core { -inline Variant::Variant() : m_type(Null) -{ -} +inline Variant::Variant() : m_type(Null) {} template inline Variant::Variant(T v) : m_type(Null) @@ -23,6 +21,20 @@ inline Variant::Variant(T v) : m_type(Null) setValue(v); } +template <> +inline Variant::Variant(const char* v) : m_type(String) +{ + m_value.string = new std::string(v); +} + +template <> +inline Variant::Variant(const MatrixXf& v) : m_type(Matrix) +{ + MatrixX* m = new MatrixX(v.rows(), v.cols()); + *m = v.cast(); + m_value.matrix = m; +} + inline Variant::Variant(const Variant& variant) : m_type(variant.type()) { if (m_type == String) @@ -444,7 +456,7 @@ inline T Variant::lexical_cast(const std::string& str) return value; } -} // end Core namespace -} // end Avogadro namespace +} // namespace Core +} // namespace Avogadro #endif // AVOGADRO_CORE_VARIANT_INLINE_H diff --git a/avogadro/core/variant.h b/avogadro/core/variant.h index 3f171aebfc..84eda3186d 100644 --- a/avogadro/core/variant.h +++ b/avogadro/core/variant.h @@ -146,8 +146,8 @@ class AVOGADROCORE_EXPORT Variant } m_value; }; -} // end Core namespace -} // end Avogadro namespace +} // namespace Core +} // namespace Avogadro #include "variant-inline.h"