///////////////////////////////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)
{}
///////////////////////////////////////////////////////////////////////////