Add type checking to almost all the linkable ValueNodes.
[synfig.git] / synfig-core / trunk / src / synfig / valuenode_duplicate.cpp
index 2b67c3e..2af20e7 100644 (file)
@@ -82,26 +82,24 @@ ValueNode_Duplicate::~ValueNode_Duplicate()
 }
 
 bool
-ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle x)
+ValueNode_Duplicate::set_link_vfunc(int i,ValueNode::Handle value)
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        switch(i)
        {
-       case 0:  from_ = x; break;
-       case 1:  to_   = x; break;
-       case 2:  step_ = x; break;
-       default: return false;
+       case 0: CHECK_TYPE_AND_SET_VALUE(from_, ValueBase::TYPE_REAL);
+       case 1: CHECK_TYPE_AND_SET_VALUE(to_,   ValueBase::TYPE_REAL);
+       case 2: CHECK_TYPE_AND_SET_VALUE(step_, ValueBase::TYPE_REAL);
        }
-
-       signal_child_changed()(i);
-       signal_value_changed()();
-       return true;
+       return false;
 }
 
 ValueNode::LooseHandle
 ValueNode_Duplicate::get_link_vfunc(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return from_;
        if(i==1) return to_;
        if(i==2) return step_;
@@ -118,7 +116,8 @@ ValueNode_Duplicate::link_count()const
 String
 ValueNode_Duplicate::link_local_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return _("From");
        if(i==1) return _("To");
        if(i==2) return _("Step");
@@ -128,7 +127,8 @@ ValueNode_Duplicate::link_local_name(int i)const
 String
 ValueNode_Duplicate::link_name(int i)const
 {
-       assert(i >= 0 && i < link_count());
+       assert(i>=0 && i<link_count());
+
        if(i==0) return "from";
        if(i==1) return "to";
        if(i==2) return "step";