[project @ 2005-05-31 05:59:57 by unknown_lamer]
[clinton/bobotpp.git] / source / BotInterp.C
index d678660..815c9bf 100644 (file)
@@ -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<Timer *>::iterator it = timersList.begin();
   std::list<Timer *>::iterator it2 = timersList.end();
   std::list<Timer *>::iterator it3;
-  Timer *t;
+
   struct wrapper_data wd;
   wd.args = scm_listify (SCM_UNDEFINED);