Added copyright lines for files I've edited this year.
[synfig.git] / synfig-core / trunk / src / synfig / value.h
index 2bf39bb..cc6cab9 100644 (file)
@@ -6,7 +6,7 @@
 **
 **     \legal
 **     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
-**     Copyright (c) 2007 Chris Moore
+**     Copyright (c) 2007, 2008 Chris Moore
 **
 **     This package is free software; you can redistribute it and/or
 **     modify it under the terms of the GNU General Public License as
@@ -205,14 +205,20 @@ public:
        {
                const Type testtype(get_type(x));
 
-               return same_type_as(testtype);
+               return same_type_as(type, testtype);
        }
 
        bool same_type_as(const Type testtype)const
        {
-               if(testtype==type)return true;
-               if(     (type==TYPE_REAL || type==TYPE_TIME) &&
-                       (testtype==TYPE_REAL || testtype==TYPE_TIME) )
+               return same_type_as(type, testtype);
+       }
+
+       //! Compares two types.  Returns true if they are the same type.
+       static bool same_type_as(const Type type1, const Type type2)
+       {
+               if (type1 == type2) return true;
+               if ((type1 == TYPE_REAL || type1 == TYPE_TIME) &&
+                       (type2 == TYPE_REAL || type2 == TYPE_TIME))
                        return true;
                return false;
        }
@@ -220,7 +226,7 @@ public:
 
        // === GET MEMBERS ========================================================
        template <typename T>
-       const T &get(const T& x)const
+       const T &get(const T& x __attribute__ ((unused)))const
        {
                assert(is_valid() && same_type_as(x));
                return *static_cast<const T*>(data);
@@ -254,6 +260,7 @@ public:
        void set(const float &x) { _set(Real(x)); }
        void set(const list_type &x);
        void set(const char* x);
+       void set(char* x);
        void set(Canvas*x);
        void set(etl::loose_handle<Canvas> x);
        void set(etl::handle<Canvas> x);
@@ -273,31 +280,34 @@ public:
        //!     Returns a string containing the name of the given Type
        static String type_name(Type id);
 
+       //!     Returns a string containing the translated name of the given Type
+       static String type_local_name(Type id);
+
        //!     Returns a the corresponding Type of the described type
        static Type ident_type(const String &str);
 
 
        // === GET TYPE MEMBERS ===================================================
-       static const Type get_type(bool) { return TYPE_BOOL; }
-       static const Type get_type(int) { return TYPE_INTEGER; }
-       static const Type get_type(const Time&) { return TYPE_TIME; }
-       static const Type get_type(const Real&) { return TYPE_REAL; }
-       static const Type get_type(const float&) { return TYPE_REAL; }
-       static const Type get_type(const Vector&) { return TYPE_VECTOR; }
-       static const Type get_type(const Color&) { return TYPE_COLOR; }
-       static const Type get_type(const Segment&) { return TYPE_SEGMENT; }
-       static const Type get_type(const BLinePoint&) { return TYPE_BLINEPOINT; }
-       static const Type get_type(const String&) { return TYPE_STRING; }
-       static const Type get_type(const Gradient&) { return TYPE_GRADIENT; }
-       static const Type get_type(Canvas*) { return TYPE_CANVAS; }
-       static const Type get_type(const etl::handle<Canvas>&)
+       static Type get_type(bool) { return TYPE_BOOL; }
+       static Type get_type(int) { return TYPE_INTEGER; }
+       static Type get_type(const Time&) { return TYPE_TIME; }
+       static Type get_type(const Real&) { return TYPE_REAL; }
+       static Type get_type(const float&) { return TYPE_REAL; }
+       static Type get_type(const Vector&) { return TYPE_VECTOR; }
+       static Type get_type(const Color&) { return TYPE_COLOR; }
+       static Type get_type(const Segment&) { return TYPE_SEGMENT; }
+       static Type get_type(const BLinePoint&) { return TYPE_BLINEPOINT; }
+       static Type get_type(const String&) { return TYPE_STRING; }
+       static Type get_type(const Gradient&) { return TYPE_GRADIENT; }
+       static Type get_type(Canvas*) { return TYPE_CANVAS; }
+       static Type get_type(const etl::handle<Canvas>&)
                { return TYPE_CANVAS; }
-       static const Type get_type(const etl::loose_handle<Canvas>&)
+       static Type get_type(const etl::loose_handle<Canvas>&)
                { return TYPE_CANVAS; }
-       static const Type get_type(const list_type&) { return TYPE_LIST; }
-       template <class T> static const Type get_type(const std::vector<T> &/*x*/)
+       static Type get_type(const list_type&) { return TYPE_LIST; }
+       template <class T> static Type get_type(const std::vector<T> &/*x*/)
                { return TYPE_LIST; }
-       template <class T> static const Type get_type(const std::list<T> &/*x*/)
+       template <class T> static Type get_type(const std::list<T> &/*x*/)
                { return TYPE_LIST; }
        // ========================================================================
 
@@ -331,13 +341,13 @@ public:
        half get(const half &)const { return get(Real()); }
        void put(half*x)const { *x=get(Real()); }
        void set(const half &x) { _set(Real(x)); }
-       static const Type get_type(const half&) { return TYPE_REAL; }
+       static Type get_type(const half&) { return TYPE_REAL; }
        operator half()const { return get(Real()); }
 #endif
 
 #ifndef SYNFIG_NO_ANGLE
        operator const Angle&()const { return get(Angle()); }
-       static const Type get_type(const Angle&) { return TYPE_ANGLE; }
+       static Type get_type(const Angle&) { return TYPE_ANGLE; }
 #endif
 
        template <class T>