X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fvalue.h;h=2bf39bbe9b8dcdd6c741ae3716497180f6cc2f2b;hb=47a6485b6c2602a8bce63cbf09ded0952566a70a;hp=bbf83cf2594b91a42830e3f6244705c97609a462;hpb=5ddcf36f04cfbd10fabda4e3c5633cb27cdd4c0a;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/value.h b/synfig-core/trunk/src/synfig/value.h index bbf83cf..2bf39bb 100644 --- a/synfig-core/trunk/src/synfig/value.h +++ b/synfig-core/trunk/src/synfig/value.h @@ -2,10 +2,11 @@ /*! \file value.h ** \brief Template Header ** -** $Id: value.h,v 1.1.1.1 2005/01/04 01:23:15 darco Exp $ +** $Id$ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** Copyright (c) 2007 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 @@ -200,10 +201,15 @@ public: //! Checks the type of the parameter against itself. Returns true if they are of the same type. template bool - same_as(const T &x)const + same_type_as(const T &x)const { const Type testtype(get_type(x)); + return same_type_as(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) ) @@ -216,7 +222,7 @@ public: template const T &get(const T& x)const { - assert(is_valid() && same_as(x)); + assert(is_valid() && same_type_as(x)); return *static_cast(data); } float get(const float &)const { return get(Real()); } @@ -234,7 +240,7 @@ public: template void put(T* x)const { - assert(same_as(*x)); + assert(same_type_as(*x)); *x=*static_cast(data); } void put(float* x)const { *x=get(Real()); } @@ -289,9 +295,9 @@ public: static const Type get_type(const etl::loose_handle&) { return TYPE_CANVAS; } static const Type get_type(const list_type&) { return TYPE_LIST; } - template static const Type get_type(const std::vector &x) + template static const Type get_type(const std::vector &/*x*/) { return TYPE_LIST; } - template static const Type get_type(const std::list &x) + template static const Type get_type(const std::list &/*x*/) { return TYPE_LIST; } // ======================================================================== @@ -390,7 +396,7 @@ public: Value(const ValueBase &x):ValueBase(x) { - if(!x.same_as(T())) + if(!x.same_type_as(T())) throw Exception::BadType("Value(ValueBase): Type Mismatch"); } @@ -410,7 +416,7 @@ public: Value& operator=(const ValueBase& x) { - if(!x.same_as(T())) + if(!x.same_type_as(T())) throw Exception::BadType("Value(ValueBase): Type Mismatch"); return ValueBase::operator=(x); } @@ -427,7 +433,7 @@ public: } Value(const ValueBase &x):ValueBase(x) { - if(!x.same_as(T())) + if(!x.same_type_as(T())) throw Exception::BadType("Value(ValueBase): Type Mismatch"); } Value() @@ -446,7 +452,7 @@ public: Value& operator=(const ValueBase& x) { - if(!x.same_as(T())) + if(!x.same_type_as(T())) throw Exception::BadType("Value(ValueBase): Type Mismatch"); return ValueBase::operator=(x); }