X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FNode.cci;h=11d212e3d2edbb11b3e73a2484ec87b486225448;hb=748363b235c4651b3992cc291a95dc2e18e45724;hp=5f824bd69d30a0c970857696dd46531e1e38ca56;hpb=30c1daf8a1c404209210f76a9a54bcfde443603b;p=senf.git diff --git a/Console/Node.cci b/Console/Node.cci index 5f824bd..11d212e 100644 --- a/Console/Node.cci +++ b/Console/Node.cci @@ -92,18 +92,45 @@ prefix_ senf::console::DirectoryNode::ptr senf::console::DirectoryNode::create() return ptr(new DirectoryNode()); } +prefix_ bool senf::console::DirectoryNode::hasChild(std::string const & name) + const +{ + ChildMap::const_iterator i (children_.find(name)); + return i != children_.end(); +} + +prefix_ senf::console::DirectoryNode & +senf::console::DirectoryNode::getDirectory(std::string const & name) + const +{ + try { + return dynamic_cast(get(name)); + } + SENF_WRAP_EXC(std::bad_cast) +} + prefix_ senf::console::DirectoryNode & senf::console::DirectoryNode::operator[](std::string const & name) const { - return dynamic_cast(get(name)); + return getDirectory(name); +} + +prefix_ senf::console::CommandNode & +senf::console::DirectoryNode::getCommand(std::string const & name) + const +{ + try { + return dynamic_cast(get(name)); + } + SENF_WRAP_EXC(std::bad_cast) } prefix_ senf::console::CommandNode & senf::console::DirectoryNode::operator()(std::string const & name) const { - return dynamic_cast(get(name)); + return getCommand(name); } prefix_ senf::console::DirectoryNode & @@ -163,11 +190,18 @@ prefix_ senf::console::CommandNode::cptr senf::console::CommandNode::thisptr() prefix_ senf::console::CommandNode::CommandNode() {} +prefix_ void senf::console::CommandNode::execute(std::ostream & output, + ParseCommandInfo const & command) + const +{ + v_execute(output, command); +} + prefix_ void senf::console::CommandNode::operator()(std::ostream & output, - Arguments const & arguments) + ParseCommandInfo const & command) const { - v_execute(output, arguments); + execute(output, command); } ///////////////////////////////////////////////////////////////////////////