v_help(output);
}
+prefix_ std::string senf::console::GenericNode::shorthelp()
+ const
+{
+ return v_shorthelp();
+}
+
prefix_ bool senf::console::GenericNode::operator==(GenericNode & other)
const
{
return dynamic_cast<CommandNode const *>(this);
}
+prefix_ senf::console::GenericNode const & senf::console::GenericNode::followLink()
+ const
+{
+ return isLink()
+ ? dynamic_cast<LinkNode const *>(this)->follow()
+ : *this;
+}
+
+prefix_ senf::console::GenericNode & senf::console::GenericNode::followLink()
+{
+ return isLink()
+ ? dynamic_cast<LinkNode *>(this)->follow()
+ : *this;
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::console::LinkNode
senf::console::DirectoryNode::get(std::string const & name)
const
{
- GenericNode & node (getLink(name));
- return node.isLink()
- ? dynamic_cast<LinkNode&>(node).follow()
- : node;
+ return getLink(name).followLink();
}
prefix_ senf::console::DirectoryNode &
return add(name, create());
}
+prefix_ senf::console::DirectoryNode &
+senf::console::DirectoryNode::provideDirectory(std::string const & name)
+{
+ return hasChild(name) ? getDirectory(name) : mkdir(name);
+}
+
prefix_ senf::console::DirectoryNode::ChildrenRange senf::console::DirectoryNode::children()
const
{
return *this;
}
+prefix_ senf::console::DirectoryNode &
+senf::console::DirectoryNode::shortdoc(std::string const & doc)
+{
+ shortdoc_ = doc;
+ return *this;
+}
+
prefix_ senf::console::DirectoryNode::ptr senf::console::DirectoryNode::thisptr()
{
return boost::static_pointer_cast<DirectoryNode>(shared_from_this());
///////////////////////////////////////////////////////////////////////////
// senf::console::detail::NodeTraverser
+#ifndef DOXYGEN
prefix_ senf::console::detail::NodeTraverser::NodeTraverser(DirectoryNode & root,
DirectoryNode & dir,
bool autocomplete)
: root_ (root), dir_ (dir.thisptr()), autocomplete_ (autocomplete), init_ (false)
{}
+#endif
///////////////////////////////////////////////////////////////////////////
// senf::console::CommandNode
ParseCommandInfo const & command)
const
{
- v_execute(output, command);
+ boost::any rv;
+ execute(rv, output, command);
+}
+
+prefix_ void senf::console::CommandNode::execute(boost::any & rv, std::ostream & output,
+ ParseCommandInfo const & command)
+ const
+{
+ rv = boost::any();
+ v_execute(rv, output, command);
}
prefix_ void senf::console::CommandNode::operator()(std::ostream & output,
execute(output, command);
}
+prefix_ void senf::console::CommandNode::operator()(boost::any & rv, std::ostream & output,
+ ParseCommandInfo const & command)
+ const
+{
+ execute(rv, output, command);
+}
+
///////////////////////////////////////////////////////////////////////////
// senf::console::SimpleCommandNode
return *this;
}
+prefix_ senf::console::SimpleCommandNode &
+senf::console::SimpleCommandNode::shortdoc(std::string const & doc)
+{
+ shortdoc_ = doc;
+ return *this;
+}
+
prefix_ senf::console::SimpleCommandNode::ptr senf::console::SimpleCommandNode::thisptr()
{
return boost::static_pointer_cast<SimpleCommandNode>(shared_from_this());
return node.add(name, SimpleCommandNode::create(fn));
}
+prefix_ senf::console::DirectoryNode &
+senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name,
+ DirectoryNode & dir, int)
+{
+ return node.add(name, dir.thisptr());
+}
+
#endif
///////////////////////////////cci.e///////////////////////////////////////