Code

add DocumentSubset::_clear
authormental <mental@users.sourceforge.net>
Mon, 6 Mar 2006 05:08:31 +0000 (05:08 +0000)
committermental <mental@users.sourceforge.net>
Mon, 6 Mar 2006 05:08:31 +0000 (05:08 +0000)
ChangeLog
src/document-subset.cpp
src/document-subset.h

index 492c77a14f19b857ef207926110cdf775d7cf9c8..15e64ddf16d167fe949c0f66c465849c3ef58c94 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-03-06  MenTaLguY  <mental@rydia.net>
+
+    * src/document-subset.h, src/document-subset.cpp:
+      add DocumentSubset::_clear
+
 2006-03-05  MenTaLguY  <mental@rydia.net>
 
     * src/document-subset.h, src/document-subset.cpp:
index f6b32c0f40ac42647a36a2ad972e0d5a31342285..ba6e416cd49a09c08157be7a6c4625c384eb165d 100644 (file)
@@ -142,6 +142,7 @@ struct DocumentSubset::Relations : public GC::Managed<GC::ATOMIC>,
     void addOne(SPObject *obj);
     void remove(SPObject *obj, bool subtree);
     void reorder(SPObject *obj);
+    void clear();
 
 private:
     Record &_doAdd(SPObject *obj) {
@@ -277,6 +278,16 @@ void DocumentSubset::Relations::remove(SPObject *obj, bool subtree) {
     changed_signal.emit();
 }
 
+void DocumentSubset::Relations::clear() {
+    Record &root=records[NULL];
+
+    while (!root.children.empty()) {
+        _doRemoveSubtree(root.children.front());
+    }
+
+    changed_signal.emit();
+}
+
 void DocumentSubset::Relations::reorder(SPObject *obj) {
     SPObject::ParentIterator parent=obj;
 
@@ -316,6 +327,10 @@ void DocumentSubset::_remove(SPObject *obj, bool subtree) {
     _relations->remove(obj, subtree);
 }
 
+void DocumentSubset::_clear() {
+    _relations->clear();
+}
+
 bool DocumentSubset::includes(SPObject *obj) const {
     return _relations->get(obj);
 }
index 269b4c59b95c74de065966dae20df6c88ff0f660..e424a289c5ce048829b7b80a36d7c01f1d1611ff 100644 (file)
@@ -42,6 +42,7 @@ protected:
     void _addOne(SPObject *obj);
     void _removeOne(SPObject *obj) { _remove(obj, false); }
     void _removeSubtree(SPObject *obj) { _remove(obj, true); }
+    void _clear();
 
 private:
     DocumentSubset(DocumentSubset const &); // no copy