From 7b5a6b820d5acef36d402bd5a52d783ec68d33c7 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sun, 6 Apr 2008 14:13:36 +0000 Subject: mouse grabbing, Cvar and Func info --- src/core/func.cc | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) (limited to 'src/core/func.cc') diff --git a/src/core/func.cc b/src/core/func.cc index 4db8dcf..27c46a0 100644 --- a/src/core/func.cc +++ b/src/core/func.cc @@ -18,25 +18,34 @@ namespace core std::map Func::registry; -void Func::add(const char *name, FuncPtr functionptr, unsigned int flags) +Func * Func::add(const char *name, FuncPtr functionptr, unsigned int flags) { + Func *func = 0; std::map::iterator it = registry.find(name); if (it == registry.end()) { - registry[std::string(name)] = new Func(name, (void *)functionptr, flags & ~Func::Game); + func = new Func(name, (void *)functionptr, flags & ~Func::Game); + registry[std::string(name)] = func; + //con_debug << "Function '" << name << "' registered." << std::endl; } else { con_warn << "Function '" << name << "' already registered!" << std::endl; + func = (*it).second; } + return func; } -void Func::add(const char *name, GameFuncPtr gamefunctionptr, unsigned int flags) +Func *Func::add(const char *name, GameFuncPtr gamefunctionptr, unsigned int flags) { + Func *func = 0; std::map::iterator it = registry.find(name); if (it == registry.end()) { - registry[std::string(name)] = new Func(name, (void *)gamefunctionptr, flags | Func::Game); + func = new Func(name, (void *)gamefunctionptr, flags | Func::Game); + registry[std::string(name)] = func; //con_debug << "Function '" << name << "' registered." << std::endl; } else { con_warn << "Function '" << name << "' already registered!" << std::endl; + func = (*it).second; } + return func; } void Func::remove(const char *name) @@ -72,14 +81,15 @@ Func *Func::find(const std::string &name) void Func::list() { std::map::iterator it; + con_print << "Flags: G=Game" << std::endl; + for (it = registry.begin(); it != registry.end(); it++) { std::string typeindicator; if (((*it).second->flags() & Game) == Game) typeindicator += 'G'; else typeindicator += ' '; - con_print << " " << typeindicator << - " " << (*it).second->name() << std::endl; + con_print << " " << typeindicator << " " << (*it).second->name() << " " << (*it).second->info() << std::endl; } con_print << registry.size() << " registered functions" << std::endl; @@ -87,14 +97,16 @@ void Func::list() /* ---- Func ------------------------------------------------------ */ -Func::Func(char const * funcname, void *ptr, unsigned int funcflags) +Func::Func(char const * name, void *ptr, unsigned int flags) { - if (funcname) - func_name.assign(funcname); + if (name) + func_name.assign(name); else func_name.clear(); - func_flags = funcflags; + func_info.clear(); + + func_flags = flags; func_ptr = ptr; } @@ -105,6 +117,11 @@ Func::~Func() func_flags = 0; } +void Func::set_info(const char *info) +{ + if (info) + func_info.assign(info); +} void Func::exec(std::string const &args) { -- cgit v1.2.3