diff options
author | Stijn Buys <ingar@osirion.org> | 2008-04-06 14:13:36 +0000 |
---|---|---|
committer | Stijn Buys <ingar@osirion.org> | 2008-04-06 14:13:36 +0000 |
commit | 7b5a6b820d5acef36d402bd5a52d783ec68d33c7 (patch) | |
tree | a1cb65e071441277865ca5f4e315611cdd51c0e5 /src/core/func.cc | |
parent | 25d2c764443723eb7a3dd5f8bf0b76586c1ff10b (diff) |
mouse grabbing, Cvar and Func info
Diffstat (limited to 'src/core/func.cc')
-rw-r--r-- | src/core/func.cc | 37 |
1 files changed, 27 insertions, 10 deletions
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<std::string, Func*> 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<std::string, Func*>::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<std::string, Func*>::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<std::string, Func*>::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) { |