name_ = name;
}
-prefix_ void senf::console::GenericNode::name(GenericNode & node, std::string const & name)
-{
- node.name_ = name;
-}
-
prefix_ boost::shared_ptr<senf::console::DirectoryNode> senf::console::GenericNode::parent()
const
{
prefix_ senf::console::GenericNode::ptr senf::console::GenericNode::unlink()
{
- SENF_ASSERT( parent() );
- return parent()->remove(name());
+ if (parent_)
+ return parent()->remove(name());
+ else
+ return thisptr();
}
prefix_ void senf::console::GenericNode::help(std::ostream & output)
///////////////////////////////////////////////////////////////////////////
// senf::console::DirectoryNode
-prefix_ std::auto_ptr<senf::console::DirectoryNode>
-senf::console::DirectoryNode::create()
+prefix_ senf::console::DirectoryNode::ptr senf::console::DirectoryNode::create()
{
- return std::auto_ptr<DirectoryNode>(new DirectoryNode());
+ return ptr(new DirectoryNode());
}
prefix_ senf::console::DirectoryNode &
senf::console::DirectoryNode::operator[](std::string const & name)
const
{
- return dynamic_cast<DirectoryNode&>(get(name));
+ try {
+ return dynamic_cast<DirectoryNode&>(get(name));
+ }
+ SENF_WRAP_EXC(std::bad_cast)
}
prefix_ senf::console::CommandNode &
senf::console::DirectoryNode::operator()(std::string const & name)
const
{
- return dynamic_cast<CommandNode&>(get(name));
+ try {
+ return dynamic_cast<CommandNode&>(get(name));
+ }
+ SENF_WRAP_EXC(std::bad_cast)
}
prefix_ senf::console::DirectoryNode &
senf::console::DirectoryNode::mkdir(std::string const & name)
{
- std::auto_ptr<DirectoryNode> node (create());
- return add(name, node);
+ return add(name, create());
}
prefix_ senf::console::DirectoryNode::ChildrenRange senf::console::DirectoryNode::children()
}
///////////////////////////////////////////////////////////////////////////
+// senf::console::SyntaxErrorException
+
+prefix_ senf::console::SyntaxErrorException::SyntaxErrorException(std::string const & msg)
+ : Exception(msg)
+{}
+
+///////////////////////////////////////////////////////////////////////////
// senf::console::CommandNode
prefix_ senf::console::CommandNode::ptr senf::console::CommandNode::thisptr()
prefix_ senf::console::CommandNode::CommandNode()
{}
-///////////////////////////////////////////////////////////////////////////
-// senf::console::SimpleCommandNode
-
-prefix_ void senf::console::SimpleCommandNode::operator()(std::ostream & output,
- Arguments const & arguments)
+prefix_ void senf::console::CommandNode::operator()(std::ostream & output,
+ Arguments const & arguments)
+ const
{
- fn_(output, arguments);
+ v_execute(output, arguments);
}
+///////////////////////////////////////////////////////////////////////////
+// senf::console::SimpleCommandNode
+
prefix_ senf::console::SimpleCommandNode::SimpleCommandNode(Function const & fn)
: fn_ (fn)
{}
-prefix_ std::auto_ptr<senf::console::SimpleCommandNode>
+prefix_ senf::console::SimpleCommandNode::ptr
senf::console::SimpleCommandNode::create(Function const & fn)
{
- return std::auto_ptr<SimpleCommandNode>(new SimpleCommandNode(fn));
+ return ptr(new SimpleCommandNode(fn));
}
prefix_ senf::console::SimpleCommandNode &
return *this;
}
+prefix_ senf::console::SimpleCommandNode::ptr senf::console::SimpleCommandNode::thisptr()
+{
+ return boost::static_pointer_cast<SimpleCommandNode>(shared_from_this());
+}
+
+prefix_ senf::console::SimpleCommandNode::cptr senf::console::SimpleCommandNode::thisptr()
+ const
+{
+ return boost::static_pointer_cast<SimpleCommandNode const>(shared_from_this());
+}
+
///////////////////////////////cci.e///////////////////////////////////////
#undef prefix_