Fix build script
[senf.git] / Console / OverloadedCommand.cci
index 21add3b..d48d9d6 100644 (file)
 ///////////////////////////////cci.p///////////////////////////////////////
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::console::CommandOverload
+// senf::console::OverloadedCommandNode
 
-prefix_ senf::console::CommandOverload::~CommandOverload()
-{}
+prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::create()
+{
+    return ptr(new OverloadedCommandNode());
+}
 
-prefix_ void senf::console::CommandOverload::operator()(std::ostream & os,
-                                                        Arguments const & arguments)
+prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::thisptr()
 {
-    v_execute(os, arguments);
+    return boost::static_pointer_cast<OverloadedCommandNode>(shared_from_this());
 }
 
-prefix_ void senf::console::CommandOverload::help(std::ostream & os)
+prefix_ senf::console::OverloadedCommandNode::cptr senf::console::OverloadedCommandNode::thisptr()
+    const
 {
-    v_help(os);
+    return boost::static_pointer_cast<OverloadedCommandNode const>(shared_from_this());
 }
 
-prefix_ senf::console::OverloadedCommandNode & senf::console::CommandOverload::node()
+prefix_ senf::console::OverloadedCommandNode &
+senf::console::OverloadedCommandNode::doc(std::string const & doc)
 {
-    SENF_ASSERT( node_ );
-    return *node_;
+    doc_ = doc;
+    return *this;
 }
 
-prefix_ senf::console::CommandOverload::CommandOverload()
-    : node_(0)
+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()
 {}
 
 ///////////////////////////////////////////////////////////////////////////
-// senf::console::OverloadedCommandNode
+// senf::console::CommandOverload
 
-prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::create()
+prefix_ senf::console::CommandOverload::~CommandOverload()
+{}
+
+prefix_ void senf::console::CommandOverload::execute(std::ostream & os,
+                                                     ParseCommandInfo const & command)
 {
-    return ptr(new OverloadedCommandNode());
+    v_execute(os, command);
 }
 
-prefix_ void senf::console::OverloadedCommandNode::add(CommandOverload::ptr overload)
+prefix_ void senf::console::CommandOverload::operator()(std::ostream & os,
+                                                        ParseCommandInfo const & command)
 {
-    overloads_.push_back(overload);
+    execute(os, command);
 }
 
-prefix_ senf::console::OverloadedCommandNode::ptr senf::console::OverloadedCommandNode::thisptr()
+prefix_ unsigned senf::console::CommandOverload::numArguments()
+    const
 {
-    return boost::static_pointer_cast<OverloadedCommandNode>(shared_from_this());
+    return v_numArguments();
 }
 
-prefix_ senf::console::OverloadedCommandNode::cptr senf::console::OverloadedCommandNode::thisptr()
+prefix_ void senf::console::CommandOverload::argumentDoc(unsigned index, ArgumentDoc & doc)
     const
 {
-    return boost::static_pointer_cast<OverloadedCommandNode const>(shared_from_this());
+    return v_argumentDoc(index,doc);
 }
 
-prefix_ senf::console::OverloadedCommandNode &
-senf::console::OverloadedCommandNode::doc(std::string const & doc)
+prefix_ std::string senf::console::CommandOverload::doc()
+    const
 {
-    doc_ = doc;
-    return *this;
+    return v_doc();
 }
 
-prefix_ senf::console::OverloadedCommandNode::OverloadedCommandNode()
+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)
 {}
 
 ///////////////////////////////////////////////////////////////////////////