Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-02-04 18:44:17 +0000
committerStijn Buys <ingar@osirion.org>2008-02-04 18:44:17 +0000
commitad340b52a0a4e86edd5b54b01d74aac731a6a812 (patch)
tree60df22b53a8b980c4791bdff9522a409e7b19da8 /src/core/cvar.cc
parent151a2ac2434f4b4c23c107d9c21e4a18dd1a3c68 (diff)
basic cvar implementation
Diffstat (limited to 'src/core/cvar.cc')
-rw-r--r--src/core/cvar.cc92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/core/cvar.cc b/src/core/cvar.cc
new file mode 100644
index 0000000..ef3f06c
--- /dev/null
+++ b/src/core/cvar.cc
@@ -0,0 +1,92 @@
+/*
+ core/cvar.cc
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#include "cvar.h"
+#include <map>
+
+namespace core {
+
+Cvar_t::Cvar_t(const char *cvarname, unsigned int cvarflags)
+{
+ cvar_name.assign(cvarname);
+ cvar_flags = cvarflags;
+}
+
+Cvar_t::Cvar_t(const std::string &cvarname, unsigned int cvarflags)
+{
+ cvar_name = cvarname;
+ cvar_flags = cvarflags;
+}
+
+Cvar_t & Cvar_t::operator=(const std::string &cvarvalue)
+{
+ cvar_value = cvarvalue;
+ return (*this);
+}
+
+Cvar_t & Cvar_t::operator=(const char *cvarvalue)
+{
+ cvar_value.assign(cvarvalue);
+ return (*this);
+}
+
+Cvar_t & Cvar_t::operator=(int cvarvalue)
+{
+ std::stringstream s;
+ s << cvarvalue;
+ s >> cvar_value;
+ return (*this);
+}
+
+namespace cvar
+{
+
+std::map<std::string, Cvar> registry;
+
+Cvar set(const char *cvarname, const char *value)
+{
+ Cvar c = registry[std::string(cvarname)];
+ if (!c) {
+ // not found, create a new variable and assign value
+ c = new Cvar_t(cvarname);
+ registry[std::string(cvarname)] = c;
+ (*c) = value;
+ }
+ return c;
+}
+
+void unset(const char *cvarname)
+{
+ Cvar c = registry[std::string(cvarname)];
+ if (c) {
+ registry.erase(std::string(cvarname));
+ delete c;
+ }
+}
+
+void unset(const std::string &cvarname)
+{
+ Cvar c = registry[cvarname];
+ if (c) {
+ registry.erase(cvarname);
+ delete c;
+ }
+}
+
+Cvar find(const std::string &cvarname)
+{
+ return registry[cvarname];
+}
+
+Cvar find(const char *cvarname)
+{
+ return registry[std::string(cvarname)];
+}
+
+} // namespace cvar
+
+} // namespace core
+