**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** 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
{
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;
}
// === 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);
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);
//! 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; }
// ========================================================================
operator const list_type&()const { return get_list(); }
//operator const Color&()const { return get(Color()); }
- //operator const Real&()const { return get(Real()); }
+ operator const Real&()const { return get(Real()); }
//operator const Time&()const { return get(Time()); }
operator const Vector&()const { return get(Vector()); }
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>