Console: Refactor argument parsing into iterator
[senf.git] / Console / OverloadedCommand.cci
index 6fc076d..4892e53 100644 (file)
@@ -48,17 +48,37 @@ prefix_ void senf::console::CommandOverload::operator()(std::ostream & os,
     execute(os, command);
 }
 
-prefix_ void senf::console::CommandOverload::help(std::ostream & os)
+prefix_ unsigned senf::console::CommandOverload::numArguments()
+    const
+{
+    return v_numArguments();
+}
+
+prefix_ void senf::console::CommandOverload::argumentDoc(unsigned index, ArgumentDoc & doc)
+    const
+{
+    return v_argumentDoc(index,doc);
+}
+
+prefix_ std::string senf::console::CommandOverload::doc()
+    const
 {
-    v_help(os);
+    return v_doc();
 }
 
 prefix_ senf::console::OverloadedCommandNode & senf::console::CommandOverload::node()
+    const
 {
     SENF_ASSERT( node_ );
     return *node_;
 }
 
+prefix_ unsigned senf::console::CommandOverload::overloadIndex()
+    const
+{
+    return node().overloadIndex(*this);
+}
+
 prefix_ senf::console::CommandOverload::CommandOverload()
     : node_(0)
 {}
@@ -89,6 +109,13 @@ senf::console::OverloadedCommandNode::doc(std::string const & doc)
     return *this;
 }
 
+prefix_ unsigned
+senf::console::OverloadedCommandNode::overloadIndex(CommandOverload const & overload)
+{
+    return find(overloads_.begin(), overloads_.end(), CommandOverload::cptr(&overload)) 
+        - overloads_.begin() + 1;
+}
+
 prefix_ senf::console::OverloadedCommandNode::OverloadedCommandNode()
 {}