some more #include cleanups
[senf.git] / senf / Utils / Console / OverloadedCommand.hh
index 3be6b42..3d6b6fc 100644 (file)
@@ -30,7 +30,8 @@
 #include "Node.hh"
 #include <boost/intrusive_ptr.hpp>
 #include <boost/range/iterator_range.hpp>
-#include "../../Utils/intrusive_refcount.hh"
+#include <senf/Utils/intrusive_refcount.hh>
+#include <boost/optional.hpp>
 
 //#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<std::string> doc_;
+        mutable boost::optional<std::string> shortdoc_;
+    };
+
 }}
 
 ///////////////////////////////hh.e////////////////////////////////////////