* static_cast<DirectoryNode *>(0),
* static_cast<Owner *>(0),
* static_cast<std::string const *>(0),
- * static_cast<Object const *>(0),
+ * static_cast<Object *>(0),
* static_cast<int *>(0)) ) base_type;
typedef typename senf::remove_cvref<base_type>::type value_type;
/// Internal
struct Creator {
static result_type create(DirectoryNode & node, Owner & owner,
- std::string const & name, Object const & ob);
+ std::string const & name, Object & ob);
};
};
{
public:
DirectoryNode & node() const; ///< Access the proxied DirectoryNode
+ operator DirectoryNode & () const; ///< Access the proxied DirectoryNode
///////////////////////////////////////////////////////////////////////////
///\name Proxied members (see DirectoryNode)
CommandNode & operator()(std::string const & name) const;
GenericNode & get(std::string const & name) const;
DirectoryNode & mkdir(std::string const & name);
+ void link(std::string const & name, GenericNode & node);
DirectoryNode::ChildrenRange children() const;
DirectoryNode & doc(std::string const & doc);
implementation just forwards the call to the proxied
directory node. */
+ template <class Object>
+ typename OwnerNodeCreateTraits<Owner, Object>::result_type add(std::string const & name,
+ Object & ob);
+ ///< Create new child node
+ /**< \see add() */
+
protected:
private:
template <class Object>
typename NodeCreateTraits<Object>::result_type add(std::string const & name,
Object const & ob);
+
+ template <class Object>
+ typename NodeCreateTraits<Object>::result_type add(std::string const & name,
+ Object & ob);
};
template <class Owner, class Function>