On 4 juil. 2012, at 20:10, Marc Hohl wrote: > Am 04.07.2012 13:29, schrieb David Kastrup: >> Marc Hohl <m...@hohlart.de> writes: >> >>> Hello list, >>> >>> the topic is somewhat over my head, but perhaps someone with more >>> insight can answer this question? >> I think that gcc likely can, don't know about g++, and we don't want to >> rely on it anyhow. > Ok. > > Well then, is there an alternative? > > I want to get rid of bar-line.cc (issue 1320), and I have managed to get all > definitions but Bar_line::non_empty_barline into scheme. > > In lily/note-spacing.cc, I have > > Grob *bar = Pointer_group_interface::find_grob (right_col, > ly_symbol2scm > ("elements"), > Bar_line::non_empty_barline); > > The simple approach > > bool non_empty_barline = > ly_scm2bool (scm_call_1 (ly_lily_module_constant > ("bar-line::non-empty-barline"), right_col->self_scm ())); > > with > > (define-public (bar-line::non-empty-barline grob) > (and (grob::has-interface grob 'bar-line) > (pair? (ly:grob-extent grob grob X)))) > > doesn't work. > > I see that in lily/pointer-group-interface.cc the function above is defined as > > Grob * > Pointer_group_interface::find_grob (Grob *me, SCM sym, bool (*pred) (Grob *)) > { > [snip] > } > > What is bool (*pred) (Grob *)? > > Is there a way to get a scheme function in this place, or do I have to put > the remaining definition of bar-line.cc into another file? > > Regards, > > Marc > > > > >> > > > > _______________________________________________ > lilypond-devel mailing list > lilypond-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-devel
I just realized that there's an easier way to do this w/ existing code conventions. You can overload Pointer_group_interface::find_grob so that it accepts a simple closure as the third argument. Then, wrap the Scheme function in a simple closure. Cheers, MS _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel