On Monday 18 September 2006 16:34, Han-Wen Nienhuys wrote:
> Erik Sandberg wrote:
> >
> > I tried some days ago. A problem is that I still couldn't make web
> > completely, even without the patch.
> >
> > I also have an updated patch for my translator patch, which is as
> > well-tested. Both patches are attached.
>
> btw, can you revise internal_event_assignment so it uses the string
> class iso. char* ?
done, patch attached.
BTW, do you plan to include this patch in 2.10?
Also: The ASSIGN_EVENT_ONCE macro displays warnings in some new situations;
e.g. in { c\< d\!\> e\! }, where the first \! is superfluous because the
crescendo is implicitly stopped by the diminuendo. I have created a fix that
avoids a warning in this particular case. But in general, do you view this
extra warning as a regression?
--
Erik
--- ../lilypond/lily/translator.cc 2006-09-06 15:46:34.000000000 +0200
+++ lily/translator.cc 2006-09-19 20:21:56.000000000 +0200
@@ -52,12 +52,6 @@
must_be_last_ = src.must_be_last_;
}
-bool
-Translator::try_music (Music *)
-{
- return false;
-}
-
Moment
Translator::now_mom () const
{
@@ -94,12 +88,9 @@
}
/*
- this function has 2 properties
-
- - It is called before try_music ()
-
- - It is called before any user information enters the translators.
- (i.e. any \property or event is not processed yet.)
+ this function is called once each moment, before any user
+ information enters the translators. (i.e. no \property or event has
+ been processed yet.)
*/
void
Translator::start_translation_timestep ()
@@ -293,16 +284,17 @@
{
/* extract event class from function name */
const char *prefix = "listen_";
- assert (!strncmp (function, "listen_", strlen (prefix)));
- function += strlen (prefix);
- char ev_class[strlen (function) + 1];
- strcpy (ev_class, function);
- for (char *c = ev_class; *c; c++)
- if (*c == '_')
- *c = '-';
+ string ev_class = function;
+ /* This assertion fails if EVENT_ASSIGNMENT was called outside a
+ translator listener. Don't do that. */
+ assert (0 == ev_class.find (prefix));
+
+ /* "listen_foo_bar" -> "foo-bar" */
+ ev_class.erase (0, strlen(prefix));
+ replace_all (ev_class, '_', '-');
- new_ev->origin ()->warning (_f ("Two simultaneous %s events, junking this one", ev_class));
- (*old_ev)->origin ()->warning (_f ("Previous %s event here", ev_class));
+ new_ev->origin ()->warning (_f ("Two simultaneous %s events, junking this one", ev_class.c_str ()));
+ (*old_ev)->origin ()->warning (_f ("Previous %s event here", ev_class.c_str ()));
return false;
}
else
_______________________________________________
lilypond-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel