- return *this;
- }
- void swap(TraversableNodeSet& other)
- {
- std::swap(m_children, other.m_children);
- std::swap(m_observer, other.m_observer);
- }
-
- void attach(Observer* observer)
- {
- ASSERT_MESSAGE(m_observer == 0, "TraversableNodeSet::attach: observer cannot be attached");
- m_observer = observer;
- notifyInsertAll();
- }
- void detach(Observer* observer)
- {
- ASSERT_MESSAGE(m_observer == observer, "TraversableNodeSet::detach: observer cannot be detached");
- notifyEraseAll();
- m_observer = 0;
- }
- /// \brief \copydoc scene::Traversable::insert()
- void insert(scene::Node& node)
- {
- ASSERT_MESSAGE(&node != 0, "TraversableNodeSet::insert: sanity check failed");
- m_undo.save();
-
- ASSERT_MESSAGE(m_children.find(NodeSmartReference(node)) == m_children.end(), "TraversableNodeSet::insert - element already exists");
-
- m_children.insert(NodeSmartReference(node));
-
- if(m_observer)
- {
- m_observer->insert(node);
- }
- }
- /// \brief \copydoc scene::Traversable::erase()
- void erase(scene::Node& node)
- {
- ASSERT_MESSAGE(&node != 0, "TraversableNodeSet::erase: sanity check failed");
- m_undo.save();
-
- ASSERT_MESSAGE(m_children.find(NodeSmartReference(node)) != m_children.end(), "TraversableNodeSet::erase - failed to find element");
-
- if(m_observer)
- {
- m_observer->erase(node);
- }
-
- m_children.erase(NodeSmartReference(node));
- }
- /// \brief \copydoc scene::Traversable::traverse()
- void traverse(const Walker& walker)
- {
- UnsortedNodeSet::iterator i = m_children.begin();
- while(i != m_children.end())
- {
- // post-increment the iterator
- Node_traverseSubgraph(*i++, walker);
- // the Walker can safely remove the current node from
- // this container without invalidating the iterator
- }
- }
- /// \brief \copydoc scene::Traversable::empty()
- bool empty() const
- {
- return m_children.empty();
- }
-
- void instanceAttach(MapFile* map)
- {
- m_undo.instanceAttach(map);
- }
- void instanceDetach(MapFile* map)
- {
- m_undo.instanceDetach(map);
- }
+ return *this;
+}
+void swap( TraversableNodeSet& other ){
+ std::swap( m_children, other.m_children );
+ std::swap( m_observer, other.m_observer );
+}
+
+void attach( Observer* observer ){
+ ASSERT_MESSAGE( m_observer == 0, "TraversableNodeSet::attach: observer cannot be attached" );
+ m_observer = observer;
+ notifyInsertAll();
+}
+void detach( Observer* observer ){
+ ASSERT_MESSAGE( m_observer == observer, "TraversableNodeSet::detach: observer cannot be detached" );
+ notifyEraseAll();
+ m_observer = 0;
+}
+/// \brief \copydoc scene::Traversable::insert()
+void insert( scene::Node& node ){
+ ASSERT_MESSAGE( &node != 0, "TraversableNodeSet::insert: sanity check failed" );
+ m_undo.save();
+
+ ASSERT_MESSAGE( m_children.find( NodeSmartReference( node ) ) == m_children.end(), "TraversableNodeSet::insert - element already exists" );
+
+ m_children.insert( NodeSmartReference( node ) );
+
+ if ( m_observer ) {
+ m_observer->insert( node );
+ }
+}
+/// \brief \copydoc scene::Traversable::erase()
+void erase( scene::Node& node ){
+ ASSERT_MESSAGE( &node != 0, "TraversableNodeSet::erase: sanity check failed" );
+ m_undo.save();
+
+ ASSERT_MESSAGE( m_children.find( NodeSmartReference( node ) ) != m_children.end(), "TraversableNodeSet::erase - failed to find element" );
+
+ if ( m_observer ) {
+ m_observer->erase( node );
+ }
+
+ m_children.erase( NodeSmartReference( node ) );
+}
+/// \brief \copydoc scene::Traversable::traverse()
+void traverse( const Walker& walker ){
+ UnsortedNodeSet::iterator i = m_children.begin();
+ while ( i != m_children.end() )
+ {
+ // post-increment the iterator
+ Node_traverseSubgraph( *i++, walker );
+ // the Walker can safely remove the current node from
+ // this container without invalidating the iterator
+ }
+}
+/// \brief \copydoc scene::Traversable::empty()
+bool empty() const {
+ return m_children.empty();
+}
+
+void instanceAttach( MapFile* map ){
+ m_undo.instanceAttach( map );
+}
+void instanceDetach( MapFile* map ){
+ m_undo.instanceDetach( map );
+}