**
** \legal
** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+** Copyright (c) 2008 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
/* === M A C R O S ========================================================= */
ACTION_INIT(Action::ValueNodeDynamicListUnLoop);
-ACTION_SET_NAME(Action::ValueNodeDynamicListUnLoop,"value_node_dynamic_list_unloop");
+ACTION_SET_NAME(Action::ValueNodeDynamicListUnLoop,"ValueNodeDynamicListUnLoop");
ACTION_SET_LOCAL_NAME(Action::ValueNodeDynamicListUnLoop,N_("Unloop"));
ACTION_SET_TASK(Action::ValueNodeDynamicListUnLoop,"unloop");
ACTION_SET_CATEGORY(Action::ValueNodeDynamicListUnLoop,Action::CATEGORY_VALUEDESC|Action::CATEGORY_VALUENODE);
bool
Action::ValueNodeDynamicListUnLoop::is_candidate(const ParamList &x)
{
- if(candidate_check(get_param_vocab(),x))
- {
- ValueNode::Handle value_node;
- ValueDesc value_desc(x.find("value_desc")->second.get_value_desc());
- if(value_desc.parent_is_value_node())
- value_node = value_desc.get_parent_value_node();
- else
- value_node = x.find("value_node")->second.get_value_node();
- if(!ValueNode_DynamicList::Handle::cast_dynamic(value_node))
- return false;
- if(ValueNode_DynamicList::Handle::cast_dynamic(value_node)->get_loop()==false)
- return false;
- return true;
- }
- return false;
+ if (!candidate_check(get_param_vocab(),x))
+ return false;
+
+ ValueNode::Handle value_node;
+ ValueDesc value_desc(x.find("value_desc")->second.get_value_desc());
+
+ if(value_desc.parent_is_value_node())
+ value_node = value_desc.get_parent_value_node();
+ else
+ value_node = x.find("value_node")->second.get_value_node();
+
+ // We need a dynamic list.
+ return (ValueNode_DynamicList::Handle::cast_dynamic(value_node) &&
+ // We need the list to be looped.
+ ValueNode_DynamicList::Handle::cast_dynamic(value_node)->get_loop());
}
bool