Use link_count from children vocabulary and return the stored vocabulary if already...
authorCarlos Lopez <genetita@gmail.com>
Tue, 21 Dec 2010 15:59:44 +0000 (16:59 +0100)
committerCarlos Lopez <genetita@gmail.com>
Sun, 2 Jan 2011 07:19:35 +0000 (08:19 +0100)
50 files changed:
synfig-core/src/modules/mod_noise/valuenode_random.cpp
synfig-core/src/synfig/valuenode.cpp
synfig-core/src/synfig/valuenode.h
synfig-core/src/synfig/valuenode_add.cpp
synfig-core/src/synfig/valuenode_and.cpp
synfig-core/src/synfig/valuenode_anglestring.cpp
synfig-core/src/synfig/valuenode_atan2.cpp
synfig-core/src/synfig/valuenode_blinecalctangent.cpp
synfig-core/src/synfig/valuenode_blinecalcvertex.cpp
synfig-core/src/synfig/valuenode_blinecalcwidth.cpp
synfig-core/src/synfig/valuenode_blinereversetangent.cpp
synfig-core/src/synfig/valuenode_compare.cpp
synfig-core/src/synfig/valuenode_composite.cpp
synfig-core/src/synfig/valuenode_cos.cpp
synfig-core/src/synfig/valuenode_dotproduct.cpp
synfig-core/src/synfig/valuenode_duplicate.cpp
synfig-core/src/synfig/valuenode_exp.cpp
synfig-core/src/synfig/valuenode_gradientcolor.cpp
synfig-core/src/synfig/valuenode_gradientrotate.cpp
synfig-core/src/synfig/valuenode_greyed.cpp
synfig-core/src/synfig/valuenode_integer.cpp
synfig-core/src/synfig/valuenode_intstring.cpp
synfig-core/src/synfig/valuenode_join.cpp
synfig-core/src/synfig/valuenode_linear.cpp
synfig-core/src/synfig/valuenode_log.cpp
synfig-core/src/synfig/valuenode_not.cpp
synfig-core/src/synfig/valuenode_or.cpp
synfig-core/src/synfig/valuenode_pow.cpp
synfig-core/src/synfig/valuenode_radialcomposite.cpp
synfig-core/src/synfig/valuenode_range.cpp
synfig-core/src/synfig/valuenode_realstring.cpp
synfig-core/src/synfig/valuenode_reciprocal.cpp
synfig-core/src/synfig/valuenode_reference.cpp
synfig-core/src/synfig/valuenode_repeat_gradient.cpp
synfig-core/src/synfig/valuenode_scale.cpp
synfig-core/src/synfig/valuenode_segcalctangent.cpp
synfig-core/src/synfig/valuenode_segcalcvertex.cpp
synfig-core/src/synfig/valuenode_sine.cpp
synfig-core/src/synfig/valuenode_step.cpp
synfig-core/src/synfig/valuenode_stripes.cpp
synfig-core/src/synfig/valuenode_subtract.cpp
synfig-core/src/synfig/valuenode_switch.cpp
synfig-core/src/synfig/valuenode_timedswap.cpp
synfig-core/src/synfig/valuenode_timeloop.cpp
synfig-core/src/synfig/valuenode_timestring.cpp
synfig-core/src/synfig/valuenode_twotone.cpp
synfig-core/src/synfig/valuenode_vectorangle.cpp
synfig-core/src/synfig/valuenode_vectorlength.cpp
synfig-core/src/synfig/valuenode_vectorx.cpp
synfig-core/src/synfig/valuenode_vectory.cpp

index 22d6666..1aeb325 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 ValueNode_Random::ValueNode_Random(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        random.set_seed(time(NULL));
 
        set_link("radius",ValueNode_Const::create(Real(1)));
@@ -304,6 +306,9 @@ ValueNode_Random::randomize_seed()
 LinkableValueNode::Vocab
 ValueNode_Random::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index 1ff921e..6e1e6a4 100644 (file)
@@ -700,8 +700,20 @@ LinkableValueNode::get_link_index_from_name(const String &name)const
        throw Exception::BadLinkName(name);
 }
 
+int
+LinkableValueNode::link_count()const
+{
+       return get_children_vocab().size();
+}
+
 LinkableValueNode::Vocab
 LinkableValueNode::get_children_vocab()const
 {
        return get_children_vocab_vfunc();
 }
+
+void
+LinkableValueNode::set_children_vocab(Vocab &newvocab)
+{
+       children_vocab.assign(newvocab.begin(),newvocab.end());
+}
index 7fde918..830cd30 100644 (file)
@@ -370,7 +370,7 @@ protected:
 public:
 
        //! Returns the number of linked Value Nodes
