X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2FConsole%2FOverloadedCommand.hh;h=3d6b6fcde8ce0da915694493b5b41c9f333b463d;hb=975639608e44e49058ccd52f05ffe6b21faeafef;hp=349159cd6ccbe584e8781d5916b0273ee330dd79;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Utils/Console/OverloadedCommand.hh b/senf/Utils/Console/OverloadedCommand.hh index 349159c..3d6b6fc 100644 --- a/senf/Utils/Console/OverloadedCommand.hh +++ b/senf/Utils/Console/OverloadedCommand.hh @@ -31,6 +31,7 @@ #include #include #include +#include //#include "OverloadedCommand.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -203,6 +204,9 @@ namespace console { ptr thisptr(); cptr thisptr() const; + static OverloadedCommandNode & insertOverload(DirectoryNode & dir, std::string const & name, + CommandOverload::ptr overload); + private: OverloadedCommandNode(); @@ -259,6 +263,27 @@ namespace console { std::string doc_; }; + class SimpleOverloadAttributor + : public detail::NodeFactory + { + public: + typedef OverloadedCommandNode node_type; + typedef OverloadedCommandNode & result_type; + + explicit SimpleOverloadAttributor(SimpleCommandOverload::Function fn); + + SimpleOverloadAttributor const & doc(std::string const & doc) const; + SimpleOverloadAttributor const & shortdoc(std::string const & doc) const; + SimpleOverloadAttributor const & overloadDoc(std::string const & doc) const; + + OverloadedCommandNode & create(DirectoryNode & dir, std::string const & name) const; + + private: + SimpleCommandOverload::ptr overload_; + mutable boost::optional doc_; + mutable boost::optional shortdoc_; + }; + }} ///////////////////////////////hh.e////////////////////////////////////////