/* === H E A D E R S ======================================================= */
-#define SYNFIG_NO_ANGLE
-
-//#define HAS_HASH_MAP 1
-
#ifdef USING_PCH
# include "pch.h"
#else
#include "valuenode.h"
#include "general.h"
#include "canvas.h"
-#include "paramdesc.h"
#include "releases.h"
#include "valuenode_const.h"
ADD_VALUENODE(ValueNode_IntString, "intstring", _("Int String"), RELEASE_VERSION_0_61_09); // SVN r2010
ADD_VALUENODE(ValueNode_Logarithm, "logarithm", _("Logarithm"), RELEASE_VERSION_0_61_09); // SVN r2034
- ADD_VALUENODE(ValueNode_Greyed, "greyed", _("Greyed"), RELEASE_VERSION_0_61_10); // SVN r2305
- ADD_VALUENODE(ValueNode_Pow, "power", _("Power"), RELEASE_VERSION_0_61_10); // SVN r2362
- ADD_VALUENODE(ValueNode_Compare, "compare", _("Compare"), RELEASE_VERSION_0_61_10); // SVN r2364
- ADD_VALUENODE(ValueNode_Not, "not", _("Not"), RELEASE_VERSION_0_61_10); // SVN r2364
- ADD_VALUENODE(ValueNode_And, "and", _("And"), RELEASE_VERSION_0_61_10); // SVN r2364
- ADD_VALUENODE(ValueNode_Or, "or", _("Or"), RELEASE_VERSION_0_61_10); // SVN r2364
+ ADD_VALUENODE(ValueNode_Greyed, "greyed", _("Greyed"), RELEASE_VERSION_0_62_00); // SVN r2305
+ ADD_VALUENODE(ValueNode_Pow, "power", _("Power"), RELEASE_VERSION_0_62_00); // SVN r2362
+ ADD_VALUENODE(ValueNode_Compare, "compare", _("Compare"), RELEASE_VERSION_0_62_00); // SVN r2364
+ ADD_VALUENODE(ValueNode_Not, "not", _("Not"), RELEASE_VERSION_0_62_00); // SVN r2364
+ ADD_VALUENODE(ValueNode_And, "and", _("And"), RELEASE_VERSION_0_62_00); // SVN r2364
+ ADD_VALUENODE(ValueNode_Or, "or", _("Or"), RELEASE_VERSION_0_62_00); // SVN r2364
#undef ADD_VALUENODE
#undef ADD_VALUENODE2
ValueNode::subsys_stop()
{
delete book_;
-/* if(global_value_node_map.size() || value_node_count)
- {
- if(value_node_count)
- synfig::error("%d ValueNodes haven't been destroyed yet!",value_node_count);
-
- if(global_value_node_map.size()!=value_node_count)
- synfig::error("value node count mismatch! map.size()!=value_node_count (%d!=%d)",global_value_node_map.size(),value_node_count);
-
- GlobalValueNodeMap::iterator iter;
- for(iter=global_value_node_map.begin();iter!=global_value_node_map.end();++iter)
- {
- if(!iter->second->is_exported())
- synfig::info(_("%s: count:%d name:%s type:%s"),
- iter->first.get_string().c_str(),
- iter->second->count(),
- iter->second->get_name().c_str(),
- ValueBase::type_local_name(iter->second->get_type()).c_str()
- );
- else
- synfig::info(_("%s: id:%s count:%d name:%s type:%s"),
- iter->first.get_string().c_str(),
- iter->second->get_id().c_str(),
- iter->second->count(),
- iter->second->get_name().c_str(),
- ValueBase::type_local_name(iter->second->get_type()).c_str()
- );
- }
- }
-*/
return true;
}
return description;
}
+
+String
+LinkableValueNode::link_name(int i)const
+{
+ Vocab vocab(get_children_vocab());
+ Vocab::iterator iter(vocab.begin());
+ int j=0;
+ for(; iter!=vocab.end(), j<i; iter++, j++);
+ return iter!=vocab.end()?iter->get_name():String();
+}
+
+String
+LinkableValueNode::link_local_name(int i)const
+{
+ Vocab vocab(get_children_vocab());
+ Vocab::iterator iter(vocab.begin());
+ int j=0;
+ for(; iter!=vocab.end(), j<i; iter++, j++);
+ return iter!=vocab.end()?iter->get_local_name():String();
+}
+
+int
+LinkableValueNode::get_link_index_from_name(const String &name)const
+{
+ Vocab vocab(get_children_vocab());
+ Vocab::iterator iter(vocab.begin());
+ int j=0;
+ for(; iter!=vocab.end(); iter++, j++)
+ if(iter->get_name()==name) return j;
+ 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(const Vocab &newvocab)
+{
+ children_vocab.assign(newvocab.begin(),newvocab.end());
+}