X-Git-Url: http://git.hcoop.net/clinton/bobotpp.git/blobdiff_plain/be3612f33d41b674712ab93a6f92e96e535a05ce..cf8ea87372f220b09b01689b1729a88eb3b2a1d2:/source/BotInterp.C diff --git a/source/BotInterp.C b/source/BotInterp.C index d678660..815c9bf 100644 --- a/source/BotInterp.C +++ b/source/BotInterp.C @@ -35,8 +35,8 @@ extern "C" BotInterp::BotInterp(Bot *b, String fn) : bot(b), counter(0) { - logPort = scm_open_file(Utils::string2SCM(fn), - Utils::string2SCM("a")); + logPort = scm_open_file(Utils::str2scm (fn), + Utils::str2scm ("a")); scm_gc_protect_object(logPort); } @@ -70,10 +70,11 @@ namespace } bool -BotInterp::AddHook(int hooktype, SCM regex, SCM function, int pri, bool fall) { +BotInterp::AddHook(int hooktype, SCM regex, SCM function, int pri, bool fall, + String name) { if (scm_string_p(regex) == SCM_BOOL_F) return false; - String rx = Utils::scm2String(regex).toUpper(); + String rx = Utils::to_upper (Utils::scm2str (regex)); SCM r = scm_make_regexp(regex, scm_listify (gh_lookup("regexp/icase"), SCM_UNDEFINED)); @@ -85,7 +86,7 @@ BotInterp::AddHook(int hooktype, SCM regex, SCM function, int pri, bool fall) { for ( ; it != it2; ++it) // It exists, we replace it. - if ((*it)->regex_str == rx) { + if ((*it)->regex_str == rx && (*it)->name == name) { scm_gc_unprotect_object((*it)->function); scm_gc_unprotect_object (r); (*it)->function = function; @@ -96,7 +97,7 @@ BotInterp::AddHook(int hooktype, SCM regex, SCM function, int pri, bool fall) { } // It does not exist, we create it hooksMap[hooktype].push_back (new Hook(hooktype, rx, r, - function, pri, fall)); + function, pri, fall, name)); hooksMap[hooktype].sort (hptr_lt); return true; } @@ -112,7 +113,7 @@ BotInterp::RunHooks(int hooktype, String match, SCM args) wrapper_data wd; wd.args = args; for ( ; it != it2; ++it) { - if (scm_regexp_exec((*it)->regex, Utils::string2SCM(match), + if (scm_regexp_exec((*it)->regex, Utils::str2scm (match), SCM_UNDEFINED, SCM_UNDEFINED) != SCM_BOOL_F) { wd.func = (*it)->function; @@ -162,7 +163,7 @@ BotInterp::RunTimers(int now) std::list::iterator it = timersList.begin(); std::list::iterator it2 = timersList.end(); std::list::iterator it3; - Timer *t; + struct wrapper_data wd; wd.args = scm_listify (SCM_UNDEFINED);