X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Utils%2FConsole%2FNode.cci;h=3c21bc95b60ce7fd2f3f63fcbaa48bcbd7ed410a;hb=7f60122e00a4680d39b199a738160eb8a5dea381;hp=dabaec9b1af93a88515b9251179f12fffb5129e0;hpb=958bdb52c39fa39f4ef91cafd9628bcb4f85a03c;p=senf.git diff --git a/Utils/Console/Node.cci b/Utils/Console/Node.cci index dabaec9..3c21bc9 100644 --- a/Utils/Console/Node.cci +++ b/Utils/Console/Node.cci @@ -114,6 +114,21 @@ prefix_ bool senf::console::GenericNode::isCommand() return dynamic_cast(this); } +prefix_ senf::console::GenericNode const & senf::console::GenericNode::followLink() + const +{ + return isLink() + ? dynamic_cast(this)->follow() + : *this; +} + +prefix_ senf::console::GenericNode & senf::console::GenericNode::followLink() +{ + return isLink() + ? dynamic_cast(this)->follow() + : *this; +} + /////////////////////////////////////////////////////////////////////////// // senf::console::LinkNode @@ -154,10 +169,7 @@ prefix_ senf::console::GenericNode & senf::console::DirectoryNode::get(std::string const & name) const { - GenericNode & node (getLink(name)); - return node.isLink() - ? dynamic_cast(node).follow() - : node; + return getLink(name).followLink(); } prefix_ senf::console::DirectoryNode & @@ -270,7 +282,16 @@ prefix_ void senf::console::CommandNode::execute(std::ostream & output, 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, @@ -280,6 +301,13 @@ 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