+1.3.86.jcn3
+===========
+
+* Made several fixes, simple music starts to work.
+
+1.3.86.jcn2
+===========
+
+* Replaced try_music and next functionality of do_process_and_next by
+ get_music and next. Process functionality of do_process_and_next
+ is handled by do_process.
+
1.3.86.jcn1
===========
#include "debug.hh"
#include "music.hh"
+#include "request.hh"
+#include "music-list.hh"
#include "music-iterator.hh"
#include "global-translator.hh"
void
Global_translator::run_iterator_on_me (Music_iterator * iter)
{
- while (iter->ok() || moments_left_i ())
+ bool first = true;
+ while (iter->ok () || moments_left_i ())
{
Moment w;
w.set_infinite (1);
- if (iter->ok())
+ if (iter->ok ())
{
w = iter->next_moment();
+
+ if (!first)
+ iter->next ();
+ else
+ first = false;
+
DEBUG_OUT << "proccing: " << w << '\n';
if (flower_dstream && !flower_dstream->silent_b ("walking"))
iter->print();
}
-
+
w = sneaky_insert_extra_moment (w);
prepare (w);
print();
iter->process (w);
+
+ /*
+ Urg, this is request_chord_iterator.
+ */
for (SCM i = iter->get_music (); gh_pair_p (i); i = SCM_CDR (i))
{
assert (gh_pair_p (i));
Translator *t = unsmob_translator (SCM_CDR (p));
assert (m);
assert (t);
- bool b = t->try_music (m);
- if (!b)
+ for (SCM s = dynamic_cast<Music_sequence *> (m)->music_list ();
+ gh_pair_p (s); s = SCM_CDR (s))
{
- /*
- Children?
- */
- printf ("junking:\n");
- m->print ();
- t->print ();
+ Music *m = unsmob_music (SCM_CAR (s));
+ if (Request* r = dynamic_cast<Request*> (m))
+ {
+ bool b = t->try_music (m);
+ if (!b)
+ m->origin ()->warning (_f ("Junking request: `%s'",
+ classname(m)));
+ }
+ else
+ m->origin ()->warning (_f ("Huh? Not a Request: `%s'",
+ classname (m)));
+ }
+ if (! dynamic_cast<Music_sequence *> (m))
+ {
+ bool b = t->try_music (m);
+ if (!b)
+ {
+ /*
+ Children?
+ */
+ printf ("junking:\n");
+ m->print ();
+ t->print ();
+ }
}
-
}
- iter->next ();
- process();
+ process ();
}
}
Simultaneous_music_iterator::get_music ()
{
SCM s = SCM_EOL;
- // SCM t = report_to_l ()-self_scm ();
for (Cons<Music_iterator> *p = children_p_list_.head_; p; p = p->next_)
{
- scm_cons (p->car_->get_music (), s);
+ s = gh_append2 (p->car_->get_music (), s);
}
return s;
}