/* core/commandbuffer.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/commandbuffer.h" #include "sys/sys.h" // C++ headers #include #include namespace core { std::stringstream cmd(std::stringstream::in | std::stringstream::out); namespace commandbuffer { void exec(const char *text) { std::stringstream cmdstream(text); std::string cmdname; if (!(cmdstream >> cmdname)) return; // is it a function Func f = func::find(cmdname); if (f) { // function exists, execute it f(cmdstream); return; } // is it a cvar Cvar cv = cvar::find(cmdname); if (cv) { // cvar exists std::string args; if (cmdstream >> args) { // we're setting a new value char c; while(cmdstream >> c) args += c; (*cv) = args; } con_print << cmdname << " " << cv->text() << std::endl; return; } con_print << "unknown command '" << cmdname << "'" << std::endl; } void execute() { if (core::cmd.eof()) return; char line[MAXCMDSIZE]; while (core::cmd.getline(line, MAXCMDSIZE-1)) { exec(line); } cmd.clear(); } void clear() { char line[MAXCMDSIZE]; while (core::cmd.getline(line, MAXCMDSIZE-1)); } } // namespace commandbuffer } // namespace core