allow the user to override the rootCommand from their ~/.blackboxrc
[blackbox.git] / lib / Resource.hh
blobe63c2355afa9c12fe6cba406bdcbe64a52d47783
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2 // Resource.hh for Blackbox - an X11 Window manager
3 // Copyright (c) 2001 - 2005 Sean 'Shaleh' Perry <shaleh@debian.org>
4 // Copyright (c) 1997 - 2000, 2002 - 2005
5 // Bradley T Hughes <bhughes at trolltech.com>
6 //
7 // Permission is hereby granted, free of charge, to any person obtaining a
8 // copy of this software and associated documentation files (the "Software"),
9 // to deal in the Software without restriction, including without limitation
10 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
11 // and/or sell copies of the Software, and to permit persons to whom the
12 // Software is furnished to do so, subject to the following conditions:
14 // The above copyright notice and this permission notice shall be included in
15 // all copies or substantial portions of the Software.
17 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23 // DEALINGS IN THE SOFTWARE.
25 #ifndef __Resource_hh
26 #define __Resource_hh
28 #include <string>
30 // forward declaration
31 typedef struct _XrmHashBucketRec *XrmDatabase;
34 namespace bt {
36 inline const char* boolAsString(bool b)
37 { return (b) ? "True" : "False"; }
39 class Resource {
40 public:
41 Resource(void);
42 explicit Resource(const std::string &filename);
43 ~Resource(void);
45 inline bool valid(void) const
46 { return db != NULL; }
48 void load(const std::string &filename);
49 void save(const std::string &filename);
50 void merge(const std::string &filename);
52 std::string read(const char* name,
53 const char* classname,
54 const char* default_value = "") const;
55 std::string read(const std::string &name,
56 const std::string &classname,
57 const std::string &default_value = std::string()) const;
59 int read(const char* name, const char* classname,
60 int default_value) const;
61 unsigned int read(const char* name, const char* classname,
62 unsigned int default_value) const;
64 long read(const char* name, const char* classname,
65 long default_value) const;
66 unsigned long read(const char* name, const char* classname,
67 unsigned long default_value) const;
69 bool read(const char* name, const char* classname,
70 bool default_value) const;
72 double read(const char* name, const char* classname,
73 double default_value) const;
75 void write(const char *resource, const std::string &value);
76 void write(const char* resource, const char* value);
77 void write(const char* resource, int value);
78 void write(const char* resource, unsigned int value);
79 void write(const char* resource, long value);
80 void write(const char* resource, unsigned long value);
81 void write(const char* resource, bool value);
82 void write(const char* resource, double value);
84 private:
85 XrmDatabase db;
88 } // namespace bt
90 #endif // __Resource_hh