/*
UGH. too many includes.
*/
-#include <stdio.h>
-#include "warn.hh"
#include "music-iterator.hh"
+
+#include <cstdio>
+
+#include "warn.hh"
#include "context.hh"
#include "music-wrapper.hh"
#include "music-wrapper-iterator.hh"
}
void
-Music_iterator::set_translator (Context *trans)
+Music_iterator::set_context (Context *trans)
{
- handle_.set_translator (trans);
+ handle_.set_context (trans);
}
void
SCM
Music_iterator::get_static_get_iterator (Music *m)
{
- Music_iterator * p =0;
+ Music_iterator * p = 0;
SCM ctor = m->get_property ("iterator-ctor") ;
SCM iter = SCM_EOL;
- if (gh_procedure_p (ctor))
+ if (ly_c_procedure_p (ctor))
{
- iter = gh_call0 (ctor);
+ iter = scm_call_0 (ctor);
p = unsmob_iterator (iter);
}
else
music_ = m;
assert (m);
if (! get_outlet ())
- set_translator (report);
+ set_context (report);
}
void
Music_iterator::substitute_outlet (Context *f, Context *t)
{
if (get_outlet () == f)
- set_translator (t);
+ set_context (t);
derived_substitute (f,t);
}
}
/*
- TODO: rename to prevent confusion between Translator::try_music and
+ TODO: rename to prevent confusion between Context::try_music and
Iterator::try_music
*/
return false;
}
+
+bool
+is_child_context (Context *me, Context *child)
+{
+ while (child && child != me)
+ {
+ child = child->get_parent_context ();
+ }
+
+ return child == me;
+}
+
/*
move to context of child iterator if it is deeper down in the
hierarchy.
Music_iterator::descend_to_child (Context * child_report)
{
Context * me_report = get_outlet ();
-
- Context * c = child_report;
- while (c && c != me_report)
- {
- c = c->daddy_context_;
- }
-
- if (c == me_report)
- set_translator (child_report);
+ if (is_child_context (me_report, child_report))
+ set_context (child_report);
}