return dynamic_cast<CommandNode const *>(this);
}
+prefix_ senf::console::GenericNode const & senf::console::GenericNode::followLink()
+ const
+{
+ return isLink()
+ ? dynamic_cast<LinkNode const *>(this)->follow()
+ : *this;
+}
+
+prefix_ senf::console::GenericNode & senf::console::GenericNode::followLink()
+{
+ return isLink()
+ ? dynamic_cast<LinkNode *>(this)->follow()
+ : *this;
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::console::LinkNode
senf::console::DirectoryNode::get(std::string const & name)
const
{
- GenericNode & node (getLink(name));
- return node.isLink()
- ? dynamic_cast<LinkNode&>(node).follow()
- : node;
+ return getLink(name).followLink();
}
prefix_ senf::console::DirectoryNode &
ParseCommandInfo const & command)
const
{
- v_execute(output, command);
+ boost::any rv;
+ execute(rv, output, command);
+}
+
+prefix_ void senf::console::CommandNode::execute(boost::any & rv, std::ostream & output,
+ ParseCommandInfo const & command)
+ const
+{
+ rv = boost::any();
+ v_execute(rv, output, command);
}
prefix_ void senf::console::CommandNode::operator()(std::ostream & output,
execute(output, command);
}
+prefix_ void senf::console::CommandNode::operator()(boost::any & rv, std::ostream & output,
+ ParseCommandInfo const & command)
+ const
+{
+ execute(rv, output, command);
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandNode