summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2010-01-12 08:48:55 +0000
committerMatthias Melcher <fltk@matthiasm.com>2010-01-12 08:48:55 +0000
commit68219958d08681064380cc1f2b68a92ee1a22b28 (patch)
treeadf35fb3d63d615d24366742cfee6a373d19b995 /src
parent2e8770119281eb2db3444bac87b067fde6b1cb54 (diff)
Fl_Preferences now have an API to delete all nodes or entries at once.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6995 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Preferences.cxx40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/Fl_Preferences.cxx b/src/Fl_Preferences.cxx
index 147711d3b..35752cfff 100644
--- a/src/Fl_Preferences.cxx
+++ b/src/Fl_Preferences.cxx
@@ -401,6 +401,14 @@ char Fl_Preferences::deleteGroup( const char *group )
return 0;
}
+/**
+ Delete all groups.
+ */
+char Fl_Preferences::deleteAllGroups()
+{
+ node->deleteAllChildren();
+ return 1;
+}
/**
Returns the number of entries (name/value pairs) in a group.
@@ -452,6 +460,24 @@ char Fl_Preferences::deleteEntry( const char *key )
return node->deleteEntry( key );
}
+/**
+ Delete all entries.
+ */
+char Fl_Preferences::deleteAllEntries()
+{
+ node->deleteAllEntries();
+ return 1;
+}
+
+/**
+ Delete all groups and all entries.
+ */
+char Fl_Preferences::clear()
+{
+ char ret1 = deleteAllGroups();
+ char ret2 = deleteAllEntries();
+ return ret1 & ret2;
+}
/**
Reads an entry from the group. A default value must be
@@ -1248,8 +1274,7 @@ Fl_Preferences::Node::Node( const char *path )
top_ = 0;
}
-// delete this and all depending nodes
-Fl_Preferences::Node::~Node()
+void Fl_Preferences::Node::deleteAllChildren()
{
Node *nx;
for ( Node *nd = child_; nd; nd = nx )
@@ -1258,6 +1283,10 @@ Fl_Preferences::Node::~Node()
delete nd;
}
child_ = 0L;
+}
+
+void Fl_Preferences::Node::deleteAllEntries()
+{
if ( entry )
{
for ( int i = 0; i < nEntry; i++ )
@@ -1275,6 +1304,13 @@ Fl_Preferences::Node::~Node()
entry = 0L;
nEntry = 0;
}
+}
+
+// delete this and all depending nodes
+Fl_Preferences::Node::~Node()
+{
+ deleteAllChildren();
+ deleteAllEntries();
if ( path_ ) {
free( path_ );
path_ = 0L;