-       virtual int link_count()const=0;
+       virtual int link_count()const;
 
        //! Returns the local name of the 'i' linked Value Node
        virtual String link_local_name(int i)const;
@@ -400,6 +400,8 @@ public:
        virtual Vocab get_children_vocab()const;
 
 protected:
+       //! Member to store the children vocabulary
+       Vocab children_vocab;
        //! Sets the type of the ValueNode
        void set_type(ValueBase::Type t) { ValueNode::set_type(t); }
 
@@ -414,6 +416,9 @@ protected:
 
        //! Pure Virtual member to get the children vocabulary
        virtual Vocab get_children_vocab_vfunc()const=0;
+
+       //! Virtual memebr to set the children vocabulary to a given value
+       virtual void set_children_vocab(Vocab& rvocab);
 }; // END of class LinkableValueNode
 
 /*!    \class ValueNodeList
index 901f899..87ab7e3 100644 (file)
@@ -60,6 +60,8 @@ using namespace synfig;
 synfig::ValueNode_Add::ValueNode_Add(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("scalar",ValueNode_Const::create(Real(1.0)));
        ValueBase::Type id(value.get_type());
 
index d2f9e46..bab3464 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_And::ValueNode_And(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        bool value(x.get(bool()));
 
        set_link("link1",        ValueNode_Const::create(bool(true)));
@@ -141,6 +143,9 @@ ValueNode_And::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_And::get_children_vocab_vfunc() const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link1")
index 7dbb73c..4177777 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_AngleString::ValueNode_AngleString(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_STRING:
index ceec7a7..ff1fb18 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_Atan2::ValueNode_Atan2(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_ANGLE:
index 0598276..04278b8 100644 (file)
@@ -58,6 +58,8 @@ using namespace synfig;
 ValueNode_BLineCalcTangent::ValueNode_BLineCalcTangent(const ValueBase::Type &x):
        LinkableValueNode(x)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        if(x!=ValueBase::TYPE_ANGLE && x!=ValueBase::TYPE_REAL && x!=ValueBase::TYPE_VECTOR)
                throw Exception::BadType(ValueBase::type_local_name(x));
 
@@ -273,6 +275,9 @@ ValueNode_BLineCalcTangent::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_BLineCalcTangent::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"bline")
index 7346207..5f2fde6 100644 (file)
@@ -58,6 +58,8 @@ using namespace synfig;
 ValueNode_BLineCalcVertex::ValueNode_BLineCalcVertex(const ValueBase::Type &x):
        LinkableValueNode(x)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        if(x!=ValueBase::TYPE_VECTOR)
                throw Exception::BadType(ValueBase::type_local_name(x));
 
@@ -224,6 +226,9 @@ ValueNode_BLineCalcVertex::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_BLineCalcVertex::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"bline")
index d78f99a..d7db04e 100644 (file)
@@ -58,6 +58,8 @@ using namespace synfig;
 ValueNode_BLineCalcWidth::ValueNode_BLineCalcWidth(const ValueBase::Type &x):
        LinkableValueNode(x)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        if(x!=ValueBase::TYPE_REAL)
                throw Exception::BadType(ValueBase::type_local_name(x));
 
@@ -232,6 +234,9 @@ ValueNode_BLineCalcWidth::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_BLineCalcWidth::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"bline")
index dcdee81..922d9a3 100644 (file)
@@ -63,6 +63,8 @@ ValueNode_BLineRevTangent::ValueNode_BLineRevTangent(const ValueBase::Type &x):
 ValueNode_BLineRevTangent::ValueNode_BLineRevTangent(const ValueNode::Handle &x):
        LinkableValueNode(x->get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        if(x->get_type()!=ValueBase::TYPE_BLINEPOINT)
                throw Exception::BadType(ValueBase::type_local_name(x->get_type()));
 
@@ -204,6 +206,9 @@ ValueNode_BLineRevTangent::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_BLineRevTangent::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"reference")
index d5d09fa..627d843 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_Compare::ValueNode_Compare(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        bool value(x.get(bool()));
 
        set_link("lhs",          ValueNode_Const::create(Real(0)));
@@ -199,6 +201,9 @@ ValueNode_Compare::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Compare::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"lhs")
index da06185..342f8ab 100644 (file)
@@ -60,6 +60,8 @@ using namespace synfig;
 synfig::ValueNode_Composite::ValueNode_Composite(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
@@ -448,6 +450,9 @@ ValueNode_Composite::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Composite::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        switch(get_type())
index 41fda7d..2eef6cd 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_Cos::ValueNode_Cos(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -186,6 +188,9 @@ ValueNode_Cos::get_link_index_from_name(const String &name)const
 LinkableValueNode::Vocab
 ValueNode_Cos::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"angle")
index afb8a31..f478d01 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_DotProduct::ValueNode_DotProduct(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -199,6 +201,9 @@ ValueNode_DotProduct::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_DotProduct::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"lhs")
index d371d75..b3e88aa 100644 (file)
@@ -58,6 +58,8 @@ ValueNode_Duplicate::ValueNode_Duplicate(const ValueBase::Type &x):
 ValueNode_Duplicate::ValueNode_Duplicate(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("from", ValueNode_Const::create(Real(1.0)));
        set_link("to",   ValueNode_Const::create(x.get(Real())));
        set_link("step", ValueNode_Const::create(Real(1.0)));
@@ -219,6 +221,9 @@ ValueNode_Duplicate::check_type(ValueBase::Type type __attribute__ ((unused)))
 LinkableValueNode::Vocab
 ValueNode_Duplicate::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"from")
index 7b96298..200d438 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_Exp::ValueNode_Exp(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -179,6 +181,9 @@ ValueNode_Exp::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Exp::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"exp")
index 980cf08..bfbda7d 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_GradientColor::ValueNode_GradientColor(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_COLOR:
@@ -189,6 +191,9 @@ ValueNode_GradientColor::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_GradientColor::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"gradient")
index f2496da..709a99a 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 synfig::ValueNode_GradientRotate::ValueNode_GradientRotate(const Gradient& x):
        LinkableValueNode(synfig::ValueBase::TYPE_GRADIENT)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("gradient",ValueNode_Const::create(x));
        set_link("offset",ValueNode_Const::create(Real(0)));
 }
@@ -199,6 +201,9 @@ ValueNode_GradientRotate::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_GradientRotate::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"gradient")
index a68a9ac..e39cabc 100644 (file)
@@ -54,6 +54,8 @@ ValueNode_Greyed::ValueNode_Greyed(const ValueBase::Type &x):
 ValueNode_Greyed::ValueNode_Greyed(const ValueNode::Handle &x):
        ValueNode_Reference(x->get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("link",x);
 }
 
@@ -84,6 +86,9 @@ ValueNode_Greyed::get_local_name()const
 LinkableValueNode::Vocab
 ValueNode_Greyed::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index 12b3a9c..8b44504 100644 (file)
@@ -59,6 +59,8 @@ ValueNode_Integer::ValueNode_Integer(const ValueBase::Type &x):
 ValueNode_Integer::ValueNode_Integer(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(x.get_type())
        {
        case ValueBase::TYPE_ANGLE:
@@ -201,6 +203,9 @@ ValueNode_Integer::check_type(ValueBase::Type type __attribute__ ((unused)))
 LinkableValueNode::Vocab
 ValueNode_Integer::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"integer")
index 408469e..e29199d 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_IntString::ValueNode_IntString(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_STRING:
@@ -202,6 +204,9 @@ ValueNode_IntString::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_IntString::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"int")
index bc01031..98edb47 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 ValueNode_Join::ValueNode_Join(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_STRING:
@@ -229,6 +231,9 @@ ValueNode_Join::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Join::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"strings")
index 2fabe01..cc716a8 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 ValueNode_Linear::ValueNode_Linear(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(get_type())
        {
        case ValueBase::TYPE_ANGLE:
@@ -230,6 +232,9 @@ ValueNode_Linear::get_link_index_from_name(const String &name)const
 LinkableValueNode::Vocab
 ValueNode_Linear::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        switch(get_type())
index 4ddb8a7..7973a34 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_Logarithm::ValueNode_Logarithm(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        Real value(x.get(Real()));
        Real infinity(999999.0);
        Real epsilon(0.000001);
@@ -186,6 +188,9 @@ ValueNode_Logarithm::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Logarithm::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index dfe0f9a..9e835c0 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_Not::ValueNode_Not(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        bool value(x.get(bool()));
 
        set_link("link",         ValueNode_Const::create(!value));
@@ -161,6 +163,9 @@ ValueNode_Not::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Not::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index 2a94e88..4cfff5c 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_Or::ValueNode_Or(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        bool value(x.get(bool()));
 
        set_link("link1",        ValueNode_Const::create(bool(false)));
@@ -170,6 +172,9 @@ ValueNode_Or::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Or::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link1")
index 0b9d319..94369bf 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_Pow::ValueNode_Pow(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        Real value(x.get(Real()));
        Real infinity(999999.0);
        Real epsilon(0.000001);
@@ -209,6 +211,9 @@ ValueNode_Pow::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Pow::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"base")
index 5d320b6..85b882a 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 synfig::ValueNode_RadialComposite::ValueNode_RadialComposite(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(get_type())
        {
                case ValueBase::TYPE_VECTOR:
@@ -317,6 +319,9 @@ ValueNode_RadialComposite::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_RadialComposite::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        switch(get_type())
index 6132c1a..e959388 100644 (file)
@@ -57,6 +57,8 @@ using namespace synfig;
 synfig::ValueNode_Range::ValueNode_Range(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        ValueBase::Type id(value.get_type());
 
        switch(id)
@@ -309,6 +311,9 @@ ValueNode_Range::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Range::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"min")
index 181ef15..cb0f4e6 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_RealString::ValueNode_RealString(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_STRING:
@@ -210,6 +212,9 @@ ValueNode_RealString::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_RealString::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"real")
index 11362b9..55dde10 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_Reciprocal::ValueNode_Reciprocal(const ValueBase &x):
        LinkableValueNode(x.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        Real value(x.get(Real()));
        Real infinity(999999.0);
        Real epsilon(0.000001);
@@ -191,6 +193,9 @@ ValueNode_Reciprocal::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Reciprocal::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index fa89437..a6ac870 100644 (file)
@@ -58,6 +58,8 @@ ValueNode_Reference::ValueNode_Reference(const ValueBase::Type &x):
 ValueNode_Reference::ValueNode_Reference(const ValueNode::Handle &x):
        LinkableValueNode(x->get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("link",x);
 }
 
@@ -170,6 +172,9 @@ ValueNode_Reference::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Reference::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index 601a176..306b393 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 
 synfig::ValueNode_Repeat_Gradient::ValueNode_Repeat_Gradient(const Gradient& x):LinkableValueNode(synfig::ValueBase::TYPE_GRADIENT)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("gradient",ValueNode_Const::create(x));
        set_link("count",count_=ValueNode_Const::create(int(3)));
        set_link("width",ValueNode_Const::create(0.5));
@@ -246,6 +248,9 @@ ValueNode_Repeat_Gradient::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Repeat_Gradient::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"gradient")
index da38c54..7552cdb 100644 (file)
@@ -59,6 +59,8 @@ using namespace synfig;
 ValueNode_Scale::ValueNode_Scale(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("scalar",ValueNode::Handle(ValueNode_Const::create(Real(1.0))));
        ValueBase::Type id(value.get_type());
 
@@ -279,6 +281,9 @@ ValueNode_Scale::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Scale::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index 5dd3150..8969221 100644 (file)
@@ -58,6 +58,8 @@ using namespace synfig;
 ValueNode_SegCalcTangent::ValueNode_SegCalcTangent(const ValueBase::Type &x):
        LinkableValueNode(x)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        if(x!=ValueBase::TYPE_VECTOR)
                throw Exception::BadType(ValueBase::type_local_name(x));
 
@@ -185,6 +187,9 @@ ValueNode_SegCalcTangent::create_new()const
 LinkableValueNode::Vocab
 ValueNode_SegCalcTangent::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"segment")
index 81525af..6a88f06 100644 (file)
@@ -57,6 +57,8 @@ using namespace synfig;
 ValueNode_SegCalcVertex::ValueNode_SegCalcVertex(const ValueBase::Type &x):
        LinkableValueNode(x)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        if(x!=ValueBase::TYPE_VECTOR)
                throw Exception::BadType(ValueBase::type_local_name(x));
 
@@ -183,6 +185,9 @@ ValueNode_SegCalcVertex::create_new()const
 LinkableValueNode::Vocab
 ValueNode_SegCalcVertex::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"segment")
index 3ebe280..17d8efc 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_Sine::ValueNode_Sine(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -183,6 +185,9 @@ ValueNode_Sine::get_link_index_from_name(const String &name)const
 LinkableValueNode::Vocab
 ValueNode_Sine::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"angle")
index 9b9a160..337657a 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_Step::ValueNode_Step(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("duration",     ValueNode_Const::create(Time(1)));
        set_link("start_time",   ValueNode_Const::create(Time(0)));
        set_link("intersection", ValueNode_Const::create(Real(0.5)));
@@ -234,6 +236,9 @@ ValueNode_Step::get_link_index_from_name(const String &name)const
 LinkableValueNode::Vocab
 ValueNode_Step::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link")
index f214176..92e9420 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 
 synfig::ValueNode_Stripes::ValueNode_Stripes():LinkableValueNode(synfig::ValueBase::TYPE_GRADIENT)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("color1",ValueNode_Const::create(Color::alpha()));
        set_link("color2",ValueNode_Const::create(Color::black()));
        set_link("stripes",stripes_=ValueNode_Const::create(int(5)));
@@ -237,6 +239,9 @@ ValueNode_Stripes::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Stripes::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"color1")
index 7436551..34d9d56 100644 (file)
@@ -60,6 +60,8 @@ using namespace synfig;
 synfig::ValueNode_Subtract::ValueNode_Subtract(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("scalar",ValueNode_Const::create(Real(1.0)));
        ValueBase::Type id(value.get_type());
 
@@ -249,6 +251,9 @@ ValueNode_Subtract::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Subtract::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"lhs")
index 5fc50ce..9cd24ae 100644 (file)
@@ -58,6 +58,8 @@ ValueNode_Switch::ValueNode_Switch(const ValueBase::Type &x):
 ValueNode_Switch::ValueNode_Switch(const ValueNode::Handle &x):
        LinkableValueNode(x->get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("link_off",x);
        set_link("link_on",x);
        set_link("switch",ValueNode_Const::create(bool(false)));
@@ -184,6 +186,9 @@ ValueNode_Switch::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_Switch::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"link_off")
index 7e1b56f..d232b99 100644 (file)
@@ -56,6 +56,8 @@ using namespace synfig;
 ValueNode_TimedSwap::ValueNode_TimedSwap(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(get_type())
        {
        case ValueBase::TYPE_ANGLE:
@@ -280,6 +282,9 @@ ValueNode_TimedSwap::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_TimedSwap::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"before")
index 34f2750..f8b25ba 100644 (file)
@@ -58,6 +58,8 @@ ValueNode_TimeLoop::ValueNode_TimeLoop(const ValueBase::Type &x):
 ValueNode_TimeLoop::ValueNode_TimeLoop(const ValueNode::Handle &x):
        LinkableValueNode(x->get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        set_link("link", x);
        set_link("link_time",  ValueNode_Const::create(Time(0)));
        set_link("local_time", ValueNode_Const::create(Time(0)));
@@ -203,6 +205,9 @@ ValueNode_TimeLoop::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_TimeLoop::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc("link")
index bdc140d..5391add 100644 (file)
@@ -54,6 +54,8 @@ using namespace synfig;
 ValueNode_TimeString::ValueNode_TimeString(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_STRING:
@@ -189,6 +191,9 @@ ValueNode_TimeString::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_TimeString::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"time")
index 89850f7..3777686 100644 (file)
@@ -55,6 +55,8 @@ using namespace synfig;
 
 synfig::ValueNode_TwoTone::ValueNode_TwoTone(const ValueBase &value):LinkableValueNode(synfig::ValueBase::TYPE_GRADIENT)
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_GRADIENT:
@@ -189,6 +191,9 @@ ValueNode_TwoTone::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_TwoTone::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"color1")
index 93fe494..9d11649 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_VectorAngle::ValueNode_VectorAngle(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_ANGLE:
@@ -170,6 +172,9 @@ ValueNode_VectorAngle::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_VectorAngle::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"vector")
index 79fc79f..dc69acd 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_VectorLength::ValueNode_VectorLength(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -168,6 +170,9 @@ ValueNode_VectorLength::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_VectorLength::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"vector")
index 0716e7b..11ed424 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_VectorX::ValueNode_VectorX(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -168,6 +170,9 @@ ValueNode_VectorX::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_VectorX::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"vector")
index 68b6045..4e49cdc 100644 (file)
@@ -53,6 +53,8 @@ using namespace synfig;
 ValueNode_VectorY::ValueNode_VectorY(const ValueBase &value):
        LinkableValueNode(value.get_type())
 {
+       Vocab ret(get_children_vocab());
+       set_children_vocab(ret);
        switch(value.get_type())
        {
        case ValueBase::TYPE_REAL:
@@ -168,6 +170,9 @@ ValueNode_VectorY::check_type(ValueBase::Type type)
 LinkableValueNode::Vocab
 ValueNode_VectorY::get_children_vocab_vfunc()const
 {
+       if(children_vocab.size())
+               return children_vocab;
+
        LinkableValueNode::Vocab ret;
 
        ret.push_back(ParamDesc(ValueBase(),"vector")