On Sat, 2006-09-23 at 13:47 +0200, Han-Wen Nienhuys wrote: > Joe Neeman wrote: > > On Sat, 2006-09-16 at 16:29 +0200, Han-Wen Nienhuys wrote: > >> Joe Neeman wrote: > >>> Understanding the LilyPond source often boils down to figuring out what > >>> is happening to the Grobs. Where (and why) are they being created, > >>> modified and destroyed? I've spent many hours tracing Lily through a > >>> debugger and it is mind-blowingly tedious. > >>> > >>> So I quickly hacked a few things together and came up with something a > >>> bit better. I added hooks into internal_grob_set_property and > >>> make_grob_from_properties. You can register a scheme callback which will > >>> get called whenever a Grob is modified or created. The scheme callback > >>> will receive the file and line numbers in the C++ source where the call > >>> was made. This can help you to trace cause and effect through the C++ > >>> source. > >> Of course, having written much of the code myself, I don't need it, but > >> this is extremely cool! > >> > >> Some comments: > >> > >> * can you add another macro layer, so __LINE__ and __FILE__ aren't > >> sprinkled around in the code? For good measure, you could also add > >> __FUNCTION__ . > > > > This is done. I've removed all direct calls to internal_foo. I also > > cleaned up make_{item,paper_column,spanner}. > > > >> * similarly, can you add macro layering, so that passing around line > >> numbers/file names is entirely optional, and doesn't happen for a > >> -DNDEBUG build? > > > > I've done this, too but I'm not sure about it -- some of the ifndefs > > start to inhibit readability. > > > > What if I get rid of just the ifndef'ed prototypes? Ie. the line > > numbers, etc will get passed around, but they won't get used when NDEBUG > > is defined. > > that's an option. I'm worrying a bit about performance though. > get_property() and friends take a lot of time (10 to 20% of overall > execution time). > > please apply after successful "make web".
But would passing an extra 3 (compile-time constant) variables make any difference? In any case, I've committed it with all the ifndefs, and if things get too ugly, they can always be taken out. _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org http://lists.gnu.org/mailman/listinfo/lilypond-devel