Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-04-06 14:13:36 +0000
committerStijn Buys <ingar@osirion.org>2008-04-06 14:13:36 +0000
commit7b5a6b820d5acef36d402bd5a52d783ec68d33c7 (patch)
treea1cb65e071441277865ca5f4e315611cdd51c0e5 /src/core/func.cc
parent25d2c764443723eb7a3dd5f8bf0b76586c1ff10b (diff)
mouse grabbing, Cvar and Func info
Diffstat (limited to 'src/core/func.cc')
-rw-r--r--src/core/func.cc37
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)
{