diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2010-01-12 08:48:55 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2010-01-12 08:48:55 +0000 |
| commit | 68219958d08681064380cc1f2b68a92ee1a22b28 (patch) | |
| tree | adf35fb3d63d615d24366742cfee6a373d19b995 /src | |
| parent | 2e8770119281eb2db3444bac87b067fde6b1cb54 (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.cxx | 40 |
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; |
