X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2FResource.cc;h=2a678f89dafde320e75491ca3741599e424a84ba;hb=0a3cfdfcb956024639a05549a50586e3d826b42e;hp=a6254bcb3ee334b9dbca2c469e7a65bbefd4175b;hpb=455b288c3e4b027060481f7c10e5931599d1ae96;p=chaz%2Fopenbox diff --git a/src/Resource.cc b/src/Resource.cc index a6254bcb..2a678f89 100644 --- a/src/Resource.cc +++ b/src/Resource.cc @@ -20,6 +20,7 @@ // DEALINGS IN THE SOFTWARE. #include "Resource.h" +#include "Util.h" #ifdef HAVE_CONFIG_H # include "../config.h" @@ -33,36 +34,49 @@ # include #endif // HAVE_STDIO_H -#include +bool Resource::m_initialized = false; -obResource::obResource(const std::string &file) { +Resource::Resource(const std::string &file) { setFile(file); m_modified = false; m_database = NULL; m_autosave = true; + if (!m_initialized) { + XrmInitialize(); + m_initialized = true; + } } -obResource::~obResource() { +Resource::Resource() { + m_modified = false; + m_database = NULL; + m_autosave = true; + if (!m_initialized) { + XrmInitialize(); + m_initialized = true; + } +} + +Resource::~Resource() { if (m_database != NULL) XrmDestroyDatabase(m_database); } -void obResource::setFile(const std::string &file) { +void Resource::setFile(const std::string &file) { m_file = file; - assert(m_file.c_str() != NULL); } -void obResource::setAutoSave(bool autosave) { +void Resource::setAutoSave(bool autosave) { m_autosave = autosave; } -void obResource::save() { - assert(m_database != NULL); +void Resource::save() { + ASSERT(m_database != NULL); XrmPutFileDatabase(m_database, m_file.c_str()); m_modified = false; } -bool obResource::load() { +bool Resource::load() { if (m_database != NULL) XrmDestroyDatabase(m_database); m_modified = false; @@ -71,8 +85,15 @@ bool obResource::load() { return true; } -void obResource::setValue(const std::string &rname, bool value) { - assert(m_database != NULL); +void Resource::create() { + if (m_database != NULL) + XrmDestroyDatabase(m_database); + m_modified = false; + ASSERT(NULL != (m_database = XrmGetStringDatabase(""))); +} + +void Resource::setValue(const std::string &rname, bool value) { + ASSERT(m_database != NULL); const char *val = (value ? "True" : "False"); std::string rc_string = rname + ": " + val; @@ -83,8 +104,12 @@ void obResource::setValue(const std::string &rname, bool value) { save(); } -void obResource::setValue(const std::string &rname, long value) { - assert(m_database != NULL); +void Resource::setValue(const std::string &rname, int value) { + setValue(rname, (long)value); +} + +void Resource::setValue(const std::string &rname, long value) { + ASSERT(m_database != NULL); char val[11]; sprintf(val, "%ld", value); @@ -96,8 +121,9 @@ void obResource::setValue(const std::string &rname, long value) { save(); } -void obResource::setValue(const std::string &rname, const char *value) { - assert(m_database != NULL); +void Resource::setValue(const std::string &rname, const char *value) { + ASSERT(m_database != NULL); + ASSERT(value != NULL); std::string rc_string = rname + ": " + value; XrmPutLineResource(&m_database, rc_string.c_str()); @@ -107,8 +133,8 @@ void obResource::setValue(const std::string &rname, const char *value) { save(); } -void obResource::setValue(const std::string &rname, const std::string &value) { - assert(m_database != NULL); +void Resource::setValue(const std::string &rname, const std::string &value) { + ASSERT(m_database != NULL); std::string rc_string = rname + ": " + value; XrmPutLineResource(&m_database, rc_string.c_str()); @@ -118,11 +144,10 @@ void obResource::setValue(const std::string &rname, const std::string &value) { save(); } -bool obResource::getValue(const std::string &rname, const std::string &rclass, +bool Resource::getValue(const std::string &rname, const std::string &rclass, bool &value) const { - assert(rname.c_str() != NULL); - assert(rclass.c_str() != NULL); - assert(m_database != NULL); + ASSERT(rclass.c_str() != NULL); + ASSERT(m_database != NULL); char *rettype; XrmValue retvalue; @@ -130,18 +155,16 @@ bool obResource::getValue(const std::string &rname, const std::string &rclass, &rettype, &retvalue) || retvalue.addr == NULL) return false; std::string val = retvalue.addr; - if (val == "True") + if (0 == strncasecmp(val.c_str(), "true", val.length())) value = true; else value = false; return true; } -bool obResource::getValue(const std::string &rname, const std::string &rclass, +bool Resource::getValue(const std::string &rname, const std::string &rclass, long &value) const { - assert(rname.c_str() != NULL); - assert(rclass.c_str() != NULL); - assert(m_database != NULL); + ASSERT(m_database != NULL); char *rettype; XrmValue retvalue; @@ -155,11 +178,9 @@ bool obResource::getValue(const std::string &rname, const std::string &rclass, return true; } -bool obResource::getValue(const std::string &rname, const std::string &rclass, +bool Resource::getValue(const std::string &rname, const std::string &rclass, std::string &value) const { - assert(rname.c_str() != NULL); - assert(rclass.c_str() != NULL); - assert(m_database != NULL); + ASSERT(m_database != NULL); char *rettype; XrmValue retvalue;