Added new-undo == delete
This commit is contained in:
@@ -78,6 +78,7 @@ namespace znode
|
||||
zweak_node _parent;
|
||||
znode_list _children;
|
||||
|
||||
// functor, der auf pointer gleichheit prüft.
|
||||
struct match_node
|
||||
{
|
||||
match_node( zbasic_node* match )
|
||||
@@ -95,9 +96,11 @@ namespace znode
|
||||
public:
|
||||
|
||||
//! shortcut auf std::make_shared...
|
||||
static zshared_node make_node( str_cref arg1, str_cref arg2 = "" , zshared_cref parent = nullptr )
|
||||
//! beachte: der eltern-knoten wird hier nicht gesetzt, der neue knoten
|
||||
//! wird nirgends eingefügt.
|
||||
static zshared_node make_node( str_cref arg1, str_cref arg2 = "" )
|
||||
{
|
||||
return std::make_shared<zbasic_node>( arg1, arg2, parent );
|
||||
return std::make_shared<zbasic_node>( arg1, arg2 );
|
||||
}
|
||||
|
||||
//! leerer konstruktor
|
||||
@@ -136,7 +139,7 @@ namespace znode
|
||||
zbasic_node(const zbasic_node&) = delete;
|
||||
zbasic_node& operator=(const zbasic_node&) = delete;
|
||||
|
||||
// 'move' geht (shared_from_this bleibt gültig)
|
||||
//! 'move' geht (shared_from_this bleibt gültig)
|
||||
zbasic_node(zbasic_node&&) noexcept = default;
|
||||
zbasic_node& operator=(zbasic_node&&) noexcept = default;
|
||||
|
||||
@@ -178,29 +181,31 @@ namespace znode
|
||||
return _parent.lock();
|
||||
}
|
||||
|
||||
//! gibt den nachfolge-knoten oder 'end()' zurück.
|
||||
zshared_node sibling()
|
||||
{
|
||||
if( parent() )
|
||||
{
|
||||
znode_list& childs = _parent->_children;
|
||||
auto it = std::find( childs.begin(), childs.end(), this->shared_from_this() );
|
||||
if( ++it != childs.end())
|
||||
return *(it);
|
||||
return *(it);
|
||||
}
|
||||
|
||||
return zshared_node();
|
||||
throw std::runtime_error("sibling(): no parent node");
|
||||
}
|
||||
|
||||
//! gibt den vector mit kind-knoten zurück
|
||||
inline const znode_list& children() const
|
||||
{
|
||||
return _children;
|
||||
}
|
||||
|
||||
//! testet, ob kinder vorhanden sind.
|
||||
bool has_children() const
|
||||
{
|
||||
return !children().empty();
|
||||
}
|
||||
|
||||
//! gibt das erste kind zurück
|
||||
zshared_node first_child()
|
||||
{
|
||||
if(!children().empty())
|
||||
@@ -208,6 +213,7 @@ namespace znode
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
//! gibt das letzte kind oder nullptr zurück
|
||||
zshared_node last_child()
|
||||
{
|
||||
if(!children().empty())
|
||||
|
Reference in New Issue
Block a user