/* 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 "core/cvar.h" #include "sys/sys.h" #include #include #include #include #include namespace core { Cvar_t::Cvar_t(unsigned int cvarflags) { 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 *cvarvalue, int cvarflags) { Cvar c = registry[std::string(cvarname)]; if (c) { con_debug << "cvar::set " << cvarname << " already exist with value " << cvarvalue << std::endl; } else { con_debug << "cvar::set " << cvarname << " with value " << cvarvalue << std::endl; c = new Cvar_t(cvarflags); registry[std::string(cvarname)] = c; (*c) = cvarvalue; } return c; } Cvar set(const char *cvarname, int cvarvalue, int cvarflags) { Cvar c = registry[std::string(cvarname)]; if (c) { con_debug << "cvar::set " << cvarname << " already exist with value " << cvarvalue << std::endl; } else { con_debug << "cvar::set " << cvarname << " with value " << cvarvalue << std::endl; c = new Cvar_t(cvarflags); registry[std::string(cvarname)] = c; (*c) = cvarvalue; } return c; } void unset(const char *cvarname) { Cvar c = registry[std::string(cvarname)]; if (c) { con_debug << "cvar::unset " << cvarname << std::endl; registry.erase(std::string(cvarname)); delete c; } } void unset(const std::string &cvarname) { Cvar c = registry[cvarname]; if (c) { con_debug << "cvar::unset " << cvarname << std::endl; registry.erase(cvarname); delete c; } } Cvar find(const std::string &cvarname) { return registry[cvarname]; } Cvar find(const char *cvarname) { return registry[std::string(cvarname)]; } void list() { std::map::iterator registryiterator; for (registryiterator = registry.begin(); registryiterator != registry.end(); registryiterator++) { con_print << std::setw(4) << (*registryiterator).second->flags() << " " << (*registryiterator).first << " " << (*registryiterator).second->value() << std::endl; } } } // namespace cvar } // namespace core