/* 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 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 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