]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dispatcher.cc
Issue 4378: Rewrite Protected_scm for static lifetime requirements
[lilypond.git] / lily / dispatcher.cc
index 2e537307919c2be900f8544b74dae2535cb7a1b0..efb3ca506c0d2bcf2d533daeaee75f25acdd5a75 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2005--2014 Erik Sandberg  <mandolaerik@gmail.com>
+  Copyright (C) 2005--2015 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
@@ -41,21 +41,19 @@ Dispatcher::Dispatcher ()
 }
 
 SCM
-Dispatcher::mark_smob (SCM sm)
+Dispatcher::mark_smob ()
 {
-  Dispatcher *me = (Dispatcher *) SCM_CELL_WORD_1 (sm);
-  scm_gc_mark (me->dispatchers_);
-  scm_gc_mark (me->listen_classes_);
-  return me->listeners_;
+  scm_gc_mark (dispatchers_);
+  scm_gc_mark (listen_classes_);
+  return listeners_;
 }
 
 int
-Dispatcher::print_smob (SCM s, SCM p, scm_print_state *)
+Dispatcher::print_smob (SCM p, scm_print_state *)
 {
-  Dispatcher *me = (Dispatcher *) SCM_CELL_WORD_1 (s);
   scm_puts ("#<Dispatcher ", p);
   scm_write (scm_call_1 (ly_lily_module_constant ("hash-table->alist"),
-                         me->listeners_), p);
+                         listeners_), p);
   scm_puts (">", p);
   return 1;
 }
@@ -246,7 +244,7 @@ Dispatcher::remove_listener (Listener l, SCM ev_class)
 {
   SCM list = scm_hashq_ref (listeners_, ev_class, SCM_EOL);
 
-  if (list == SCM_EOL)
+  if (scm_is_null (list))
     {
       programming_error ("remove_listener called with incorrect class.");
       return;
@@ -294,7 +292,7 @@ Dispatcher::register_as_listener (Dispatcher *disp)
   int priority = ++disp->priority_count_;
 
   // Don't register twice to the same dispatcher.
-  if (scm_assq (disp->self_scm (), dispatchers_) != SCM_BOOL_F)
+  if (scm_is_true (scm_assq (disp->self_scm (), dispatchers_)))
     {
       warning (_ ("Already listening to dispatcher, ignoring request"));
       return;