Utils/Console: Console UDPServer
[senf.git] / Utils / Console / OverloadedCommand.cc
index ecc5c44..c9e7529 100644 (file)
@@ -155,7 +155,25 @@ prefix_ void senf::console::OverloadedCommandNode::v_help(std::ostream & os)
     }
 }
 
-prefix_ void senf::console::OverloadedCommandNode::v_execute(std::ostream & output,
+prefix_ std::string senf::console::OverloadedCommandNode::v_shorthelp()
+    const
+{
+    if (!shortdoc_.empty())
+        return shortdoc_;
+    if (!doc_.empty())
+        return doc_.substr(0,doc_.find('\n'));
+    Overloads::const_iterator i (overloads_.begin());
+    Overloads::const_iterator const i_end (overloads_.end());
+    for (; i != i_end; ++i) {
+        std::string overloadDoc ((*i)->doc());
+        if (! overloadDoc.empty()) 
+            return overloadDoc.substr(0,overloadDoc.find('\n'));
+    }
+    return "";
+}
+
+prefix_ void senf::console::OverloadedCommandNode::v_execute(boost::any & rv,
+                                                             std::ostream & os,
                                                              ParseCommandInfo const & command)
     const
 {
@@ -164,7 +182,7 @@ prefix_ void senf::console::OverloadedCommandNode::v_execute(std::ostream & outp
     SyntaxErrorException err;
     for (; i != i_end; ++i) {
         try {
-            (**i)(output, command);
+            (**i)(rv, os, command);
             return;
         }
         catch (SyntaxErrorException & ex) {
@@ -193,7 +211,8 @@ prefix_ std::string senf::console::SimpleCommandOverload::v_doc()
     return doc_;
 }
 
-prefix_ void senf::console::SimpleCommandOverload::v_execute(std::ostream & os,
+prefix_ void senf::console::SimpleCommandOverload::v_execute(boost::any & rv,
+                                                             std::ostream & os,
                                                              ParseCommandInfo const & command)
     const
 {