]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dispatcher.cc
Use object callbacks for pure-height caching.
[lilypond.git] / lily / dispatcher.cc
index 6107594900b678e8a63d2c140ebfe1b3c3176300..b91b4fa5e935f15120e070b4cbf6111cd41d7816 100644 (file)
@@ -1,9 +1,20 @@
 /*
-  dispatcher.cc -- implement Dispatcher
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
+  Copyright (C) 2005--2010 Erik Sandberg  <mandolaerik@gmail.com>
 
-  (c) 2005-2006 Erik Sandberg  <mandolaerik@gmail.com>
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "dispatcher.hh"
@@ -13,7 +24,7 @@
 #include "warn.hh"
 
 IMPLEMENT_SMOBS (Dispatcher);
-IMPLEMENT_TYPE_P (Dispatcher, "dispatcher");
+IMPLEMENT_TYPE_P (Dispatcher, "ly:dispatcher?");
 IMPLEMENT_DEFAULT_EQUAL_P (Dispatcher);
 
 Dispatcher::~Dispatcher ()
@@ -68,7 +79,7 @@ Dispatcher::dispatch (SCM sev)
   SCM class_symbol = ev->get_property ("class");
   if (!scm_symbol_p (class_symbol))
     {
-      warning (_f ("Event class should be a symbol"));
+      warning (_ ("Event class should be a symbol"));
       return;
     }
 
@@ -100,10 +111,10 @@ Dispatcher::dispatch (SCM sev)
   */
   struct { int prio; SCM list; } lists[num_classes+1];
   int i = 0;
-  for (SCM cl = class_list; scm_is_pair(cl); cl = scm_cdr (cl))
+  for (SCM cl = class_list; scm_is_pair (cl); cl = scm_cdr (cl))
     {
       SCM list = scm_hashq_ref (listeners_, scm_car (cl), SCM_EOL);
-      if (!scm_is_pair(list))
+      if (!scm_is_pair (list))
        num_classes--;
       else
        {
@@ -141,9 +152,9 @@ Dispatcher::dispatch (SCM sev)
         }
       // go to the next listener; bubble-sort the class list.
       SCM next = scm_cdr (lists[0].list);
-      if (!scm_is_pair(next))
+      if (!scm_is_pair (next))
         num_classes--;
-      int prio = (scm_is_pair(next)) ? scm_to_int (scm_caar (next)) : INT_MAX;
+      int prio = (scm_is_pair (next)) ? scm_to_int (scm_caar (next)) : INT_MAX;
       for (i = 0; prio > lists[i+1].prio; i++)
         lists[i] = lists[i+1];
       lists[i].prio = prio;
@@ -176,7 +187,7 @@ Dispatcher::internal_add_listener (Listener l, SCM ev_class, int priority)
     {
       /* Tell all dispatchers that we listen to, that we want to hear ev_class 
          events */
-      for (SCM disp = dispatchers_; scm_is_pair(disp); disp = scm_cdr (disp))
+      for (SCM disp = dispatchers_; scm_is_pair (disp); disp = scm_cdr (disp))
        {
          int priority = scm_to_int (scm_cdar (disp));
          Dispatcher *d = unsmob_dispatcher (scm_caar (disp));
@@ -205,10 +216,10 @@ Dispatcher::remove_listener (Listener l, SCM ev_class)
 
   SCM dummy = scm_cons (SCM_EOL, list);
   SCM e = dummy;
-  while (scm_is_pair(scm_cdr (e)))
+  while (scm_is_pair (scm_cdr (e)))
     if (*unsmob_listener (scm_cdadr (e)) == l && first)
       {
-       scm_set_cdr_x (e, scm_cddr(e));
+       scm_set_cdr_x (e, scm_cddr (e));
        first = false;
        break;
       }