From: Carlos Lopez Date: Tue, 21 Dec 2010 15:59:44 +0000 (+0100) Subject: Use link_count from children vocabulary and return the stored vocabulary if already... X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=dbc88fd05c8d29849d2e6227d23605508eb188ae;p=synfig.git Use link_count from children vocabulary and return the stored vocabulary if already was set. Store the children vocabulary at construction time --- diff --git a/synfig-core/src/modules/mod_noise/valuenode_random.cpp b/synfig-core/src/modules/mod_noise/valuenode_random.cpp index 22d6666..1aeb325 100644 --- a/synfig-core/src/modules/mod_noise/valuenode_random.cpp +++ b/synfig-core/src/modules/mod_noise/valuenode_random.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode.cpp b/synfig-core/src/synfig/valuenode.cpp index 1ff921e..6e1e6a4 100644 --- a/synfig-core/src/synfig/valuenode.cpp +++ b/synfig-core/src/synfig/valuenode.cpp @@ -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()); +} diff --git a/synfig-core/src/synfig/valuenode.h b/synfig-core/src/synfig/valuenode.h index 7fde918..830cd30 100644 --- a/synfig-core/src/synfig/valuenode.h +++ b/synfig-core/src/synfig/valuenode.h @@ -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 diff --git a/synfig-core/src/synfig/valuenode_add.cpp b/synfig-core/src/synfig/valuenode_add.cpp index 901f899..87ab7e3 100644 --- a/synfig-core/src/synfig/valuenode_add.cpp +++ b/synfig-core/src/synfig/valuenode_add.cpp @@ -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()); diff --git a/synfig-core/src/synfig/valuenode_and.cpp b/synfig-core/src/synfig/valuenode_and.cpp index d2f9e46..bab3464 100644 --- a/synfig-core/src/synfig/valuenode_and.cpp +++ b/synfig-core/src/synfig/valuenode_and.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_anglestring.cpp b/synfig-core/src/synfig/valuenode_anglestring.cpp index 7dbb73c..4177777 100644 --- a/synfig-core/src/synfig/valuenode_anglestring.cpp +++ b/synfig-core/src/synfig/valuenode_anglestring.cpp @@ -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: diff --git a/synfig-core/src/synfig/valuenode_atan2.cpp b/synfig-core/src/synfig/valuenode_atan2.cpp index ceec7a7..ff1fb18 100644 --- a/synfig-core/src/synfig/valuenode_atan2.cpp +++ b/synfig-core/src/synfig/valuenode_atan2.cpp @@ -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: diff --git a/synfig-core/src/synfig/valuenode_blinecalctangent.cpp b/synfig-core/src/synfig/valuenode_blinecalctangent.cpp index 0598276..04278b8 100644 --- a/synfig-core/src/synfig/valuenode_blinecalctangent.cpp +++ b/synfig-core/src/synfig/valuenode_blinecalctangent.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_blinecalcvertex.cpp b/synfig-core/src/synfig/valuenode_blinecalcvertex.cpp index 7346207..5f2fde6 100644 --- a/synfig-core/src/synfig/valuenode_blinecalcvertex.cpp +++ b/synfig-core/src/synfig/valuenode_blinecalcvertex.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_blinecalcwidth.cpp b/synfig-core/src/synfig/valuenode_blinecalcwidth.cpp index d78f99a..d7db04e 100644 --- a/synfig-core/src/synfig/valuenode_blinecalcwidth.cpp +++ b/synfig-core/src/synfig/valuenode_blinecalcwidth.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_blinereversetangent.cpp b/synfig-core/src/synfig/valuenode_blinereversetangent.cpp index dcdee81..922d9a3 100644 --- a/synfig-core/src/synfig/valuenode_blinereversetangent.cpp +++ b/synfig-core/src/synfig/valuenode_blinereversetangent.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_compare.cpp b/synfig-core/src/synfig/valuenode_compare.cpp index d5d09fa..627d843 100644 --- a/synfig-core/src/synfig/valuenode_compare.cpp +++ b/synfig-core/src/synfig/valuenode_compare.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_composite.cpp b/synfig-core/src/synfig/valuenode_composite.cpp index da06185..342f8ab 100644 --- a/synfig-core/src/synfig/valuenode_composite.cpp +++ b/synfig-core/src/synfig/valuenode_composite.cpp @@ -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()) diff --git a/synfig-core/src/synfig/valuenode_cos.cpp b/synfig-core/src/synfig/valuenode_cos.cpp index 41fda7d..2eef6cd 100644 --- a/synfig-core/src/synfig/valuenode_cos.cpp +++ b/synfig-core/src/synfig/valuenode_cos.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_dotproduct.cpp b/synfig-core/src/synfig/valuenode_dotproduct.cpp index afb8a31..f478d01 100644 --- a/synfig-core/src/synfig/valuenode_dotproduct.cpp +++ b/synfig-core/src/synfig/valuenode_dotproduct.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_duplicate.cpp b/synfig-core/src/synfig/valuenode_duplicate.cpp index d371d75..b3e88aa 100644 --- a/synfig-core/src/synfig/valuenode_duplicate.cpp +++ b/synfig-core/src/synfig/valuenode_duplicate.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_exp.cpp b/synfig-core/src/synfig/valuenode_exp.cpp index 7b96298..200d438 100644 --- a/synfig-core/src/synfig/valuenode_exp.cpp +++ b/synfig-core/src/synfig/valuenode_exp.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_gradientcolor.cpp b/synfig-core/src/synfig/valuenode_gradientcolor.cpp index 980cf08..bfbda7d 100644 --- a/synfig-core/src/synfig/valuenode_gradientcolor.cpp +++ b/synfig-core/src/synfig/valuenode_gradientcolor.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_gradientrotate.cpp b/synfig-core/src/synfig/valuenode_gradientrotate.cpp index f2496da..709a99a 100644 --- a/synfig-core/src/synfig/valuenode_gradientrotate.cpp +++ b/synfig-core/src/synfig/valuenode_gradientrotate.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_greyed.cpp b/synfig-core/src/synfig/valuenode_greyed.cpp index a68a9ac..e39cabc 100644 --- a/synfig-core/src/synfig/valuenode_greyed.cpp +++ b/synfig-core/src/synfig/valuenode_greyed.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_integer.cpp b/synfig-core/src/synfig/valuenode_integer.cpp index 12b3a9c..8b44504 100644 --- a/synfig-core/src/synfig/valuenode_integer.cpp +++ b/synfig-core/src/synfig/valuenode_integer.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_intstring.cpp b/synfig-core/src/synfig/valuenode_intstring.cpp index 408469e..e29199d 100644 --- a/synfig-core/src/synfig/valuenode_intstring.cpp +++ b/synfig-core/src/synfig/valuenode_intstring.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_join.cpp b/synfig-core/src/synfig/valuenode_join.cpp index bc01031..98edb47 100644 --- a/synfig-core/src/synfig/valuenode_join.cpp +++ b/synfig-core/src/synfig/valuenode_join.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_linear.cpp b/synfig-core/src/synfig/valuenode_linear.cpp index 2fabe01..cc716a8 100644 --- a/synfig-core/src/synfig/valuenode_linear.cpp +++ b/synfig-core/src/synfig/valuenode_linear.cpp @@ -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()) diff --git a/synfig-core/src/synfig/valuenode_log.cpp b/synfig-core/src/synfig/valuenode_log.cpp index 4ddb8a7..7973a34 100644 --- a/synfig-core/src/synfig/valuenode_log.cpp +++ b/synfig-core/src/synfig/valuenode_log.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_not.cpp b/synfig-core/src/synfig/valuenode_not.cpp index dfe0f9a..9e835c0 100644 --- a/synfig-core/src/synfig/valuenode_not.cpp +++ b/synfig-core/src/synfig/valuenode_not.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_or.cpp b/synfig-core/src/synfig/valuenode_or.cpp index 2a94e88..4cfff5c 100644 --- a/synfig-core/src/synfig/valuenode_or.cpp +++ b/synfig-core/src/synfig/valuenode_or.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_pow.cpp b/synfig-core/src/synfig/valuenode_pow.cpp index 0b9d319..94369bf 100644 --- a/synfig-core/src/synfig/valuenode_pow.cpp +++ b/synfig-core/src/synfig/valuenode_pow.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_radialcomposite.cpp b/synfig-core/src/synfig/valuenode_radialcomposite.cpp index 5d320b6..85b882a 100644 --- a/synfig-core/src/synfig/valuenode_radialcomposite.cpp +++ b/synfig-core/src/synfig/valuenode_radialcomposite.cpp @@ -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()) diff --git a/synfig-core/src/synfig/valuenode_range.cpp b/synfig-core/src/synfig/valuenode_range.cpp index 6132c1a..e959388 100644 --- a/synfig-core/src/synfig/valuenode_range.cpp +++ b/synfig-core/src/synfig/valuenode_range.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_realstring.cpp b/synfig-core/src/synfig/valuenode_realstring.cpp index 181ef15..cb0f4e6 100644 --- a/synfig-core/src/synfig/valuenode_realstring.cpp +++ b/synfig-core/src/synfig/valuenode_realstring.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_reciprocal.cpp b/synfig-core/src/synfig/valuenode_reciprocal.cpp index 11362b9..55dde10 100644 --- a/synfig-core/src/synfig/valuenode_reciprocal.cpp +++ b/synfig-core/src/synfig/valuenode_reciprocal.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_reference.cpp b/synfig-core/src/synfig/valuenode_reference.cpp index fa89437..a6ac870 100644 --- a/synfig-core/src/synfig/valuenode_reference.cpp +++ b/synfig-core/src/synfig/valuenode_reference.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_repeat_gradient.cpp b/synfig-core/src/synfig/valuenode_repeat_gradient.cpp index 601a176..306b393 100644 --- a/synfig-core/src/synfig/valuenode_repeat_gradient.cpp +++ b/synfig-core/src/synfig/valuenode_repeat_gradient.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_scale.cpp b/synfig-core/src/synfig/valuenode_scale.cpp index da38c54..7552cdb 100644 --- a/synfig-core/src/synfig/valuenode_scale.cpp +++ b/synfig-core/src/synfig/valuenode_scale.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_segcalctangent.cpp b/synfig-core/src/synfig/valuenode_segcalctangent.cpp index 5dd3150..8969221 100644 --- a/synfig-core/src/synfig/valuenode_segcalctangent.cpp +++ b/synfig-core/src/synfig/valuenode_segcalctangent.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_segcalcvertex.cpp b/synfig-core/src/synfig/valuenode_segcalcvertex.cpp index 81525af..6a88f06 100644 --- a/synfig-core/src/synfig/valuenode_segcalcvertex.cpp +++ b/synfig-core/src/synfig/valuenode_segcalcvertex.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_sine.cpp b/synfig-core/src/synfig/valuenode_sine.cpp index 3ebe280..17d8efc 100644 --- a/synfig-core/src/synfig/valuenode_sine.cpp +++ b/synfig-core/src/synfig/valuenode_sine.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_step.cpp b/synfig-core/src/synfig/valuenode_step.cpp index 9b9a160..337657a 100644 --- a/synfig-core/src/synfig/valuenode_step.cpp +++ b/synfig-core/src/synfig/valuenode_step.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_stripes.cpp b/synfig-core/src/synfig/valuenode_stripes.cpp index f214176..92e9420 100644 --- a/synfig-core/src/synfig/valuenode_stripes.cpp +++ b/synfig-core/src/synfig/valuenode_stripes.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_subtract.cpp b/synfig-core/src/synfig/valuenode_subtract.cpp index 7436551..34d9d56 100644 --- a/synfig-core/src/synfig/valuenode_subtract.cpp +++ b/synfig-core/src/synfig/valuenode_subtract.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_switch.cpp b/synfig-core/src/synfig/valuenode_switch.cpp index 5fc50ce..9cd24ae 100644 --- a/synfig-core/src/synfig/valuenode_switch.cpp +++ b/synfig-core/src/synfig/valuenode_switch.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_timedswap.cpp b/synfig-core/src/synfig/valuenode_timedswap.cpp index 7e1b56f..d232b99 100644 --- a/synfig-core/src/synfig/valuenode_timedswap.cpp +++ b/synfig-core/src/synfig/valuenode_timedswap.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_timeloop.cpp b/synfig-core/src/synfig/valuenode_timeloop.cpp index 34f2750..f8b25ba 100644 --- a/synfig-core/src/synfig/valuenode_timeloop.cpp +++ b/synfig-core/src/synfig/valuenode_timeloop.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_timestring.cpp b/synfig-core/src/synfig/valuenode_timestring.cpp index bdc140d..5391add 100644 --- a/synfig-core/src/synfig/valuenode_timestring.cpp +++ b/synfig-core/src/synfig/valuenode_timestring.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_twotone.cpp b/synfig-core/src/synfig/valuenode_twotone.cpp index 89850f7..3777686 100644 --- a/synfig-core/src/synfig/valuenode_twotone.cpp +++ b/synfig-core/src/synfig/valuenode_twotone.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_vectorangle.cpp b/synfig-core/src/synfig/valuenode_vectorangle.cpp index 93fe494..9d11649 100644 --- a/synfig-core/src/synfig/valuenode_vectorangle.cpp +++ b/synfig-core/src/synfig/valuenode_vectorangle.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_vectorlength.cpp b/synfig-core/src/synfig/valuenode_vectorlength.cpp index 79fc79f..dc69acd 100644 --- a/synfig-core/src/synfig/valuenode_vectorlength.cpp +++ b/synfig-core/src/synfig/valuenode_vectorlength.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_vectorx.cpp b/synfig-core/src/synfig/valuenode_vectorx.cpp index 0716e7b..11ed424 100644 --- a/synfig-core/src/synfig/valuenode_vectorx.cpp +++ b/synfig-core/src/synfig/valuenode_vectorx.cpp @@ -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") diff --git a/synfig-core/src/synfig/valuenode_vectory.cpp b/synfig-core/src/synfig/valuenode_vectory.cpp index 68b6045..4e49cdc 100644 --- a/synfig-core/src/synfig/valuenode_vectory.cpp +++ b/synfig-core/src/synfig/valuenode_vectory.cpp @@ -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")