// $Id$
//
-// Copyright (C) 2008
+// Copyright (C) 2008
// Fraunhofer Institute for Open Communication Systems (FOKUS)
// Competence Center NETwork research (NET), St. Augustin, GERMANY
// Stefan Bund <g0dil@berlios.de>
#include "Node.ih"
// Custom includes
-#include <senf/Utils/senfassert.hh>
#define prefix_ inline
///////////////////////////////cci.p///////////////////////////////////////
return getCommand(name);
}
-prefix_ senf::console::DirectoryNode &
-senf::console::DirectoryNode::mkdir(std::string const & name)
-{
- 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
{
children_.lower_bound(s + "\xff"));
}
-prefix_ void senf::console::DirectoryNode::link(std::string const & name, GenericNode & target)
-{
- add(name, LinkNode::create(target));
-}
-
prefix_ senf::console::DirectoryNode::DirectoryNode()
{}
bool autocomplete)
: root_ (root), dir_ (dir.thisptr()), autocomplete_ (autocomplete), init_ (false)
{}
+
#endif
///////////////////////////////////////////////////////////////////////////
return boost::static_pointer_cast<SimpleCommandNode const>(shared_from_this());
}
-#ifndef DOXYGEN
+///////////////////////////////////////////////////////////////////////////
+
+prefix_ senf::console::DirectoryNode & senf::console::provideDirectory(DirectoryNode & dir,
+ std::string const & name)
+{
+ return dir.hasChild(name) ? dir.getDirectory(name) : dir.add(name, factory::Directory());
+}
+
+
+///////////////////////////////////////////////////////////////////////////
+// senf::console::factory::SimpleCommand
+
+prefix_ senf::console::factory::SimpleCommand::SimpleCommand(SimpleCommandNode::Function fn)
+ : node_ (SimpleCommandNode::create(fn))
+{}
prefix_ senf::console::SimpleCommandNode &
-senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name,
- SimpleCommandNode::Function fn, int)
+senf::console::factory::SimpleCommand::create(DirectoryNode & dir, std::string const & name)
+ const
+{
+ return dir.add(name, node_);
+}
+
+prefix_ senf::console::factory::SimpleCommand const &
+senf::console::factory::SimpleCommand::doc(std::string const & doc)
+ const
+{
+ node_->doc(doc);
+ return *this;
+}
+
+prefix_ senf::console::factory::SimpleCommand const &
+senf::console::factory::SimpleCommand::shortdoc(std::string const & doc)
+ const
{
- return node.add(name, SimpleCommandNode::create(fn));
+ node_->shortdoc(doc);
+ return *this;
}
+///////////////////////////////////////////////////////////////////////////
+// senf::console::factory::Directory
+
+prefix_ senf::console::factory::Directory::Directory()
+ : node_ (DirectoryNode::create())
+{}
+
prefix_ senf::console::DirectoryNode &
-senf::console::senf_console_add_node(DirectoryNode & node, std::string const & name,
- DirectoryNode & dir, int)
+senf::console::factory::Directory::create(DirectoryNode & dir, std::string const & name)
+ const
{
- return node.add(name, dir.thisptr());
+ return dir.add(name, node_);
}
-#endif
+prefix_ senf::console::factory::Directory const &
+senf::console::factory::Directory::doc(std::string const & doc)
+ const
+{
+ node_->doc(doc);
+ return *this;
+}
+
+prefix_ senf::console::factory::Directory const &
+senf::console::factory::Directory::shortdoc(std::string const & doc)
+ const
+{
+ node_->shortdoc(doc);
+ return *this;
+}
+
+///////////////////////////////////////////////////////////////////////////
+// senf::console::factory::Link
+
+prefix_ senf::console::factory::Link::Link(GenericNode & target)
+ : node_ (LinkNode::create(target))
+{}
+
+prefix_ senf::console::LinkNode & senf::console::factory::Link::create(DirectoryNode & dir,
+ std::string const & name)
+ const
+{
+ return dir.add(name, node_);
+}
///////////////////////////////cci.e///////////////////////////////////////
#undef prefix_