diff options
-rw-r--r-- | src/XrmDatabaseHelper.hh | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/XrmDatabaseHelper.hh b/src/XrmDatabaseHelper.hh index 22cad2c..0cd3f52 100644 --- a/src/XrmDatabaseHelper.hh +++ b/src/XrmDatabaseHelper.hh | |||
@@ -19,7 +19,7 @@ | |||
19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 19 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. | 20 | // DEALINGS IN THE SOFTWARE. |
21 | 21 | ||
22 | // $Id: XrmDatabaseHelper.hh,v 1.6 2002/12/01 13:42:06 rathnor Exp $ | 22 | // $Id: XrmDatabaseHelper.hh,v 1.7 2002/12/02 22:12:09 fluxgen Exp $ |
23 | 23 | ||
24 | // This is a helper for XrmDatabase | 24 | // This is a helper for XrmDatabase |
25 | // when database goes out of scope | 25 | // when database goes out of scope |
@@ -38,12 +38,11 @@ class XrmDatabaseHelper | |||
38 | { | 38 | { |
39 | public: | 39 | public: |
40 | XrmDatabaseHelper(char const * filename=0) | 40 | XrmDatabaseHelper(char const * filename=0) |
41 | : m_database(filename == 0 ? 0 : XrmGetFileDatabase(filename)) | 41 | : m_database(0) |
42 | { } | 42 | { if (filename != 0) load(filename); } |
43 | 43 | ||
44 | ~XrmDatabaseHelper() { | 44 | ~XrmDatabaseHelper() { |
45 | if (m_database!=0) | 45 | close(); |
46 | XrmDestroyDatabase(m_database); | ||
47 | } | 46 | } |
48 | 47 | ||
49 | /// assignment operator | 48 | /// assignment operator |
@@ -53,6 +52,22 @@ public: | |||
53 | m_database = database; | 52 | m_database = database; |
54 | return *this; | 53 | return *this; |
55 | } | 54 | } |
55 | bool load(const char *filename) { | ||
56 | if (filename == 0) | ||
57 | return false; | ||
58 | XrmDatabase db = XrmGetFileDatabase(filename); | ||
59 | if (db == 0) | ||
60 | return false; | ||
61 | close(); // close old database | ||
62 | m_database = db; // set new and return true | ||
63 | return true; | ||
64 | } | ||
65 | void close() { | ||
66 | if (m_database != 0) { | ||
67 | XrmDestroyDatabase(m_database); | ||
68 | m_database = 0; | ||
69 | } | ||
70 | } | ||
56 | bool operator == (const XrmDatabase& database) { return m_database == database; } | 71 | bool operator == (const XrmDatabase& database) { return m_database == database; } |
57 | XrmDatabase & operator*(void) { return m_database; } | 72 | XrmDatabase & operator*(void) { return m_database; } |
58 | 73 | ||