X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Console%2FNode.cci;h=c5adaf3b231325a7ab23f6044b8c8fb532909972;hb=d2459b6c8249291588fd3d0d125ed3d38e003b55;hp=43954f3b761abfbe353b8f2cc1fa648c436139bd;hpb=c70f7413515b513656f850f51a3cc2ea9d776a37;p=senf.git diff --git a/Console/Node.cci b/Console/Node.cci index 43954f3..c5adaf3 100644 --- a/Console/Node.cci +++ b/Console/Node.cci @@ -96,14 +96,20 @@ prefix_ senf::console::DirectoryNode & senf::console::DirectoryNode::operator[](std::string const & name) const { - return dynamic_cast(get(name)); + 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)); + try { + return dynamic_cast(get(name)); + } + SENF_WRAP_EXC(std::bad_cast) } prefix_ senf::console::DirectoryNode & @@ -140,6 +146,13 @@ prefix_ senf::console::DirectoryNode::cptr senf::console::DirectoryNode::thisptr } /////////////////////////////////////////////////////////////////////////// +// senf::console::SyntaxErrorException + +prefix_ senf::console::SyntaxErrorException::SyntaxErrorException(std::string const & msg) + : Exception(msg) +{} + +/////////////////////////////////////////////////////////////////////////// // senf::console::CommandNode prefix_ senf::console::CommandNode::ptr senf::console::CommandNode::thisptr() @@ -156,15 +169,16 @@ prefix_ senf::console::CommandNode::cptr senf::console::CommandNode::thisptr() prefix_ senf::console::CommandNode::CommandNode() {} -/////////////////////////////////////////////////////////////////////////// -// senf::console::SimpleCommandNode - -prefix_ void senf::console::SimpleCommandNode::operator()(std::ostream & output, - Arguments const & arguments) +prefix_ void senf::console::CommandNode::operator()(std::ostream & output, + Arguments const & arguments) + const { - fn_(output, arguments); + v_execute(output, arguments); } +/////////////////////////////////////////////////////////////////////////// +// senf::console::SimpleCommandNode + prefix_ senf::console::SimpleCommandNode::SimpleCommandNode(Function const & fn) : fn_ (fn) {} @@ -182,6 +196,17 @@ senf::console::SimpleCommandNode::doc(std::string const & doc) return *this; } +prefix_ senf::console::SimpleCommandNode::ptr senf::console::SimpleCommandNode::thisptr() +{ + return boost::static_pointer_cast(shared_from_this()); +} + +prefix_ senf::console::SimpleCommandNode::cptr senf::console::SimpleCommandNode::thisptr() + const +{ + return boost::static_pointer_cast(shared_from_this()); +} + ///////////////////////////////cci.e/////////////////////////////////////// #undef prefix_