]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.1.6
authorfred <fred>
Tue, 26 Mar 2002 21:44:28 +0000 (21:44 +0000)
committerfred <fred>
Tue, 26 Mar 2002 21:44:28 +0000 (21:44 +0000)
343 files changed:
Documentation/COPERTINA.in
Documentation/topdocs/index.yo
TODO
buildscripts/lilypond-profile.sh
buildscripts/set-lily.sh
configure
configure.in
flower/include/array.hh
flower/include/pointer.hh
flower/include/pointer.tcc
flower/include/virtual-methods.hh
flower/rtti.cc [new file with mode: 0644]
init/engraver.ly
init/lily.scm
init/part-paper.ly
init/table16.ly
init/table20.ly
input/GNUmakefile
input/star-spangled-banner.ly [new file with mode: 0644]
input/test/GNUmakefile
input/test/extender.ly [new file with mode: 0644]
input/test/hara-kiri.ly
input/test/mark.ly
input/test/tup.ly
lily/abbreviation-beam-engraver.cc
lily/abbreviation-beam.cc
lily/align-element.cc
lily/audio-column.cc
lily/audio-element.cc
lily/audio-item.cc
lily/audio-staff.cc
lily/axis-group-element.cc
lily/axis-group-item.cc
lily/axis-group-spanner.cc
lily/bar-column-engraver.cc
lily/bar-column.cc
lily/bar-engraver.cc
lily/bar-number-engraver.cc
lily/bar.cc
lily/beam-engraver.cc
lily/beam-swallow-trans.cc
lily/beam.cc
lily/bow.cc
lily/break-align-item.cc
lily/change-iterator.cc
lily/change-translator.cc
lily/chord-iterator.cc
lily/clef-engraver.cc
lily/clef-item.cc
lily/collision-engraver.cc
lily/collision.cc
lily/command-request.cc
lily/compressed-music-iterator.cc
lily/compressed-music.cc
lily/crescendo.cc
lily/directional-spanner.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dots.cc
lily/dynamic-engraver.cc
lily/engraver-group.cc
lily/engraver.cc
lily/extender-engraver.cc [new file with mode: 0644]
lily/extender-spanner.cc [new file with mode: 0644]
lily/font-size-engraver.cc
lily/general-script-def.cc
lily/global-translator.cc
lily/graphical-axis-group.cc
lily/graphical-element.cc
lily/hara-kiri-line-group-engraver.cc
lily/hara-kiri-vertical-group-spanner.cc
lily/heads-engraver.cc
lily/horizontal-align-item.cc
lily/horizontal-group-element.cc
lily/horizontal-group-item.cc
lily/horizontal-vertical-group-element.cc
lily/horizontal-vertical-group-item.cc
lily/identifier.cc
lily/include/abbreviation-beam-engraver.hh
lily/include/abbreviation-beam.hh
lily/include/align-element.hh
lily/include/audio-element.hh
lily/include/audio-item.hh
lily/include/audio-staff.hh
lily/include/axis-group-element.hh
lily/include/axis-group-item.hh
lily/include/axis-group-spanner.hh
lily/include/bar-column-engraver.hh
lily/include/bar-column.hh
lily/include/bar-engraver.hh
lily/include/bar-number-engraver.hh
lily/include/bar.hh
lily/include/beam-engraver.hh
lily/include/beam.hh
lily/include/bow.hh
lily/include/break-align-item.hh
lily/include/change-iterator.hh
lily/include/change-translator.hh
lily/include/chord-iterator.hh
lily/include/clef-engraver.hh
lily/include/clef-item.hh
lily/include/collision-engraver.hh
lily/include/collision.hh
lily/include/compressed-music-iterator.hh
lily/include/compressed-music.hh
lily/include/crescendo.hh
lily/include/directional-spanner.hh
lily/include/dot-column-engraver.hh
lily/include/dot-column.hh
lily/include/dots.hh
lily/include/dynamic-engraver.hh
lily/include/engraver-group.hh
lily/include/engraver.hh
lily/include/extender-engraver.hh [new file with mode: 0644]
lily/include/extender-spanner.hh [new file with mode: 0644]
lily/include/font-size-engraver.hh
lily/include/general-script-def.hh
lily/include/global-translator.hh
lily/include/graphical-axis-group.hh
lily/include/graphical-element.hh
lily/include/graphical-lisp-element.hh
lily/include/hara-kiri-line-group-engraver.hh
lily/include/hara-kiri-vertical-group-spanner.hh
lily/include/heads-engraver.hh
lily/include/horizontal-align-item.hh
lily/include/horizontal-group-element.hh
lily/include/horizontal-group-item.hh
lily/include/horizontal-vertical-group-element.hh
lily/include/horizontal-vertical-group-item.hh
lily/include/identifier.hh
lily/include/item.hh
lily/include/key-engraver.hh
lily/include/key-item.hh
lily/include/key-performer.hh
lily/include/lily-proto.hh
lily/include/line-group-group-engraver.hh
lily/include/line-of-score.hh
lily/include/local-key-engraver.hh
lily/include/local-key-item.hh
lily/include/lookup.hh
lily/include/lyric-engraver.hh
lily/include/lyric-performer.hh
lily/include/mark-engraver.hh
lily/include/midi-def.hh
lily/include/midi-item.hh
lily/include/multi-measure-rest-engraver.hh
lily/include/multi-measure-rest.hh
lily/include/music-iterator.hh
lily/include/music-list.hh
lily/include/music-output-def.hh
lily/include/music-wrapper-iterator.hh
lily/include/music-wrapper.hh
lily/include/music.hh
lily/include/musical-request.hh
lily/include/my-lily-parser.hh
lily/include/note-column.hh
lily/include/note-head.hh
lily/include/note-performer.hh
lily/include/p-col.hh
lily/include/paper-def.hh
lily/include/performer-group-performer.hh
lily/include/performer.hh
lily/include/piano-brace.hh
lily/include/pitch-squash-engraver.hh
lily/include/plet-engraver.hh
lily/include/plet-swallow-engraver.hh
lily/include/priority-halign-engraver.hh
lily/include/property-iterator.hh
lily/include/relative-music.hh
lily/include/request-iterator.hh
lily/include/request.hh
lily/include/rest-collision-engraver.hh
lily/include/rest-collision.hh
lily/include/rest-engraver.hh
lily/include/rest.hh
lily/include/rhythmic-column-engraver.hh
lily/include/rhythmic-head.hh
lily/include/score-bar.hh
lily/include/score-column.hh
lily/include/score-element-info.hh
lily/include/score-element.hh
lily/include/score-engraver.hh
lily/include/score-performer.hh
lily/include/score-priority-engraver.hh
lily/include/script-column.hh
lily/include/script-def.hh
lily/include/script-engraver.hh
lily/include/script.hh
lily/include/separating-group-spanner.hh
lily/include/separating-line-group-engraver.hh
lily/include/single-malt-grouping-item.hh
lily/include/slur-engraver.hh
lily/include/slur.hh
lily/include/span-bar-engraver.hh
lily/include/span-bar.hh
lily/include/span-score-bar-engraver.hh
lily/include/span-score-bar.hh
lily/include/spanner.hh
lily/include/staff-bracket.hh
lily/include/staff-margin-engraver.hh
lily/include/staff-performer.hh
lily/include/staff-side.hh
lily/include/staff-sym-engraver.hh
lily/include/staff-sym.hh
lily/include/stem-engraver.hh
lily/include/stem.hh
lily/include/super-element.hh
lily/include/swallow-engraver.hh
lily/include/swallow-perf.hh
lily/include/text-def.hh
lily/include/text-item.hh
lily/include/text-spanner.hh
lily/include/tie.hh
lily/include/ties-engraver.hh
lily/include/time-signature-engraver.hh
lily/include/time-signature-performer.hh
lily/include/time-signature.hh
lily/include/timing-engraver.hh
lily/include/timing-translator.hh
lily/include/translation-property.hh
lily/include/translator-group.hh
lily/include/translator.hh
lily/include/transposed-music.hh
lily/include/tuplet-engraver.hh [new file with mode: 0644]
lily/include/tuplet-spanner.hh [new file with mode: 0644]
lily/include/type-swallow-trans.hh
lily/include/vertical-align-engraver.hh
lily/include/vertical-align-spanner.hh
lily/include/vertical-group-element.hh
lily/include/vertical-group-spanner.hh
lily/include/voice-iterator.hh
lily/item.cc
lily/key-engraver.cc
lily/key-item.cc
lily/key-performer.cc
lily/lexer.ll
lily/line-group-group-engraver.cc
lily/line-of-score.cc
lily/local-key-engraver.cc
lily/local-key-item.cc
lily/lookup.cc
lily/lyric-engraver.cc
lily/lyric-performer.cc
lily/main.cc
lily/mark-engraver.cc
lily/midi-def.cc
lily/midi-item.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/music-iterator.cc
lily/music-list.cc
lily/music-output-def.cc
lily/music-sequence.cc
lily/music-wrapper-iterator.cc
lily/music-wrapper.cc
lily/music.cc
lily/my-lily-lexer.cc
lily/my-lily-parser.cc
lily/note-column.cc
lily/note-head.cc
lily/note-performer.cc
lily/p-col.cc
lily/paper-def.cc
lily/parser.yy
lily/performer-group-performer.cc
lily/performer.cc
lily/piano-brace.cc
lily/pitch-squash-engraver.cc
lily/plet-engraver.cc
lily/plet-swallow-engraver.cc
lily/priority-halign-engraver.cc
lily/property-iterator.cc
lily/relative-octave-music.cc
lily/request-iterator.cc
lily/request.cc
lily/rest-collision-engraver.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/score-bar.cc
lily/score-column.cc
lily/score-element-info.cc
lily/score-element.cc
lily/score-engraver.cc
lily/score-performer.cc
lily/score-priority-engraver.cc
lily/script-column.cc
lily/script-def.cc
lily/script-engraver.cc
lily/script.cc
lily/separating-group-spanner.cc
lily/separating-line-group-engraver.cc
lily/single-malt-grouping-item.cc
lily/slur-engraver.cc
lily/slur.cc
lily/span-bar-engraver.cc
lily/span-bar.cc
lily/span-score-bar-engraver.cc
lily/span-score-bar.cc
lily/spanner.cc
lily/staff-bracket.cc
lily/staff-margin-engraver.cc
lily/staff-performer.cc
lily/staff-side.cc
lily/staff-sym-engraver.cc
lily/staff-sym.cc
lily/stem-engraver.cc
lily/stem.cc
lily/super-element.cc
lily/swallow-engraver.cc
lily/swallow-perf.cc
lily/text-def.cc
lily/text-item.cc
lily/text-spanner.cc
lily/tie.cc
lily/ties-engraver.cc
lily/time-signature-engraver.cc
lily/time-signature-performer.cc
lily/time-signature.cc
lily/timing-engraver.cc
lily/timing-translator.cc
lily/translation-property.cc
lily/translator-ctors.cc
lily/translator-group.cc
lily/translator.cc
lily/transposed-music.cc
lily/tuplet-engraver.cc [new file with mode: 0644]
lily/tuplet-spanner.cc [new file with mode: 0644]
lily/type-swallow-trans.cc
lily/vertical-align-engraver.cc
lily/vertical-align-spanner.cc
lily/vertical-group-elem.cc
lily/vertical-group-spanner.cc
lily/voice-iterator.cc
mutopia/Coriolan/coriolan-part-paper.ly
mutopia/Coriolan/coriolan.ly
mutopia/standchen.ly
ps/lily.ps [new file with mode: 0644]
ps/lilyponddefs.ps
tex/lily-ps-defs.tex
tex/lilyponddefs.tex

index 5344413eca3f8e2a27c99ea01a58a5b3519169dc..546352483b0ee1312a3d1879474aaace5d74aaa1 100644 (file)
@@ -1,8 +1,8 @@
-LilyPond Ã¨ il tipografo musicale del progetto GNU. Questo programma
-puo' stampare delle belle partiture a partire da un documento di
-definizioni musicali. Puo' anche creare meccaniche rappresentazioni
-della partitura in un documento in formato MIDI. Le caratteristiche del
+LilyPond Ã¨ il tipografo musicale del progetto GNU.  Questo programma
+può stampare delle belle partiture a partire da un documento di
+definizioni musicali.  Può anche creare meccaniche rappresentazioni
+della partitura in un documento in formato MIDI.  Le caratteristiche del
 programma includono pentagrammi multipli, segni di divisione, chiavi,
 tasti, parole, versatile linguaggio di definizione, cadenze, legature,
 acciaccature, terzine, segni di formattazione, estrazione delle
-parte. Ã¨ compresa una seria completa di caratteri musicali.
+parte.  Ãˆ compresa una seria completa di caratteri musicali.
index 18b5a8c05391521f4ea7d0fd6676b08cd649172c..bf386aa4b421c78924185bf95a5f6665c83c58cb 100644 (file)
@@ -3,8 +3,12 @@ DEFINEMACRO(docdir)(0)(Documentation)
 DEFINEMACRO(pic)(1)(url(ARG1)(DOEXPAND(docdir)/pictures/DOEXPAND(outdir)/ARG1.png
 ))
 
+DEFINEMACRO(beginbold)(0)(whenhtml(htmlcommand(<font size=4><strong>)))
+DEFINEMACRO(endbold)(0)(whenhtml(htmlcommand(</strong><font size=3>)))
+redef(htmlnewfile)(0)()
+setchapterstring()
 
-nsect(LilyPond -- The GNU Project Music Typesetter)
+nchapter(LilyPond -- The GNU Project Music Typesetter)
 
 includefile(../BLURB.in)(url(italiano)(DOEXPAND(docdir)/DOEXPAND(outdir)/COPERTINA.html))(url(nederlands)(DOEXPAND(docdir)/DOEXPAND(outdir)/FLAPTEKST.html))
 nl()
@@ -14,20 +18,17 @@ center(mudela(fragment)(
        \relative c'' { \key es; r8 [c16 b] [c8 g] [as c16 b] [c8 d] | g,4 }
 ))
 
-nsubsect()
+
+nsect()
 
 Hmm, this is what it said yesterday too.  I just want to know
 url(What's new)(DOEXPAND(docdir)/DOEXPAND(outdir)/NEWS.html) today and
-then COMMENT(
-url(Download)(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz)
-LilyPond.  perhaps lily/VERSION, i.e. without my-patch-level would be
-best...
-)url(Download)(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz)
+then url(Download)(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/lilypond-@TOPLEVEL_VERSION@.tar.gz)
 LilyPond.
+nl()
 Or get the latest url(patch)(DOEXPAND(depth)/DOEXPAND(outdir)/lilypond-@TOPLEVEL_VERSION@.diff.gz).
 
-nsubsect(Introduction)
-
+nsubsect(Webmaster's Disclaimer)
 
 These pages were entirely created from the LilyPond package-sources.
 Sorry for poor look they have: we want to be hacking at LilyPond, and
@@ -37,44 +38,61 @@ Note: These pages are created from the latest bf(development snapshots)
 of LilyPond, specifically, this page was made from LilyPond
 @TOPLEVEL_VERSION@.tar.gz
 
-nsect(Sites)
 
-description(
-dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site.
-dit(lurl(http://www.xs4all.nl/~jantien/lilypond/))Jan's site.
-dit(lurl(http://www.realtime.net/~daboys/lilypond/))Jeff's Windows NT Distribution site.
+nsect(Preview)
+
+itemize(
+beginbold()
+it()url(Examples)(DOEXPAND(depth)/input/DOEXPAND(outdir)/index.html):
+endbold()
+ simple pieces, tests and bugs.  MIDI, PNG (gif replacement), PostScript, and Source.
+beginbold()
+it()url(Music in Mutopia)(DOEXPAND(depth)/mutopia/DOEXPAND(outdir)/index.html):
+endbold()
+ LilyPond handling real music.  MIDI, view PNG (gif replacement), PostScript, and Source.
 )
 
+nsect(Documentation)
 
-nsubsubsect(Mirrors)
-description(
-dit(lurl(http://sca.uwaterloo.ca/lilypond/))
-    Eric Praetzel was kind enough to provide a mirror of both the website
-    and the ftp site.
+itemize(
+it()url(Tutorial)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/tutorial.html)
+it()url(FAQ)(DOEXPAND(docdir)/DOEXPAND(outdir)/faq.html)
+it()url(Reference Manual)(DOEXPAND(docdir)/tex/DOEXPAND(outdir)/refman.html)
+it()url(Mailing Lists)(DOEXPAND(docdir)/DOEXPAND(outdir)/mail.html)
+it()url(All of the LilyPond documentation)(DOEXPAND(docdir)/DOEXPAND(outdir)/index.html)
+it()url(The DOC++ documentation of the C++ sources.)(DOEXPAND(depth)/docxx/index.html)
 )
 
-nsubsect(Examples)
+nsect(Sites)
 
 itemize(
-it()url(short examples of what LilyPond can do: MIDI, PS, .png and input.)
-(DOEXPAND(depth)/input/DOEXPAND(outdir)/index.html)
-it()url(examples of what LilyPond can do with real music: MIDI, PS, .png and input)(DOEXPAND(depth)/mutopia/DOEXPAND(outdir)/index.html)
+it()lurl(http://www.cs.uu.nl/people/hanwen/lilypond/) Han-Wen's site
+it()lurl(http://www.xs4all.nl/~jantien/lilypond/) Jan's site
+it()lurl(http://www.realtime.net/~daboys/lilypond/) Jeff's Windows NT Distribution site
 )
 
-nsubsect(NEWS)
+nsubsect(Mirrors)
+description(
+dit(lurl(http://sca.uwaterloo.ca/lilypond/))
+    Eric Praetzel was kind enough to provide a mirror of both the website
+    and the ftp site.
+)
+
+nsect(NEWS)
 
 This is what the latest version brings:
 verb(
 top_of_NEWS
 )
 
-Go get it at lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/)
-
-nsubsect(Documentation)
-
+beginbold()
+Go get it at
 itemize(
-it()url(All of the LilyPond documentation.)(DOEXPAND(docdir)/DOEXPAND(outdir)/index.html)
-it()url(The DOC++ documentation of the C++ sources.)(DOEXPAND(depth)/docxx/index.html)
+it()lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/development/)
+endbold()
+it()lurl(ftp://ftp.cs.uu.nl/pub/GNU/LilyPond/RedHat/RPMS/) RedHat binary
+it()lurl(ftp://ftp.debian.org/pub/debian/dists/unstable/main/binary-i386/tex) Debian binary
+it()lurl(http://www.realtime.net/~daboys/lilypond/) Windows NT binary
 )
 
 @COUNTER_REF@
diff --git a/TODO b/TODO
index 6b8dc778be8891bbb00608633fc999add3e31539..52d614df1ad9e2b4ebf5a1ef24d207f50f247d32 100644 (file)
--- a/TODO
+++ b/TODO
@@ -8,14 +8,11 @@ grep for TODO and ugh/ugr/urg
 
 
 BUGS:
+
        * gallina barlines.
 
        * latex bla.tex broken (titles / \lilyfooter stuff?)
 
-       * acc placement: \score { \notes \key G; \transpose\notes { a b c } }
-
-       * --safe:  disallow backslashes, disallow \include.
-
        * msgfmt -o check?
 
        * \breathmark TeX macro 
@@ -69,6 +66,12 @@ BUGS:
        
        portato= \script { "portato" 0 -1 0 1 0 }
 
+STUFF
+
+       * move option processing out of gh_enter
+
+       * check out GCC signatures?
+
        * Align_element::padding  ?
 
        * uniformise property names.
@@ -79,6 +82,8 @@ BUGS:
 
        * make engraver hacking robust.
 
+       * --safe:  disallow backslashes, disallow \include.
+
        * use streambufs and iostream
        to provide IO handling for TeX stream, mudela stream, data-file.
 
@@ -88,8 +93,6 @@ BUGS:
 
        * zip target for binary windows dist (JBR)
 
-       * text continuations
-
        * revise documentation
 
        * abbrev -> tremolo
@@ -108,8 +111,6 @@ BUGS:
        - junk _ for lyrics.
        - abstract grammar.
 
-       * install TeX stuff into tex/generic directory.
-
        * percussion note heads
 
        * mi2mu empty staffs.
@@ -569,8 +570,6 @@ SMALLISH PROJECTS
 
        * Flower types:
        - A decent scalar type
-       - String hash
-       - Pointer hash
 
        * binsearch/hash for identifiers
 
@@ -602,7 +601,6 @@ SMALLISH PROJECTS
 
 IDEAS
 
-
        * Output data structures of Mudela in XML/SGML.
 
        * create libmudela, or liblily_frontend
@@ -610,7 +608,7 @@ IDEAS
        * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
 
        * use an embedded language: Python, Scheme
-       for: 
+       for:
                - Score_elems
                - Translators
 
@@ -620,8 +618,6 @@ IDEAS
 
        * caching breakpoints
 
-       * breath marks 
-
        * used fixedpoint arithmetic for min. energy.
 
        * move towards incremental algorithms.
index 44bbfd0ec204bf24e5d9a2ec3d4aeb13988cebc4..40e778f75ab8a21ea8d5fff1d13353d0edc1dede 100644 (file)
@@ -8,7 +8,8 @@ LILYINCLUDE="@datadir@/ly:@datadir@/afm"
 
 # include an empty path component for the system wide includes.
 MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
-TEXINPUTS="@datadir@/tex:"${TEXINPUTS:=":"}
+TEXINPUTS="@datadir@/tex:@datadir@/ps:"${TEXINPUTS:=":"}
+
 GUILE_LOAD_PATH="@datadir@/scm:$GUILE_LOAD_PATH"
 
 export GUILE_LOAD_PATH LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
index c1db5b84086059528bd21556453bdb46ab7e035a..c4ce39554622968bd62789d33fa66c82a029fd9e 100644 (file)
@@ -25,7 +25,7 @@ if [ "x$LILYINCLUDE" = "x" ]; then
        fi
        LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/input:$LILYPOND_SOURCEDIR/mf/out
        MFINPUTS=$MFINPUTS:$LILYPOND_SOURCEDIR/mf
-       TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out
+       TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out:$LILYPOND_SOURCEDIR/ps:$LILYPOND_SOURCEDIR/tex
        export LILYINCLUDE MFINPUTS TEXINPUTS
        GS_LIB=$HOME/usr/src/lilypond/ps
        GS_FONTPATH=$HOME/usr/src/lilypond/mf/out
@@ -34,7 +34,7 @@ if [ "x$LILYINCLUDE" = "x" ]; then
        cat <<EOF
        LILYINCLUDE=$LILYPOND_SOURCEDIR/init:$LILYPOND_SOURCEDIR/mf/out
        MFINPUTS=\$MFINPUTS:\$LILYPOND_SOURCEDIR/mf
-       TEXINPUTS=\$TEXINPUTS:\$LILYPOND_SOURCEDIR/mf/out
+       TEXINPUTS=$TEXINPUTS:$LILYPOND_SOURCEDIR/mf/out:$LILYPOND_SOURCEDIR/ps:$LILYPOND_SOURCEDIR/tex
        export LILYINCLUDE MFINPUTS TEXINPUTS
 EOF
 
index 1fab397eb0c75b12f1f0d3f93738b407a1b36c5a..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100755 (executable)
--- a/configure
+++ b/configure
-#! /bin/sh
-
-ac_help="$ac_help
-  --with-gtkmm-prefix=PREFIX
-                          Prefix where GTK-- is installed (optional)"
-# Check whether --with-gtkmm-prefix or --without-gtkmm-prefix was given.
-if test "${with_gtkmm_prefix+set}" = set; then
-  withval="$with_gtkmm_prefix"
-  gtkmm_config_prefix="$withval"
-else
-  gtkmm_config_prefix=""
-fi
-
-ac_help="$ac_help
-  --with-gtkmm-exec-prefix=PREFIX
-                          Exec prefix where GTK-- is installed (optional)"
-# Check whether --with-gtkmm-exec-prefix or --without-gtkmm-exec-prefix was given.
-if test "${with_gtkmm_exec_prefix+set}" = set; then
-  withval="$with_gtkmm_exec_prefix"
-  gtkmm_config_exec_prefix="$withval"
-else
-  gtkmm_config_exec_prefix=""
-fi
-
-ac_help="$ac_help
-  --disable-gtkmmtest     Do not try to compile and run a test GTK-- program"
-# Check whether --enable-gtkmmtest or --disable-gtkmmtest was given.
-if test "${enable_gtkmmtest+set}" = set; then
-  enableval="$enable_gtkmmtest"
-  :
-else
-  enable_gtkmmtest=yes
-fi
-
-
-  if test x$gtkmm_config_exec_prefix != x ; then
-     gtkmm_config_args="$gtkmm_config_args --exec-prefix=$gtkmm_config_exec_prefix"
-     if test x${GTKMM_CONFIG+set} != xset ; then
-        GTKMM_CONFIG=$gtkmm_config_exec_prefix/bin/gtkmm-config
-     fi
-  fi
-  if test x$gtkmm_config_prefix != x ; then
-     gtkmm_config_args="$gtkmm_config_args --prefix=$gtkmm_config_prefix"
-     if test x${GTKMM_CONFIG+set} != xset ; then
-        GTKMM_CONFIG=$gtkmm_config_prefix/bin/gtkmm-config
-     fi
-  fi
-
-
-
-
-# Configure paths for GTK--DRAW
-# Derek Quinn Wyatt   98-08-21  (adapted from Jan Nieuwenhuizen's code)
-
-
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.12 
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-ac_help="$ac_help
-  enable-config=FILE      put configure settings in config-FILE.make"
-ac_help="$ac_help
-  enable-checking         set runtime checks (assert calls). Default: on"
-ac_help="$ac_help
-  enable-optimise         use maximal speed optimisations. Default: off"
-ac_help="$ac_help
-  enable-profiling        compile with gprof support. Default: off"
-ac_help="$ac_help
-  enable-debugging        set debug info. Default: on"
-ac_help="$ac_help
-  enable-mingw-prefix=DIR set the mingw32 directory (standalone windows32 exes)"
-ac_help="$ac_help
-  enable-printing         turn on debug printing. Default: off"
-ac_help="$ac_help
-  with-localedir=LOCALE   use LOCALE as locale dir. Default: PREFIX/share/locale "
-ac_help="$ac_help
-  with-lang=LANG          use LANG as language to emit messages"
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
-  # If the previous option needs an argument, assign it.
-  if test -n "$ac_prev"; then
-    eval "$ac_prev=\$ac_option"
-    ac_prev=
-    continue
-  fi
-
-  case "$ac_option" in
-  -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
-  *) ac_optarg= ;;
-  esac
-
-  # Accept the important Cygnus configure options, so we can diagnose typos.
-
-  case "$ac_option" in
-
-  -bindir | --bindir | --bindi | --bind | --bin | --bi)
-    ac_prev=bindir ;;
-  -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
-    bindir="$ac_optarg" ;;
-
-  -build | --build | --buil | --bui | --bu)
-    ac_prev=build ;;
-  -build=* | --build=* | --buil=* | --bui=* | --bu=*)
-    build="$ac_optarg" ;;
-
-  -cache-file | --cache-file | --cache-fil | --cache-fi \
-  | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-    ac_prev=cache_file ;;
-  -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-  | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-    cache_file="$ac_optarg" ;;
-
-  -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
-    ac_prev=datadir ;;
-  -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
-  | --da=*)
-    datadir="$ac_optarg" ;;
-
-  -disable-* | --disable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    eval "enable_${ac_feature}=no" ;;
-
-  -enable-* | --enable-*)
-    ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
-    fi
-    ac_feature=`echo $ac_feature| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "enable_${ac_feature}='$ac_optarg'" ;;
-
-  -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
-  | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
-  | --exec | --exe | --ex)
-    ac_prev=exec_prefix ;;
-  -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
-  | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
-  | --exec=* | --exe=* | --ex=*)
-    exec_prefix="$ac_optarg" ;;
-
-  -gas | --gas | --ga | --g)
-    # Obsolete; use --with-gas.
-    with_gas=yes ;;
-
-  -help | --help | --hel | --he)
-    # Omit some internal or obsolete options to make the list less imposing.
-    # This message is too long to be a string in the A/UX 3.1 sh.
-    cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
-  --cache-file=FILE       cache test results in FILE
-  --help                  print this message
-  --no-create             do not create output files
-  --quiet, --silent       do not print \`checking...' messages
-  --version               print the version of autoconf that created configure
-Directory and file names:
-  --prefix=PREFIX         install architecture-independent files in PREFIX
-                          [$ac_default_prefix]
-  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
-                          [same as prefix]
-  --bindir=DIR            user executables in DIR [EPREFIX/bin]
-  --sbindir=DIR           system admin executables in DIR [EPREFIX/sbin]
-  --libexecdir=DIR        program executables in DIR [EPREFIX/libexec]
-  --datadir=DIR           read-only architecture-independent data in DIR
-                          [PREFIX/share]
-  --sysconfdir=DIR        read-only single-machine data in DIR [PREFIX/etc]
-  --sharedstatedir=DIR    modifiable architecture-independent data in DIR
-                          [PREFIX/com]
-  --localstatedir=DIR     modifiable single-machine data in DIR [PREFIX/var]
-  --libdir=DIR            object code libraries in DIR [EPREFIX/lib]
-  --includedir=DIR        C header files in DIR [PREFIX/include]
-  --oldincludedir=DIR     C header files for non-gcc in DIR [/usr/include]
-  --infodir=DIR           info documentation in DIR [PREFIX/info]
-  --mandir=DIR            man documentation in DIR [PREFIX/man]
-  --srcdir=DIR            find the sources in DIR [configure dir or ..]
-  --program-prefix=PREFIX prepend PREFIX to installed program names
-  --program-suffix=SUFFIX append SUFFIX to installed program names
-  --program-transform-name=PROGRAM
-                          run sed PROGRAM on installed program names
-EOF
-    cat << EOF
-Host type:
-  --build=BUILD           configure for building on BUILD [BUILD=HOST]
-  --host=HOST             configure for HOST [guessed]
-  --target=TARGET         configure for TARGET [TARGET=HOST]
-Features and packages:
-  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
-  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
-  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --x-includes=DIR        X include files are in DIR
-  --x-libraries=DIR       X library files are in DIR
-EOF
-    if test -n "$ac_help"; then
-      echo "--enable and --with options recognized:$ac_help"
-    fi
-    exit 0 ;;
-
-  -host | --host | --hos | --ho)
-    ac_prev=host ;;
-  -host=* | --host=* | --hos=* | --ho=*)
-    host="$ac_optarg" ;;
-
-  -includedir | --includedir | --includedi | --included | --include \
-  | --includ | --inclu | --incl | --inc)
-    ac_prev=includedir ;;
-  -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
-  | --includ=* | --inclu=* | --incl=* | --inc=*)
-    includedir="$ac_optarg" ;;
-
-  -infodir | --infodir | --infodi | --infod | --info | --inf)
-    ac_prev=infodir ;;
-  -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
-    infodir="$ac_optarg" ;;
-
-  -libdir | --libdir | --libdi | --libd)
-    ac_prev=libdir ;;
-  -libdir=* | --libdir=* | --libdi=* | --libd=*)
-    libdir="$ac_optarg" ;;
-
-  -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
-  | --libexe | --libex | --libe)
-    ac_prev=libexecdir ;;
-  -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
-  | --libexe=* | --libex=* | --libe=*)
-    libexecdir="$ac_optarg" ;;
-
-  -localstatedir | --localstatedir | --localstatedi | --localstated \
-  | --localstate | --localstat | --localsta | --localst \
-  | --locals | --local | --loca | --loc | --lo)
-    ac_prev=localstatedir ;;
-  -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
-  | --localstate=* | --localstat=* | --localsta=* | --localst=* \
-  | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
-    localstatedir="$ac_optarg" ;;
-
-  -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
-    ac_prev=mandir ;;
-  -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
-    mandir="$ac_optarg" ;;
-
-  -nfp | --nfp | --nf)
-    # Obsolete; use --without-fp.
-    with_fp=no ;;
-
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c)
-    no_create=yes ;;
-
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
-    no_recursion=yes ;;
-
-  -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
-  | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
-  | --oldin | --oldi | --old | --ol | --o)
-    ac_prev=oldincludedir ;;
-  -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
-  | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
-  | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
-    oldincludedir="$ac_optarg" ;;
-
-  -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
-    ac_prev=prefix ;;
-  -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
-    prefix="$ac_optarg" ;;
-
-  -program-prefix | --program-prefix | --program-prefi | --program-pref \
-  | --program-pre | --program-pr | --program-p)
-    ac_prev=program_prefix ;;
-  -program-prefix=* | --program-prefix=* | --program-prefi=* \
-  | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
-    program_prefix="$ac_optarg" ;;
-
-  -program-suffix | --program-suffix | --program-suffi | --program-suff \
-  | --program-suf | --program-su | --program-s)
-    ac_prev=program_suffix ;;
-  -program-suffix=* | --program-suffix=* | --program-suffi=* \
-  | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
-    program_suffix="$ac_optarg" ;;
-
-  -program-transform-name | --program-transform-name \
-  | --program-transform-nam | --program-transform-na \
-  | --program-transform-n | --program-transform- \
-  | --program-transform | --program-transfor \
-  | --program-transfo | --program-transf \
-  | --program-trans | --program-tran \
-  | --progr-tra | --program-tr | --program-t)
-    ac_prev=program_transform_name ;;
-  -program-transform-name=* | --program-transform-name=* \
-  | --program-transform-nam=* | --program-transform-na=* \
-  | --program-transform-n=* | --program-transform-=* \
-  | --program-transform=* | --program-transfor=* \
-  | --program-transfo=* | --program-transf=* \
-  | --program-trans=* | --program-tran=* \
-  | --progr-tra=* | --program-tr=* | --program-t=*)
-    program_transform_name="$ac_optarg" ;;
-
-  -q | -quiet | --quiet | --quie | --qui | --qu | --q \
-  | -silent | --silent | --silen | --sile | --sil)
-    silent=yes ;;
-
-  -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
-    ac_prev=sbindir ;;
-  -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
-  | --sbi=* | --sb=*)
-    sbindir="$ac_optarg" ;;
-
-  -sharedstatedir | --sharedstatedir | --sharedstatedi \
-  | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
-  | --sharedst | --shareds | --shared | --share | --shar \
-  | --sha | --sh)
-    ac_prev=sharedstatedir ;;
-  -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
-  | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
-  | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
-  | --sha=* | --sh=*)
-    sharedstatedir="$ac_optarg" ;;
-
-  -site | --site | --sit)
-    ac_prev=site ;;
-  -site=* | --site=* | --sit=*)
-    site="$ac_optarg" ;;
-
-  -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-    ac_prev=srcdir ;;
-  -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-    srcdir="$ac_optarg" ;;
-
-  -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
-  | --syscon | --sysco | --sysc | --sys | --sy)
-    ac_prev=sysconfdir ;;
-  -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
-  | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
-    sysconfdir="$ac_optarg" ;;
-
-  -target | --target | --targe | --targ | --tar | --ta | --t)
-    ac_prev=target ;;
-  -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
-    target="$ac_optarg" ;;
-
-  -v | -verbose | --verbose | --verbos | --verbo | --verb)
-    verbose=yes ;;
-
-  -version | --version | --versio | --versi | --vers)
-    echo "configure generated by autoconf version 2.12"
-    exit 0 ;;
-
-  -with-* | --with-*)
-    ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    case "$ac_option" in
-      *=*) ;;
-      *) ac_optarg=yes ;;
-    esac
-    eval "with_${ac_package}='$ac_optarg'" ;;
-
-  -without-* | --without-*)
-    ac_package=`echo $ac_option|sed -e 's/-*without-//'`
-    # Reject names that are not valid shell variable names.
-    if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
-      { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
-    fi
-    ac_package=`echo $ac_package| sed 's/-/_/g'`
-    eval "with_${ac_package}=no" ;;
-
-  --x)
-    # Obsolete; use --with-x.
-    with_x=yes ;;
-
-  -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
-  | --x-incl | --x-inc | --x-in | --x-i)
-    ac_prev=x_includes ;;
-  -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
-  | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
-    x_includes="$ac_optarg" ;;
-
-  -x-libraries | --x-libraries | --x-librarie | --x-librari \
-  | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
-    ac_prev=x_libraries ;;
-  -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
-  | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
-    x_libraries="$ac_optarg" ;;
-
-  -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
-    ;;
-
-  *)
-    if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
-      echo "configure: warning: $ac_option: invalid host type" 1>&2
-    fi
-    if test "x$nonopt" != xNONE; then
-      { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
-    fi
-    nonopt="$ac_option"
-    ;;
-
-  esac
-done
-
-if test -n "$ac_prev"; then
-  { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
-  exec 6>/dev/null
-else
-  exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
-  case "$ac_arg" in
-  -no-create | --no-create | --no-creat | --no-crea | --no-cre \
-  | --no-cr | --no-c) ;;
-  -no-recursion | --no-recursion | --no-recursio | --no-recursi \
-  | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
-  *" "*|*"     "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
-  ac_configure_args="$ac_configure_args '$ac_arg'" ;;
-  *) ac_configure_args="$ac_configure_args $ac_arg" ;;
-  esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set.  These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}"   = set; then LANG=C;   export LANG;   fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}"    = set; then LC_CTYPE=C;    export LC_CTYPE;    fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=make/lilypond.lsm.in
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
-  ac_srcdir_defaulted=yes
-  # Try the directory containing this script, then its parent.
-  ac_prog=$0
-  ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
-  test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
-  srcdir=$ac_confdir
-  if test ! -r $srcdir/$ac_unique_file; then
-    srcdir=..
-  fi
-else
-  ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
-  if test "$ac_srcdir_defaulted" = yes; then
-    { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
-  else
-    { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
-  fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
-  if test "x$prefix" != xNONE; then
-    CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
-  else
-    CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
-  fi
-fi
-for ac_site_file in $CONFIG_SITE; do
-  if test -r "$ac_site_file"; then
-    echo "loading site script $ac_site_file"
-    . "$ac_site_file"
-  fi
-done
-
-if test -r "$cache_file"; then
-  echo "loading cache $cache_file"
-  . $cache_file
-else
-  echo "creating cache $cache_file"
-  > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
-  # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
-  if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
-    ac_n= ac_c='
-' ac_t='       '
-  else
-    ac_n=-n ac_c= ac_t=
-  fi
-else
-  ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-
-# Bootstrap StepMake configure
-
-
-    . $srcdir/VERSION
-    FULL_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$PATCH_LEVEL
-    if test x$MY_PATCH_LEVEL != x; then
-       FULL_VERSION=$FULL_VERSION.$MY_PATCH_LEVEL
-    fi
-
-    # urg: don't "fix" this: irix doesn't know about [:lower:] and [:upper:]
-        PACKAGE=`echo $PACKAGE_NAME | tr '[a-z]' '[A-Z]'`
-    package=`echo $PACKAGE_NAME | tr '[A-Z]' '[a-z]'`
-    
-    # No versioning on directory names of sub-packages 
-    # urg, urg
-    stepmake=${datadir}/stepmake
-    presome=${prefix}
-    if test "$prefix" = "NONE"; then
-           presome=${ac_default_prefix}
-    fi
-    stepmake=`echo ${stepmake} | sed "s!\\\${prefix}!$presome!"`
-
-    if test "x$PACKAGE" = "xSTEPMAKE"; then
-        echo Stepmake package!
-       (cd stepmake; rm -f stepmake; ln -s ../stepmake .)
-       (cd stepmake; rm -f bin; ln -s ../bin .)
-       ac_aux_dir=
-for ac_dir in bin $srcdir/bin; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in bin $srcdir/bin" 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-       stepmake=stepmake
-    else
-        echo Package: $PACKAGE
-       # Check for installed stepmake
-       if test -d $stepmake; then
-           echo Using installed stepmake: $stepmake
-       else
-           stepmake='$(depth)'/stepmake
-           echo Using local stepmake: $datadir/stepmake not found
-       fi
-       ac_aux_dir=
-for ac_dir in \
-         $HOME/usr/local/share/stepmake/bin\
-         $HOME/usr/local/lib/stepmake/bin\
-         $HOME/usr/share/stepmake/bin\
-         $HOME/usr/lib/stepmake/bin\
-         /usr/local/share/stepmake/bin\
-         /usr/local/lib/stepmake/bin\
-         /usr/share/stepmake/bin\
-         /usr/lib/stepmake/bin\
-         stepmake/bin\
-        $srcdir/\
-         $HOME/usr/local/share/stepmake/bin\
-         $HOME/usr/local/lib/stepmake/bin\
-         $HOME/usr/share/stepmake/bin\
-         $HOME/usr/lib/stepmake/bin\
-         /usr/local/share/stepmake/bin\
-         /usr/local/lib/stepmake/bin\
-         /usr/share/stepmake/bin\
-         /usr/lib/stepmake/bin\
-         stepmake/bin\
-       ; do
-  if test -f $ac_dir/install-sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install-sh -c"
-    break
-  elif test -f $ac_dir/install.sh; then
-    ac_aux_dir=$ac_dir
-    ac_install_sh="$ac_aux_dir/install.sh -c"
-    break
-  fi
-done
-if test -z "$ac_aux_dir"; then
-  { echo "configure: error: can not find install-sh or install.sh in \
-         $HOME/usr/local/share/stepmake/bin\
-         $HOME/usr/local/lib/stepmake/bin\
-         $HOME/usr/share/stepmake/bin\
-         $HOME/usr/lib/stepmake/bin\
-         /usr/local/share/stepmake/bin\
-         /usr/local/lib/stepmake/bin\
-         /usr/share/stepmake/bin\
-         /usr/lib/stepmake/bin\
-         stepmake/bin\
-        $srcdir/\
-         $HOME/usr/local/share/stepmake/bin\
-         $HOME/usr/local/lib/stepmake/bin\
-         $HOME/usr/share/stepmake/bin\
-         $HOME/usr/lib/stepmake/bin\
-         /usr/local/share/stepmake/bin\
-         /usr/local/lib/stepmake/bin\
-         /usr/share/stepmake/bin\
-         /usr/lib/stepmake/bin\
-         stepmake/bin\
-       " 1>&2; exit 1; }
-fi
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-    fi
-
-    
-    
-    
-    
-    cat >> confdefs.h <<EOF
-#define PACKAGE "${PACKAGE_NAME}"
-EOF
-
-    cat >> confdefs.h <<EOF
-#define TOPLEVEL_VERSION "${FULL_VERSION}"
-EOF
-
-
-    package_depth=`dirname $cache_file`
-    
-
-    AUTOGENERATE="This file was automatically generated by configure"
-    
-    absolute_builddir="`pwd`"
-    
-
-    STATE_VECTOR=`ls make/STATE-VECTOR 2>/dev/null`
-    if test "x$STATE_VECTOR" != "x"; then
-       STATE_VECTOR="\$(depth)/$STATE_VECTOR"
-    fi
-    
-
-    CONFIGSUFFIX=
-    # Check whether --enable-config or --disable-config was given.
-if test "${enable_config+set}" = set; then
-  enableval="$enable_config"
-  CONFIGSUFFIX=$enableval
-fi
-
-
-    if test "$CONFIGSUFFIX" != "" ; then
-       CONFIGFILE=config-$CONFIGSUFFIX
-    else
-       CONFIGFILE=config
-    fi
-    
-     
-    
-# Make sure we can run config.sub.
-if $ac_config_sub sun4 >/dev/null 2>&1; then :
-else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:761: checking host system type" >&5
-
-host_alias=$host
-case "$host_alias" in
-NONE)
-  case $nonopt in
-  NONE)
-    if host_alias=`$ac_config_guess`; then :
-    else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
-    fi ;;
-  *) host_alias=$nonopt ;;
-  esac ;;
-esac
-
-host=`$ac_config_sub $host_alias`
-host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
-host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
-host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
-echo "$ac_t""$host" 1>&6
-
-    for ac_prog in make
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:786: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$MAKE"; then
-  ac_cv_prog_MAKE="$MAKE" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MAKE="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-MAKE="$ac_cv_prog_MAKE"
-if test -n "$MAKE"; then
-  echo "$ac_t""$MAKE" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MAKE" && break
-done
-test -n "$MAKE" || MAKE="error"
-
-    for ac_prog in find
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:820: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$FIND"; then
-  ac_cv_prog_FIND="$FIND" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_FIND="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-FIND="$ac_cv_prog_FIND"
-if test -n "$FIND"; then
-  echo "$ac_t""$FIND" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$FIND" && break
-done
-test -n "$FIND" || FIND="error"
-
-
-
-
-    for ac_prog in tar
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:857: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_TAR'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$TAR"; then
-  ac_cv_prog_TAR="$TAR" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_TAR="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-TAR="$ac_cv_prog_TAR"
-if test -n "$TAR"; then
-  echo "$ac_t""$TAR" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$TAR" && break
-done
-test -n "$TAR" || TAR="error"
-
-    for ac_prog in bash
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:891: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_BASH'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$BASH"; then
-  ac_cv_prog_BASH="$BASH" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_BASH="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-BASH="$ac_cv_prog_BASH"
-if test -n "$BASH"; then
-  echo "$ac_t""$BASH" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$BASH" && break
-done
-test -n "$BASH" || BASH="/bin/sh"
-
-
-    # Extract the first word of "${PYTHON:-python}", so it can be a program name with args.
-set dummy ${PYTHON:-python}; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:924: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_path_PYTHON'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  case "$PYTHON" in
-  /*)
-  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
-  ;;
-  *)
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_path_PYTHON="$ac_dir/$ac_word"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON="-echo no python"
-  ;;
-esac
-fi
-PYTHON="$ac_cv_path_PYTHON"
-if test -n "$PYTHON"; then
-  echo "$ac_t""$PYTHON" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    
-
-
-    
-       result="`echo \"$MAKE\" | grep echo`"
-       if test "x$MAKE" = "xerror" -o "x$result" != "x"; then
-               
-    echo "configure: warning: can\'t find GNU make. You should install GNU make" 1>&2
-    warn_b=yes
-
-       fi
-
-    if test $MAKE != "error" ; then
-       $MAKE -v| grep GNU > /dev/null
-       if test "$?" = 1
-       then
-               
-    echo "configure: warning: Please install *GNU* make" 1>&2
-    warn_b=yes
-       fi 
-    fi 
-
-    
-       result="`echo \"$PYTHON\" | grep echo`"
-       if test "x$PYTHON" = "xerror" -o "x$result" != "x"; then
-               
-    echo "configure: warning: can\'t find python. You should install Python" 1>&2
-    warn_b=yes
-
-       fi
-
-
-    if test "x$OSTYPE" = "xcygwin32" || test "x$OSTYPE" = "xWindows_NT"; then
-       LN=cp # hard link does not work under cygnus-nt
-       LN_S=cp # symbolic link does not work for native nt
-       ZIP="zip -r -9" #
-       DOTEXE=.exe
-       DIRSEP='\\'
-       PATHSEP=';'
-       INSTALL="\$(SHELL) \$(stepdir)/../bin/install-dot-exe.sh -c"
-    else
-       DIRSEP='/'
-       PATHSEP=':'
-       LN=ln
-       LN_S='ln -s'
-       ZIP="zip -r -9"
-        INSTALL="\$(SHELL) \$(stepdir)/../bin/install-sh -c"
-    fi
-    
-    
-    
-    
-    
-    cat >> confdefs.h <<EOF
-#define DIRSEP '${DIRSEP}'
-EOF
-
-    cat >> confdefs.h <<EOF
-#define PATHSEP '${PATHSEP}'
-EOF
-
-    
-    
-  
-   
-    
-    if test "$datadir" = "\${prefix}/share"; then
-           datadir='${prefix}/share/'$package
-    fi
-    DIR_DATADIR=${datadir}
-    presome=${prefix}
-    if test "$prefix" = "NONE"; then
-           presome=${ac_default_prefix}
-    fi
-    DIR_DATADIR=`echo ${DIR_DATADIR} | sed "s!\\\${prefix}!$presome!"`
-    
-    
-    cat >> confdefs.h <<EOF
-#define DIR_DATADIR "${DIR_DATADIR}"
-EOF
-
-
-
-
-# For all packages except the StepMake package itself
-subdirs="stepmake"
-
-
-# Uncomment the configuration options your package needs.
-
-    # -O is necessary to get inlining
-    OPTIMIZE=""
-    CXXFLAGS=${CXXFLAGS:-""}
-    CFLAGS=${CFLAGS:-""}
-    checking_b=yes
-    optimise_b=no
-    profile_b=no
-    debug_b=yes
-
-    # Check whether --enable-checking or --disable-checking was given.
-if test "${enable_checking+set}" = set; then
-  enableval="$enable_checking"
-  checking_b=$enableval 
-fi
-
-
-    # actually, the default is: tja='-O' to get inlining...
-    # off=''  --jcn
-
-    #actually, that sucks.
-    #  tja looks like a typo.  Default is optimisation off. --hwn
-    
-    # Check whether --enable-optimise or --disable-optimise was given.
-if test "${enable_optimise+set}" = set; then
-  enableval="$enable_optimise"
-  optimise_b=$enableval
-fi
-
-    
-    # Check whether --enable-profiling or --disable-profiling was given.
-if test "${enable_profiling+set}" = set; then
-  enableval="$enable_profiling"
-  profile_b=$enableval
-fi
-
-    
-    # Check whether --enable-debugging or --disable-debugging was given.
-if test "${enable_debugging+set}" = set; then
-  enableval="$enable_debugging"
-  debug_b=$enableval
-fi
-
-
-    # Check whether --enable-mingw-prefix or --disable-mingw-prefix was given.
-if test "${enable_mingw_prefix+set}" = set; then
-  enableval="$enable_mingw_prefix"
-  MINGWPREFIX=$enableval
-else
-  MINGWPREFIX=no
-fi
-
-
-    if test "$printing_b" = no; then
-       # ugh
-       cat >> confdefs.h <<\EOF
-#define NPRINT 1
-EOF
-
-       DEFINES="$DEFINES -DNPRINT"
-    fi
-       
-    if test "$checking_b" = no; then
-       # ugh
-       cat >> confdefs.h <<\EOF
-#define NDEBUG 1
-EOF
-
-       DEFINES="$DEFINES -DNDEBUG"
-    fi
-
-    if test "$optimise_b" = yes; then
-       OPTIMIZE="-O2 -finline-functions"
-    fi
-
-    if test "$optimise_b" = no; then
-       OPTIMIZE=""
-    fi
-
-    if test $profile_b = yes; then
-       EXTRA_LIBES="-pg"
-       OPTIMIZE="$OPTIMIZE -pg"
-    fi
-
-    if test $debug_b = yes; then       
-       OPTIMIZE="$OPTIMIZE -g"
-    fi
-
-    # however, C++ support in mingw32 v 0.1.4 is still flaky
-    if test x$MINGWPREFIX != xno; then 
-       ICFLAGS="-I$MINGWPREFIX/include"
-       ILDFLAGS="-$MINGWPREFIX/lib"
-    fi
-
-    # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1140: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CC="gcc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1169: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  ac_prog_rejected=no
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
-        ac_prog_rejected=yes
-       continue
-      fi
-      ac_cv_prog_CC="cc"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# -gt 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    set dummy "$ac_dir/$ac_word" "$@"
-    shift
-    ac_cv_prog_CC="$@"
-  fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
-  echo "$ac_t""$CC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-  test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1217: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext <<EOF
-#line 1227 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-if { (eval echo configure:1231: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  ac_cv_prog_cc_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cc_cross=no
-  else
-    ac_cv_prog_cc_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
-  { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1251: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1256: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.c <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gcc=yes
-else
-  ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
-  GCC=yes
-  ac_test_CFLAGS="${CFLAGS+set}"
-  ac_save_CFLAGS="$CFLAGS"
-  CFLAGS=
-  echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1280: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
-  ac_cv_prog_cc_g=yes
-else
-  ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-  if test "$ac_test_CFLAGS" = set; then
-    CFLAGS="$ac_save_CFLAGS"
-  elif test $ac_cv_prog_cc_g = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-O2"
-  fi
-else
-  GCC=
-  test "${CFLAGS+set}" = set || CFLAGS="-g"
-fi
-
-    LD='$(CC)'
-    
-
-    CPPFLAGS=${CPPFLAGS:-""}
-    
-    
-    
-    
-    
-    
-
-# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
-
-printing_b=no
-# Check whether --enable-printing or --disable-printing was given.
-if test "${enable_printing+set}" = set; then
-  enableval="$enable_printing"
-  printing_b=$enableval
-fi
-
-    
-if test "$optimise_b" = yes; then
-    DEFINES="$DEFINES -DSTRING_UTILS_INLINED"
-    cat >> confdefs.h <<\EOF
-#define STRINGS_UTILS_INLINED 1
-EOF
-
-fi
-
-echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1337: checking how to run the C++ preprocessor" >&5
-if test -z "$CXXCPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-  CXXCPP="${CXX-g++} -E"
-  cat > conftest.$ac_ext <<EOF
-#line 1350 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  :
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  CXXCPP=/lib/cpp
-fi
-rm -f conftest*
-  ac_cv_prog_CXXCPP="$CXXCPP"
-fi
-fi
-CXXCPP="$ac_cv_prog_CXXCPP"
-echo "$ac_t""$CXXCPP" 1>&6
-
-
-    ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-    for ac_prog in $CCC c++ g++ gcc CC cxx cc++
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1386: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$CXX"; then
-  ac_cv_prog_CXX="$CXX" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_CXX="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-CXX="$ac_cv_prog_CXX"
-if test -n "$CXX"; then
-  echo "$ac_t""$CXX" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$CXX" && break
-done
-test -n "$CXX" || CXX="gcc"
-
-
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1417: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
-
-ac_ext=C
-# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CXXCPP $CPPFLAGS'
-ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cxx_cross
-
-cat > conftest.$ac_ext <<EOF
-#line 1427 "configure"
-#include "confdefs.h"
-main(){return(0);}
-EOF
-if { (eval echo configure:1431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  ac_cv_prog_cxx_works=yes
-  # If we can't run a trivial program, we are probably using a cross compiler.
-  if (./conftest; exit) 2>/dev/null; then
-    ac_cv_prog_cxx_cross=no
-  else
-    ac_cv_prog_cxx_cross=yes
-  fi
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  ac_cv_prog_cxx_works=no
-fi
-rm -fr conftest*
-
-echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
-if test $ac_cv_prog_cxx_works = no; then
-  { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1451: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
-cross_compiling=$ac_cv_prog_cxx_cross
-
-echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1456: checking whether we are using GNU C++" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.C <<EOF
-#ifdef __GNUC__
-  yes;
-#endif
-EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
-  ac_cv_prog_gxx=yes
-else
-  ac_cv_prog_gxx=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gxx" 1>&6
-
-if test $ac_cv_prog_gxx = yes; then
-  GXX=yes
-  ac_test_CXXFLAGS="${CXXFLAGS+set}"
-  ac_save_CXXFLAGS="$CXXFLAGS"
-  CXXFLAGS=
-  echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1480: checking whether ${CXX-g++} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  echo 'void f(){}' > conftest.cc
-if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then
-  ac_cv_prog_cxx_g=yes
-else
-  ac_cv_prog_cxx_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cxx_g" 1>&6
-  if test "$ac_test_CXXFLAGS" = set; then
-    CXXFLAGS="$ac_save_CXXFLAGS"
-  elif test $ac_cv_prog_cxx_g = yes; then
-    CXXFLAGS="-g -O2"
-  else
-    CXXFLAGS="-O2"
-  fi
-else
-  GXX=
-  test "${CXXFLAGS+set}" = set || CXXFLAGS="-g"
-fi
-
-
-    ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1510: checking for FlexLexer.h" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1515 "configure"
-#include "confdefs.h"
-#include <FlexLexer.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1520: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  true
-else
-  echo "$ac_t""no" 1>&6
-
-    echo "configure: warning: can"\'"t find flex header. Please install Flex headers correctly" 1>&2
-    warn_b=yes
-
-fi
-
-
-    CPPFLAGS="$CPPFLAGS $DEFINES"
-    CXXFLAGS="$CXXFLAGS $OPTIMIZE"
-    LDFLAGS=$EXTRA_LIBES
-
-    
-    
-    LD='$(CXX)'
-    
-
-
-    # ugh autoconf
-        if $CXX --version | grep '2\.[78]' > /dev/null ||
-       $CXX --version | grep 'egcs' > /dev/null
-        then
-           true
-    else
-           
-    echo "configure: warning: can\'t find g++ 2.7" 1>&2
-    warn_b=yes
-
-    fi
-
-
-    echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1570: checking whether explicit instantiation is needed" >&5
-if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1575 "configure"
-#include "confdefs.h"
-
-    template <class T> struct foo { static int baz; };
-    template <class T> int foo<T>::baz = 1;
-    
-int main() {
- return foo<int>::baz; 
-; return 0; }
-EOF
-if { (eval echo configure:1585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  lily_cv_need_explicit_instantiation=no
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  lily_cv_need_explicit_instantiation=yes
-fi
-rm -f conftest*
-fi
-
-echo "$ac_t""$lily_cv_need_explicit_instantiation" 1>&6
-    if test x"$lily_cv_need_explicit_instantiation"x = x"yes"x; then
-       cat >> confdefs.h <<\EOF
-#define NEED_EXPLICIT_INSTANTIATION 1
-EOF
-
-    fi
-
-
-    # ugh, automake: we want (and check for) bison
-    for ac_prog in 'bison -y' byacc
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1612: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YACC"; then
-  ac_cv_prog_YACC="$YACC" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YACC="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YACC="$ac_cv_prog_YACC"
-if test -n "$YACC"; then
-  echo "$ac_t""$YACC" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YACC" && break
-done
-test -n "$YACC" || YACC="yacc"
-
-    # ugh, automake: we want (and check for) flex
-    # AC_PROG_LEX
-    # urg: automake 1.3: hope this doesn't break 1.2 ac_cv_pro_lex_root hack...
-
-    # AC_DECL_YYTEXT
-    # ugh, ugh
-    ac_cv_prog_lex_root=lex.yy
-
-    for ac_prog in bison
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1654: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$BISON"; then
-  ac_cv_prog_BISON="$BISON" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_BISON="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-BISON="$ac_cv_prog_BISON"
-if test -n "$BISON"; then
-  echo "$ac_t""$BISON" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$BISON" && break
-done
-test -n "$BISON" || BISON="error"
-
-    for ac_prog in flex
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1688: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$FLEX"; then
-  ac_cv_prog_FLEX="$FLEX" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_FLEX="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-FLEX="$ac_cv_prog_FLEX"
-if test -n "$FLEX"; then
-  echo "$ac_t""$FLEX" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$FLEX" && break
-done
-test -n "$FLEX" || FLEX="error"
-
-    
-       result="`echo \"$BISON\" | grep echo`"
-       if test "x$BISON" = "xerror" -o "x$result" != "x"; then
-               
-    echo "configure: warning: can\'t find bison. Please install Bison" 1>&2
-    warn_b=yes
-
-       fi
-
-    
-       result="`echo \"$FLEX\" | grep echo`"
-       if test "x$FLEX" = "xerror" -o "x$result" != "x"; then
-               
-    echo "configure: warning: can\'t find flex. Please install Flex" 1>&2
-    warn_b=yes
-
-       fi
-
-
-    if test $BISON != "error"; then
-       bison_version=`$BISON --version| sed 's/^.*version 1.//g' `
-       if test $bison_version -lt 25; then
-           
-    echo "configure: warning: Your bison is a bit old (1.$bison_version). You might have to install 1.25" 1>&2
-    warn_b=yes
-
-       fi      
-    fi
-
-    
-    
-
-
-    for ac_prog in ar
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1755: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_AR="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-AR="$ac_cv_prog_AR"
-if test -n "$AR"; then
-  echo "$ac_t""$AR" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$AR" && break
-done
-test -n "$AR" || AR="error"
-
-    # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1787: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_RANLIB="ranlib"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-  test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
-fi
-fi
-RANLIB="$ac_cv_prog_RANLIB"
-if test -n "$RANLIB"; then
-  echo "$ac_t""$RANLIB" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-
-    
-    
-
-# AC_STEPMAKE_LIBTOOL
-
-    lang=English
-    ALL_LINGUAS="en nl"
-
-    # with/enable ??
-    # Check whether --with-localedir or --without-localedir was given.
-if test "${with_localedir+set}" = set; then
-  withval="$with_localedir"
-  localedir=$with_localedir
-else
-  localedir='${prefix}/share/locale'
-fi
-
-
-    # Check whether --with-lang or --without-lang was given.
-if test "${with_lang+set}" = set; then
-  withval="$with_lang"
-  language=$with_lang
-else
-  language=English
-fi
-
-
-    echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:1842: checking language" >&5    
-    case "$language" in
-      En* | en* | Am* | am* | US* | us*)
-           lang=English;;
-      NL | nl | Du* | du* | Ned* | ned*)
-           lang=Dutch;;
-      "")
-           lang=English;;
-      *)
-           lang=unknown;;
-    esac
-    echo "$ac_t""$lang" 1>&6
-
-    if test "$lang" = "unknown" ; then
-       
-    echo "configure: warning: $language not supported; available are: $ALL_LINGUAS" 1>&2
-    warn_b=yes
-
-    fi
-
-
-
-    DIR_LOCALEDIR=${localedir}
-    presome=${prefix}
-    if test "$prefix" = "NONE"; then
-           presome=${ac_default_prefix}
-    fi
-    DIR_LOCALEDIR=`echo ${DIR_LOCALEDIR} | sed "s!\\\${prefix}!$presome!"`
-    
-    
-    cat >> confdefs.h <<EOF
-#define DIR_LOCALEDIR "${DIR_LOCALEDIR}"
-EOF
-
-
-    echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:1878: checking for gettext in -lintl" >&5
-ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lintl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 1886 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char gettext();
-
-int main() {
-gettext()
-; return 0; }
-EOF
-if { (eval echo configure:1900: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo intl | sed -e 's/[^a-zA-Z0-9_]/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lintl $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-    for ac_func in gettext
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1930: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 1935 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-
-    # AC_CHECK_PROGS(MSGFMT, msgfmt, -echo no msgfmt)
-    for ac_prog in msgfmt
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1993: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$MSGFMT"; then
-  ac_cv_prog_MSGFMT="$MSGFMT" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MSGFMT="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-MSGFMT="$ac_cv_prog_MSGFMT"
-if test -n "$MSGFMT"; then
-  echo "$ac_t""$MSGFMT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MSGFMT" && break
-done
-test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
-
-    echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:2023: checking whether msgfmt accepts -o" >&5
-    msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
-    if test "$msgfmt_output" = ""; then
-       echo "$ac_t""yes" 1>&6
-    else
-       # urg
-       MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh"
-       echo "$ac_t""no" 1>&6
-       
-    echo "configure: warning: please install msgfmt from GNU gettext" 1>&2
-    warn_b=yes
-
-    fi
-    if test ! -n "$MSGFMT"; then
-       
-    echo "configure: warning: please install msgfmt from GNU gettext" 1>&2
-    warn_b=yes
-
-    fi
-
-
-    # urg, never know what names these teTeX guys will think up
-    for ac_prog in mf
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2050: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$METAFONT"; then
-  ac_cv_prog_METAFONT="$METAFONT" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_METAFONT="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-METAFONT="$ac_cv_prog_METAFONT"
-if test -n "$METAFONT"; then
-  echo "$ac_t""$METAFONT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$METAFONT" && break
-done
-test -n "$METAFONT" || METAFONT="no"
-
-    if test "x$METAFONT" = "xno"; then
-       for ac_prog in mfont
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2085: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$MFONT"; then
-  ac_cv_prog_MFONT="$MFONT" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MFONT="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-MFONT="$ac_cv_prog_MFONT"
-if test -n "$MFONT"; then
-  echo "$ac_t""$MFONT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MFONT" && break
-done
-test -n "$MFONT" || MFONT="-echo no mf or mfont"
-
-       METAFONT=$MFONT
-    fi
-
-    for ac_prog in mp
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2122: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$METAPOST"; then
-  ac_cv_prog_METAPOST="$METAPOST" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_METAPOST="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-METAPOST="$ac_cv_prog_METAPOST"
-if test -n "$METAPOST"; then
-  echo "$ac_t""$METAPOST" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$METAPOST" && break
-done
-test -n "$METAPOST" || METAPOST="no"
-
-    if test "x$METAPOST" = "xno"; then
-       for ac_prog in mpost
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2157: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$MPOST"; then
-  ac_cv_prog_MPOST="$MPOST" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MPOST="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-MPOST="$ac_cv_prog_MPOST"
-if test -n "$MPOST"; then
-  echo "$ac_t""$MPOST" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MPOST" && break
-done
-test -n "$MPOST" || MPOST="-echo no mp or mpost"
-
-       METAPOST=$MPOST
-    fi
-
-    
-    
-
-# AC_STEPMAKE_TEXMF_DIRS
-
-    if test "x$YODL" = "x"; then 
-       for ac_prog in striproff
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2200: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_STRIPROFF'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$STRIPROFF"; then
-  ac_cv_prog_STRIPROFF="$STRIPROFF" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_STRIPROFF="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-STRIPROFF="$ac_cv_prog_STRIPROFF"
-if test -n "$STRIPROFF"; then
-  echo "$ac_t""$STRIPROFF" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$STRIPROFF" && break
-done
-test -n "$STRIPROFF" || STRIPROFF="-echo no striproff"
-
-       for ac_prog in yodl
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2234: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL"; then
-  ac_cv_prog_YODL="$YODL" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL="$ac_cv_prog_YODL"
-if test -n "$YODL"; then
-  echo "$ac_t""$YODL" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL" && break
-done
-test -n "$YODL" || YODL="-echo no yodl"
-
-       for ac_prog in yodl2html
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2268: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL2HTML'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL2HTML"; then
-  ac_cv_prog_YODL2HTML="$YODL2HTML" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL2HTML="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL2HTML="$ac_cv_prog_YODL2HTML"
-if test -n "$YODL2HTML"; then
-  echo "$ac_t""$YODL2HTML" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL2HTML" && break
-done
-test -n "$YODL2HTML" || YODL2HTML="-echo no yodl"
-
-       for ac_prog in yodl2latex
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2302: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL2LATEX'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL2LATEX"; then
-  ac_cv_prog_YODL2LATEX="$YODL2LATEX" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL2LATEX="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL2LATEX="$ac_cv_prog_YODL2LATEX"
-if test -n "$YODL2LATEX"; then
-  echo "$ac_t""$YODL2LATEX" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL2LATEX" && break
-done
-
-       for ac_prog in yodl2man
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2335: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL2MAN'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL2MAN"; then
-  ac_cv_prog_YODL2MAN="$YODL2MAN" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL2MAN="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL2MAN="$ac_cv_prog_YODL2MAN"
-if test -n "$YODL2MAN"; then
-  echo "$ac_t""$YODL2MAN" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL2MAN" && break
-done
-test -n "$YODL2MAN" || YODL2MAN="-echo no yodl"
-
-       for ac_prog in yodl2msless
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2369: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL2MSLESS'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL2MSLESS"; then
-  ac_cv_prog_YODL2MSLESS="$YODL2MSLESS" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL2MSLESS="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL2MSLESS="$ac_cv_prog_YODL2MSLESS"
-if test -n "$YODL2MSLESS"; then
-  echo "$ac_t""$YODL2MSLESS" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL2MSLESS" && break
-done
-test -n "$YODL2MSLESS" || YODL2MSLESS="-echo no yodl"
-
-       for ac_prog in yodl2texinfo
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2403: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL2TEXINFO'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL2TEXINFO"; then
-  ac_cv_prog_YODL2TEXINFO="$YODL2TEXINFO" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL2TEXINFO="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL2TEXINFO="$ac_cv_prog_YODL2TEXINFO"
-if test -n "$YODL2TEXINFO"; then
-  echo "$ac_t""$YODL2TEXINFO" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL2TEXINFO" && break
-done
-test -n "$YODL2TEXINFO" || YODL2TEXINFO="-echo no yodl"
-
-       for ac_prog in yodl2txt
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2437: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_YODL2TXT'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$YODL2TXT"; then
-  ac_cv_prog_YODL2TXT="$YODL2TXT" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_YODL2TXT="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-YODL2TXT="$ac_cv_prog_YODL2TXT"
-if test -n "$YODL2TXT"; then
-  echo "$ac_t""$YODL2TXT" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$YODL2TXT" && break
-done
-test -n "$YODL2TXT" || YODL2TXT="-echo no yodl"
-
-       YODL2LESS_DIR='$(bindir)/'
-    else
-       
-       
-       
-       
-       
-       
-       
-       
-       
-       export STRIPROFF YODL YODL2HTML YODL2LATEX YODL2MAN YODL2MSLESS YODL2TEXINFO YODL2TXT
-    fi
-    if test "x$YODL" = "-echo no yodl"; then
-       
-    echo "configure: warning: Did not find YODL (Yodl is Yet Oneother Document Language, see http://www.cs.uu.nl/~hanwen/yodl)" 1>&2
-    warn_b=yes
-
-    fi    
-
-
-    # urg, must check for different functions in libguile
-    # to force new check iso reading from cache
-    echo $ac_n "checking for scm_shell in -lguile""... $ac_c" 1>&6
-echo "configure:2490: checking for scm_shell in -lguile" >&5
-ac_lib_var=`echo guile'_'scm_shell | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lguile  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2498 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char scm_shell();
-
-int main() {
-scm_shell()
-; return 0; }
-EOF
-if { (eval echo configure:2512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  \
-      LIBS="-lguile $LIBS" cat >> confdefs.h <<\EOF
-#define HAVE_LIBGUILE 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-\
-      echo $ac_n "checking for readline in -lreadline""... $ac_c" 1>&6
-echo "configure:2536: checking for readline in -lreadline" >&5
-ac_lib_var=`echo readline'_'readline | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lreadline  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2544 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char readline();
-
-int main() {
-readline()
-; return 0; }
-EOF
-if { (eval echo configure:2558: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo readline | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lreadline $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
- \
-      echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:2586: checking for dlopen in -ldl" >&5
-ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ldl  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2594 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char dlopen();
-
-int main() {
-dlopen()
-; return 0; }
-EOF
-if { (eval echo configure:2608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo dl | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-ldl $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
- \
-      echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6
-echo "configure:2636: checking for socket in -lsocket" >&5
-ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lsocket  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2644 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char socket();
-
-int main() {
-socket()
-; return 0; }
-EOF
-if { (eval echo configure:2658: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo socket | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lsocket $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-\
-      echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:2686: checking for tgetent in -ltermcap" >&5
-ac_lib_var=`echo termcap'_'tgetent | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-ltermcap  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2694 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char tgetent();
-
-int main() {
-tgetent()
-; return 0; }
-EOF
-if { (eval echo configure:2708: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo termcap | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-ltermcap $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-\
-      echo $ac_n "checking for fabs in -lm""... $ac_c" 1>&6
-echo "configure:2736: checking for fabs in -lm" >&5
-ac_lib_var=`echo m'_'fabs | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lm  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2744 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char fabs();
-
-int main() {
-fabs()
-; return 0; }
-EOF
-if { (eval echo configure:2758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo m | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lm $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-\
-      echo $ac_n "checking for scm_boot_guile in -lguile""... $ac_c" 1>&6
-echo "configure:2786: checking for scm_boot_guile in -lguile" >&5
-ac_lib_var=`echo guile'_'scm_boot_guile | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  ac_save_LIBS="$LIBS"
-LIBS="-lguile  $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2794 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char scm_boot_guile();
-
-int main() {
-scm_boot_guile()
-; return 0; }
-EOF
-if { (eval echo configure:2808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_lib=HAVE_LIB`echo guile | sed -e 's/^a-zA-Z0-9_/_/g' \
-    -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
-  LIBS="-lguile $LIBS"
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-\
-    
-fi
-
-
-
-
-echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2842: checking for 8-bit clean memcmp" >&5
-if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test "$cross_compiling" = yes; then
-  ac_cv_func_memcmp_clean=no
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2850 "configure"
-#include "confdefs.h"
-#ifdef __cplusplus
-extern "C" void exit(int);
-#endif
-
-main()
-{
-  char c0 = 0x40, c1 = 0x80, c2 = 0x81;
-  exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
-}
-
-EOF
-if { (eval echo configure:2863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
-then
-  ac_cv_func_memcmp_clean=yes
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_func_memcmp_clean=no
-fi
-rm -fr conftest*
-fi
-
-fi
-
-echo "$ac_t""$ac_cv_func_memcmp_clean" 1>&6
-test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.o"
-
-echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2881: checking for vprintf" >&5
-if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2886 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char vprintf(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char vprintf();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_vprintf) || defined (__stub___vprintf)
-choke me
-#else
-vprintf();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_func_vprintf=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_vprintf=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'vprintf`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_VPRINTF 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-if test "$ac_cv_func_vprintf" != yes; then
-echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2936: checking for _doprnt" >&5
-if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2941 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char _doprnt(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char _doprnt();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub__doprnt) || defined (__stub____doprnt)
-choke me
-#else
-_doprnt();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:2967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_func__doprnt=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func__doprnt=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'_doprnt`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-  cat >> confdefs.h <<\EOF
-#define HAVE_DOPRNT 1
-EOF
-
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-fi
-
-for ac_func in memmem snprintf vsnprintf gettext
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2994: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  cat > conftest.$ac_ext <<EOF
-#line 2999 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); below.  */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-    builtin and then its argument prototype would still apply.  */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3025: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-
-cat >> confdefs.h <<EOF
-#define TOPLEVEL_VERSION "${FULL_VERSION}"
-EOF
-
-cat >> confdefs.h <<EOF
-#define FLOWER_VERSION "${FULL_FLOWER_VERSION}"
-EOF
-
-
-for ac_prog in makeinfo
-do
-# Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3064: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
-  echo $ac_n "(cached) $ac_c" 1>&6
-else
-  if test -n "$MAKEINFO"; then
-  ac_cv_prog_MAKEINFO="$MAKEINFO" # Let the user override the test.
-else
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
-  for ac_dir in $PATH; do
-    test -z "$ac_dir" && ac_dir=.
-    if test -f $ac_dir/$ac_word; then
-      ac_cv_prog_MAKEINFO="$ac_prog"
-      break
-    fi
-  done
-  IFS="$ac_save_ifs"
-fi
-fi
-MAKEINFO="$ac_cv_prog_MAKEINFO"
-if test -n "$MAKEINFO"; then
-  echo "$ac_t""$MAKEINFO" 1>&6
-else
-  echo "$ac_t""no" 1>&6
-fi
-
-test -n "$MAKEINFO" && break
-done
-test -n "$MAKEINFO" || MAKEINFO="error"
-
-
-       result="`echo \"$YODL2TEXINFO\" | grep echo`"
-       if test "x$YODL2TEXINFO" = "xerror" -o "x$result" != "x"; then
-               
-    echo "configure: warning: can\'t find yodl. You should install Yodl 1.30.2 or better" 1>&2
-    warn_b=yes
-
-       fi
-
-
-
-    trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
-  case `(ac_space=' '; set) 2>&1` in
-  *ac_space=\ *)
-    # `set' does not quote correctly, so add quotes (double-quote substitution
-    # turns \\\\ into \\, and sed turns \\ into \).
-    sed -n \
-      -e "s/'/'\\\\''/g" \
-      -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
-    ;;
-  *)
-    # `set' quotes correctly as required by POSIX, so do not add quotes.
-    sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
-    ;;
-  esac >> confcache
-if cmp -s $cache_file confcache; then
-  :
-else
-  if test -w $cache_file; then
-    echo "updating cache $cache_file"
-    cat confcache > $cache_file
-  else
-    echo "not updating unwritable cache $cache_file"
-  fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
-  ac_vpsub='/^[        ]*VPATH[        ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-DEFS=-DHAVE_CONFIG_H
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "\$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
-    exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "$CONFIG_STATUS generated by autoconf version 2.12"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "\$ac_cs_usage"; exit 0 ;;
-  *) echo "\$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=$srcdir
-
-trap 'rm -fr `echo "$CONFIGFILE.make:config.make.in $CONFIGFILE.h:config.hh.in" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@stepmake@%$stepmake%g
-s%@package@%$package%g
-s%@PACKAGE@%$PACKAGE%g
-s%@PACKAGE_NAME@%$PACKAGE_NAME%g
-s%@package_depth@%$package_depth%g
-s%@AUTOGENERATE@%$AUTOGENERATE%g
-s%@absolute_builddir@%$absolute_builddir%g
-s%@STATE_VECTOR@%$STATE_VECTOR%g
-s%@CONFIGSUFFIX@%$CONFIGSUFFIX%g
-s%@host@%$host%g
-s%@host_alias@%$host_alias%g
-s%@host_cpu@%$host_cpu%g
-s%@host_vendor@%$host_vendor%g
-s%@host_os@%$host_os%g
-s%@MAKE@%$MAKE%g
-s%@FIND@%$FIND%g
-s%@TAR@%$TAR%g
-s%@BASH@%$BASH%g
-s%@PYTHON@%$PYTHON%g
-s%@DOTEXE@%$DOTEXE%g
-s%@ZIP@%$ZIP%g
-s%@LN@%$LN%g
-s%@LN_S@%$LN_S%g
-s%@INSTALL@%$INSTALL%g
-s%@PATHSEP@%$PATHSEP%g
-s%@DIRSEP@%$DIRSEP%g
-s%@DIR_DATADIR@%$DIR_DATADIR%g
-s%@subdirs@%$subdirs%g
-s%@CC@%$CC%g
-s%@LD@%$LD%g
-s%@ICFLAGS@%$ICFLAGS%g
-s%@ILDFLAGS@%$ILDFLAGS%g
-s%@DEFINES@%$DEFINES%g
-s%@EXTRA_LIBES@%$EXTRA_LIBES%g
-s%@CXX@%$CXX%g
-s%@CXXCPP@%$CXXCPP%g
-s%@YACC@%$YACC%g
-s%@BISON@%$BISON%g
-s%@FLEX@%$FLEX%g
-s%@AR@%$AR%g
-s%@RANLIB@%$RANLIB%g
-s%@localedir@%$localedir%g
-s%@DIR_LOCALEDIR@%$DIR_LOCALEDIR%g
-s%@MSGFMT@%$MSGFMT%g
-s%@METAFONT@%$METAFONT%g
-s%@MFONT@%$MFONT%g
-s%@METAPOST@%$METAPOST%g
-s%@MPOST@%$MPOST%g
-s%@STRIPROFF@%$STRIPROFF%g
-s%@YODL@%$YODL%g
-s%@YODL2HTML@%$YODL2HTML%g
-s%@YODL2LATEX@%$YODL2LATEX%g
-s%@YODL2MAN@%$YODL2MAN%g
-s%@YODL2MSLESS@%$YODL2MSLESS%g
-s%@YODL2TEXINFO@%$YODL2TEXINFO%g
-s%@YODL2TXT@%$YODL2TXT%g
-s%@YODL2LESS_DIR@%$YODL2LESS_DIR%g
-s%@LIBOBJS@%$LIBOBJS%g
-s%@MAKEINFO@%$MAKEINFO%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"$CONFIGFILE.make:config.make.in"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where
-# NAME is the cpp macro being defined and VALUE is the value it is being given.
-#
-# ac_d sets the value in "#define NAME VALUE" lines.
-ac_dA='s%^\([  ]*\)#\([        ]*define[       ][      ]*\)'
-ac_dB='\([     ][      ]*\)[^  ]*%\1#\2'
-ac_dC='\3'
-ac_dD='%g'
-# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE".
-ac_uA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_uB='\([     ]\)%\1#\2define\3'
-ac_uC=' '
-ac_uD='\4%g'
-# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE".
-ac_eA='s%^\([  ]*\)#\([        ]*\)undef\([    ][      ]*\)'
-ac_eB='$%\1#\2define\3'
-ac_eC=' '
-ac_eD='%g'
-
-if test "${CONFIG_HEADERS+set}" != set; then
-EOF
-cat >> $CONFIG_STATUS <<EOF
-  CONFIG_HEADERS="$CONFIGFILE.h:config.hh.in"
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-fi
-for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  echo creating $ac_file
-
-  rm -f conftest.frag conftest.in conftest.out
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  cat $ac_file_inputs > conftest.in
-
-EOF
-
-# Transform confdefs.h into a sed script conftest.vals that substitutes
-# the proper values into config.h.in to produce config.h.  And first:
-# Protect against being on the right side of a sed subst in config.status.
-# Protect against being in an unquoted here document in config.status.
-rm -f conftest.vals
-cat > conftest.hdr <<\EOF
-s/[\\&%]/\\&/g
-s%[\\$`]%\\&%g
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp
-s%ac_d%ac_u%gp
-s%ac_u%ac_e%gp
-EOF
-sed -n -f conftest.hdr confdefs.h > conftest.vals
-rm -f conftest.hdr
-
-# This sed command replaces #undef with comments.  This is necessary, for
-# example, in the case of _POSIX_SOURCE, which is predefined and required
-# on some systems where configure will not decide to define it.
-cat >> conftest.vals <<\EOF
-s%^[   ]*#[    ]*undef[        ][      ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */%
-EOF
-
-# Break up conftest.vals because some shells have a limit on
-# the size of here documents, and old seds have small limits too.
-
-rm -f conftest.tail
-while :
-do
-  ac_lines=`grep -c . conftest.vals`
-  # grep -c gives empty output for an empty file on some AIX systems.
-  if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi
-  # Write a limited-size here document to conftest.frag.
-  echo '  cat > conftest.frag <<CEOF' >> $CONFIG_STATUS
-  sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS
-  echo 'CEOF
-  sed -f conftest.frag conftest.in > conftest.out
-  rm -f conftest.in
-  mv conftest.out conftest.in
-' >> $CONFIG_STATUS
-  sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail
-  rm -f conftest.vals
-  mv conftest.tail conftest.vals
-done
-rm -f conftest.vals
-
-cat >> $CONFIG_STATUS <<\EOF
-  rm -f conftest.frag conftest.h
-  echo "/* $ac_file.  Generated automatically by configure.  */" > conftest.h
-  cat conftest.in >> conftest.h
-  rm -f conftest.in
-  if cmp -s $ac_file conftest.h 2>/dev/null; then
-    echo "$ac_file is unchanged"
-    rm -f conftest.h
-  else
-    # Remove last slash and all that follows it.  Not all systems have dirname.
-      ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-      if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-      # The file is in a subdirectory.
-      test ! -d "$ac_dir" && mkdir "$ac_dir"
-    fi
-    rm -f $ac_file
-    mv conftest.h $ac_file
-  fi
-fi; done
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
-if test "$no_recursion" != yes; then
-
-  # Remove --cache-file and --srcdir arguments so they do not pile up.
-  ac_sub_configure_args=
-  ac_prev=
-  for ac_arg in $ac_configure_args; do
-    if test -n "$ac_prev"; then
-      ac_prev=
-      continue
-    fi
-    case "$ac_arg" in
-    -cache-file | --cache-file | --cache-fil | --cache-fi \
-    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
-      ac_prev=cache_file ;;
-    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
-    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
-      ;;
-    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
-      ac_prev=srcdir ;;
-    -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
-      ;;
-    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
-    esac
-  done
-
-  for ac_config_dir in stepmake; do
-
-    # Do not complain, so a configure script can configure whichever
-    # parts of a large source tree are present.
-    if test ! -d $srcdir/$ac_config_dir; then
-      continue
-    fi
-
-    echo configuring in $ac_config_dir
-
-    case "$srcdir" in
-    .) ;;
-    *)
-      if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
-      else
-        { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
-      fi
-      ;;
-    esac
-
-    ac_popdir=`pwd`
-    cd $ac_config_dir
-
-      # A "../" for each directory in /$ac_config_dir.
-      ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`
-
-    case "$srcdir" in
-    .) # No --srcdir option.  We are building in place.
-      ac_sub_srcdir=$srcdir ;;
-    /*) # Absolute path.
-      ac_sub_srcdir=$srcdir/$ac_config_dir ;;
-    *) # Relative path.
-      ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;;
-    esac
-
-    # Check for guested configure; otherwise get Cygnus style configure.
-    if test -f $ac_sub_srcdir/configure; then
-      ac_sub_configure=$ac_sub_srcdir/configure
-    elif test -f $ac_sub_srcdir/configure.in; then
-      ac_sub_configure=$ac_configure
-    else
-      echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
-      ac_sub_configure=
-    fi
-
-    # The recursion is here.
-    if test -n "$ac_sub_configure"; then
-
-      # Make the cache file name correct relative to the subdirectory.
-      case "$cache_file" in
-      /*) ac_sub_cache_file=$cache_file ;;
-      *) # Relative path.
-        ac_sub_cache_file="$ac_dots$cache_file" ;;
-      esac
-
-      echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
-      # The eval makes quoting arguments work.
-      if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
-      then :
-      else
-        { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
-      fi
-    fi
-
-    cd $ac_popdir
-  done
-fi
-
-
-    rm -f GNUmakefile
-    cp make/toplevel.make.in ./GNUmakefile
-    chmod 444 GNUmakefile
-
-
index b0277039b6494e01626693846af7b2d2425635f7..044e0d5e6a02069decde0cdb76b9048b44c7f987 100644 (file)
@@ -39,6 +39,8 @@ AC_STEPMAKE_TEXMF
 AC_STEPMAKE_YODL
 AC_STEPMAKE_GUILE
 
+CXXFLAGS="$CXXFLAGS -fhandle-signatures" 
+
 dnl should check out -print
 dnl huh?
 dnl AC_CHECK_SEARCH_RESULT($FIND, find, Please use --enable-tex-dir)
index c9c146e9f14b8820d543233faaafe6556e659c27..cc489fdf10f0b05a1985c518038a903e63f508a1 100644 (file)
@@ -99,7 +99,7 @@ public:
       Warning: contents are unspecified */
   void set_size (int s) 
     {
-      if (s >= max_) remax (s);
+      if (s > max_) remax (s);
       size_ = s;    
     }
     
index 48a86e118ada25405866ec4638917f2ca6d551b8..f066cdf8d245b3e4045f13a73ebf102c64e56db2 100644 (file)
   Sorry for the silly naming */
 template <class T>
 class P {
-    /**
-      Set contents to a copy of #t_l#
-     */
-    void copy (T const*t_l);
-    T* t_p;
+  /**
+     Set contents to a copy of #t_l#
+  */
+  void copy (T const*t_l);
+  T* t_p;
 
     /**
       junk contents and set to 0
      */
-    void junk();
+  void junk();
 public:
     
-    P(P const &src);
-    /**
+  P(P const &src);
+  /**
       Remove  the pointer, and return it.
      */
     
-    T *get_p() { T*p = t_p; t_p=0; return p; }
-    /**
+  T *get_p() { T*p = t_p; t_p=0; return p; }
+  /**
       return the pointer
      */
-    T *get_l()  { return t_p; }
+  T *get_l()  { return t_p; }
 
-    T const *get_C() const { return t_p; }
-    /**
+  T const *get_C() const { return t_p; }
+  /**
       copy the contents of pointer, and return it
      */
-    T *copy_p() const;
-    /**
+  T *copy_p() const;
+  /**
       swallow new_p, and set contents t new_p
      */
-    void set_p (T *new_p); 
-    /**
+  void set_p (T *new_p); 
+  /**
       junk contents, and  copy contents of t_l
      */
-    void set_l (T const *t_C); 
+  void set_l (T const *t_C); 
     
-    P &operator =(P const &);
-    ~P();
-    P() { t_p = 0; }
-    //P(T *p) { t_p = p; }
+  P &operator =(P const &);
+  ~P();
+  P() { t_p = 0; }
+  //P(T *p) { t_p = p; }
     
-    T *operator ->() { return t_p; }
-    operator T *() {  return t_p; }
-    const T *operator ->() const { return t_p ; }
-    T &operator *() { return *t_p; }
-    T const  &operator *() const { return *t_p; }
-    operator const T *() const { return t_p; }
+  T *operator ->() { return t_p; }
+  operator T *() {  return t_p; }
+  const T *operator ->() const { return t_p ; }
+  T &operator *() { return *t_p; }
+  T const  &operator *() const { return *t_p; }
+  operator const T *() const { return t_p; }
 };
 #endif // POINTER_HH
 
index 9829d5399cfa12fd2f12dd8147a9e3448c504406..645e26635cd3233893fb7ac5e07c6bf7b793fce8 100644 (file)
@@ -64,7 +64,7 @@ void
 P<T>::set_p (T * np) 
 {
   if (np == t_p)
-       return;
+    return;
   delete t_p;
   
   t_p = np;
@@ -77,7 +77,7 @@ void
 P<T>::set_l (T const * l_C) 
 {
   if (t_p == l_C)
-       return;
+    return;
   
   junk();
   copy (l_C);
index 909267165b01ae9d6c801393af0c6f998cef1d83..a5c80e1281ac9be7882767871d36f519f433dc25 100644 (file)
 #include <typeinfo>
 #include "stdlib.h"            // size_t
 
-/**  Declare the classes name as a static and virtual function.
-  The static_name() can *not* be inlined (this might have the effect that 
-  s->name() != S::static_name (). Overlapping strings need not be merged in C++
- */
-#define DECLARE_MY_RUNTIME_TYPEINFO    \
-virtual char const *name() const{ return static_name (); }\
-static char const *static_name()
-
-
-#if 0
-  /*
-    oops.  before() has nothing to do with inheritance
-   */
-inline bool operator > (type_info const &a1, type_info const &a2)
-{
-  return a2.before (a1);
-}
-
-inline bool operator < (type_info const &a1, type_info const &a2)
-{
-  return a1.before (a2);
-}
-
-inline bool operator <= (type_info const &a1, type_info const &a2)
-{
-  return a1 == a2 ||  a1 < a2;
-}
-
-inline bool operator >= (type_info const &a1, type_info const &a2)
-{
-  return a1 == a2 ||  a1 > a2;
-}
-#endif
-
-#define IMPLEMENT_STATIC_NAME(c)\
-    char const *c::static_name() { return #c; }
-
-     /*
-    size_t c::static_class_size () { return sizeof (c); }
-    */
-
-#define VIRTUAL_COPY_CONS(T, R)\
-  virtual R *clone() const { return  new T(*this); } 
+#define classname(class_ptr)   demangle_classname(typeid(*(class_ptr)).name())
 
-#define DECLARE_VIRTUAL_COPY_CONS(T, R)\
-      virtual R *clone() const
+const char *
+demangle_classname (const char*);
 
-#define IMPLEMENT_VIRTUAL_COPY_CONS(T, R)\
-       R *T::clone() const { return  new T(*this); }\
+/**
 
-    
-#define IMPLEMENT_IS_TYPE_B(D)\
-  IMPLEMENT_STATIC_NAME(D)
+   Virtual copy constructor. Make up for C++'s lack of a standard
+   clone() function.  Uses a typeof hack.  Usage:
 
-/*
-  bool D::static_is_type_b (const char *s)\
-{\
-  return s == static_name();\
-}*/
-
-#define IMPLEMENT_IS_TYPE_B1(D, B)\
-  IMPLEMENT_STATIC_NAME(D)
-/*
-  bool D::static_is_type_b (const char *s)\
-{\
-  return s == static_name() || B::static_is_type_b (s);\
-}
-*/
-
-#define IMPLEMENT_IS_TYPE_B2(D, BA, BB)\
-  IMPLEMENT_STATIC_NAME(D)
-
-/*
-     
-  bool D::static_is_type_b (const char *s)\
-{\
-  return s == static_name() || BA::static_is_type_b (s) || BB::static_is_type_b (s);\
-}
-*/
+   class Foo : Baseclass {
+       VIRTUAL_COPY_CONS(Baseclass);
+   };
+   
+ */
+#define VIRTUAL_COPY_CONS(base)   virtual base *clone () const { return new typeof(*this) (*this); }
 
 #endif 
diff --git a/flower/rtti.cc b/flower/rtti.cc
new file mode 100644 (file)
index 0000000..911e191
--- /dev/null
@@ -0,0 +1,23 @@
+
+
+
+/*#include <typeinfo>
+
+signature S
+{
+  int foo ();
+  int bar (int);
+};
+*/
+
+#include <ctype.h>
+#include "virtual-methods.hh"
+
+
+const char *
+demangle_classname (char const *s)
+{
+  while (isdigit (*s))
+    s++;
+  return s;
+}
index aa3a5382bec85b4b98866e9f45bb5d598cc0105e..48c0145b5bb03fbd997972d06735cf91d3d73413 100644 (file)
@@ -89,7 +89,7 @@ VoiceContext = \translator {
        \consists "Rest_engraver";
        \consists "Dot_column_engraver";
        \consists "Stem_engraver";
-       \consists "Plet_engraver";
+%      \consists "Plet_engraver";
        \consists "Beam_engraver";
        \consists "Abbreviation_beam_engraver";
        \consists "Multi_measure_rest_engraver";
@@ -135,6 +135,7 @@ GrandStaffContext=\translator{
        \name LyricVoice ;
        \consists "Separating_line_group_engraver";
        \consists "Lyric_engraver";
+       \consists "Extender_engraver";
        \consists "Beam_req_swallow_translator";
        \consists "Plet_swallow_engraver";
 }
@@ -217,8 +218,10 @@ HaraKiriStaffContext = \translator {
        \accepts "Voice";
 };
 
+% huh, Score should do HaraKiri, not Part yes?
 OrchestralPartStaffContext = \translator {
-       \HaraKiriStaffContext
+%      \HaraKiriStaffContext
+       \StaffContext
        barColumnPriority = "0";
        marginBreakPriority = "-4";
        \consists "Mark_engraver";
@@ -226,6 +229,7 @@ OrchestralPartStaffContext = \translator {
        \consists "Bar_number_engraver";
 };
 
+% where to put HaraKiri here?
 OrchestralScoreContext= \translator {
        \type Score_engraver;
        \name Score;
index 8cd3f0eabe68fd60bdaed30ffe42c79c36c35af7..e045426a26641b52d6c02ca385740e0ae3a04cc3 100644 (file)
 ;     all preparations from ps,tex to scm
 
 ;;; library funtions
+(define
+  (xnumbers->string l)
+  (string-append 
+   (map (lambda (n) (string-append (number->string n ) " ")) l)))
+
 (define
   (numbers->string l)
   (apply string-append 
   (let ((n (inexact->exact x)))
        (number->string n radix)))
 
-(define 
-  (number->dim-tex x)
-  (string-append 
-   (number->string (chop-decimal x)) "pt "))
 
 (define
   (control->string c)
     (string-append (number->string (car c)) " ")
     (string-append (number->string (cadr c)) " ")))
 
+;;;;;;;; TeX
+; (define (tex action)
+
+(define 
+  (beam-tex width slope thick)
+  (embedded-ps-tex (beam-ps width slope thick)))
+
+(define 
+  (bracket-tex h)
+  (embedded-ps-tex (bracket-ps h)))
+
+(define 
+  (dashed-slur-tex thick dash l)
+  (embedded-ps-tex (dashed-slur-ps thick dash l)))
+
+(define 
+  (crescendo-tex w h cont)
+  (embedded-ps-tex (crescendo-ps w h cont)))
+
+(define 
+  (decrescendo-tex w h cont)
+  (embedded-ps-tex (decrescendo-ps w h cont)))
+
 (define 
   (embedded-ps-tex s)
   (string-append "\\embeddedps{" s "}"))
 
+
 (define 
-  (invoke-char-ps s i)
-  (string-append 
-   "(\\" (inexact->string i 8) ") " s " " ))
+  (end-output-tex) 
+  "\n\\EndLilyPondOutput")
 
 (define 
-  (invoke-char-tex s i)
+  (empty-tex) 
+  "%\n\\empty%\n")
+
+(define
+  (experimental-on-tex) "\\turnOnExperimentalFeatures")
+
+(define 
+  (extender o h)
+  ((invoke-output o "invoke-dim1") "extender" h))
+
+(define 
+  (font-switch-tex i)
+  (string-append
+   "\\" (font i) "\n"))
+
+(define 
+  (font-def-tex i s)
+  (string-append
+   "\\font" (font-switch-tex i) "=" s "\n"))
+
+(define 
+  (generalmeter-tex num den)
   (string-append 
-   "\n\\" s "{" (inexact->string i 10) "}" ))
+   "\\generalmeter{" (number->string (inexact->exact num)) "}{" (number->string (inexact->exact den)) "}"))
+
+(define
+  (header-end-tex) "\\turnOnPostScript")
 
 (define 
-  (invoke-dim1-ps s d
+  (header-tex creator generate
   (string-append
-   (number->string d) " " s ))
+   "%created by: " creator generate "\n"))
+
+(define 
+  (invoke-char-tex s i)
+  (string-append 
+   "\n\\" s "{" (inexact->string i 10) "}" ))
 
 (define 
   (invoke-dim1-tex s d)
    "\n\\" s "{" (number->dim-tex d) "}"))
 
 (define
-  (invoke-output o s)
-   (eval-string (string-append s "-" o)))
+  (lily-def-tex key val)
+  (string-append
+   "\\def\\" key "{" val "}\n"))
 
-;;; output definitions
+(define 
+  (number->dim-tex x)
+  (string-append 
+   (number->string (chop-decimal x)) "pt "))
 
 (define 
-  (beam o width slope thick) 
-  ((invoke-output o "beam") width slope thick))
+  (placebox-tex x y s) 
+  (string-append 
+   "\\placebox{"
+   (number->dim-tex y) "}{" (number->dim-tex x) "}{" s "}"))
 
 (define 
-  (beam-ps width slope thick)
-  (string-append
-   (numbers->string (list width slope thick)) " draw_beam " ))
+  (rulesym-tex h w) 
+  (string-append 
+   "\\vrule height " (number->dim-tex (/ h 2))
+   " depth " (number->dim-tex (/ h 2))
+   " width " (number->dim-tex w)
+   )
+  )
 
 (define 
-  (beam-tex width slope thick)
-  (embedded-ps-tex (beam-ps width slope thick)))
+  (slur-tex l)
+  (embedded-ps-tex (slur-ps l)))
 
 (define 
-  (bracket o h)
-  ((invoke-output o "bracket") h))
+  (start-line-tex) 
+  (string-append 
+   "\\hbox{%\n")
+  )
 
 (define 
-  (bracket-ps h)
-  (invoke-dim1-ps "draw_bracket" h))
+  (stem-tex kern width height depth) 
+  (string-append 
+   "\\kern" (number->dim-tex kern)
+   "\\vrule width " (number->dim-tex width)
+   "depth " (number->dim-tex depth)
+   "height " (number->dim-tex height) " "))
 
 (define 
-  (bracket-tex h)
-  (embedded-ps-tex (bracket-ps h)))
+  (stop-line-tex) 
+  "}\\interscoreline")
+
+(define
+  (text-tex f s)
+  (string-append "\\set" f "{" s "}"))
+
+
+
+;;;;;;;;;;;; PS
 
 (define 
-  (char o n) 
-  ((invoke-output o "invoke-char") "show" n))
+  (beam-ps width slope thick)
+  (string-append
+   (numbers->string (list width slope thick)) " draw_beam " ))
 
 (define 
-  (dashed-slur o thick dash l) 
-  ((invoke-output o "dashed-slur") thick dash l))
+  (bracket-ps h)
+  (invoke-dim1-ps "draw_bracket" h))
+
+(define 
+  (crescendo-ps w h cont)
+  (string-append 
+   (numbers->string (list w h (inexact->exact cont)))
+   "draw_crescendo"))
 
 (define 
   (dashed-slur-ps thick dash l)
    " ] 0 draw_dashed_slur"))
 
 (define 
-  (dashed-slur-tex thick dash l)
-  (embedded-ps-tex (dashed-slur-ps thick dash l)))
+  (decrescendo-ps w h cont)
+  (string-append 
+   (numbers->string (list w h (inexact->exact cont)))
+   "draw_decrescendo"))
 
 (define 
-  (doublebar o h)
-  ((invoke-output o "invoke-dim1") "doublebar" h))
+  (empty-ps) 
+  "\n empty\n")
 
 (define 
-  (empty o) 
-  ((invoke-output o "empty")))
+  (end-output-ps)
+  "\nshowpage\n")
+
+(define
+  (experimental-on-ps) "")
 
 (define 
-  (empty-ps) 
-  "\n empty\n")
+  (font-def-ps i s)
+  (string-append
+   "\n/" (font i) " {/" 
+   (substring s 0 (- (string-length s) 4))
+   " findfont 12 scalefont setfont} bind def\n"))
 
 (define 
-  (empty-tex) 
-  "%\n\\empty%\n")
+  (font-switch-ps i)
+  (string-append (font i) " "))
 
 (define 
-  (emptybar o h) (empty o))
+  (generalmeter-ps num den)
+  (string-append (number->string (inexact->exact num)) " " (number->string (inexact->exact den)) " generalmeter "))
+
+(define
+  (header-end-ps) "")
+(define
+  (lily-def-ps key val)
+  (string-append
+   "/" key " {" val "} bind def\n"))
 
 (define 
-  (end-output o) 
-  ((invoke-output o "end-output")))
+  (header-ps creator generate) 
+  (string-append
+   "%!PS-Adobe-3.0\n"
+   "%%Creator: " creator generate "\n"))
 
 (define 
-  (end-output-ps)
-  "\nshowpage\n")
+  (invoke-char-ps s i)
+  (string-append 
+   "(\\" (inexact->string i 8) ") " s " " ))
 
 (define 
-  (end-output-tex) 
-  "\n\\EndLilyPondOutput")
+  (invoke-dim1-ps s d) 
+  (string-append
+   (number->string d) " " s ))
 
 (define 
-  (experimental-on o) 
-  ((invoke-output o "experimental-on")))
+  (placebox-ps x y s) 
+  (string-append 
+   (number->string x) " " (number->string y) " {" s "} placebox "))
 
-(define
-  (experimental-on-ps) "")
+(define 
+  (rulesym-ps x y) 
+  (string-append 
+   (number->string x) " "
+   (number->string y) " "
+   "rulesym"))
+
+(define 
+  (slur-ps l)
+  (string-append 
+   (apply string-append (map control->string l)) 
+   " draw_slur"))
+
+(define 
+  (start-line-ps) 
+   "\nstart_line {\n")
+
+(define 
+  (stem-ps kern width height depth) 
+  (string-append (numbers->string (list kern width height depth))
+                "draw_stem" ))
+
+(define 
+  (stop-line-ps) 
+  "}\nstop_line\n")
 
 (define
-  (experimental-on-tex) "\\turnOnExperimentalFeatures")
+  (text-ps f s)
+  (string-append "(" s ") set" f " "))
+
+
+;;; output definitions
+
+(define 
+  (beam o width slope thick) 
+  ((invoke-output o "beam") width slope thick))
+
+(define 
+  (bracket o h)
+  ((invoke-output o "bracket") h))
+
+(define 
+  (char o n) 
+  ((invoke-output o "invoke-char") "show" n))
+
+(define 
+  (crescendo o w h cont)
+  ((invoke-output o "crescendo") w h cont))
+
+(define 
+  (dashed-slur o thick dash l) 
+  ((invoke-output o "dashed-slur") thick dash l))
+
+(define 
+  (decrescendo o w h cont)
+  ((invoke-output o "decrescendo") w h cont))
+
+(define 
+  (doublebar o h)
+  ((invoke-output o "invoke-dim1") "doublebar" h))
+
+(define 
+  (empty o) 
+  ((invoke-output o "empty")))
+
+(define 
+  (emptybar o h) (empty o))
+
+(define 
+  (end-output o) 
+  ((invoke-output o "end-output")))
+
+(define 
+  (experimental-on o) 
+  ((invoke-output o "experimental-on")))
 
 (define
   (fatdoublebar o h)
   (font-def o i s) 
   ((invoke-output o "font-def") i s))
 
-(define 
-  (font-def-ps i s)
-  (string-append
-   "\n/" (font i) " {/" 
-   (substring s 0 (- (string-length s) 4))
-   " findfont 12 scalefont setfont} bind def\n"))
-
-(define 
-  (font-def-tex i s)
-  (string-append
-   "\\font" (font-switch-tex i) "=" s "\n"))
-
 (define 
   (font-switch o i) 
   ((invoke-output o "font-switch") i))
 
-(define 
-  (font-switch-ps i)
-  (string-append (font i) " "))
-
-(define 
-  (font-switch-tex i)
-  (string-append
-   "\\" (font i) "\n"))
-
 (define 
   (generalmeter o num den)
    ((invoke-output o "generalmeter") num den))
 
-(define 
-  (generalmeter-ps num den)
-  (string-append (number->string (inexact->exact num)) " " (number->string (inexact->exact den)) " generalmeter "))
-
-(define 
-  (generalmeter-tex num den)
-  (string-append 
-   "\\generalmeter{" (number->string (inexact->exact num)) "}{" (number->string (inexact->exact den)) "}"))
-
 (define 
   (header o creator generate) 
   ((invoke-output o "header") creator generate))
 
-(define 
-  (header-ps creator generate) 
-  (string-append
-   "%!PS-Adobe-3.0\n"
-   "%%Creator: " creator generate "\n"))
-
-(define 
-  (header-tex creator generate) 
-  (string-append
-   "%created by: " creator generate "\n"))
-
 (define 
   (header-end o) 
   ((invoke-output o "header-end")))
 
 (define
-  (header-end-ps) "")
-
-(define
-  (header-end-tex) "\\turnOnPostScript")
+  (invoke-output o s)
+   (eval-string (string-append s "-" o)))
 
 (define
   (lily-def o key val)
   ((invoke-output o "lily-def") key val))
 
-(define
-  (lily-def-ps key val)
-  (string-append
-   "/" key " {" val "} bind def\n"))
-
-(define
-  (lily-def-tex key val)
-  (string-append
-   "\\def\\" key "{" val "}\n"))
-
 (define 
   (maatstreep o h) 
   ((invoke-output o "invoke-dim1") "maatstreep" h))
   (placebox o x y b) 
   ((invoke-output o "placebox") x y (b o)))
 
-(define 
-  (placebox-ps x y s) 
-  (string-append 
-   (number->string x) " " (number->string y) " {" s "} placebox "))
-
-(define 
-  (placebox-tex x y s) 
-  (string-append 
-   "\\placebox{"
-   (number->dim-tex y) "}{" (number->dim-tex x) "}{" s "}"))
-
 (define
   (repeatbar o h)
   ((invoke-output o "invoke-dim1") "repeatbar" h))
   (rulesym o x y) 
   ((invoke-output o "rulesym") x y))
 
-(define 
-  (rulesym-ps x y) 
-  (string-append 
-   (number->string x) " "
-   (number->string y) " "
-   "rulesym"))
-
-(define 
-  (rulesym-tex x y) 
-  (string-append 
-   "\\rulesym{" (number->dim-tex x) "}{" (number->dim-tex y) "}"))
-
 (define 
   (setbold o s) 
   ((invoke-output o "text") "bold" s))
   ((invoke-output o "slur") l))
 
 (define 
-  (slur-ps l)
+  (tuplet o dx dy dir)
+  ((invoke-output o "tuplet") dx dy dir))
+
+(define 
+  (tuplet-ps dx dy dir)
   (string-append 
-   (apply string-append (map control->string l)) 
-   " draw_slur"))
+   (numbers->string (list dx dy (inexact->exact dir)))
+   "draw_tuplet"))
 
 (define 
-  (slur-tex l)
-  (embedded-ps-tex (slur-ps l)))
+  (tuplet-tex dx dy dir)
+  (embedded-ps-tex (tuplet-ps dx dy dir)))
 
 (define 
   (stem o kern width height depth) 
   ((invoke-output o "stem") kern width height depth))
 
-(define 
-  (stem-ps kern width height depth) 
-  (string-append (numbers->string (list kern width height depth))
-                "draw_stem" ))
 
-(define 
-  (stem-tex kern width height depth) 
-  (string-append 
-   "\\kern" (number->dim-tex kern)
-   "\\vrule width " (number->dim-tex width)
-   "depth " (number->dim-tex depth)
-   "height " (number->dim-tex height) " "))
 
 (define 
   (start-line o) 
   ((invoke-output o "start-line")))
 
-(define 
-  (start-line-ps) 
-   "\nstart_line {\n")
-
-(define 
-  (start-line-tex) 
-  (string-append 
-   "\\hbox{%\n")
-  )
-
-
 (define
   (startbar o h)
   ((invoke-output o "invoke-dim1") "startbar" h))
   (startrepeat o h)
   ((invoke-output o "invoke-dim1") "startrepeat" h))
 
+
 (define 
   (stop-line o) 
   ((invoke-output o "stop-line")))
 
-(define 
-  (stop-line-ps) 
-  "}\nstop_line\n")
-
-(define 
-  (stop-line-tex) 
-  "}\\interscoreline")
 
 (define
   (stoprepeat o h)
   ((invoke-output o "invoke-dim1") "stoprepeat" h))
 
-(define
-  (text-ps f s)
-  (string-append "(" s ") set" f " "))
-
-(define
-  (text-tex f s)
-  (string-append "\\set" f "{" s "}"))
-
-
 
index 94e0351107ccfcad8c81b691098bfe3d2b3969b9..162984e5b305cf748348141122ad33b6cf376f4a 100644 (file)
@@ -1,27 +1,9 @@
 %part-paper.ly
 
 \paper {
+       \translator { \OrchestralPartStaffContext }
+       \translator { \ScoreContext skipBars = 1; }
        % for simple testing only!
 %      castingalgorithm = \Wordwrap; % lots faster on my 486 -- jcn
-Score = \translator {
-       \type Score_engraver;
-
-       \consists "Timing_engraver";
-       \consists "Bar_column_engraver";
-       \consists "Bar_number_engraver";
-       \consists "Mark_engraver";
-       \consists "Span_score_bar_engraver";
-       \consists "Score_priority_engraver";
-       \consists "Priority_horizontal_align_engraver";
-       \consists "Vertical_align_engraver";
-
-       \accepts "StaffGroup";
-       \accepts "Staff";
-       \accepts "RhythmicStaff";       
-       \accepts "Lyrics";
-       \accepts "GrandStaff";
-       SkipBars = "1";
-}
-       \include "bar-numbering.ly";
 }
 
index df5ae32e8cda10d25e56fb28d50cac971aad9cff..d535ebcc10ba8e929095ae52515f1e3d7cbdc2b5 100644 (file)
@@ -64,6 +64,7 @@ table_sixteen=
      "param" = \table {
        "brace" "pianobrace"    1       0.0\pt  0.0\pt  32.0\pt 80.0\pt
        "bracket"       "staffbracket"  1       0.0\pt  4.0\pt  16.0\pt 128.0\pt
+       "extender"      "extender"      1       0.0\pt  0.0\pt  1.0\pt  160.0\pt
        "time_signature"        "generalmeter"  2       0.0\pt  10.0\pt -8.0\pt 8.0\pt
        "rule" "rulesym"        2
        "stem"  "stem"  2
index 2ba75080640dd0d7db3ef69ee150ec49be2a9489..001fce942945be61775d2750e4d9f559f033f4ec 100644 (file)
@@ -67,6 +67,7 @@ table_twenty =
     % dims ignored for this table
     "param" = \table {
        "bracket"       "staffbracket"  1       0.0\pt  0.0\pt  20.0\pt 160.0\pt
+       "extender"      "extender"      1       0.0\pt  0.0\pt  1.0\pt  160.0\pt
        "rule" "rulesym"        2
        "brace"    "pianobrace" 1       0.0\pt  0.0\pt  40.0\pt 100.0\pt         
         "time_signature"       "generalmeter"  2       0.0\pt  10.0\pt -5.0\pt 5.0\pt
index 16b785ec2d22782df6c496ed2517bbe34e866368..716a611a017de2bc31a96604588b72e15f95a9d7 100644 (file)
@@ -4,7 +4,7 @@ depth = ..
 
 SUBDIRS=test bugs
 
-examples=example-3 twinkle-pop praeludium-fuga-E twinkle
+examples=example-3 twinkle-pop praeludium-fuga-E twinkle star-spangled-banner
 flexamples=example-1 example-2 
 
 LOCALSTEPMAKE_TEMPLATES=mutopia
diff --git a/input/star-spangled-banner.ly b/input/star-spangled-banner.ly
new file mode 100644 (file)
index 0000000..54fed0b
--- /dev/null
@@ -0,0 +1,118 @@
+%{
+Converted from star.mup with the aid of mup-to-ly.py
+http://www.Arkkra.com/doc/star.html
+http://www.Arkkra.com/doc/star.ps
+%}
+\header{
+title="The Star Spangled Banner";
+subtitle="(United States of America's National Anthem)";
+poet="Text by Francis Scott Key";
+composer="J. S. Smith";
+arranger="Arranged by William J. Krauss";
+enteredby="jcn";
+copyright="public domain";
+}
+
+$staff1_voice_1 = \notes {
+  [a8.()fis16] d4 fis4 a4 d'2 [fis'8. e'16] d'4 fis4 gis4 a2 [a8 a8]
+  fis'4.  e'8 d'4 cis'2 [b8. cis'16] d'4 d'4 a4 fis4 d4 [a8. fis16]
+  fis4 d4 [fis'8.  fis'16] fis'4 g'4 a'4 a'2 [g'8 fis'8] e'4 fis'4
+  g'4 g'2 g'4 fis'4. e'8 d'4 cis'2 [b8. cis'16] d'4 fis4 gis4 a2 a4
+  d'4 d'4 [d'8()cis'8] b4 b4 b4 e'4 [g'8 ()fis'8] [e'8()d'8]
+  d'4~cis'4 [a8. a16] d'4.~e'8 [fis'8 g'8] a'2 [d'8 e'8] fis'4. g'8
+  e'4 d'2 s4 
+}
+
+$staff1_voice_2 = \notes { 
+  [a8.()fis16] a,4 d4 e4 d4~fis4 [fis8. fis16] fis4 d4 d4 cis2 [e8
+  e8] a4. a8 a4 a2 [a8. a16] a4 a4 a4 fis4 d4 [a8. fis16] fis4 d4 r4
+  a4 a4 d'4 d'2 [a8 a8] cis'4 cis'4 cis'4 cis'2 a4 a4. a8 a4 a2 [a8.
+  a16] d4 d4 d4 cis2 e4 fis4 e4 d4 d4 d4 dis4 g4 [g8()dis8] e4 e2
+  [e8. e16] d4.~a8 [a8 a8] a2 [g8 g8] a4. a8 g4 fis2 s4 
+}
+
+$staff2_voice_1 = \notes { 
+  r4 fis4 a4 a4 b2 [cis'8. cis'16] b4 b4 b4 a2 [cis'8 cis'8] d'4.
+  cis'8 d'4 e'2 [e'8. e'16] d'4 d'4 a4 fis4 d4 r4 fis4 d4 r4 d4 e4
+  fis4 fis'2 [e'8 d'8] e'4 e'4 e'4 e'2 cis'4  d'4. cis'8 d'4 e'2
+  [e'8. e'16] a4 a4 e4 e2 cis'4 a4 a4 a4 g4 g4 b4 b4 b4 b4 a2
+  [cis'8. cis'16] a4.~cis'8 [d'8 d'8] d'2 [d'8 d'8] d'4. d'8 cis'4
+  a2 s4 
+}
+
+$staff2_voice_2 = \notes { 
+  r4 d4 d4 cis4 b,2 [ais,8. ais,16] b,4 b,4 e4 a,2 [a8 a8] d4. e8
+  [fis8 g8] a2 [g8. g16] fis4 fis4 a4 fis4 d4 r4 fis4 d4 r4 d4 d4 d4
+  d2 [d8 d8] a4 a4 a4 a2 a,4 d4. e8 [fis8 g8] a2 [g8. g16] fis4 d4
+  e4 a,2 a4 d4 e4 fis4 g4 g4 fis4 e4 [e8()fis8] [g8()gis8] a2 [g8.
+  g16] fis4.~a,8 [d8 e8] fis2 [b8 b8] a4. a8 a,4 d2 s4 
+}
+
+$text1 = \lyrics{
+  Oh4 __ say. can you see,2 by8. the16 dawn's4 ear- ly light2 What8
+  so8 proud-4. ly8 we4 hailed,2 At8. the16 twi-4 light's last gleam-
+  ing. Whose8. broad16 
+}
+
+$text2 = \lyrics{
+  _4 stripes and bright stars,2 through8 the8 per-4 il- ous fight,2
+  O'er8 the8 ram-4. parts8 we4 watched,2 were8. so16 gal-4 lant- ly
+  _ _ _ 
+}
+
+$text3 = \lyrics{
+  stream-4 ing. And8. the16 rock-4 ets' red glare,2 the8 bombs8
+  burst-4 ing in air,2 gave4 proof4. through8 the4 night2 that8.
+  our16 flag4 was still there,2 Oh4 say, does that star- span-
+  gled ban- ner yet wave,2 __ O'er8. the16 land2 __ of8 the8 free2
+  and8 the8 home4. of8 the4 brave.2
+}
+
+global = \notes {
+       \time 3/4;
+       \key D;
+       \partial 4;
+       \skip 4;
+       \bar "|:";
+       \skip 2.*8;
+       \bar ":|";
+       \skip 2.*16;
+       \skip 2.;
+       \bar "|.";
+       }
+
+\include "paper16.ly";
+
+\score{ 
+       \type GrandStaff < 
+               \type Staff=staffA < 
+                       \global
+                       \notes \transpose c'' {\voiceone \$staff1_voice_1 } 
+                       \notes \transpose c'' {\voicetwo \$staff1_voice_2 } 
+               >
+               \type Lyrics = one \lyrics <
+% urg, too much distance between two texts; fixme first
+%                      \$text1
+%                      { \$text2 \$text3 }
+                       { \$text1 \$text3 }
+               >
+               \type Staff=staffB < 
+                       \global
+                       \clef bass;
+                       {\voiceone \$staff2_voice_1 } 
+                       {\voicetwo \$staff2_voice_2 } 
+               >
+       >
+       \paper{
+               \paper_sixteen;
+               textheight = 230.\mm;
+               linewidth= 180.\mm;
+               \translator {
+                               \GrandStaffContext
+                               \accepts "Lyrics";
+               }
+               \translator {
+                               \BarNumberingStaffContext
+               }
+       }
+}
index 5af2ecfc95a9180d61595807eed3578e906018af..39f71e418c456f7c6e7ca1a9a8782eea897269f0 100644 (file)
@@ -1,7 +1,7 @@
 # input/test/Makefile
 
 depth = ../..
-examples=font20 hara-kiri grace mark denneboom stars-and-stripes
+examples=font20 hara-kiri grace mark denneboom sleur
 LOCALSTEPMAKE_TEMPLATES=mutopia
 
 include $(depth)/make/stepmake.make 
diff --git a/input/test/extender.ly b/input/test/extender.ly
new file mode 100644 (file)
index 0000000..ed33ea2
--- /dev/null
@@ -0,0 +1,6 @@
+\score{
+       <
+       \type Staff \notes { c () c () c c }
+       \type Lyrics \lyrics { bla __ alb xxx __ yyy }
+       >
+}
index 49af9b64fdbcb6cfa6b9c2a85e45493ae469b240..8d38bc7271bdb9802b38b41658e9854a174e38ce 100644 (file)
@@ -62,8 +62,6 @@ zoger = \type Staff = zoger \notes \relative c {
        \skip 1*1;
 }
 
- \include "score-paper.ly";
-
 zagers = \type GrandStaff <
        \zager
        \zoger
@@ -79,6 +77,10 @@ zagers = \type GrandStaff <
                >
        >
        \paper{
+               \translator { \HaraKiriStaffContext }
+%uh?
+%              \translator { \OrchestralScoreContext }
+%              \translator { \OrchestralPartStaffContext }
                linewidth = 40.0\mm;
        }
 }
index f5e9deb060633721f9fc97982be4e20b930d97c4..e730c90c0aa68257408440a3507f4f0a95d97d34 100644 (file)
@@ -20,6 +20,6 @@ two = \notes\relative c{
 \score{
        < \global \one \two >
        \paper {
-               \include "score-bar-numbering.ly";
+               \translator { \OrchestralPartStaffContext }
        }
 }
index 010e77ffe8aef7c83eddd9725959c997bfb7ddba..8f5b674979f51c81a6725b9ba158398d4f1f4d53 100644 (file)
@@ -1,3 +1,3 @@
 \score{
-       \notes \type Staff \times 2/3 { a b c }
+       \notes \type Staff \times 2/3 { \times 2/3 { a8 b c}  c }
 }
index 145ab50bcb786e29cf65f910219878caf4ad9286..5f2b7f4b805c291aaf4501fd9e6e9a53d0eeb28b 100644 (file)
@@ -15,7 +15,7 @@
 #include "musical-request.hh"
 #include "misc.hh"
 
-IMPLEMENT_IS_TYPE_B1(Abbreviation_beam_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Abbreviation_beam_engraver);
 
 Abbreviation_beam_engraver::Abbreviation_beam_engraver ()
@@ -25,7 +25,7 @@ Abbreviation_beam_engraver::Abbreviation_beam_engraver ()
 }
 
 bool
-Abbreviation_beam_engraver::do_try_request (Request*r)
+Abbreviation_beam_engraver::do_try_music (Music*r)
 {
   Abbreviation_beam_req * b = dynamic_cast <Abbreviation_beam_req *> (r);
 
index 05464b9670816cc0b639610ba93e2796a50c6c18..341a0e8d82ca4be41c00748ec80a4f56e298d6f9 100644 (file)
@@ -22,7 +22,7 @@
 #include "stem-info.hh"
 
 
-IMPLEMENT_IS_TYPE_B1 (Abbreviation_beam, Spanner);
+
 
 Abbreviation_beam::Abbreviation_beam ()
   : Beam ()
index 4f80841a6601d314b0e6dd065360412c3a880c9c..0e9dac2a4fab76178ffbb0bb555d2cfa312f9bcb 100644 (file)
@@ -156,7 +156,7 @@ Align_element::contains_b (Score_element const *e) const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Align_element, Score_element);
+
 
 void
 Align_element::sort_elements ()
@@ -182,6 +182,6 @@ Align_element::do_print () const
 #if 0
   DOUT << "contains: ";
   for (int i=0 ;  i < item_l_arr_.size(); i++) 
-    DOUT << item_l_arr_[i]->name () << ", ";
+    DOUT << classname (item_l_arr_[i]) << ", ";
 #endif
 }
index 5b6717c01519a952cc9cc4a296d3393e8a79a46d..61513c1e20fbb527f347569d1dd875e11d6e7fe6 100644 (file)
@@ -38,7 +38,7 @@ Audio_column::print() const
   DOUT << "Audio_column {";
   DOUT << "at: " << at_mom_ << ". Contains:";
   for (PCursor<Audio_item*> i (audio_item_l_list_.top ()); i.ok (); i++)
-    DOUT << i->name () << ", ";
+    DOUT << classname (i.ptr ()) << ", ";
   DOUT << "\n}\n";
 #endif 
 }
index bffe351af4fe60fa0b79d69ae8638fbec18a612d..109a639eb1de45386adf3d0ee6df98c235356745 100644 (file)
@@ -9,7 +9,7 @@
 #include "audio-element.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B(Audio_element);
+
 
 Audio_element::~Audio_element()
 {
@@ -19,7 +19,7 @@ void
 Audio_element::print () const
 {
 #ifndef NPRINT
-  DOUT << name () << "{ ";
+  DOUT << classname (this) << "{ ";
   do_print ();
   DOUT << "}";
 #endif
index 2ec7736a40af93be12411c6e86a9671b6d25e5e5..409c4196b39ebe567735ac21368d4e6283fea8b5 100644 (file)
@@ -22,7 +22,7 @@ Audio_instrument::midi_item_p()
 {
   return str_.length_i() ? new Midi_instrument(0, str_) : 0;
 }
-IMPLEMENT_IS_TYPE_B1(Audio_instrument, Audio_item);
+
 
 Audio_item::Audio_item (Request* req_l)
 {
@@ -40,7 +40,7 @@ Audio_key::midi_item_p()
 {
   return new Midi_key (this);
 }
-IMPLEMENT_IS_TYPE_B1 (Audio_key, Audio_item);
+
 
 Audio_note::Audio_note (Request* req_l, int transposing_i)
   : Audio_item (req_l)
@@ -54,7 +54,7 @@ Audio_note::midi_item_p()
   return new Midi_note (this);
 }
 
-IMPLEMENT_IS_TYPE_B1(Audio_note, Audio_item);
+
 
 Audio_tempo::Audio_tempo (int per_minute_4_i)
   : Audio_item (0)
@@ -68,7 +68,7 @@ Audio_tempo::midi_item_p()
   return new Midi_tempo (this);
 }
 
-IMPLEMENT_IS_TYPE_B1(Audio_tempo, Audio_item);
+
 
 Audio_time_signature::Audio_time_signature (Request* req_l)
   : Audio_item (req_l)
@@ -81,7 +81,7 @@ Audio_time_signature::midi_item_p()
   return new Midi_time_signature (this);
 }
 
-IMPLEMENT_IS_TYPE_B1(Audio_time_signature, Audio_item);
+
 
 Audio_text::Audio_text (Audio_text::Type type, String text_str)
   : Audio_item (0)
@@ -96,8 +96,8 @@ Audio_text::midi_item_p()
   return text_str_.length_i() ? new Midi_text(this) : 0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Audio_text, Audio_item);
-IMPLEMENT_IS_TYPE_B1(Audio_item, Audio_element);
+
+
 
 void
 Audio_item::do_print () const
index 235de874dedaa398b94fc4f52db23f10801dac73..16fac90a30020369053bb64f6a8ade02a67f8659 100644 (file)
@@ -28,4 +28,4 @@ Audio_staff::output (Midi_stream& midi_stream_r, int track_i)
   midi_stream_r << midi_track;
 }
 
-IMPLEMENT_IS_TYPE_B1(Audio_staff, Audio_element);
+
index a19d26c6c310669b43fcc6f2cba668111458159c..8732470bafaebec697eec03453727b17d0e86c92 100644 (file)
@@ -77,4 +77,4 @@ Axis_group_element::Axis_group_element ()
 }
 
 
-IMPLEMENT_IS_TYPE_B2(Axis_group_element, Score_element, Graphical_axis_group);
+
index 6eabab3a58ffa44e65f0e3bf14fad0d0ee62831b..c6f38c9632fcfdd8703b15aba9cbfd15c6721be1 100644 (file)
@@ -8,7 +8,7 @@
 #include "axis-group-item.hh"
 #include "p-col.hh"
 
-IMPLEMENT_IS_TYPE_B2(Axis_group_item, Axis_group_element, Item);
+
 
 void
 Axis_group_item::OK() const
index fdd2969b5e359964ec913c6dc76c6fda3b05d250..3d78df93418a0f3149c80d80ac2f9ace60f03fe3 100644 (file)
@@ -133,4 +133,4 @@ Axis_group_spanner::do_print() const
 
 
 
-IMPLEMENT_IS_TYPE_B2(Axis_group_spanner, Spanner, Axis_group_element);
+
index 230a0f3ea2a39f374bb81ce7ce29ff7732812a31..96dee1b25c6583645dffebe7c9c2d9e7460fc477 100644 (file)
@@ -102,5 +102,5 @@ Bar_column_engraver::do_post_move_processing()
   bar_l_ =0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Bar_column_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Bar_column_engraver);
index 5f1a40d93f2a61074e3c557df0fc9a6c09eb69a7..625b2da8958842061f1269e7aef0aca79308def7 100644 (file)
@@ -32,5 +32,5 @@ Bar_column::do_substitute_dependency (Score_element*o,Score_element*n)
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Bar_column, Script_column);
+
 
index 456a13cf400387bb7dcc3d82481482b75b3128f7..b9896b4ad32c0b8149778337787e540d9eed779c 100644 (file)
@@ -21,7 +21,7 @@ Bar_engraver::Bar_engraver()
 }
 
 bool
-Bar_engraver::do_try_request (Request*r_l)
+Bar_engraver::do_try_music (Music*r_l)
 {
   if (Bar_req  * b= dynamic_cast <Bar_req *> (r_l))
     {
@@ -95,7 +95,7 @@ Bar_engraver::do_process_requests()
     {
       Break_req r;
       r.penalty_i_ = Break_req::DISALLOW;
-      daddy_grav_l ()->try_request (&r);
+      daddy_grav_l ()->try_music (&r);
     }
 }
 
@@ -117,7 +117,7 @@ Bar_engraver::do_post_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Bar_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Bar_engraver);
 
 
index 455690e5165a34d02091e871b7fc330bfcf55eb7..67e4dc2fc49659378b65c562a3c9930161a02029 100644 (file)
@@ -77,5 +77,5 @@ Bar_number_engraver::do_pre_move_processing()
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Bar_number_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Bar_number_engraver);
index 32120fa1bf72ee0db17fba6092807936f9342008..7e49b7088fe0a2e72b80ce1bfe96571d818bdbb4 100644 (file)
@@ -13,7 +13,7 @@
 #include "lookup.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Bar,Item);
+
 
 Bar::Bar ()
 {
index b8eb55903bed161e60dfa3a317a0bae5ecf5ae20..b1ec28d01d134207ce929601cda2bac7d82d2d29 100644 (file)
@@ -23,7 +23,7 @@ Beam_engraver::Beam_engraver()
 }
 
 bool
-Beam_engraver::do_try_request(Request*r)
+Beam_engraver::do_try_music (Music*r)
 {
   Beam_req* b = dynamic_cast <Beam_req *> (r);
   if (!b)
@@ -131,5 +131,5 @@ Beam_engraver::acknowledge_element (Score_element_info i)
       beam_p_->add_stem (s);
     }
 }
-IMPLEMENT_IS_TYPE_B1(Beam_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Beam_engraver);
index f6a4194ca7ff27ac1c627b05e72e2b75c978d8f3..cf7b4d1ef659006ca23cb6a55fac0cd7226ec37e 100644 (file)
@@ -10,6 +10,5 @@
 #include "type-swallow-trans.hh"
 #include "musical-request.hh"
 
-
-
 DECLARE_REQUEST_SWALLOWER(Beam_req);
+
index 4982dd3937d32c8599a1f9ffd7e008a43e65ed1c..31c0b34af2e185973f3380cc694c439206fb6bcf 100644 (file)
@@ -36,7 +36,7 @@
 #include "stem-info.hh"
 
 
-IMPLEMENT_IS_TYPE_B1 (Beam, Spanner);
+
 
 Beam::Beam ()
 {
@@ -641,6 +641,9 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
   Molecule leftbeams;
   Molecule rightbeams;
 
+  // UGH
+  Real nw_f = paper ()->note_width () * 0.8;
+
   /* half beams extending to the left. */
   if (prev)
     {
@@ -651,7 +654,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
        but let's make sure two half-beams never touch
        */
       Real w = here->hpos_f () - prev->hpos_f ();
-      w = w/2 <? paper ()->note_width ();
+      w = w/2 <? nw_f;
       Atom a;
       if (lhalfs)              // generates warnings if not
        a =  lookup_l ()->beam (sl, w, beam_f);
@@ -684,7 +687,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
              rightbeams.add_atom (b);
            }
          // TODO: notehead widths differ for different types
-         gap_f = paper ()->note_width () / 2;
+         gap_f = nw_f / 2;
          w -= 2 * gap_f;
          a = lookup_l ()->beam (sl, w + stemdx, beam_f);
        }
@@ -696,7 +699,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
          rightbeams.add_atom (b);
        }
 
-      w = w/2 <? paper ()->note_width ();
+      w = w/2 <? nw_f;
       if (rhalfs)
        a = lookup_l ()->beam (sl, w, beam_f);
 
index 04a09d7bc95968a6d9c90ecc8048291e3d1c3191..51463e2c5020ed75eeac7c070f5fdb9b0fd10cf2 100644 (file)
@@ -15,7 +15,7 @@
 #include "bezier.hh"
 #include "main.hh"
 
-IMPLEMENT_IS_TYPE_B1(Bow,Directional_spanner);
+
 
 Bow::Bow ()
 {
index 05644f026173eb3b165c0f336349386a60ed57f6..53f81fe3e3799f089fa222733519b661b112d65a 100644 (file)
@@ -18,4 +18,4 @@ Break_align_item::do_pre_processing()
   Horizontal_align_item::do_pre_processing();
 }
 
-IMPLEMENT_IS_TYPE_B1(Break_align_item, Horizontal_align_item);
+
index b319c720895f7ce841c7ba5a83be9b49f07b9f95..81352999e6ebb84cc354e1138a07c02f9c437045 100644 (file)
@@ -79,4 +79,4 @@ Change_iterator::do_process_and_next (Moment m)
   Music_iterator::do_process_and_next (m);
 }
 
-IMPLEMENT_IS_TYPE_B1 (Change_iterator, Music_iterator);
+
index 771e8d43b1fe0ee098e4a8869f64bba383085e77..10a5c61d44948568f87e81166e53232102c7525f 100644 (file)
@@ -9,7 +9,7 @@
 #include "change-translator.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1(Change_translator,Music);
+
 
 void
 Change_translator::do_print () const
index 8b691619ee15659a880ce8823a050693f45e7351..1f61364c2b98d6f0933613086f28a0403874ba47 100644 (file)
@@ -62,7 +62,7 @@ Simultaneous_music_iterator::do_process_and_next (Moment until)
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Simultaneous_music_iterator,Music_iterator);
+
 
 Moment
 Simultaneous_music_iterator::next_moment() const
index b7dac5052bfc2386a4c2dca6cfa3140ed1951ce3..775a1885f3000610ffcd528b5511e87ac7b508e1 100644 (file)
@@ -180,7 +180,7 @@ Clef_engraver::do_creation_processing()
 }
 
 bool
-Clef_engraver::do_try_request (Request * r_l)
+Clef_engraver::do_try_music (Music * r_l)
 {
   if (Clef_change_req *cl = dynamic_cast <Clef_change_req *> (r_l))
     {
@@ -267,5 +267,5 @@ Clef_engraver::do_removal_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Clef_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Clef_engraver);
index fd6e971b42e9f12f0a395a01be131a2c3f5091e0..d860b494f2c9f2836b691adb079eb2abb8350ef6 100644 (file)
@@ -72,7 +72,7 @@ Clef_item::brew_molecule_p() const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Clef_item,Item);
+
 
 #include "pointer.tcc"
 template class P<Text_def>;    // ugh
index a0d5dc1006371a131a33630c1a91a75ed1d3ebf9..9094147cf4c8b26afb1df3f1fd5734bfbf6e6f2a 100644 (file)
@@ -54,5 +54,5 @@ Collision_engraver::Collision_engraver()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Collision_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Collision_engraver);
index a9971951b92c19304a06f1bed1e5c8bfd4ba7cc3..149e39fc2326117b901fac288e05eb5c2c1e35ea 100644 (file)
@@ -161,7 +161,7 @@ Collision::do_pre_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Collision, Item);
+
 
 void
 Collision::do_substitute_dependency (Score_element*o_l,Score_element*n_l)
index cddf6c89fd0c1a8d9d457071a09b5a984e3431d1..1ab0353bc558ab32d3c74da961a4e5e34e09e678 100644 (file)
@@ -16,10 +16,10 @@ Command_script_req::do_print() const
 Command_script_req::Command_script_req(){}
 Command_script_req::~Command_script_req(){}
 
-IMPLEMENT_IS_TYPE_B1(Command_script_req,Command_req);
 
 
-IMPLEMENT_IS_TYPE_B1(Cadenza_req, Timing_req);
+
+
 
 void
 Cadenza_req::do_print() const
@@ -51,9 +51,9 @@ Bar_req::do_equal_b (Request*r) const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Bar_req,Command_req);
 
-IMPLEMENT_IS_TYPE_B2(Bracket_req, Command_req, Span_req);
+
+
 
 void
 Bar_req::do_print() const
@@ -86,18 +86,18 @@ Partial_measure_req::do_equal_b (Request* r) const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Timing_req,Command_req);
+
 
 void
 Timing_req::do_print() const{}
 
 
-IMPLEMENT_IS_TYPE_B1(Command_req,Request);
+
 
 void
 Command_req::do_print() const{}
 
-IMPLEMENT_IS_TYPE_B1(Barcheck_req,Timing_req);
+
 
 void
 Barcheck_req::do_print() const{}
@@ -110,7 +110,7 @@ Barcheck_req::do_equal_b (Request*r) const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Clef_change_req,Command_req);
+
 
 void
 Clef_change_req::do_print() const
@@ -128,7 +128,7 @@ Clef_change_req::Clef_change_req (String s)
 
 
 
-IMPLEMENT_IS_TYPE_B1(Partial_measure_req,Timing_req);
+
 
 void
 Partial_measure_req::do_print() const
@@ -137,7 +137,7 @@ Partial_measure_req::do_print() const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Time_signature_change_req,Timing_req);
+
 
 void
 Time_signature_change_req::do_print() const
@@ -174,7 +174,7 @@ Tempo_req::do_print() const
 {
   DOUT << dur_.str() << " = " << metronome_i_;
 }
-IMPLEMENT_IS_TYPE_B1(Tempo_req, Timing_req);
+
 
 bool
 Tempo_req::do_equal_b (Request *r) const
@@ -187,7 +187,7 @@ Tempo_req::do_equal_b (Request *r) const
 
 
 
-IMPLEMENT_IS_TYPE_B1(Measure_grouping_req,Timing_req);
+
 
 void
 Measure_grouping_req::do_print() const
@@ -299,7 +299,7 @@ Key_change_req::transpose (Musical_pitch d)
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Key_change_req,Command_req);
+
 void
 Key_change_req::squash_octaves()
 {
@@ -326,7 +326,7 @@ Key_change_req::Key_change_req()
   ordinary_key_b_= false;
 }
 
-IMPLEMENT_IS_TYPE_B1(Break_req, Command_req);
+
 
 Break_req::Break_req ()
 {
@@ -338,7 +338,7 @@ Break_req::do_print () const
 {
 }
 
-IMPLEMENT_IS_TYPE_B1 (Mark_req, Command_req);
+
 
 Mark_req::Mark_req (String s)
 {
index c5c60acc78913ebd2e47977f158a1281e43f2f3b..c6393d5ecfd8e372e6204148a9417c3d36ef08c5 100644 (file)
@@ -13,7 +13,7 @@
 #include "translator-group.hh"
 #include "command-request.hh"
 
-IMPLEMENT_IS_TYPE_B1(Compressed_music_iterator, Music_wrapper_iterator);
+
 
 Compressed_music_iterator::Compressed_music_iterator ()
 {
@@ -52,17 +52,10 @@ Compressed_music_iterator::do_process_and_next (Moment m)
 {
   if (first_b_)
     {
-      bool success = report_to_l ()->try_request (start_req_p_);
+      bool success =   report_to_l ()->try_music (compressed_l ());
       if (!success)
        music_l_->warning ( _("No one to print a tuplet start bracket"));
     }
 
   Music_wrapper_iterator::do_process_and_next (m);
-  
-  if (!ok ())
-    {
-      bool success = report_to_l ()->try_request (stop_req_p_);
-      if (!success)
-          music_l_->warning ( _("No one to print a tuplet stop bracket"));
-    }
 }
index 5c03ef1649b6b52dce68c017a365f233efa1880a..5133cb57521ce3ac51077178a4f93bcfa86395b5 100644 (file)
@@ -18,6 +18,6 @@ Compressed_music::Compressed_music (int n, int d,Music *mp)
   element_p_->compress (Moment (num_i_,den_i_));
 }
 
-IMPLEMENT_IS_TYPE_B1(Compressed_music, Music_wrapper);
+
 
 
index 4af8ceadcdf1cc49d3e9e443482d8831aa62b50c..1e9b804a1f28b3226e99358f5e09dc0b6a8d940c 100644 (file)
@@ -76,4 +76,4 @@ Crescendo::brew_molecule_p() const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Crescendo,Spanner);
+
index c21d4a274bff8bf420df036c374cb9b4ba4f6f84..bd4954920b80f7ad097b482015283a4c290020e3 100644 (file)
@@ -17,3 +17,11 @@ Directional_spanner::Directional_spanner()
 {
   dir_ = CENTER;
 }
+
+Offset
+Directional_spanner::center () const
+{
+  Real w= width ().length ();
+  Offset o (w/2, 0);  
+  return o;
+}
index 771963e3486929b45d9bb50b9fdf260169ad1d06..59c73f2f6f8a01fe538cfd069db8fb459ba675b6 100644 (file)
@@ -48,4 +48,4 @@ Dot_column_engraver::acknowledge_element (Score_element_info info)
 
 
 ADD_THIS_TRANSLATOR(Dot_column_engraver);
-IMPLEMENT_IS_TYPE_B1(Dot_column_engraver,Engraver);
+
index 284b746cc946841ec581cc52cbd3ccdc92f47ddb..97afd43bf25f747d247ff003a26598cc76e40616 100644 (file)
@@ -53,4 +53,4 @@ Dot_column::do_pre_processing ()
     translate_axis (w[RIGHT] - width() [LEFT],X_AXIS);
 }
 
-IMPLEMENT_IS_TYPE_B1(Dot_column, Horizontal_group_item);
+
index 370ea3dbe7ae46272e2fe5efe0564bf8b09a0238..8b39c3e56628490396b154be30991e0011d06588 100644 (file)
@@ -51,4 +51,4 @@ Dots::brew_molecule_p () const
   return out;
 }
 
-IMPLEMENT_IS_TYPE_B1(Dots, Item);
+
index e0f26807487d36ddc06652a90fcc0090db49bf82..becdf9b76ba29b34e3742d808141ef4688917e02 100644 (file)
@@ -32,7 +32,7 @@ Dynamic_engraver::do_post_move_processing()
 }
 
 bool
-Dynamic_engraver::do_try_request (Request * r)
+Dynamic_engraver::do_try_music (Music * r)
 {
   if(Dynamic_req * d = dynamic_cast <Dynamic_req *> (r))
     {
@@ -151,7 +151,7 @@ Dynamic_engraver::do_pre_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Dynamic_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Dynamic_engraver);
 
 void
index 2c1b3d2d863502a5f705a997a5ad94f44659f5f1..a255c4c5cd9aeb3b1552a1c86d2d14f550184d13 100644 (file)
@@ -14,7 +14,7 @@
 #include "p-score.hh"
 #include "score-element.hh"
 
-IMPLEMENT_IS_TYPE_B2(Engraver_group_engraver,Engraver, Translator_group);
+
 ADD_THIS_TRANSLATOR(Engraver_group_engraver);
 
 void
index 8fccb6a84dd7080e875e533e39db5135650458c1..762d800ed4d5f84d87270967b850178acdc4507e 100644 (file)
@@ -50,7 +50,7 @@ Engraver::get_staff_info() const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Engraver, Translator);
+
 
 
 Engraver_group_engraver*
diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc
new file mode 100644 (file)
index 0000000..32c3e57
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+  extender-engraver.cc -- implement Extender_engraver
+
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "proto.hh"
+#include "musical-request.hh"
+#include "extender-engraver.hh"
+#include "extender-spanner.hh"
+#include "text-def.hh"
+#include "score-column.hh"
+#include "text-item.hh"
+
+ADD_THIS_TRANSLATOR (Extender_engraver);
+
+Extender_engraver::Extender_engraver ()
+{
+  extender_spanner_p_ = 0;
+  span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
+}
+
+void
+Extender_engraver::acknowledge_element (Score_element_info i)
+{
+  Text_item* t = (dynamic_cast<Text_item*> (i.elem_l_));
+  if (!t)
+    return;
+  if (!extender_spanner_p_)
+    return;
+  if (!span_reqs_drul_[LEFT])
+    return;
+
+  if (!extender_spanner_p_->textitem_l_drul_[LEFT])
+    extender_spanner_p_->set_textitem (LEFT, t);
+  else
+    if (span_reqs_drul_[RIGHT] && !extender_spanner_p_->textitem_l_drul_[RIGHT]) 
+      extender_spanner_p_->set_textitem (RIGHT, t);
+}
+
+bool
+Extender_engraver::do_try_music (Music* req_l)
+{
+  if (Extender_req* p = dynamic_cast <Extender_req *> (req_l))
+    {
+      if (bool (extender_spanner_p_) == bool (p->spantype == Span_req::START))
+       return false;
+
+      Direction d = (!extender_spanner_p_) ? LEFT : RIGHT;
+      if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (p))
+       return false;
+
+      span_reqs_drul_[d] = p;
+      span_mom_drul_[d] = get_staff_info ().musical_l ()->when ();
+      return true;
+    }
+  return false;
+}
+
+void
+Extender_engraver::do_removal_processing ()
+{
+  if (extender_spanner_p_)
+    {
+      span_reqs_drul_[LEFT]->warning (_ ("unterminated extender"));
+      extender_spanner_p_->unlink ();
+      delete extender_spanner_p_;
+      extender_spanner_p_ = 0;
+      span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
+    }
+}
+
+void
+Extender_engraver::do_process_requests ()
+{
+  if (extender_spanner_p_ || !span_reqs_drul_[LEFT])
+    return;
+
+  extender_spanner_p_ = new Extender_spanner;
+
+  announce_element (Score_element_info (extender_spanner_p_, span_reqs_drul_[LEFT]));
+}
+
+void
+Extender_engraver::do_pre_move_processing ()
+{
+  if (!extender_spanner_p_ || !span_reqs_drul_[RIGHT]) 
+    return;
+
+  typeset_element (extender_spanner_p_);
+  
+  extender_spanner_p_ = 0;
+  span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
+}
+
diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc
new file mode 100644 (file)
index 0000000..98190d6
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+  extender-spanner.cc -- implement Extender_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "atom.hh"
+#include "box.hh"
+#include "debug.hh"
+#include "lookup.hh"
+#include "molecule.hh"
+#include "p-col.hh"
+#include "paper-def.hh"
+#include "extender-spanner.hh"
+#include "text-item.hh"
+#include "text-def.hh"
+
+Extender_spanner::Extender_spanner ()
+  : Directional_spanner ()
+{
+  textitem_l_drul_[LEFT] = textitem_l_drul_[RIGHT] = 0;
+  dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0;
+  dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
+}
+
+Extender_spanner::Extender_spanner (Extender_spanner const& c)
+  : Directional_spanner (c)
+{
+  textitem_l_drul_ = c.textitem_l_drul_;
+  dy_f_drul_ = c.dy_f_drul_;
+  dx_f_drul_ = c.dx_f_drul_;
+}
+
+Extender_spanner::~Extender_spanner ()
+{
+}
+
+Offset
+Extender_spanner::center () const
+{
+  Real dx = width ().length ();
+
+  return Offset (dx / 2, 0);
+}
+
+Molecule*
+Extender_spanner::brew_molecule_p () const
+{
+  Molecule* mol_p = new Molecule;
+
+  Real w = width ().length ();
+  
+  w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
+  
+  Atom a = lookup_l ()->extender (w);
+
+  a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT]));
+
+  mol_p->add_atom (a);
+
+  return mol_p;
+}
+
+void
+Extender_spanner::do_add_processing ()
+{
+  Direction d = LEFT;
+  Drul_array<Text_item *> new_textitem_drul = textitem_l_drul_;
+  do {
+    if (!textitem_l_drul_[d])
+      new_textitem_drul[d] = textitem_l_drul_[(Direction)-d];
+  } while (flip(&d) != LEFT);
+  textitem_l_drul_ = new_textitem_drul;
+}
+
+Interval
+Extender_spanner::do_height () const
+{
+  return Interval (0,0);
+}
+
+void
+Extender_spanner::do_post_processing ()
+{
+  assert (textitem_l_drul_[LEFT] || textitem_l_drul_[RIGHT]);
+
+  // UGH
+  Real nw_f = paper ()->note_width () * 0.8;
+
+  Direction d = LEFT;
+  do
+    {
+      Text_item* t = textitem_l_drul_[d] ? textitem_l_drul_[d] : textitem_l_drul_[(Direction)-d];
+
+      dy_f_drul_[d] += t->height ().length () / 2;
+      if (d == LEFT)
+        dx_f_drul_[d] += t->width ().length ();
+      else
+       dx_f_drul_[d] -= d * nw_f / 2;
+
+//      dx_f_drul_[d] -= d * nw_f / 4;
+    }
+  while (flip(&d) != LEFT);
+}
+
+void
+Extender_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
+{
+  Text_item* new_l = n ? dynamic_cast<Text_item *> (n) : 0;
+  if (dynamic_cast <Item *> (o) == textitem_l_drul_[LEFT])
+    textitem_l_drul_[LEFT] = new_l;
+  else if (dynamic_cast <Item *> (o) == textitem_l_drul_[RIGHT])
+    textitem_l_drul_[RIGHT] = new_l;
+}
+  
+void
+Extender_spanner::set_textitem (Direction d, Text_item* textitem_l)
+{
+  assert (!textitem_l_drul_[d]);
+  textitem_l_drul_[d] = textitem_l;
+  set_bounds (d, textitem_l);
+
+  add_dependency (textitem_l);
+}
+
index 6689e91eacc256416c1f978b2380f717cb045bad..e67c90a287b6031b75d54ff3b7c4dec42d339382 100644 (file)
@@ -33,4 +33,4 @@ Font_size_engraver::acknowledge_element (Score_element_info e)
 }
 
 ADD_THIS_TRANSLATOR (Font_size_engraver);
-IMPLEMENT_IS_TYPE_B1(Font_size_engraver,Engraver);
+
index ba7da733e29d57ecf9db91fd57d86ac2ed3e470c..3ce45fbf5c6271d3cb05983d49db88807c9328e0 100644 (file)
@@ -37,9 +37,6 @@ General_script_def::inside_b() const
 bool
 General_script_def::equal_b (General_script_def const&g) const
 {
-  if (name() != g.name ())
-    return false;
-
   return do_equal_b (&g);
 }
 
@@ -53,7 +50,7 @@ General_script_def::do_equal_b (General_script_def const*) const
 void
 General_script_def::print() const
 {
-  DOUT << name() << "{";
+  DOUT << classname(this) << "{";
   do_print();
   DOUT << "}";
 }
@@ -70,7 +67,7 @@ General_script_def::get_atom (Paper_def*, Direction) const
   return Atom (s);
 }
 
-IMPLEMENT_IS_TYPE_B(General_script_def);
+
 
 
 Interval
index 1c8179441f5dcc95ffa9d10674983b51a5a6f2b0..d6785e6d052fc27a28dd3ea7b388145a9b968e75 100644 (file)
@@ -52,7 +52,7 @@ Global_translator::now_moment () const
   return now_mom_;
 }
 
-IMPLEMENT_IS_TYPE_B1(Global_translator, Translator_group);
+
 
 Music_output*
 Global_translator::get_output_p()
index b0aab89df0942fdbc6f5574bac4f60815b15582f..0912244897e55713a259c2135907a9ced1dbf571 100644 (file)
@@ -77,7 +77,7 @@ Graphical_axis_group::do_print() const
 {
 #ifndef NPRINT
   for (int i=0; i < elem_l_arr_.size(); i++) 
-    DOUT << elem_l_arr_[i]->name () << " ";
+    DOUT << classname(elem_l_arr_[i]) << " ";
 #endif
 }
 
@@ -87,4 +87,4 @@ Graphical_axis_group::Graphical_axis_group (Axis a1, Axis a2)
   axis2_ = a2;
 }
 
-IMPLEMENT_IS_TYPE_B1(Graphical_axis_group, Graphical_element);
+
index d604fba9c3731a75796aceba11f307cfd9a801a9..de60a0b584ed8c2cba0432475e0303fb5040f63c 100644 (file)
@@ -185,5 +185,5 @@ Graphical_element::do_print () const
 #endif
 }
 
-IMPLEMENT_IS_TYPE_B(Graphical_element);
+
 
index 16619f83c83f377b38fa446447ec6a1c099bee16..fac0a81ecf299e90b731507feedb6cbc46947c79 100644 (file)
@@ -12,7 +12,7 @@
 #include "hara-kiri-vertical-group-spanner.hh"
 #include "hara-kiri-line-group-engraver.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Line_group_engraver_group);
+
 ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
 
 void
index 9a31e52bcabf7c5efa98478b53beedeaea3e26e5..c0628ad21ac4e8bb412f7601787400cb5fe0df2d 100644 (file)
@@ -12,7 +12,7 @@
 #include "note-head.hh"
 #include "bar.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
+
 
 Hara_kiri_vertical_group_spanner::Hara_kiri_vertical_group_spanner()
 {
index 1fc262710232e13341a034d28f12ee7d3bc1f368..b60f7f2b45acc07fd614aed89a49b9090fd94edc 100644 (file)
@@ -16,7 +16,7 @@ Note_heads_engraver::Note_heads_engraver()
 }
 
 bool
-Note_heads_engraver::do_try_request (Request *req_l) 
+Note_heads_engraver::do_try_music (Music *req_l) 
 {
   if (Note_req * n =dynamic_cast <Note_req *> (req_l))
     {
@@ -79,5 +79,5 @@ Note_heads_engraver::do_post_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Note_heads_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Note_heads_engraver);
index a22f30eb5ece14cc240af320ba35e5874a05b832..25b9ab8e94a9a128767197f87e36105cb624b569 100644 (file)
@@ -9,7 +9,7 @@
 #include "horizontal-align-item.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B2(Horizontal_align_item,Align_element,Item);
+
 
 void
 Horizontal_align_item::add_item (Item *i,int p)
index 804dd6d9b3a8b69f214ad42b95271d869d6ae11c..6801861409c1cfc50d448003da84c75681bacf1a 100644 (file)
@@ -4,7 +4,7 @@
 #include "debug.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Horizontal_group_element, Axis_group_element);
+
 
 Horizontal_group_element::Horizontal_group_element ()
   : Axis_group_element (X_AXIS,X_AXIS)
index 4e4d5594956ff59d289da10b0f55a13c83325a37..46b06131e353cabd6e861e23b148aa0d3609babd 100644 (file)
@@ -9,7 +9,7 @@
 #include "p-col.hh"
 #include "horizontal-group-item.hh"
 
-IMPLEMENT_IS_TYPE_B2(Horizontal_group_item, Horizontal_group_element, Axis_group_item);
+
 
 void
 Horizontal_group_item::do_print() const
index 9021d88da6bfc5cb99183cbe64478e7c28c3343c..6a47d82966eda940a0aca662c3117d9264132546 100644 (file)
@@ -12,4 +12,4 @@ Horizontal_vertical_group_element::Horizontal_vertical_group_element()
 
 
 
-IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_element, Horizontal_group_element, Vertical_group_element);
+
index cf1917228c4837dfca35ff63d32e8c6eb28a4c07..c3f4c03d9e4b5d3d8ec62b424e959400d11d9d2c 100644 (file)
@@ -16,7 +16,7 @@ Horizontal_vertical_group_item::do_print() const
   Horizontal_vertical_group_element::do_print();
 }
 
-IMPLEMENT_IS_TYPE_B2(Horizontal_vertical_group_item,Horizontal_vertical_group_element,Item);
+
 
 Horizontal_vertical_group_item::Horizontal_vertical_group_item ()
 {
index d09749daedef762321247ae676809ebb572311a6..b9e422a366504db689e0eca74c7f9a19ec69c563 100644 (file)
@@ -19,7 +19,7 @@
 #include "translator.hh"
 #include "notename-table.hh"
 
-IMPLEMENT_IS_TYPE_B(Identifier);
+
 
 Identifier::Identifier (int code)
 {
@@ -156,7 +156,6 @@ Class ## _identifier::access_content_ ## Class (bool copy_b) const{\
 }
 
 #define IMPLEMENT_ID_CLASS(Class)      \
-       IMPLEMENT_IS_TYPE_B1(Class ## _identifier,Identifier)\
        Class ## _identifier::~Class ## _identifier() { delete data_p_; }\
        Class ## _identifier::Class ## _identifier (Class*st, int code) \
          :Identifier (code)\
index 2a25c89d44913f99a4c1518fa4766b470f34e8c1..6c82a841cffd674bad88f3d716450e35026b81c6 100644 (file)
 class Abbreviation_beam_engraver : public Engraver
 {
 public:
-  TRANSLATOR_CLONE(Abbreviation_beam_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
   Abbreviation_beam_engraver();
 
 protected:
   virtual void do_removal_processing();
   virtual void do_process_requests();
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
 
index 629fb0286ecf0368c2cf026b4847ffc635efab3f..cdb7b1d96c7a3a4ce4ad46236921aa451f0f6333 100644 (file)
   direction */
 class Abbreviation_beam : public Beam {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Abbreviation_beam();
 
-  SCORE_ELEMENT_CLONE(Abbreviation_beam);
+  VIRTUAL_COPY_CONS(Score_element);
 
 protected:
   virtual void do_print() const;
index 0b18f18f545c514c9dcf7dd9a1360e7ccd38a368..cf639c2d8fc02406b42513234c522919111fc699 100644 (file)
@@ -47,7 +47,7 @@ public:
   void add_element (Score_element*);
   void add_element_priority (Score_element*, int);
   bool contains_b (Score_element const*) const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_print() const;
   virtual void do_substitute_dependency (Score_element*,Score_element*);
index db7e4097d3b12780fcd0688f14f0d39a55d55345..43d716748d5b747c58dd9222e4d914928c54b826 100644 (file)
@@ -16,7 +16,7 @@ struct Audio_element {
   void print ()const;
   
   virtual ~Audio_element();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_print () const;
 };
index b745c5b931bfab198c0afe982e5fb68f1b7113e4..f5159c0daf4459397e684d26e798f4f2dbfeae1f 100644 (file)
@@ -34,7 +34,7 @@ struct Audio_item : public Audio_element {
    */
   Request* req_l_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;    
+      
 protected:
   virtual void do_print () const;
   
@@ -45,7 +45,7 @@ private:
 
 struct Audio_key : public Audio_item {
   Audio_key (Request* req_l);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   virtual Midi_item* midi_item_p();
 };
 
@@ -53,11 +53,11 @@ struct Audio_instrument : public Audio_item {
   Audio_instrument (String instrument_str);
   virtual Midi_item* midi_item_p();
   String str_;
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
 };
                                       
 struct Audio_note : public Audio_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Audio_note (Request* req_l, int transposing_i = 0);
   virtual Midi_item* midi_item_p();
   int transposing_i_;
@@ -68,7 +68,7 @@ struct Audio_text : Audio_item {
     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
     MARKER, CUE_POINT
   };
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Audio_text (Audio_text::Type type, String text_str);
   virtual Midi_item* midi_item_p();
 
@@ -79,14 +79,14 @@ struct Audio_text : Audio_item {
 struct Audio_tempo : Audio_item {
   Audio_tempo (int per_minute_4_i);
   virtual Midi_item* midi_item_p();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   int per_minute_4_i_;
 };
 
 struct Audio_time_signature : Audio_item {
   Audio_time_signature (Request* req_l);
   virtual Midi_item* midi_item_p();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // AUDIO_ITEM_HH
index 3d13b28d6196ecfc38dbd36a7c580cce9b5b2059..b49c4596e33839882477148e7a778050f7012780 100644 (file)
@@ -17,7 +17,7 @@ struct Audio_staff : public Audio_element {
     void output (Midi_stream& midi_stream_r, int track_i);
 
     Link_list<Audio_item*> audio_item_l_list_;
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
 };
 
 #endif // AUDIO_STAFF_HH
index f753b9015f09cdb30e8bb919ae3b671135a7ff2f..a871d8e3df0fe8227d32e2910cf8a78ba9558456 100644 (file)
@@ -31,7 +31,7 @@ public:
   Axis_group_element();  
   virtual Link_array<Score_element> get_children ();
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // AXIS_GROUP_ELEMENT_HH
index be1a78b6ca0fcf9955b2d8effc5a5ab67a9233c6..fcd5c6de4c00b8df61455109969dbd4a8f4fe764 100644 (file)
@@ -31,7 +31,7 @@ protected:
     Axis_group_element::do_unlink();
   }
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // AXIS_ITEM_HH
index 15022e2d800c20110a4bb86b8d068724c7b1cd82..42cdf2d4c9f8236f9fd799007a9baea2f6fa7b48 100644 (file)
@@ -31,7 +31,7 @@ protected:
   virtual void do_print() const;
 
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // SPAN_AXIS_GROUP_HH
index 1c186b6385e1e695a49b35eef4656dbbee606900..2cb233b295ac699f3cd173bf0ae2a3faa58a7028 100644 (file)
@@ -29,9 +29,9 @@ protected:
   virtual void do_process_requests ();
   virtual void do_post_move_processing();
 public:
-  TRANSLATOR_CLONE(Bar_column_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Bar_column_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // BAR_COLUMN_GRAV_HH
index 2db6cbe2640080fd5c32d8aa22363a3a813a8140..8e9219c2a03668924502658b6e1213bfe2c67d35 100644 (file)
@@ -22,9 +22,9 @@ public:
     Bar_column();
     void set_bar (Bar*);
 protected:
-    SCORE_ELEMENT_CLONE(Bar_column);
+    VIRTUAL_COPY_CONS(Score_element);
     void do_substitute_dependency (Score_element*,Score_element*);
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
 };
 
 #endif // BAR_COLUMN_HH
index 151adf2926a4437a08dedb6b9e0bffa07238cab5..755692397e92fed2f0e7164cbfa746e538ab2164 100644 (file)
@@ -20,15 +20,15 @@ class Bar_engraver : public Engraver {
 
   void create_bar ();
 public:
-  TRANSLATOR_CLONE(Bar_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Bar_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
      
 protected:
   virtual void do_creation_processing ();
   virtual void do_removal_processing ();
-  virtual bool do_try_request (Request *req_l);
+  virtual bool do_try_music (Music *req_l);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
index 69caa55095c68aeb9b2118adfd9524a61b8a285a..0497ff76d0e8d83acad31527b01faae9d85ac030 100644 (file)
@@ -22,8 +22,8 @@ protected:
   void acknowledge_element (Score_element_info);
   void do_pre_move_processing();
 public:
-  TRANSLATOR_CLONE(Bar_number_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Bar_number_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 #endif // BAR_NUMBER_GRAV_HH
index c00677cc0fdb5d25d27c54633759d3012d20668e..a221be0fd5f68da677c55344762c550b1e7b8eeb 100644 (file)
@@ -16,8 +16,8 @@ class Bar:public Item {
 public:
   String type_str_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE (Bar);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   Bar ();
 
 protected:
index ccb96d15bf52933adbce9e99448c99b41dda9980..bab1e82f8a5739e1f632515dc8faf522c8eb21a7 100644 (file)
@@ -23,13 +23,13 @@ class Beam_engraver : public Engraver
   Rhythmic_grouping *current_grouping_p_;
 
 public:
-  TRANSLATOR_CLONE(Beam_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Beam_engraver();
 protected:
   virtual void do_removal_processing();
   virtual void do_process_requests();
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
 };
index f6f59c8c9eb24f178eefdd837ee5966479073eb3..1e69dd7398376c7d146b46b594cf0192f70f1665 100644 (file)
@@ -39,13 +39,13 @@ public:
   int multiple_i_;
 
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Beam();
   void add_stem (Stem*);
 
   void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current);
   void set_stemlens ();
-  SCORE_ELEMENT_CLONE (Beam);
+  VIRTUAL_COPY_CONS(Score_element);
 
 protected:
   virtual Interval do_width () const;    
index 107cff07892b91a1229bf4537a735b05278ac8d5..6398942b988a1fbb9c8a0454804015694d8f8642 100644 (file)
@@ -23,7 +23,7 @@ public:
   Bow ();
   Offset center () const;  
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   int dash_i_;
 
index 6b5a1e4014b46adc2e539923cfed4f28e816e148..04ab073f86e2f50369e0a81c77574750da90ea18 100644 (file)
@@ -18,8 +18,8 @@ class Break_align_item : public Horizontal_align_item {
 protected:
     virtual void do_pre_processing();
 public:
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEMENT_CLONE(Break_align_item);
+    
+    VIRTUAL_COPY_CONS(Score_element);
        
 };
 #endif // BREAK_ALIGN_ITEM_HH
index 409b3a648d0ed2e68fa83d3fdc0371dca05562ed..18c0a5cc9aaf01a13127766b12099c96adeeb143 100644 (file)
@@ -19,7 +19,7 @@ class Change_iterator : public Music_iterator
   void  error (String);
   
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_process_and_next (Moment);
 };
index b369462ca2b5c1c9c383337e5076e1ea5f7db392..a531f55e5ecbbd23eaabf87e4bc84aecd0fb79de 100644 (file)
@@ -17,9 +17,9 @@ class Change_translator : public Music
 public:
   String change_to_type_str_;
   String change_to_id_str_;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
-  VIRTUAL_COPY_CONS(Change_translator, Music);
+  VIRTUAL_COPY_CONS(Music);
   void do_print () const;
 };
 
index 0ce4d63a3276a7e34997d7440321c9cb9e8f0cb1..b66e4e8c06c5ffe0e065f7bc9bd25b2c1ef46b9d 100644 (file)
@@ -19,7 +19,7 @@ class Simultaneous_music_iterator : public Music_iterator
   Simultaneous_music *simultaneous_music_l() const;
   Pointer_list<Music_iterator*> children_p_list_;
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_print() const;
   virtual void construct_children();
index ca827b1583032d70ca3289546031b3c058fa2cb0..1e877683a22969bed8c2dd0e6136aa55543d60d6 100644 (file)
@@ -28,10 +28,10 @@ protected:
   virtual void do_removal_processing();
   virtual void do_creation_processing();
   virtual void do_post_move_processing();
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void acknowledge_element (Score_element_info);
 public:
-  TRANSLATOR_CLONE(Clef_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   int c0_position_i_;
   int clef_position_i_;
   Direction octave_dir_;
@@ -39,7 +39,7 @@ public:
 
    
   Clef_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
    
 };
 #endif 
index 10a3f21409924cd83c4173c77d594d154a55ba51..d9fa6fbdf849c3958961b93a5e9fd175ece18fa6 100644 (file)
@@ -35,8 +35,8 @@ public:
   /// text def to put above/below clef?
   P<Text_def> octave_marker_td_p_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Clef_item);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   Clef_item();
 };
 
index d4a674f04e43730c58dd0bbc1a8ec6ce5bdb9030..0f26cf9e15558ae5aa7fe8a4d888f3657291162e 100644 (file)
@@ -21,8 +21,8 @@ protected:
   virtual void process_acknowledged ();
   virtual void do_pre_move_processing();
 public:
-  TRANSLATOR_CLONE(Collision_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Collision_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 #endif // COLLISION_GRAV_HH
index 9a7505163bc38867a7cdf46d852e71fb3bbb3c8b..2ae0c93e8240a281825bb8641d779508bfc3777d 100644 (file)
@@ -26,7 +26,7 @@ protected:
     virtual void do_pre_processing();
 public:
     Link_array<Note_column> clash_l_arr_;
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
     void add_column (Note_column*ncol_l);
     Collision();
 };
index 84b92abe3dea5feac299ea08f4cee3d9af904a23..0616345e872a5b6cce8e880988288b477ae469b3 100644 (file)
@@ -17,7 +17,7 @@ class Compressed_music_iterator : public Music_wrapper_iterator
 public:
   Bracket_req* start_req_p_;
   Bracket_req* stop_req_p_;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Compressed_music_iterator();
   ~Compressed_music_iterator ();
   virtual void do_process_and_next (Moment);
index f234b7497b48d91fbda0f4d19f64c0f1b8ff4e75..56b51010fcc0f9c3ff650c8e4c3a15a7ee7719fd 100644 (file)
@@ -21,8 +21,8 @@ public:
   int den_i_;
 
   Compressed_music (int, int, Music *);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS (Compressed_music, Music);
+  
+  VIRTUAL_COPY_CONS(Music);
 };
 
 #endif /* COMPRESSED_MUSIC_HH */
index 02a311c60efdd1b2366609d3c9691ee9da90b107..28f42dbb61633db6e7f923ba17a41ead45de6afb 100644 (file)
@@ -24,10 +24,10 @@ public:
 
   Crescendo();
 protected:
-  SCORE_ELEMENT_CLONE(Crescendo);
+  VIRTUAL_COPY_CONS(Score_element);
   virtual Molecule*brew_molecule_p() const;
   virtual Interval symbol_height() const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
     
 private:
   Atom get_symbol() const;
index 99594b12ce037a257f80e80502db4f34d9636594..c53d198e0f5259873820f2e8ec74348622a1a383 100644 (file)
@@ -18,7 +18,7 @@ public:
     Directional_spanner();
     
     /// offset of "center" relative to left-column/0-pos of staff
-    virtual Offset center() const=0;
+    virtual Offset center() const;
     virtual void set_default_dir();
 protected:
     virtual void do_pre_processing();
index 0454e41fec3719893f0ed25c6ffbb0fc37004141..67b1251985070a7e582b7269690ef28ec36b1ecb 100644 (file)
@@ -17,9 +17,9 @@ class Dot_column_engraver : public Engraver
   Dot_column *dotcol_p_ ;
   Link_array<Rhythmic_head> head_l_arr_;
 public:
-  TRANSLATOR_CLONE(Dot_column_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Dot_column_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing ();  
index aa197cd7a327bdb69252f0ef786ef21420e720a9..a2f49afba8970b2fa4dad4b13cacc0ac48c781e7 100644 (file)
@@ -21,7 +21,7 @@ class Dot_column : public Horizontal_group_item
   Link_array<Dots> dot_l_arr_;
 
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   void add_head (Rhythmic_head*);
   void add_dots (Dots*);
 
index 4c17ab42c100693e239b1bfb90d36c91907c7424..bb7ab8489f7cd18c9ddd6ab4bdddc68c5e41219e 100644 (file)
@@ -25,7 +25,7 @@ public:
   int no_dots_i_;
   int position_i_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Dots ();
 };
 
index d4add0675542630a9e4c746437a566a5359bb53a..c23020436b57829dce1256d497affec2a8efbfc9 100644 (file)
@@ -20,13 +20,13 @@ class Dynamic_engraver : public Engraver {
   Span_dynamic_req * cresc_req_l_;
   Array<Dynamic_req*> dynamic_req_l_arr_;
 public:
-  TRANSLATOR_CLONE(Dynamic_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Dynamic_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_removal_processing ();
   virtual void acknowledge_element (Score_element_info);
-  virtual bool do_try_request (Request *req_l);
+  virtual bool do_try_music (Music *req_l);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
index 636842ce77c8e358ba57027d939085ceb7e4c629..1846b15a25e0921c8feca6044f01fca07874e6d5 100644 (file)
@@ -28,11 +28,11 @@ class Engraver_group_engraver : public Engraver,
 protected:
   Array<Score_element_info> announce_info_arr_;
 public:
-  TRANSLATOR_CLONE(Engraver_group_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Engraver_group_engraver();
   ~Engraver_group_engraver();
     
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
     
   virtual Staff_info get_staff_info() const;
   virtual void do_announces();
index 1b73406b84653c7e4b0bf5ad51c59a07ede6f18b..220b079832017e9282990c4d42edb80afd5803c0 100644 (file)
@@ -63,14 +63,14 @@ protected:
   virtual void fill_staff_info (Staff_info&);
 
 public:
-  TRANSLATOR_CLONE(Engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Engraver_group_engraver * daddy_grav_l() const;
   /**
     override other ctor
    */
   Engraver () {}
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 
diff --git a/lily/include/extender-engraver.hh b/lily/include/extender-engraver.hh
new file mode 100644 (file)
index 0000000..26484f6
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+  extender-engraver.hh -- declare Extender_engraver
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef EXTENDER_ENGRAVER_HH
+#define EXTENDER_ENGRAVER_HH
+
+#include "engraver.hh"
+#include "drul-array.hh"
+#include "extender-spanner.hh"
+
+/**
+  Generate an extender.
+  Should make an Extender_spanner that typesets a nice extender line.
+ */
+class Extender_engraver : public Engraver
+{
+public:
+  Extender_engraver ();
+  VIRTUAL_COPY_CONS (Translator);
+
+protected:
+  virtual void acknowledge_element (Score_element_info);
+  virtual void do_removal_processing();
+  virtual void do_process_requests();
+  virtual bool do_try_music (Music*);
+  virtual void do_pre_move_processing();
+  
+private:
+  Drul_array<Extender_req*> span_reqs_drul_;
+  Drul_array<Moment> span_mom_drul_;
+  Extender_spanner* extender_spanner_p_;
+};
+
+#endif // EXTENDER_ENGRAVER_HH
diff --git a/lily/include/extender-spanner.hh b/lily/include/extender-spanner.hh
new file mode 100644 (file)
index 0000000..1994734
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+  extender-spanner.hh -- part of GNU LilyPond
+
+  (c)  1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef EXTENDER_SPANNER_HH
+#define EXTENDER_SPANNER_HH
+
+#include "directional-spanner.hh"
+
+/** 
+  simple extender line 
+
+  The extender is a simple line at the baseline of the lyric
+  that helps show the length of a melissima (tied/slurred note).
+
+  Extenders must be entered manually for now.
+
+  Although it would be possible for Lily to determine where to
+  put extender lines, it's quite a tricky thing to do.  Also,
+  this would demand quite strict lyrics entries.
+
+  Note: the extender is only used for one-syllable words, or
+  for on a word's last syllable.  The extender should be aligned
+  with the left side of the last note of the melissima, and not
+  extend beond, lasting the whole duration of the melissima
+  (as in MUP, urg).
+  */
+
+class Extender_spanner : public Directional_spanner
+{
+public:
+  Extender_spanner ();
+  virtual ~Extender_spanner ();
+
+  Offset center () const;  
+  void set_textitem (Direction, Text_item*);
+
+  Drul_array<Text_item *> textitem_l_drul_;
+protected:
+  virtual Molecule* brew_molecule_p () const;
+  void do_add_processing ();
+  Interval do_height () const;
+  void do_substitute_dependency (Score_element* o, Score_element* n);
+  void do_post_processing ();
+  VIRTUAL_COPY_CONS (Score_element);
+
+  Extender_spanner (Extender_spanner const&);
+
+  Drul_array<Real> dy_f_drul_;
+  Drul_array<Real> dx_f_drul_;
+};
+
+#endif // EXTENDER_SPANNER_HH
+
index a108408bb58e20141e2bfbf263d5a1dc7c0f1989..77414aa936f950dede29e03b52fd72d51305964b 100644 (file)
@@ -19,8 +19,8 @@ protected:
   virtual void  do_process_requests ();
 public:
   Font_size_engraver ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE (Font_size_engraver);
+  
+  VIRTUAL_COPY_CONS (Translator);
 };
 
 #endif /* FONT_SIZE_GRAV_HH */
index cc6b1e6adcb55c0cea200fd7a39831095a74e75c..2cd36becb66deee947b56b8024e728c6f635f5a1 100644 (file)
@@ -20,8 +20,8 @@
  */
 class General_script_def : public Input {
 public:
-  VIRTUAL_COPY_CONS(General_script_def,General_script_def);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(General_script_def);
+  
   virtual Direction staff_dir() const;
   void print() const;
   virtual Direction rel_stem_dir() const;
index b4381eb70341e3b72a3d54a10ee2601623e94c6b..0e12f150fd97997ed58518b2f92760733c03b280 100644 (file)
@@ -17,7 +17,7 @@
 class Global_translator : public virtual Translator_group{
   PQueue<Moment> extra_mom_pq_;
 public:
-  TRANSLATOR_CLONE(Global_translator);
+  VIRTUAL_COPY_CONS(Translator);
   Moment last_mom_;
   Moment now_mom_;
   Global_translator();
@@ -32,7 +32,7 @@ public:
   virtual void finish() {}
   virtual void start() {}
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual Moment now_moment () const;
   virtual Global_translator *global_l() { return this; }
index 17ac4b9481b5311b9753de3fb3360fd1b4af005e..f9df7df3e8fb2fc2a57fdd9d05c7f6c0e09db9b5 100644 (file)
@@ -34,7 +34,7 @@ public:
   bool contains_b (Graphical_element const *) const;
   void add_element (Graphical_element*);
   void remove_element (Graphical_element*);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // Graphical_axis_group_HH
index d6bd8babe62b225178a9d865b3e6706c1a433c1f..b74fe14535108f73c0da083bb93f6cb37c6e4542 100644 (file)
@@ -36,7 +36,7 @@ public:
 
   bool empty_b () const;
   
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   
   Graphical_axis_group * axis_group_l_a_[NO_AXES];
   
index 531322bf720cc72c16fa05485eecf9c57697d5a5..33dc70d80ff4d592bc0221ddf6bc6f7a561c107c 100644 (file)
@@ -21,7 +21,7 @@
 class Graphical_lisp_element 
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Graphical_lisp_element (String);
 
index e1d21bcdc15e0fce55cd5df84aeca4c399d65556..f894439e9d72da05d35b63ab7c19d0ebb1db0cee 100644 (file)
@@ -19,8 +19,7 @@
 class Hara_kiri_line_group_engraver : public Line_group_engraver_group
 {
 public:
-  TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS (Translator);
 
 protected:
   virtual void create_line_spanner ();
index 8492d976f687a35d96388f26f9e6cfa2c332ce68..15ad5d04052310f31c338babfe89e3e557a15f0c 100644 (file)
 class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Hara_kiri_vertical_group_spanner ();
   virtual void do_post_processing ();
   void add_note (Note_head* n);
 
 protected:
-  SCORE_ELEMENT_CLONE (Hara_kiri_vertical_group_spanner);
+  VIRTUAL_COPY_CONS(Score_element);
 
   virtual void do_substitute_dependency (Score_element*, Score_element*);
   virtual void do_print ()const;
index c00d46f330fc9c4a7732ccf472fac85e03d5b45c..dd8f7081c67f44a40da15308df5237a90fb3c268 100644 (file)
@@ -18,11 +18,11 @@ class Note_heads_engraver : public Engraver {
   Link_array<Note_req> note_req_l_arr_;
 
 public:
-  TRANSLATOR_CLONE(Note_heads_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Note_heads_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
-  virtual bool do_try_request (Request *req_l) ;
+  virtual bool do_try_music (Music *req_l) ;
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
index 20ef3a43364d3797e462d1273a28393b0c0d57a1..c671bf50e67c17995959a2ce6f3994df4d8e1971 100644 (file)
@@ -20,8 +20,8 @@
   */
 class Horizontal_align_item : public Item , public Align_element {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Horizontal_align_item);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   void add_item (Item*, int p);
   Horizontal_align_item();
   virtual void do_print() const;
index f3c5d586ae2fcd2144fafc603b147dc3cd1cf298..7dd99e8577deebe60875b2faffbe8f9f9fa5a18a 100644 (file)
@@ -22,7 +22,7 @@ protected:
 
 public:
   Horizontal_group_element ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 
index 8c6f9ea7b98c8afc5606e79456e1f5391dd6eb78..89ab8b5fcb3dc60c58a49c3afb04965a1a571046 100644 (file)
@@ -27,8 +27,8 @@ protected:
   virtual void do_print() const;
 public:
   Horizontal_group_item ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Horizontal_group_item);
+  
+  VIRTUAL_COPY_CONS(Score_element);
 };
 
 #endif // HORIZONTAL_GROUP_ITEM_HH
index 520170beae681c1d43793887fdbc0f5ca0fe0457..8de40e721afb11a0b0cca211288e42ca0e06ae97 100644 (file)
@@ -24,7 +24,7 @@ protected:
 public:
   Horizontal_vertical_group_element ();
   
-  DECLARE_MY_RUNTIME_TYPEINFO;    
+      
 };
 
 
index 181d88ee4f6bab03ee8ab650711ff9ae621ddeb2..4b6ad7edcadbd5816fe9c630b525c3c7fa0d5400 100644 (file)
@@ -23,11 +23,11 @@ protected:
   virtual void do_unlink () {
     Axis_group_item::do_unlink ();
   }
-  SCORE_ELEMENT_CLONE(Horizontal_vertical_group_item);
+  VIRTUAL_COPY_CONS(Score_element);
 public:
   Horizontal_vertical_group_item ();
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // HORIZONTAL_VERTICAL_GROUP_ITEM_HH
index 66644eeef3898a2c93bd3abf5b913f241a7fad67..4ba4d10aefdca51f4dbf3706e9326a2425947620 100644 (file)
@@ -48,7 +48,7 @@ struct Identifier : public Input {
 
 
   void print() const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   void error (String) const;
   String str () const;
   IDACCESSOR(Translator)
@@ -64,7 +64,7 @@ struct Identifier : public Input {
   IDACCESSOR(Score)
   IDACCESSOR(int)
   IDACCESSOR(Duration)
-  VIRTUAL_COPY_CONS (Identifier, Identifier);
+  VIRTUAL_COPY_CONS(Identifier);
 
 protected:
   virtual void do_print () const;
@@ -74,10 +74,10 @@ protected:
 #define DECLARE_ID_CLASS(Class)        \
 struct Class ## _identifier : Identifier {\
                             Class *data_p_;                 \
-                            DECLARE_MY_RUNTIME_TYPEINFO; \
+                             \
                             Class ## _identifier (Class ## _identifier const&);\
                             Class ## _identifier (Class*st, int code);\
-                            VIRTUAL_COPY_CONS (Class ## _identifier, Identifier);\
+                            VIRTUAL_COPY_CONS(Identifier);\
                             virtual Class* access_content_ ## Class (bool copy_b) const;\
                             ~Class ## _identifier();\
                             virtual void do_print () const; \
index ec0e1ae0988203db3a3ae324d98dc6b14f26cac3..80b39df71cdc79d1ddb3d6764a2b20e84bf792ad 100644 (file)
@@ -42,7 +42,7 @@ public:
 
   Item();
   Real hpos_f() const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   virtual Line_of_score * line_l() const;
   virtual Paper_column * column_l () const;
     
index ce154b12da2496c893b64e29041c218de0be490c..ed7e241100fb04ac553169c87393f461b60aa973 100644 (file)
@@ -23,8 +23,8 @@ class Key_engraver : public Engraver {
 
 public:
   Key_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE(Key_engraver);
+  
+  VIRTUAL_COPY_CONS(Translator);
   Key key_;
   Key_change_req * keyreq_l_;
   Key_item * kit_p_;
@@ -34,7 +34,7 @@ public:
   bool change_key_b_;
     
 protected:
-  virtual bool do_try_request (Request *req_l);
+  virtual bool do_try_music (Music *req_l);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
index e259c145e7400f2c797fcbdc767fbe17d1612550..b6d72f83b124c13a8344275a6e502ce652b4c4e5 100644 (file)
@@ -25,8 +25,8 @@ struct Key_item : Item {
   bool default_b_;
   bool multi_octave_b_;
     
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Key_item);
+  
+  VIRTUAL_COPY_CONS(Score_element);
 
   Key_item ();
   void add (int pitch, int acc);
index 406ae94aebacf46ea634828868ca641c66c4a531..5779b35c049e049e168323d37e0674ff811f7e3f 100644 (file)
 
 class Key_performer : public Performer {
 public:
-  TRANSLATOR_CLONE(Key_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Key_performer();
   ~Key_performer();
 
 protected:
   void do_print() const;
-  virtual bool do_try_request (Request* req_l);
+  virtual bool do_try_music (Music* req_l);
   virtual void do_process_requests();
 
 private:
index 0ac8ebf0cca5081a675d3f2893e15374e570f7ad..52f3674b5229c4a42d8ab85bdec88cdfa8f54df5 100644 (file)
@@ -75,6 +75,8 @@ struct Dynamic_req;
 struct Element_group;
 struct Element_group_item;
 struct Engraver_group_engraver;
+struct Extender;
+struct Extender_req;
 struct General_script_def;
 struct Graphical_element;
 
index c31fc755d539e67356243020b73d42e536b2c7a9..bf6f67f432b25429eb8aae262ae4c74209f9d915 100644 (file)
@@ -27,8 +27,8 @@ protected:
 virtual void do_announces ();
 
 public:
-  TRANSLATOR_CLONE(Line_group_engraver_group);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Line_group_engraver_group();
 };
 
index 2d0904f3125fbec18206933bf24b587f28959cfa..ab91f4d1f8e882fadce0dab0cf96bffb72822a21 100644 (file)
@@ -18,7 +18,7 @@ public:
   Link_array<Paper_column> cols;
   bool error_mark_b_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Line_of_score();
     
   void add_element (Score_element *);
@@ -37,7 +37,7 @@ protected:
 
   virtual Interval do_width() const;
   virtual void do_print() const;
-  SCORE_ELEMENT_CLONE(Line_of_score);
+  VIRTUAL_COPY_CONS(Score_element);
 };
 
 #endif
index 7599d08d9ae32bb90dd73bcf0b64bfd097f85809..621daa786020934716ad0aef01f39becd80dac3d 100644 (file)
@@ -15,7 +15,7 @@
 struct Local_key_engraver : Engraver {
     Local_key_item *key_item_p_;
 protected:
-  TRANSLATOR_CLONE(Local_key_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   virtual void do_process_requests();
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
@@ -30,7 +30,7 @@ public:
   Link_array<Item  > forced_l_arr_;
   Link_array<Item > tied_l_arr_;
   Local_key_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // LOCALKEYGRAV_HH
index 7da65e532f7e2467bd2d8ffbde629b87b475e9c4..5d79466feb4c32983209211b4ab382e7f026e4bf 100644 (file)
@@ -23,7 +23,7 @@
  */
 class Local_key_item : public Item {
 public:
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
     Array<Musical_pitch> accidental_pitch_arr_;
     Link_array<Item> support_items_;
     int c0_position_i_;
index 9b006156228e3489145355f1b9d60e85449022f7..5b5685a40c6c95ee40b3667d32e5278c0c65bdc7 100644 (file)
@@ -40,6 +40,7 @@ public:
   Atom dashed_slur (Array<Offset> controls, Real thick, Real dash) const;
   Atom dots () const;
   Atom dynamic (String) const;
+  Atom extender (Real) const;
   Atom fill (Box b) const;
   Atom flag (int, Direction) const;
   Atom hairpin (Real width, bool decresc, bool continued) const;
index ec85670f73ce1b7e65d29454e7dccad2507f1d3c..47a2b58bb199fb6fbedd5a32815f17c541d03e21 100644 (file)
 #include "lily-proto.hh"
 
 class Lyric_engraver : public Engraver {
-    Lyric_req* lreq_l_;
-    Text_item *lyric_item_p_;
+  Lyric_req* lreq_l_;
+  Text_item *lyric_item_p_;
 protected:
-    virtual void do_pre_move_processing();
-    virtual bool do_try_request (Request*);
-    virtual void do_process_requests();
-    virtual void do_post_move_processing();
+  virtual void do_pre_move_processing();
+  virtual bool do_try_music (Music*);
+  virtual void do_process_requests();
+  virtual void do_post_move_processing();
 public:
-  TRANSLATOR_CLONE(Lyric_engraver);
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    Lyric_engraver();
+  VIRTUAL_COPY_CONS(Translator);
+    
+  Lyric_engraver();
 };
 #endif // LYRIC_ENGRAVER_HH
index df77b0f02878924915e46b214d9e526a9b3ec5ac..4f83376ad469f3c4c073599ce3a4774cac9ab75e 100644 (file)
 
 class Lyric_performer : public Performer {
 public:
-  TRANSLATOR_CLONE(Lyric_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
 protected:
   void do_print() const;
-  virtual bool do_try_request (Request* req_l);
+  virtual bool do_try_music (Music* req_l);
   virtual void do_process_requests();
 
 private:
index b0956693414fc040c8772f53054ffae20f4844fc..4f37566fac8ee25397dab2d13c7f3ea67e9d7ead 100644 (file)
@@ -19,11 +19,11 @@ class Mark_engraver : public Engraver
 public:
   Mark_engraver ();
 
-  TRANSLATOR_CLONE(Mark_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
 protected:
-  virtual bool do_try_request (Request *req_l);
+  virtual bool do_try_music (Music *req_l);
   virtual void do_process_requests ();
   virtual void do_pre_move_processing ();
 
index fcb608efe340759393607aceb3be86d674457609..ef0029b418fbc84aa3db5f0eef454db3d296bfbf 100644 (file)
@@ -21,9 +21,9 @@
  */
 class Midi_def : public Music_output_def {
   static int default_count_i_;
+  int count_per_minute_i;  
 public:
-  VIRTUAL_COPY_CONS(Midi_def, Music_output_def);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Music_output_def);
 
   /// duration of whole note measured in seconds.
   Moment whole_in_seconds_mom_;
index 526504f14efadfb6a439207b57607df887646028..5b3eaf6a1a5484e4e8e858124ca7236ed5a91079 100644 (file)
@@ -20,7 +20,7 @@
   Maybe use base classes for RIFF files?
  */
 struct Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_item (Audio_item* audio_item_l); 
   virtual ~Midi_item ();
   static String i2varint_str (int i);
@@ -50,7 +50,7 @@ struct Midi_event
   variable sized MIDI data
  */
 struct Midi_chunk : Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_chunk ();
 
   void set (String header_str, String data_str, String footer_str);
@@ -64,7 +64,7 @@ private:
 };
 
 struct Midi_duration : public Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_duration (Real seconds_f);
 
   virtual String str () const;
@@ -72,7 +72,7 @@ struct Midi_duration : public Midi_item {
 };
 
 struct Midi_header : Midi_chunk {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Midi_header (int format_i, int tracks_i, int clocks_per_4_i);
 };
@@ -81,7 +81,7 @@ struct Midi_header : Midi_chunk {
   Change instrument event
  */
 struct Midi_instrument : public Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_instrument (int channel_i, String instrument_str);
 
   virtual String str () const;
@@ -90,7 +90,7 @@ struct Midi_instrument : public Midi_item {
                                       
 
 struct Midi_key : public Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_key (Audio_item* audio_item_l);
        
   virtual String str () const;
@@ -98,7 +98,7 @@ struct Midi_key : public Midi_item {
 
 struct Midi_time_signature : Midi_item {
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_time_signature (Audio_item* audio_item_l); 
   
   virtual String str () const;
@@ -109,7 +109,7 @@ struct Midi_time_signature : Midi_item {
   Turn a note on (blond).
  */
 struct Midi_note : public Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_note (Audio_item* audio_item_l); 
 
   Moment duration () const;
@@ -124,7 +124,7 @@ struct Midi_note : public Midi_item {
   Turn a note off (dark).
  */
 struct Midi_note_off : public Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_note_off (Midi_note*); 
 
   int pitch_i () const;
@@ -134,7 +134,7 @@ struct Midi_note_off : public Midi_item {
 };
 
 struct Midi_text : Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
     
   enum Type { 
     TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, 
@@ -150,7 +150,7 @@ struct Midi_text : Midi_item {
 };
 
 struct Midi_tempo : Midi_item {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Midi_tempo (int per_minute_4_i);
   Midi_tempo (Audio_item* audio_item_l); 
   
@@ -160,7 +160,7 @@ struct Midi_tempo : Midi_item {
 };
 
 struct Midi_track : Midi_chunk {
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   int number_i_;
   Pointer_list<Midi_event*> event_p_list_;
     
index abb17be6e4178562d1f63bc0337d09edfeda40cc..4b54fa417cb40a52ac19892338e6ea4438fcbb53 100644 (file)
 class Multi_measure_rest_engraver : public Engraver
 {
 public:
-  TRANSLATOR_CLONE(Multi_measure_rest_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Multi_measure_rest_engraver ();
 
 protected:
   virtual void do_process_requests ();
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void do_pre_move_processing ();
   virtual void do_post_move_processing ();
 private:
index 66cf89d004c6a86674a12a0b8b001dd103c310dc..01b1c09e235201ab4600a04a90e3f031c8cdbc30 100644 (file)
@@ -18,7 +18,7 @@ public:
   Multi_measure_rest ();
   int measures_i_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
 protected:
   virtual void do_print () const;
index e7bda4c554fc5d8f3b82027a91ac21fcdd30b9a3..38dff72bd3b597dd025309cd82626fcaca907f0c 100644 (file)
@@ -32,7 +32,7 @@ protected:
   void inherit_info (Music_iterator const *parent);
 public:
   Translator_group*report_to_l() const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
  
   static Music_iterator* static_get_iterator_p (Music const*,Translator_group*);
   Music_iterator();
index 477ab2465ffbab164d3c2f89eb246736e342b823..a87cb8d4dd89c8c60d354831b7a53dcd51c80579 100644 (file)
@@ -34,8 +34,8 @@ public:
 
   Music_sequence (Music_sequence const&);
   Music_sequence (Music_list *l_p);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS(Music_sequence,Music);
+  
+  VIRTUAL_COPY_CONS(Music);
 
   virtual void transpose (Musical_pitch );
   virtual void compress (Moment);
@@ -50,8 +50,8 @@ protected:
 class Simultaneous_music : public Music_sequence
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS(Simultaneous_music,Music);
+  
+  VIRTUAL_COPY_CONS(Music);
   
   Simultaneous_music(Music_list *);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
@@ -65,8 +65,8 @@ public:
 class Request_chord : public Simultaneous_music
 {
 public:
-  VIRTUAL_COPY_CONS(Request_chord, Music);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Music);
+  
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   Request_chord();
 };
@@ -76,8 +76,8 @@ public:
 class Sequential_music : public Music_sequence
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS(Sequential_music, Music);
+  
+  VIRTUAL_COPY_CONS(Music);
 
   virtual Musical_pitch to_relative_octave (Musical_pitch);
   Sequential_music(Music_list*);
index 5940cc417738e83fe285cbec42671c9f636991bb..bc83ff39aaeec7687d9c1fc9142701ec4f3d7294 100644 (file)
@@ -34,8 +34,8 @@ public:
   Music_output_def ();
   virtual ~Music_output_def ();
 
-  VIRTUAL_COPY_CONS(Music_output_def, Music_output_def);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Music_output_def);
+  
   virtual void print () const;
 
   Global_translator *get_global_translator_p ();
index 114704e1523a08c071231d81e43821f6ba6a5c54..02a4e97fa0089fd9a415054bb6308957d3190f31 100644 (file)
@@ -25,7 +25,7 @@ public:
   virtual void do_process_and_next (Moment) ;
   virtual Moment next_moment () const;
   virtual bool ok () const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif /* MUSIC_WRAPPER_ITERATOR_HH */
index 7c60c91dda101833123311d7226f05b6c2282c4d..afb153e5ca66cd477319e748bbe8b88aed804e44 100644 (file)
@@ -20,8 +20,8 @@ public:
   Music_wrapper (Music*);
   virtual void transpose (Musical_pitch);
   virtual void do_print () const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS (Music_wrapper, Music);
+  
+  VIRTUAL_COPY_CONS(Music);
   Music_wrapper (Music_wrapper const&);
   virtual Moment  duration () const;
   virtual ~Music_wrapper ();
index efb2f712ee2681f8a4d38bfaf0d5525aecb93cb8..8f30e4469821cf537ab226714d3dfef3ad6ae47c 100644 (file)
@@ -53,8 +53,8 @@ public:
 
   /// Scale the music in time by #factor#.
   virtual void compress (Moment factor);
-  VIRTUAL_COPY_CONS(Music,Music);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Music);
+  
   Music();
 protected:
   virtual void do_print() const;
index 1891986303a2d39128a8d44e3d37d812c20ed034..c88ef382c4ba0921214526c3c03e0a9f4bbcdf56 100644 (file)
@@ -174,7 +174,7 @@ public:
 
 };
 
-/// a plet (bracket with) number
+/// a tuplet (bracket with) number
 class Plet_req : public Musical_span_req  {
 public:
   int plet_i_;
@@ -183,6 +183,13 @@ public:
   Plet_req ();
 };
 
+/// an extender line
+class Extender_req : public Musical_span_req  {
+public:
+  REQUESTMETHODS(Extender_req);
+  Extender_req ();
+};
+
 class Musical_script_req : public Musical_req,  public Script_req {
 public:
   REQUESTMETHODS(Musical_script_req);
index 8024bb552ee63669fef34434cc8d70a20acec684..4e82dc909e19c1bdbd5fb6123ac047ae371b7d43 100644 (file)
@@ -39,6 +39,7 @@ public:
   int abbrev_beam_type_i_;
   int default_abbrev_i_;
   Duration default_duration_;
+  Extender_req* extender_req;
   Plet plet_;
   Scope *default_header_p_;
     
index 2dd32433559f56440438fe6a4cd738804c771f6c..23aff88156d2add2d3cc84b22debf9786bce3060 100644 (file)
@@ -38,7 +38,7 @@ public:
 
   void translate_rests(int dy);
         
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Note_column ();
   void set_stem (Stem*);
   void set_dotcol (Dot_column*);
index 07d3185a065e0d3ae691d7480f71e3258553a583..173cf33ea66db937ce8eb429ca8302828bb703a9 100644 (file)
@@ -17,7 +17,7 @@
 
 class Note_head : public Rhythmic_head {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   int position_i_;
     
index 057f61c4e7d84f83154d3e38c4c183f133d8af48..1e785b3d83dca59ba96e9f02f636ba6e6da8608e 100644 (file)
 
 class Note_performer : public Performer {
 public:
-  TRANSLATOR_CLONE(Note_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
   Note_performer();
 
 protected:
   virtual void do_process_requests();
 
-  virtual bool do_try_request (Request *req_l) ;
+  virtual bool do_try_music (Music *req_l) ;
   virtual void do_print() const;
 
 private:
index a6061778a9a27604d5544614a9277c04128196fa..f33c7b0b8d46dd15b397a35fba5c36444f6bf83a 100644 (file)
@@ -30,8 +30,8 @@
 
 class Paper_column : public Horizontal_group_item { 
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Paper_column);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   Drul_array< Array<Column_rod> > minimal_dists_arr_drul_;
 
   void preprocess ();
index 4195ca77f9d88ed1b65b18cf686e81af3223e9ea..67436644c4969e4936a2e2246bf02e0962209cdb 100644 (file)
@@ -40,11 +40,11 @@ class Paper_def : public Music_output_def
   static int default_count_i_;
 
 protected:
-  VIRTUAL_COPY_CONS(Paper_def,Music_output_def);
+  VIRTUAL_COPY_CONS(Music_output_def);
 
 public:    
   virtual ~Paper_def ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Array<Interval> shape_int_a_;
 
index 8c9c8aa8d865d479023cedcf8b4e92f18ccd69dc..6917badd17c30720aac7e382263a115dd3326040 100644 (file)
@@ -20,8 +20,8 @@
 
 class Performer_group_performer : public Performer, public virtual Translator_group {
 public:
-  TRANSLATOR_CLONE(Performer_group_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 };
 
 #endif // PERFORMER_GROUP_PERFORMER_HH
index 75fbeccf7eec1ec6107d40a5894d3b82e5b89291..4badbc608ce9e52f5c5852b0eb75be40d65a4075 100644 (file)
@@ -21,8 +21,8 @@
  */
 class Performer : public virtual Translator{
 public:
-  TRANSLATOR_CLONE(Performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Performer_group_performer* daddy_perf_l() const;
 protected:
   virtual int get_tempo_i() const;
index 2d094cab117abfbb4f17c662ae82a57f747541bc..afc7b43e6825e3ed30b481d4f780559538f4928b 100644 (file)
@@ -15,8 +15,8 @@
 class Piano_brace : public Span_score_bar
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Piano_brace);
+  
+  VIRTUAL_COPY_CONS(Score_element);
 
   /** make room for Staff_bracket.  Ugh.  Should use some kind of
     relation thingy.  */
index dbf432a53603e4e1e50ab93e63edb40bd6465846..4c2f2454343704f668e1d9907ffc3e015bb7adf9 100644 (file)
@@ -14,8 +14,8 @@
 
 class Pitch_squash_engraver : public Engraver {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE (Pitch_squash_engraver);
+  
+  VIRTUAL_COPY_CONS (Translator);
   virtual void acknowledge_element (Score_element_info);
   
 };
index 005a475bf63c44fbc6a2e3e89154f4a233c99b38..ee619a92a7e623e78079c5faaaca5069ac566de6 100644 (file)
 class Plet_engraver : public Engraver
 {
 public:
-  TRANSLATOR_CLONE(Plet_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Plet_engraver ();
 
 protected:
   virtual void acknowledge_element (Score_element_info);
   virtual void do_removal_processing();
   virtual void do_process_requests();
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void do_pre_move_processing();
   
 private:
index 0dbb142774a716bac806d05ed8cc1d9a7eb27ca4..1458589090538e635dfe9e0cfeb8d5aca1f4365d 100644 (file)
 class Plet_swallow_engraver : public Swallow_engraver 
 {
 public:
-  TRANSLATOR_CLONE(Plet_swallow_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
 protected:
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
 };
 
 #endif // PLET_SWALLOW_ENGRAVER_HH
index 5d91ac4e0335a4a4a469f1544b957e8640b783b7..6a64118847efa7858c5e043c716db1a9ff478648 100644 (file)
@@ -15,8 +15,8 @@
 class Priority_horizontal_align_engraver : public Engraver {
   Break_align_item * halign_p_;
 public:
-  TRANSLATOR_CLONE(Priority_horizontal_align_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Priority_horizontal_align_engraver();
 protected:
   virtual void acknowledge_element (Score_element_info);
index ea429a36a4aba307108019ce746ebab0d9df14a3..3dc7898c2bf1e2dd5ba579b0fc4734367850a686 100644 (file)
@@ -17,7 +17,7 @@ class Property_iterator : public Music_iterator
   Translation_property *property_l() const;
   
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_process_and_next (Moment);
 };
index 6137260d687143883553d253bf495e391e0e6cd0..3ed7ad45479bdc7411666e5a4bd5fe4a72826e4b 100644 (file)
@@ -19,8 +19,8 @@ public:
 
   void do_print () const;
   Relative_octave_music (Music*, Musical_pitch);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS (Relative_octave_music, Music);
+  
+  VIRTUAL_COPY_CONS(Music);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
 };
 
index 6d5cd95baf613353f5cfc3af46e926d723a8eb68..d374d5929f4af2fd31dd6979e484463252b3d3d9 100644 (file)
@@ -25,7 +25,7 @@ class Request_chord_iterator : public Music_iterator {
 
 public:
   Request_chord_iterator ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
 protected:
   virtual void do_process_and_next (Moment);
index 4394fce306e9e37fd7ba461f0c78275b63b9d4ab..bd90bde2aac510602aca46f143f17f5f9b45de59 100644 (file)
@@ -30,8 +30,8 @@ public:
     
   virtual ~Request(){}
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS(Request,Music);
+  
+  VIRTUAL_COPY_CONS(Music);
     
   bool equal_b (Request*) const;
 protected:
@@ -41,8 +41,8 @@ protected:
 
 
 #define REQUESTMETHODS(T)      \
-DECLARE_MY_RUNTIME_TYPEINFO;\
-VIRTUAL_COPY_CONS(T, Request);\
+\
+VIRTUAL_COPY_CONS(Request);\
 virtual void do_print() const
 
 
index c62c4e2e3ad037d947ee222d038a03e5f2330493..a1b3b4198e8c71e85e9d0ae7612338fdf2eb7319 100644 (file)
@@ -22,8 +22,8 @@ protected:
   virtual void process_acknowledged ();
   virtual void do_pre_move_processing();
 public:
-  TRANSLATOR_CLONE(Rest_collision_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Rest_collision_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 #endif // REST_COLLISION_GRAV_HH
index cc6bc84db87570d1f3f63947f1ba113aea8efe45..cfb1518093eefd2837e4136d8ed1f700da67d3a3 100644 (file)
@@ -18,7 +18,7 @@ class Rest_collision : public Item {
     Link_array<Note_column> ncol_l_arr_;
 public:
     void add_column (Note_column*);
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
     Rest_collision();
 protected:
     virtual void do_post_processing();
index 0081454fd7195eebb591cb2cb91e035595785111..757e948aadc6d6ac86865d793423faec5b529bd1 100644 (file)
@@ -18,13 +18,13 @@ class Rest_engraver : public Engraver
   Dots * dot_p_;
   Rest * rest_p_;
 protected:
-  virtual bool do_try_request (Request *);
+  virtual bool do_try_music (Music *);
   virtual void do_pre_move_processing ();
   virtual void do_post_move_processing ();
   virtual void do_process_requests ();
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE(Rest_engraver);
+  
+  VIRTUAL_COPY_CONS(Translator);
   Rest_engraver ();
 };
 #endif // REST_GRAV_HH
index 493472c0e72caefe697b899dac1ac6e1c08d4d37..2e0b3938c1c13628bfaed3e3f191a48f6dc0e006 100644 (file)
@@ -15,7 +15,7 @@
 class  Rest : public Rhythmic_head
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   
   int position_i_;
   Rest ();
index 207427117dcc0dcc11c692104fb6d6360ac7c8dc..1cf5962afcd4590b078c454794a35596bba83ea9 100644 (file)
@@ -21,14 +21,14 @@ class Rhythmic_column_engraver :public Engraver {
   Dot_column *dotcol_l_;
 
 protected:
-  TRANSLATOR_CLONE(Rhythmic_column_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   virtual void acknowledge_element (Score_element_info);
   virtual void process_acknowledged ();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
 public:
   Rhythmic_column_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 #endif // RHYTHMIC_COLUMN_GRAV_HH
 
index 4c11b50fd0767fb49fc423be8410298288c7a1ac..ab45f035737d6388fbf4ffd079f8130ce3859222 100644 (file)
@@ -15,7 +15,7 @@
 class Rhythmic_head : public Item
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
    
   int balltype_i_;
   int dots_i_;
index 83c8e0bbaa81d756627fafdf492e13d3e5c579ab..741f1412b943aef3962b91faac3d37b4ea90c83a 100644 (file)
@@ -18,8 +18,8 @@
  */
 class Score_bar : public virtual Bar {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Score_bar);
+  
+  VIRTUAL_COPY_CONS(Score_element);
 protected:
   void do_pre_processing ();
 };
index dfe944c5a589ccd7588959ddca8ff9ae24a29e37..50fd2afa89b22e9da99bd77c6a496dff2a3a3876 100644 (file)
@@ -35,8 +35,8 @@ class Score_column : public Paper_column {
 
 public:
   int break_penalty_i () { return break_penalty_i_; }
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Score_column);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   /// length of notes/rests in this column
   Array<Moment> durations;
     
index 9870cecb15324ecffd6f2b5d067c01d4bfdc0239..19586ede51c55ace81d796603af5fa1b4e54f33a 100644 (file)
   */
 struct Score_element_info {
     Score_element * elem_l_;
-
-    Request*req_l_;
+    Music *req_l_;
     Array<Engraver*> origin_grav_l_arr_;
 
-    Score_element_info (Score_element*, Request*);
-
+    Score_element_info (Score_element*, Music*);
     Score_element_info();
 };
 
index 4ad95c73718c13835cbcee0b565e46a59a496e84..2828e00fae0cea0a36c80f389734f39b83224b52 100644 (file)
@@ -12,7 +12,6 @@
 #include "directed-graph.hh"
 #include "graphical-element.hh"
 
-#define SCORE_ELEMENT_CLONE(T) VIRTUAL_COPY_CONS (T, Score_element)
 
 
 typedef void (Score_element::*Score_element_method_pointer) (void);
@@ -37,7 +36,7 @@ public:
   Lookup const *lookup_l () const;
 
   virtual ~Score_element ();
-  DECLARE_MY_RUNTIME_TYPEINFO;    
+      
 
   void add_processing ();
 
@@ -54,7 +53,7 @@ public:
 
   virtual Line_of_score * line_l () const;
   virtual bool linked_b () const;
-  SCORE_ELEMENT_CLONE (Score_element);
+  VIRTUAL_COPY_CONS(Score_element);
  
   /// do not print anything black
   bool transparent_b_;
index fae750a39a08a9ea22b6d47791c5a7821414e328..3dd921aaa73fa2a318c5488f8333383017ff9313 100644 (file)
@@ -32,9 +32,9 @@ class Score_engraver :
   void typeset_all();
     
 public:
-  TRANSLATOR_CLONE(Score_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Paper_score * pscore_p_;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Score_engraver();
   virtual Music_output *get_output_p ();  
@@ -47,7 +47,7 @@ protected:
 protected:
   /* Engraver_group_engraver interface */
   virtual Staff_info get_staff_info() const;
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void do_creation_processing();
   virtual void do_removal_processing();
   virtual void announce_element (Score_element_info);
index adb462a2dd325faa64740d411bfdf03590106a21..733fb86fef296f252431aaa2688baa9547c023d0 100644 (file)
@@ -18,8 +18,8 @@ class Score_performer:
   public Performer_group_performer, public Global_translator 
 {
 public:
-  TRANSLATOR_CLONE(Score_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Score_performer();
   ~Score_performer();
   Performance *performance_p_;
index c6827250b9eabf8c829eaae98f8433efa82095b5..d9d87a127eaf8cee67196f5f5a9d43e5121079c9 100644 (file)
@@ -20,9 +20,9 @@ class Score_priority_engraver : public Engraver
 {
   Assoc<int, Horizontal_group_item  *> align_p_assoc_;
 public:
-  TRANSLATOR_CLONE(Score_priority_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Score_priority_engraver ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
index 99c053b10a2cb6e26731b8db9efde17cc41e51c2..a5eb00add2271657999b56700f1c662d09865dec 100644 (file)
@@ -23,7 +23,7 @@ protected:
 public:
     Link_array<Script> script_l_arr_;
     Link_array<Item> support_l_arr_;
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
    
     virtual void add_script (Script *);
     void add_support (Item*);
index a68628c9ef4a85d03b3ab8020444c1bce5f72445..1bf61fd493d6eaa52cc026462266c31b740d1f81 100644 (file)
@@ -35,14 +35,14 @@ public:
   virtual int priority_i() const;
   virtual bool inside_b() const;
   virtual Atom get_atom (Paper_def* p, Direction dir_) const;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   virtual bool do_equal_b (General_script_def const *) const;
   virtual void do_print() const;
   Script_def();
   void set_from_input (String, bool, int, int ,bool,int);
 protected:
-  VIRTUAL_COPY_CONS(Script_def,General_script_def);
+  VIRTUAL_COPY_CONS(General_script_def);
 
 };
 
index 6e4ed0100f0505f346de7e5f120d630d0947e9c1..afef25c8b7eb495fe364b21255ff12f8cd324f26 100644 (file)
@@ -16,11 +16,11 @@ class Script_engraver : public Engraver {
   Array<Script_req *> script_req_l_arr_;
 
 public:
-  TRANSLATOR_CLONE(Script_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Script_engraver();
 protected:
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
index 105cb4f15c30f1b99bad79952178a9a5043ac9e2..51b74a29f5edbb75b03ac8cc00b830ce346578be 100644 (file)
@@ -24,7 +24,7 @@ protected:
   virtual Interval symbol_width () const;
   virtual void do_pre_processing();
   virtual Interval do_width() const;
-  SCORE_ELEMENT_CLONE(Script);
+  VIRTUAL_COPY_CONS(Score_element);
 private:
 
   void set_default_dir();
@@ -38,7 +38,7 @@ public:
   Script (Script const&);
    
   void set_stem (Stem*);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 
index b90752479cee9165dc33882aaeefe6894c4ee657..acacb4255fa5f7d50b78e7bc9b12eac6827c7f69 100644 (file)
@@ -17,10 +17,10 @@ class Separating_group_spanner : public Spanner
 {
   Link_array<Single_malt_grouping_item> spacing_unit_l_arr_;
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   void add_spacing_unit (Single_malt_grouping_item*);
 protected:
-  SCORE_ELEMENT_CLONE (Separating_group_spanner);
+  VIRTUAL_COPY_CONS(Score_element);
   virtual Array<Rod> get_rods () const;
   virtual void do_substitute_dependency (Score_element*,Score_element*);
 };
index d9419a98077cbfcef8d337bcb42faca069e3bfb4..eaad47d61ed0e2048bd22260bff292fa3bc5e980 100644 (file)
@@ -25,8 +25,8 @@ protected:
   virtual void do_pre_move_processing ();
 public:
   Separating_line_group_engraver ();
-  TRANSLATOR_CLONE (Separating_line_group_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS (Translator);
+  
 };
 
 
index 32bfb45e2a94d5eb5d1ef73dbc914fdf03de1f8e..87605afcb3f33e8d0dd7e088f75f1e1998f619f1 100644 (file)
    It's 1 30 am.  Naming suggestions appreciated.  */
 class Single_malt_grouping_item : public Item
 {
-  SCORE_ELEMENT_CLONE (Single_malt_grouping_item);
+  VIRTUAL_COPY_CONS(Score_element);
   Link_array<Item> item_l_arr_;
 public:
   Single_malt_grouping_item ();
   Interval my_width () const;
   void add_item (Item*);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual  void do_substitute_dependency (Score_element*, Score_element*);
   virtual void do_print () const;
index 8665ee6e8dc8359f879b6aa3b883610adb370ba8..b463f1a1832fc742af2616a50f1e56e85539e925 100644 (file)
@@ -17,7 +17,7 @@ class Slur_engraver :public Engraver {
   Array<Slur*> end_slur_l_arr_;
 
 protected:
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void do_process_requests();
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
@@ -25,8 +25,8 @@ protected:
   virtual void do_removal_processing ();
 
 public:
-  TRANSLATOR_CLONE(Slur_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 };
 
 #endif // SLURGRAV_HH
index c77f6f9865a585e9a612af6bb07d93a729430f96..491150c877d1b3f531fd8a7e7d4f6dbdb8d71632 100644 (file)
@@ -23,8 +23,8 @@ public:
 
   Slur ();
 
-  SCORE_ELEMENT_CLONE(Slur);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Score_element);
+  
 
 protected:
   virtual Array<Offset> get_encompass_offset_arr () const;
index c7050cf3adbd898fdf38dd0eac02ccdb954d9a53..dc467a193d455455c2ae16f4e440867d052a9b5e 100644 (file)
@@ -24,8 +24,8 @@ class Span_bar_engraver : public Engraver
   Array<Bar*> bar_l_arr_;
   Vertical_align_spanner * valign_l_;
 public:
-  TRANSLATOR_CLONE(Span_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
     
   Span_bar_engraver();
 protected:
index 825d1d8cbe7a810937d8becaed87495a9e12bf3d..3a4f01732093c510a1a2f8b5936279064698f736 100644 (file)
@@ -18,8 +18,8 @@ class Span_bar : public virtual Bar
 
 public:
     Span_bar();
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEMENT_CLONE(Span_bar);
+    
+    VIRTUAL_COPY_CONS(Score_element);
     void add_bar (Bar*);
     void set_align (Align_element *);
 
index 9a020be68203bdbfe6091983f006367bef71a90c..f3660ae8429c16ec37acd71c68df926306be7dcc 100644 (file)
@@ -22,8 +22,8 @@
 class Span_score_bar_engraver : public Span_bar_engraver 
 {
 public:
-  TRANSLATOR_CLONE (Span_score_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS (Translator);
+  
   virtual Span_bar* get_span_bar_p () const;
 };
 
@@ -34,8 +34,8 @@ public:
 class Piano_bar_engraver :  public Span_score_bar_engraver
 {
 public:
-  TRANSLATOR_CLONE (Piano_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS (Translator);
+  
   virtual Span_bar * get_span_bar_p () const;
 };
 
@@ -45,8 +45,8 @@ public:
 class Staff_group_bar_engraver :  public Span_score_bar_engraver
 {
 public:
-  TRANSLATOR_CLONE (Staff_group_bar_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS (Translator);
+  
   virtual Span_bar * get_span_bar_p () const;
   virtual void acknowledge_element (Score_element_info);
 };
index 411c56da5e4d9aa365109756a654daed889eb227..116203555130b5d1e8ddcb9628b2be20ed3c7796 100644 (file)
@@ -16,8 +16,8 @@
 class Span_score_bar : public Span_bar, public Score_bar
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Span_score_bar);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   Span_score_bar();
 
 protected:
index 255b21eaa82a245e10d81b48bceaa0227a3551ae..a43eff9855a338e6c355a31e6efe78a2ed80c2b9 100644 (file)
@@ -37,7 +37,7 @@ public:
   Drul_array<Item*> spanned_drul_;
   void set_bounds (Direction d, Item*);
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Spanner ();
   Spanner (Spanner const &);
   bool broken_b () const;
@@ -45,7 +45,7 @@ public:
   Spanner* find_broken_piece (Line_of_score*) const;
 protected:
   void set_my_columns ();
-  SCORE_ELEMENT_CLONE (Spanner);
+  VIRTUAL_COPY_CONS(Score_element);
 
   /**
     this is virtual; for instance, Line_of_score overrides it.
index 526df1365b3580f9a0fab058ec17815be61bc119..f63a113141853744badd309b75963dfe33cf0fe1 100644 (file)
@@ -14,8 +14,8 @@
 class Staff_bracket : public Span_score_bar
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Staff_bracket);
+  
+  VIRTUAL_COPY_CONS(Score_element);
 
 protected:
   virtual Interval do_width() const;
index ae9d01b4c3b22db3a282a3c33db81f51b53f6200..2ad18843d86649776d4e61e3ddb83d92261c5792 100644 (file)
@@ -18,8 +18,8 @@
 class Staff_margin_engraver : public Engraver 
 {
 public:
-  TRANSLATOR_CLONE(Staff_margin_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
   Staff_margin_engraver ();
 
index 484ae5bafab705d47bf8c1fb39c4155849d103d3..3ec3981f62e462743a8d637ea69793a60e2a7136 100644 (file)
@@ -17,8 +17,8 @@
 class Staff_performer : public Performer_group_performer 
 {
 public:
-  TRANSLATOR_CLONE(Staff_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
   Staff_performer ();
   ~Staff_performer ();
index 5c95249868cae6799fbd45007740c7d61e81512c..b2bcd70de4444805126f00b8cb0ac6f2bd6aeaf7 100644 (file)
@@ -40,7 +40,7 @@ public:
 
   Staff_side ();
   void add_support (Score_element*);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
     
 protected:
   virtual Interval symbol_height () const;
index 8235f2aa03344e718dd1f55ca2940b218bac7982..bf15e77d32220a7d6383abc23c2c4438e8c7b78d 100644 (file)
@@ -18,9 +18,9 @@
 class Staff_symbol_engraver : public Engraver { 
     Staff_symbol *span_p_;
 public:
-  TRANSLATOR_CLONE(Staff_symbol_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Staff_symbol_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual ~Staff_symbol_engraver();
   virtual void fill_staff_info (Staff_info&);
index 215e41bde97cd541afe89f90c1fe495a259c6e98..a98d1b1d44dea3c87c6682f437ad16e157f7eb3a 100644 (file)
@@ -22,12 +22,12 @@ public:
   int no_lines_i_;
   Real interline_f_;
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Staff_symbol ();
   Real inter_note_f() const;
   int steps_i() const;
 protected:
-  SCORE_ELEMENT_CLONE(Staff_symbol);
+  VIRTUAL_COPY_CONS(Score_element);
   virtual Interval do_height () const;
   virtual Molecule* brew_molecule_p() const;
   virtual void do_print() const;
index 2fa376c58a347564fc19173083f0a04046edc6d5..f039fce3195017b70dafb443bb3a6fe316b77010 100644 (file)
@@ -27,12 +27,12 @@ protected:
   virtual void do_creation_processing ();
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing ();
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
 
 public:
-  TRANSLATOR_CLONE(Stem_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Stem_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // STEM_GRAV_HH
index a54b211849cf4e9b99fa26da9e90213d4c6acf0a..967bc2e7b2caac73a3e34ee302adf95cd98dbf7a 100644 (file)
@@ -83,7 +83,7 @@ public:
   /// ensure that this Stem also encompasses the Notehead #n#
   void add_head (Rhythmic_head*n);
 
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   Real hpos_f () const;
   Real chord_start_f () const;
index 133fbb0072b8ab92e343c9d0edf7c34e5a14d4d5..534c1642572c4b451a4e41a197d30a74e5ef4b72 100644 (file)
@@ -27,7 +27,7 @@ public:
   void unlink_all ();
 
 protected:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // Super_element_HH
index d2ca31a92708c8b9412ce395664d8a36c52c3dd5..38e3aa2197b578661c5a7941589d3e48f69a8a68 100644 (file)
@@ -18,9 +18,9 @@
  */
 class Swallow_engraver : public Engraver {
 protected:
-  bool do_try_request (Request*) ;
+  bool do_try_music (Music*) ;
 public:
-  TRANSLATOR_CLONE(Swallow_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 };
 #endif // SWALLOW_GRAV_HH
index 62e14d45f04fc22ed5b119401dda0fd27fe93f61..b81ebf5cc905b8537d42e9638920049fe0674664 100644 (file)
 
 class Swallow_performer : public Performer {
 public:
-  TRANSLATOR_CLONE(Swallow_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 protected:
-  virtual bool do_try_request (Request*) { return true; }
+  virtual bool do_try_music (Music*) { return true; }
 };
 
 #endif // SWALLOW_PERF_HH
index e4b42d12330a7065aaf733e445d35bbb18b52853..825b18f7ede8681d5474aacf43e084e09ea7abc1 100644 (file)
@@ -15,8 +15,7 @@
 class Text_def : public General_script_def 
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS(Text_def,General_script_def);
+  VIRTUAL_COPY_CONS(General_script_def);
 
   /**
      Alignment of typeset text wrt center.
index b0ffa91f33d701ab10438bd12d7ff931e88d71c1..ca8600fac48deb82eff77ea8fea62121d82368ec 100644 (file)
@@ -24,7 +24,7 @@ public:
 
     Text_item (General_script_def* ,Direction dir=CENTER);
     virtual ~Text_item ();
-    DECLARE_MY_RUNTIME_TYPEINFO;
+    
 
 //protected:
     // ugh: so, are we a text-def, or can this vary?
index e7cd556cd9a479bffe0f5daaac41f0011cf9a833..42dc01483f39cd1bb54e3979ad9fcf7e27e2287b 100644 (file)
@@ -18,13 +18,13 @@ public:
   Directional_spanner * support_span_l_;
   General_script_def * spec_p_;
   Offset text_off_;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 
   void set_support (Directional_spanner*);
   Text_spanner();
   Text_spanner (Text_spanner const&);
 protected:
-  SCORE_ELEMENT_CLONE(Text_spanner);
+  VIRTUAL_COPY_CONS(Score_element);
   ~Text_spanner();
   virtual void do_add_processing ();
   virtual void do_substitute_dependency (Score_element*,Score_element*);
index a60577109a7d09ee279c5e643442aa1596650f28..522203d9c0c67076b74265d845c348bc1c31572f 100644 (file)
@@ -21,8 +21,8 @@ public:
     Tie ();
     void set_head (Direction, Note_head*head_l);
 
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    SCORE_ELEMENT_CLONE(Tie);
+    
+    VIRTUAL_COPY_CONS(Score_element);
 
     bool same_pitch_b_;
     Drul_array<Note_head *> head_l_drul_;
index 9ad8497b07a9c081bdf8901b888b00824ed96148..900c7db5e0add5d76cd1190d1d68121f444eafac 100644 (file)
@@ -37,15 +37,15 @@ class Ties_engraver : public Engraver {
 protected:
   virtual void do_removal_processing ();
   virtual void acknowledge_element (Score_element_info);
-  virtual bool do_try_request (Request*);
+  virtual bool do_try_music (Music*);
   virtual void do_process_requests();
   virtual void process_acknowledged ();
   virtual void do_post_move_processing();
   virtual void do_pre_move_processing();
 public:
-  TRANSLATOR_CLONE(Ties_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Ties_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif // Ties_GRAV_HH
index 4d4f1edd96ff017bd32c22fdccab4b1b0964fbe7..460939d59b8cf128ef0bfebfd9852a5bb38caf44 100644 (file)
@@ -21,10 +21,10 @@ protected:
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
 public:
-  TRANSLATOR_CLONE(Time_signature_engraver);
+  VIRTUAL_COPY_CONS(Translator);
   Time_signature * time_signature_p_;
 
   Time_signature_engraver();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 #endif // METERGRAV_HH
index a40a22382f7646aa4718baf8e97d8422fc3cad42..b658b3715812235f5bad3d9113263935845acd90 100644 (file)
 
 class Time_signature_performer : public Performer {
 public:
-  TRANSLATOR_CLONE(Time_signature_performer);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Time_signature_performer();
   ~Time_signature_performer();
 
 protected:
   void do_print() const;
-  virtual bool do_try_request (Request* req_l);
+  virtual bool do_try_music (Music* req_l);
   virtual void do_process_requests();
 
 private:
index a2d09022b525ee1fc97ad14a521ece05abbbd407..1fd90719c54711b5e2dd7ebf481c04115e4c32af 100644 (file)
@@ -29,8 +29,8 @@ public:
   Array<int> args_;
   String time_sig_type_str_;
   
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Time_signature);
+  
+  VIRTUAL_COPY_CONS(Score_element);
 };
 #endif // METER_HH
 
index cc52fa13c0a9684e77859b9f120e96f17671a976..4768f84c28d46ef9ec2bf19b34053e8a613d30a8 100644 (file)
@@ -20,8 +20,8 @@ class Timing_engraver : public Timing_translator, public Engraver
 protected:
   virtual void fill_staff_info (Staff_info&);
 public:
-  TRANSLATOR_CLONE(Timing_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 };
 
 #endif // TIMING_GRAV_HH
index e62ee388f038e37566d63507f2a804c2f944a3e9..7074d9c873b6d256658d2b9e4a337c20a12cf57e 100644 (file)
 class Timing_translator : public virtual Translator
 {
 public:
-  TRANSLATOR_CLONE(Timing_translator);
+  VIRTUAL_COPY_CONS(Translator);
   Time_signature_change_req * time_signature_req_l () const;
   Timing_translator ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Time_description time_;
   Rhythmic_grouping  default_grouping_;
   Link_array<Timing_req> timing_req_l_arr_;
 protected: 
   virtual void do_print () const;
   virtual void do_creation_processing ();
-  virtual bool do_try_request (Request *req_l);
+  virtual bool do_try_music (Music *req_l);
   virtual void do_process_requests();
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();
index 1ddfdffee9c156178d15efe15a24a414da636b5e..45651150e39e206400e608e11dc10e50bd1e4e04 100644 (file)
@@ -21,8 +21,8 @@ class Translation_property : public Music
 public:
   String var_str_;
   Scalar value_;
-  VIRTUAL_COPY_CONS(Translation_property, Music);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Music);
+  
 protected:
   virtual void do_print () const;
 };
index fb1c8e2d23c2fd4aaebcefe0fc90e11396eaf3d9..a948fd82dfff2b2b702fa1b666dcc4fd78db379c 100644 (file)
@@ -35,8 +35,8 @@ public:
 
   int iterator_count_;
 
-  TRANSLATOR_CLONE(Translator_group);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
 
   void set_acceptor (String accepts, bool add);
   void set_element (String accepts, bool add);  
@@ -62,7 +62,7 @@ public:
 
 
   
-  Translator *get_simple_translator (char const *type) const;
+  Translator *get_simple_translator (String) const;
   Translator_group *find_existing_translator_l (String n, String id);
   Translator_group *find_create_translator_l (String n, String id);
   Link_array<Translator_group> path_to_acceptable_translator (String alias) const;
@@ -73,7 +73,7 @@ protected:
   virtual void do_print () const;
   virtual void do_process_requests ();
   virtual void do_add_processing ();
-  virtual bool do_try_request (Request* req_l);       
+  virtual bool do_try_music (Music* req_l);       
   virtual void do_pre_move_processing();
   virtual void do_post_move_processing();   
   virtual void do_creation_processing();
index b0257a4448d6c041aa6e93a076a612e21075b9b0..f3a96da1abb1c68225ca61c766bb9016aea643b9 100644 (file)
@@ -18,7 +18,6 @@
 #include "parray.hh"
 #include "input.hh"
 
-#define TRANSLATOR_CLONE(c)    VIRTUAL_COPY_CONS(c, Translator)
 
 /** Make some kind of #Element#s from Requests. Elements are made by
   hierarchically grouped #Translator#s
@@ -32,8 +31,8 @@ public:
   bool is_alias_b (String) const;
   
 
-  DECLARE_MY_RUNTIME_TYPEINFO;  
-  TRANSLATOR_CLONE(Translator);
+    
+  VIRTUAL_COPY_CONS(Translator);
   Translator (Translator const &);
   Translator ();
   virtual ~Translator ();
@@ -51,7 +50,7 @@ public:
     true: request swallowed. Don't try to put the request elsewhere.
 
     */
-  bool try_request (Request*);
+  bool try_music (Music*);
   void pre_move_processing();
   void add_processing ();
   void creation_processing ();
@@ -84,7 +83,7 @@ protected:
        Default: always return false
        */
   virtual void do_add_processing ();
-  virtual bool do_try_request (Request *req_l);
+  virtual bool do_try_music (Music *req_l);
   virtual void do_print () const;
   virtual void do_pre_move_processing(){}
   virtual void do_post_move_processing(){}
@@ -100,8 +99,8 @@ class Translator_adder
 public:
   static Translator *ctor ()
     {
-      Translator *t = new T;
-      t->type_str_ = T::static_name ();
+      T *t = new T;
+      t->type_str_ = classname (t);
       return t;
     }
   Translator_adder () {        
index fe8781c4120f7c1e7bece0eecd8620db9ac280ce..f05cf6ee5470984ca02581d551d447447c77ca13 100644 (file)
@@ -20,8 +20,8 @@ public:
 
   void do_print () const;
   Transposed_music (Music*, Musical_pitch);
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  VIRTUAL_COPY_CONS (Transposed_music, Music);
+  
+  VIRTUAL_COPY_CONS(Music);
   virtual Musical_pitch to_relative_octave (Musical_pitch);
 };
 
diff --git a/lily/include/tuplet-engraver.hh b/lily/include/tuplet-engraver.hh
new file mode 100644 (file)
index 0000000..b76f12e
--- /dev/null
@@ -0,0 +1,37 @@
+/*   
+  auto-plet-engraver.hh -- declare Auto_plet_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#ifndef AUTO_PLET_ENGRAVER_HH
+#define AUTO_PLET_ENGRAVER_HH
+
+#include "engraver.hh"
+
+class Tuplet_engraver : public Engraver
+{
+  void typeset_all ();
+public:
+  VIRTUAL_COPY_CONS(Translator);
+
+
+protected:
+  Link_array<Compressed_music> compressed_music_arr_;
+  Array<Moment> stop_moments_;
+  Link_array<Plet_spanner> started_span_p_arr_;
+
+
+  virtual void do_removal_processing ();
+  virtual void acknowledge_element (Score_element_info);
+  virtual bool do_try_music (Music*r);
+  virtual void do_process_requests ();
+  virtual void do_post_move_processing ();
+};
+
+
+
+#endif /* AUTO_PLET_ENGRAVER_HH */
diff --git a/lily/include/tuplet-spanner.hh b/lily/include/tuplet-spanner.hh
new file mode 100644 (file)
index 0000000..1a41440
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+  plet-spanner.hh -- part of GNU LilyPond
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#ifndef PLET_SPANNER_HH
+#define PLET_SPANNER_HH
+#include "text-def.hh"
+#include "pointer.hh"
+#include "directional-spanner.hh"
+
+/** supportable plet: triplets, eentweetjes, ottava, etc.  */
+
+class Plet_spanner : public Directional_spanner
+{
+public:
+  Plet_spanner ();
+  void add_column (Note_column*);
+  P<Text_def>  tdef_p_;
+  Link_array<Note_column> column_arr_;
+  int visibility_i_;
+protected:
+  virtual Molecule* brew_molecule_p () const;
+  VIRTUAL_COPY_CONS(Score_element);
+
+  virtual void do_add_processing ();
+  virtual void do_post_processing ();
+  virtual void set_default_dir ();
+  virtual void do_substitute_dependency (Score_element*,Score_element*);
+};
+
+#endif // PLET_SPANNER_HH
+
index 27bac3d661e49e96302cb27088d6367bc2373bf4..3b7191bae1d31f66e059d9352435b5dd5152b2dc 100644 (file)
@@ -17,10 +17,10 @@ class Type_swallow_translator : public virtual Translator
 {
 protected:
   const type_info * type_;
-  bool do_try_request (Request*);
+  bool do_try_music (Music*);
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  TRANSLATOR_CLONE(Type_swallow_translator);
+  
+  VIRTUAL_COPY_CONS(Translator);
   Type_swallow_translator ();
 };
 
@@ -29,10 +29,9 @@ struct TYPE ## _swallow_translator : public Type_swallow_translator {\
   TYPE ## _swallow_translator() { \
     type_ = &typeid (TYPE);\
   }\
-  DECLARE_MY_RUNTIME_TYPEINFO;\
-  TRANSLATOR_CLONE(TYPE ## _swallow_translator);\
+  \
+  VIRTUAL_COPY_CONS(Translator);\
 };\
-IMPLEMENT_IS_TYPE_B1(TYPE ## _swallow_translator, Type_swallow_translator);\
 ADD_THIS_TRANSLATOR(TYPE ## _swallow_translator);\
 
 #endif // TYPESWALLOW_GRAV_HH
index 0f6bd5f1414b98286a1f778b21572ec743dbfcbd..8b72633a0f54de2af4148c3e9119be7376dcfbc0 100644 (file)
@@ -16,8 +16,8 @@ class Vertical_align_engraver : public Engraver {
   Vertical_align_spanner * valign_p_;
     
 public:
-  TRANSLATOR_CLONE(Vertical_align_engraver);
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  VIRTUAL_COPY_CONS(Translator);
+  
   Vertical_align_engraver();
 protected:
   virtual void acknowledge_element (Score_element_info);
index 667ab5e991cc42257f731b3d49436526542e6d89..9dc0ae05e4cdb61f1dc59812af8db84683bdebbd 100644 (file)
@@ -16,8 +16,8 @@
 class Vertical_align_spanner : public Align_element, public Spanner
 {
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
-  SCORE_ELEMENT_CLONE(Vertical_align_spanner);
+  
+  VIRTUAL_COPY_CONS(Score_element);
   Vertical_align_spanner ();
   virtual void do_print() const ;
     
index b3eee34dfe8015331e991e442baf551cb92efc3b..f3e48c80d0e3da18ec932a2a7c0b0d2a5ba24e06 100644 (file)
@@ -20,7 +20,7 @@ protected:
 
 public:
   Vertical_group_element () ;
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 };
 
 #endif /* VERTICAL_GROUP_ELEM_HH */
index 9df0d88053761106653d58cbf6f1b3277962e11e..1368a5adf3947a2cbbd5c15fc212df8370af90d2 100644 (file)
 class Vertical_group_spanner : public Axis_group_spanner, public Vertical_group_element
 {
 protected:
-  SCORE_ELEMENT_CLONE(Vertical_group_spanner);
+  VIRTUAL_COPY_CONS(Score_element);
   virtual void do_junk_links () { Axis_group_spanner::do_junk_links (); }
   virtual void do_unlink () { Axis_group_spanner::do_unlink (); }
 public:
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
   Vertical_group_spanner ();
 };
 
index 97e905254f668724f732fed649bfb2bc643bf0ec..ce9613b3aad34a8fc906efcbfa450bc8fbbe09c6 100644 (file)
@@ -26,7 +26,7 @@ protected:
   Sequential_music * sequential_music_l() const;
 public:
   Sequential_music_iterator ();
-  DECLARE_MY_RUNTIME_TYPEINFO;
+  
 protected:
   virtual void do_print() const;
   virtual void construct_children();
index ad00cb3685660985070b01cc523388db75d4a97e..2428f6655ab60c635d2033d57dd144044188168a 100644 (file)
@@ -22,7 +22,7 @@ Item::Item ()
   broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Item, Score_element);
+
 
 void
 Item::do_print() const
index b21c0d92e96ff7141dd176798e83c3a82495606d..4ac49a3032deff4b80ddaa54a76f924937fba4ee 100644 (file)
@@ -56,7 +56,7 @@ Key_engraver::create_key ()
 
 
 bool
-Key_engraver::do_try_request (Request * req_l)
+Key_engraver::do_try_music (Music * req_l)
 {
   if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
     {
@@ -205,6 +205,6 @@ Key_engraver::do_post_move_processing ()
 }
 
 
-IMPLEMENT_IS_TYPE_B1 (Key_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR (Key_engraver);
 
index 85a92f56e9ef13fa2444bce0abeccd25436bcc4a..d6e9aecb8652c2d5dd5ac88bc45866efe6011d9a 100644 (file)
@@ -129,7 +129,7 @@ Key_item::brew_molecule_p() const
   return output;
 }
 
-IMPLEMENT_IS_TYPE_B1(Key_item,Item);
+
 
 void 
 Key_item::do_pre_processing()
index b163e4022fc17d229d967d1e9e6b20ede1d37a4f..3260ef2ca75b6fd2b072e4ad4a27e3ca4e4c8957 100644 (file)
@@ -12,7 +12,7 @@
 
 
 
-IMPLEMENT_IS_TYPE_B1(Key_performer,Performer);
+
 ADD_THIS_TRANSLATOR(Key_performer);
 
 Key_performer::Key_performer()
@@ -42,7 +42,7 @@ Key_performer::do_process_requests()
 }
 
 bool
-Key_performer::do_try_request (Request* req_l)
+Key_performer::do_try_music (Music* req_l)
 {
   if (Key_change_req *kc = dynamic_cast <Key_change_req *> (req_l))
     {
index b61c4c197553e7824110a8775b832bb9a9faeee2..551cf48aec682c7a4f755e35fae5912a76c05bf6 100644 (file)
@@ -93,6 +93,7 @@ LYRICS                ({AA}|{TEX})[^0-9 \t\n\f]*
 ESCAPED                [nt\\'"]
 PLET           \\\[
 TELP           \\\]
+EXTENDER       [_][_]
 
 %%
 
@@ -262,6 +263,8 @@ TELP                \\\]
        {LYRICS} {
                /* ugr. This sux. */
                String s (YYText ()); 
+               if (s == "__")
+                       return yylval.i = EXTENDER;
                int i = 0;
                        while ((i=s.index_i ("_")) != -1) // change word binding "_" to " "
                        *(s.ch_l () + i) = ' ';
@@ -286,6 +289,8 @@ TELP                \\\]
          yyterminate (); // can't move this, since it actually rets a YY_NULL
        }
 }
+
+
 {WORD} {
        return scan_bare_word (YYText ());
 }
index 108e76c5c7ac51cebff1ca378b1628a2446daf3a..0fd424aa928a31563884da7587ad89fe3596eb7f 100644 (file)
@@ -61,6 +61,6 @@ Line_group_engraver_group::do_announces ()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Line_group_engraver_group,Engraver_group_engraver);
+
 ADD_THIS_TRANSLATOR(Line_group_engraver_group);
 
index 9e2e7edb0324927b4b50b3673610a581757cae7f..c91627ffb04fd13398979bee7f064f33b051c409 100644 (file)
@@ -20,7 +20,7 @@ Line_of_score::Line_of_score()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Line_of_score,Spanner);
+
 
 void
 Line_of_score::add_element (Score_element*e)
index 4edb8b874682720a6c5dd29e1daf3ccc38c3be7d..88042137b53be01ea5f90c1bf95258ea7040a80f 100644 (file)
@@ -32,7 +32,7 @@ Local_key_engraver::do_creation_processing ()
     Breaks if Key_engraver is removed from under us.
    */
   Translator * result =
-    daddy_grav_l()->get_simple_translator (Key_engraver::static_name());
+    daddy_grav_l()->get_simple_translator ("Key_engraver");
 
   if (!result)
     {
@@ -132,5 +132,5 @@ Local_key_engraver::do_process_requests()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Local_key_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Local_key_engraver);
index a78ec7a371f9cc4012ab5ea668281f64bbed7adb..3e0a90e89075a8bdc4301c9a71cdffeb2fc23f5b 100644 (file)
@@ -111,7 +111,7 @@ Local_key_item::brew_molecule_p() const
   return output;
 }
 
-IMPLEMENT_IS_TYPE_B1(Local_key_item,Item);
+
 
 void
 Local_key_item::do_substitute_dependency (Score_element*o,Score_element*n)
index 35d9774c14eb38a363c3121057d29069db3e126a..e579ca8231ea38be88313c4a66b63c945f68f394 100644 (file)
@@ -203,6 +203,18 @@ Lookup::dynamic (String st) const
   return (*symtables_p_) ("dynamics")->lookup (st);
 }
 
+Atom
+Lookup::extender (Real width) const
+{
+  Atom a = (*symtables_p_) ("param")->lookup ("extender");
+  Array<Real> arr;
+  arr.push (width);
+  a.lambda_ = (lambda_scm (a.str_, arr));
+  a.str_ = "extender";
+  a.font_ = font_;
+  return a;
+}
+
 Atom
 Lookup::fill (Box b) const
 {
@@ -437,12 +449,13 @@ Lookup::hairpin (Real width, bool decresc, bool continued) const
 {
   Atom a;  
   Real height = paper_l_->staffheight_f () / 6;
-  String ps;
-  ps += to_str (width) + " " 
-    + to_str (height) + " " 
-    + to_str (continued ? height/2 : 0) + 
-    + " draw_"  + String (decresc ? "de" : "") + "cresc\n";
-  a.str_ = ps;
+  Array<Real> arr;
+  arr.push (width);
+  arr.push (height);
+  arr.push (continued ? height/2 : 0);
+  String hairpin = String (decresc ? "de" : "") + "crescendo\n";
+  a.lambda_ = (lambda_scm (hairpin, arr));
+  a.str_ = "hairpin";
   a.dim_.x () = Interval (0, width);
   a.dim_.y () = Interval (-2*height, 2*height);
   a.font_ = font_;
@@ -452,15 +465,13 @@ Lookup::hairpin (Real width, bool decresc, bool continued) const
 Atom
 Lookup::plet (Real dy , Real dx, Direction dir) const
 {
-  String ps;
-    
-  ps += String_convert::double_str (dx) + " " 
-    + String_convert::double_str (dy) + " "
-    + String_convert::int_str ( (int)dir) +
-    " draw_plet ";
-
+  Array<Real> arr;
+  arr.push (dx);
+  arr.push (dy);
+  arr.push (dir);
   Atom a;
-  a.str_ = ps;
+  a.lambda_ = (lambda_scm ("tuplet", arr));
+  a.str_ = "plet";
   return a;
 }
 
@@ -469,8 +480,6 @@ Lookup::slur (Array<Offset> controls) const
 {
   assert (controls.size () == 8);
 
-  String ps;
-  
   Real dx = controls[3].x () - controls[0].x ();
   Real dy = controls[3].y () - controls[0].y ();
   Atom a;
index 9555cad7ebbd1182bb65817d23a025ad13085d0f..d3c6fdf6577202a3c9a249cd3dacd7d469e5c7e3 100644 (file)
@@ -21,7 +21,7 @@ Lyric_engraver::Lyric_engraver()
 }
 
 bool
-Lyric_engraver::do_try_request (Request*r)
+Lyric_engraver::do_try_music (Music*r)
 {
   if (Lyric_req * lr = dynamic_cast <Lyric_req *> (r))
     {
@@ -75,5 +75,5 @@ Lyric_engraver::do_pre_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Lyric_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Lyric_engraver);
index e8c8892339c85784b87f93bec8c8cc77ca56676d..37d17bad3cb0765d1399ec5be483d59ea7410334 100644 (file)
@@ -13,7 +13,7 @@
 
 
 
-IMPLEMENT_IS_TYPE_B1(Lyric_performer,Performer);
+
 ADD_THIS_TRANSLATOR(Lyric_performer);
 
 void 
@@ -34,7 +34,7 @@ Lyric_performer::do_process_requests()
 }
 
 bool
-Lyric_performer::do_try_request (Request* req_l)
+Lyric_performer::do_try_music (Music* req_l)
 {
   if (Lyric_req *lr = dynamic_cast <Lyric_req *> (req_l))
     {
index eed54dcf0e305c57c5f4587a428676250cdf9b4b..1f593f5aed3236d63e9ad9bca51486ae83d46b1c 100644 (file)
@@ -135,7 +135,7 @@ usage ()
     "STRING_UTILS_INLINED "
 #endif
         "datadir=" DIR_DATADIR
-       " "
+       "\n"
         "localedir=" DIR_LOCALEDIR
 
     "\n";
@@ -225,12 +225,12 @@ setup_paths ()
     global_path.parse_path (env_sz);
 
 
-  char *suffixes[] = {"ly", "afm", "scm", 0};
+  char *suffixes[] = {"ly", "afm", "scm", "init", 0};
   for (char **s = suffixes; *s; s++){
       if (!prefix_directory.empty_b())
-         global_path.add (prefix_directory + String (*s));
+         global_path.add (prefix_directory + to_str ('/') + String (*s));
       else
-         global_path.add (String (DIR_DATADIR) + String(*s));
+         global_path.add (String (DIR_DATADIR) + to_str ('/') + String(*s));
   }
 }
 
@@ -304,12 +304,11 @@ main_prog (int argc, char **argv)
 
   default_outname_base_global = "lelie";
 
-  
-
   int p=0;
   const char *arg ;
   while ((arg= oparser.get_next_arg ()))
     {
+      
       if (outname_str == "")
        {
          Midi_def::reset_default_count ();
index 3c25f1aeae76f3122eb686f288635720fed80370..55390bfae301315df6d9f94b29ec6d24c292e69b 100644 (file)
@@ -14,7 +14,7 @@
 #include "time-description.hh"
 #include "engraver-group.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Mark_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR (Mark_engraver);
 
 Mark_engraver::Mark_engraver ()
@@ -24,7 +24,7 @@ Mark_engraver::Mark_engraver ()
 }
 
 bool
-Mark_engraver::do_try_request (Request* r_l)
+Mark_engraver::do_try_music (Music* r_l)
 {
   if (Mark_req *mr = dynamic_cast <Mark_req *> (r_l))
     {
index 275939aa4ec4117e1f1a55c2b54063d6c475d85b..88ccea73a779dd455f068315063617baf5b00d44 100644 (file)
@@ -68,7 +68,7 @@ Midi_def::print() const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Midi_def, Music_output_def);
+
 
 int Midi_def::default_count_i_=0;
 int
index 7ae9551f7d91f21d39533425af072f3d32f6849e..106ee8bcbaaa1f249fe7e4c89b69a51e1f0fe5ed 100644 (file)
 #include "midi-stream.hh"
 #include "audio-item.hh"
 
-IMPLEMENT_IS_TYPE_B (Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_chunk, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_duration, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_header, Midi_chunk);
-IMPLEMENT_IS_TYPE_B1 (Midi_instrument, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_key,Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_time_signature, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_note, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_note_off, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_tempo, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_text, Midi_item);
-IMPLEMENT_IS_TYPE_B1 (Midi_track, Midi_chunk);
+
+
+
+
+
+
+
+
+
+
+
+
 
 Midi_chunk::Midi_chunk ()
   : Midi_item (0)
index d72da1d4f0e545863f2bb217a95893583c893c09..ad1b82d413f0ff8914314808ac9b749fec38717b 100644 (file)
@@ -12,7 +12,7 @@
 #include "score-column.hh"
 #include "time-description.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Multi_measure_rest_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR (Multi_measure_rest_engraver);
 
 Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
@@ -24,12 +24,12 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver ()
 }
 
 bool
-Multi_measure_rest_engraver::do_try_request (Request* req_l)
+Multi_measure_rest_engraver::do_try_music (Music* req_l)
 {
  if (Multi_measure_rest_req *mr = dynamic_cast<Multi_measure_rest_req *> (req_l))
    {
      if (multi_measure_req_l_)
-       if (!multi_measure_req_l_->equal_b (req_l)
+       if (!multi_measure_req_l_->equal_b (mr)
           || req_start_mom_ != now_moment ())
         return false;
   
index c1df9ba763ce57612d7aece8ad223f85f2edf07d..27b13a42da6920212b0613cbb644dc917ad8682d 100644 (file)
@@ -16,7 +16,7 @@
 #include "text-def.hh"
 #include "molecule.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Multi_measure_rest, Item);
+
 
 Multi_measure_rest::Multi_measure_rest ()
 {
index 5505c145a7436154c5d49ffc409b39a343948047..43891b05605675e9025f0ecc810b6a7e943e9a10 100644 (file)
@@ -23,7 +23,7 @@
 
 
 
-IMPLEMENT_IS_TYPE_B(Music_iterator);
+
 
 
 void
@@ -38,9 +38,9 @@ Music_iterator::print() const
 #ifndef NPRINT
   if (!check_debug)
     return ;
-  DOUT << name() << "{";
+  DOUT << classname(this) << "{";
   DOUT << "report to " << 
-    report_to_l() << " (" << report_to_l ()->name () << ")\n";
+    report_to_l() << " (" << classname (report_to_l ()) << ")\n";
   if (ok())
     DOUT << "next at " << next_moment() << " ";
   else
index b712f3e2554d57924e80b26521ae6bd8a3efe59c..42d9b801e86c2d6a6cd69d21da1b4e1b67ce8134 100644 (file)
@@ -14,8 +14,8 @@
 #include "musical-request.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Sequential_music,Music_sequence);
-IMPLEMENT_IS_TYPE_B1(Simultaneous_music,Music_sequence);
+
+
 
 Moment
 Simultaneous_music::duration () const
@@ -103,7 +103,7 @@ Music_list::add_music (Music*m_p)
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Request_chord, Simultaneous_music);
+
 
 
 Request_chord::Request_chord()
index cdd7af56a8810f8d717e4add2dd835a1177cf5e8..adace25f0acbbf75568ff71ca910a6fb88190b82 100644 (file)
@@ -19,7 +19,7 @@ Music_output_def::get_next_default_count () const
   return 0;
 }
 
-IMPLEMENT_IS_TYPE_B(Music_output_def);
+
 
 Music_output_def::Music_output_def ()
 {
index 8d8299a510df7309b7643522e5f8409aa3f99e61..697f25854a80250fa8fa2d87d174d34cb0f2aa23 100644 (file)
@@ -16,7 +16,7 @@ Music_sequence::Music_sequence (Music_sequence const&s)
   music_p_list_p_ = new Music_list (*s.music_p_list_p_);
 }
 
-IMPLEMENT_IS_TYPE_B1(Music_sequence, Music);
+
 
 Music_sequence::Music_sequence(Music_list *mlist_p)
 {
index 4e0ca78ff7977de010960d0b63a47fd18eae9a15..d5ed47629c241bc482e4a7bde8338bfca3355d8d 100644 (file)
@@ -16,7 +16,7 @@ Music_wrapper_iterator::Music_wrapper_iterator ()
   child_iter_p_ =0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Music_wrapper_iterator, Music_iterator);
+
 
 void
 Music_wrapper_iterator::do_print () const
index 1785b386d4d688d0520ef34c8c62db3b2205364b..c91a81df3d9fefd8a9a7febd961ab06e56dacc28 100644 (file)
@@ -42,7 +42,7 @@ Music_wrapper::Music_wrapper(Music*p)
   element_p_ = p;
 }
 
-IMPLEMENT_IS_TYPE_B1 (Music_wrapper, Music);
+
 
 Moment
 Music_wrapper::duration () const
index 2127783d7bc1a26b0ea7f39eb77fc1d38a06502e..316cbff1d95e7d8db5ff655c852fe62d38ed6617 100644 (file)
@@ -24,7 +24,7 @@ Music::print() const
 #ifndef NPRINT
   if (! check_debug)
     return ;
-  DOUT << name() << "{";
+  DOUT << classname(this) << "{";
   if  (translator_type_str_.length_i ())
     DOUT << translator_type_str_ << " = " << translator_id_str_;
   do_print();
@@ -44,7 +44,7 @@ Music::do_print() const
 }
 
 
-IMPLEMENT_IS_TYPE_B(Music);
+
 
 
 
index bbe54c7ec6e5bc96f3a3e2d03d528c2640c2130d..61c1cd028c64b7d704c73a327394dc4d0c843afa 100644 (file)
@@ -31,6 +31,7 @@ static Keyword_ent the_key_tab[]={
   {"cm", CM_T},
   {"consists", CONSISTS},
   {"duration", DURATION},
+//  {"_", EXTENDER},
   {"font", FONT},
   {"grouping", GROUPING},
   {"header", HEADER},
index a024f0dd681f58d2dba7c83d3adb8d8c4d9f4ba7..86270bf7c38fc8b368f448da97e6a9c9ecb134cd 100644 (file)
@@ -29,6 +29,7 @@ My_lily_parser::My_lily_parser (Sources * source_l)
   default_duration_.durlog_i_ = 2;
   default_abbrev_i_ = 0;
   error_level_i_ = 0;
+  extender_req = 0;
   fatal_error_i_ = 0;
   default_header_p_ =0;
 }
index ef0c81e380d32d24a23eec70c33045f3e0c417ed..3894bd6e2bcb81659b3fdebac2b8d388cb28f570 100644 (file)
@@ -13,7 +13,7 @@
 #include "rest.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1(Note_column,Script_column);
+
 
 bool
 Note_column::rest_b () const
index 8245b676408ef58f129c68065ff86b2c2966966e..b8c5668bd090b1ff401dc7be77453d3977dc0b7b 100644 (file)
@@ -34,7 +34,7 @@ Note_head::do_pre_processing ()
     dots_l_->position_i_ = position_i_;
 }
 
-IMPLEMENT_IS_TYPE_B1(Note_head,Rhythmic_head);
+
 
 
 int
index d63b433a4fe7b0fdf8cccbd2c328104f5caf042c..bda50b6188a6e9712b9087c286b84e51ff7a24bf 100644 (file)
@@ -11,7 +11,7 @@
 #include "audio-item.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Note_performer,Performer);
+
 ADD_THIS_TRANSLATOR (Note_performer);
 
 Note_performer::Note_performer ()
@@ -47,7 +47,7 @@ Note_performer::do_process_requests ()
 }
 
 bool 
-Note_performer::do_try_request (Request* req_l)
+Note_performer::do_try_music (Music* req_l)
 {
   if (note_req_l_)
     return false;
index 74ea11e5ea64724dec5a95a03ba3276a895b458f..22fff9ce36f4738f659630a1d1bdc4727571668b 100644 (file)
@@ -125,7 +125,7 @@ Paper_column::used_b() const
   return linked_b();
 }
 
-IMPLEMENT_IS_TYPE_B1(Paper_column, Horizontal_group_item);
+
 
 Paper_column*
 Paper_column::column_l () const
index 863e1593ced326e6c3ce816790b0ed97f6642841..0c1a88dc67b1434f9e73cba5f10d100bb6215db6 100644 (file)
@@ -208,7 +208,7 @@ Paper_def::lookup_l (int i) const
   return (*lookup_p_assoc_p_)[i];
 }
 
-IMPLEMENT_IS_TYPE_B1 (Paper_def, Music_output_def);
+
 
 int Paper_def::default_count_i_ = 0;
 
index e8779bce9dcc1f0c2106266ff04109661fce4df4..344abe68b2acccafb7a12273210f2b43168cfd24 100644 (file)
@@ -46,7 +46,7 @@
 
 // mmm
 Mudela_version oldest_version ("1.0.7");
-Mudela_version version ("1.0.8");
+Mudela_version version ("1.0.9");
 
 
 // needed for bison.simple's malloc() and free()
@@ -166,6 +166,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %token CONSISTS
 %token DURATION
 %token END
+%token EXTENDER
 %token FONT
 %token GROUPING
 %token HEADER
@@ -273,7 +274,7 @@ yylex (YYSTYPE *s,  void * v_l)
 %type <request>        post_request structured_post_request
 %type <pair>   plet_fraction
 %type <request> command_req verbose_command_req
-%type <request>        script_req  dynamic_req
+%type <request>        script_req  dynamic_req extender_req
 %type <string> string
 %type <score>  score_block score_body
 %type <intarr> shape_array
@@ -973,6 +974,9 @@ post_request:
                a->type_i_ = $1;
                $$ = a;
        }
+       | extender_req {
+               $$ = $1;
+       }
        ;
 
 optional_modality:
@@ -1062,6 +1066,16 @@ explicit_duration:
        }
        ;
 
+extender_req:
+       EXTENDER {
+               if (!THIS->lexer_p_->lyric_state_b ())
+                       THIS->parser_error (_ ("have to be in Lyric mode for lyrics"));
+               Extender_req * e_p = new Extender_req;
+               e_p->spantype = Span_req::START;
+               $$ = e_p;
+               THIS->extender_req = e_p;
+       };
+
 dynamic_req:
        ABSDYNAMIC '{' unsigned '}'     {
                Absolute_dynamic_req *ad_p = new Absolute_dynamic_req;
@@ -1260,8 +1274,17 @@ script_dir:
 
 pre_requests:
        {
+               if (THIS->extender_req)
+                 {
+                   Extender_req * e_p = new Extender_req;
+                   e_p->spantype = Span_req::STOP;
+                   THIS->pre_reqs.push (e_p);
+                   THIS->extender_req = 0;
+                 }
+                       
        }
        | pre_requests open_request_parens {
+
                Array<Request*>& r = *THIS->get_parens_request ($2);
                for (int i = 0; i < r.size (); i++ )
                        r[i]->set_spot (THIS->here_input ());
index 510ff51e221c5ee2e4a8998ad190c0ec93417084..55b5880d872effb36bda91545c4ca8cc1bff6dbd 100644 (file)
@@ -11,6 +11,6 @@
 
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B2(Performer_group_performer,Performer, Translator_group);
+
 ADD_THIS_TRANSLATOR(Performer_group_performer);
 
index 449caf22bb486cc2de1c436eafbd99a6fb2f01f9..1403b9aed6c4defeb41658a7301a08b16bde8a3e 100644 (file)
@@ -12,7 +12,7 @@
 #include "debug.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Performer, Translator);
+
 
 void 
 Performer::play (Audio_element* p) 
index 0d0d6a1ff0438eba6ec78dd1febf964159b0d6c8..6d17cbc6ad3b50a3a72d73bf64e42e3017459c64 100644 (file)
@@ -49,6 +49,6 @@ Piano_brace::do_post_processing ()
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Piano_brace, Span_score_bar);
+
 
   
index 8c3273cd7c9228c78a153e1bf4b0d8ae6b4f3769..19cdc5736d4f0b293f880f7932038ffdf936db5c 100644 (file)
@@ -20,5 +20,5 @@ Pitch_squash_engraver::acknowledge_element (Score_element_info i)
 }
 
 ADD_THIS_TRANSLATOR (Pitch_squash_engraver);
-IMPLEMENT_IS_TYPE_B1(Pitch_squash_engraver, Engraver);
+
 
index 0693b5017d36054a040ef47684fe9e71beaeb2a9..a1ab4444991a1b50892d774ef2e1c70339daf157 100644 (file)
@@ -1,3 +1,4 @@
+#if 0
 /*
   plet-engraver.cc -- implement Plet_engraver
 
@@ -13,7 +14,7 @@
 #include "score-column.hh"
 #include "stem.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Plet_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR (Plet_engraver);
 
 Plet_engraver::Plet_engraver ()
@@ -44,7 +45,7 @@ Plet_engraver::acknowledge_element (Score_element_info i)
 }
 
 bool
-Plet_engraver::do_try_request (Request* req_l)
+Plet_engraver::do_try_music (Music* req_l)
 {
   /*
     UGH! This is incorrect!
@@ -69,7 +70,7 @@ Plet_engraver::do_try_request (Request* req_l)
     return false;
 
   Direction d = (!plet_spanner_p_) ? LEFT : RIGHT;
-  if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (req_l))
+  if (span_reqs_drul_[d] && !span_reqs_drul_[d]->equal_b (p))
     return false;
 
   span_reqs_drul_[d] = p;
@@ -128,3 +129,4 @@ Plet_engraver::do_pre_move_processing ()
   span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
 }
 
+#endif
index 994a84003b610abcc3ce4e2be53439485ec6821d..3144ebc37daaedc4e153aa29bce7717ec8524cae 100644 (file)
@@ -9,11 +9,11 @@
 #include "musical-request.hh"
 #include "plet-swallow-engraver.hh"
 
-IMPLEMENT_IS_TYPE_B1(Plet_swallow_engraver,Swallow_engraver);
+
 ADD_THIS_TRANSLATOR(Plet_swallow_engraver);
 
 bool
-Plet_swallow_engraver::do_try_request (Request* req_l)
+Plet_swallow_engraver::do_try_music (Music* req_l)
 {
   return dynamic_cast<Plet_req *> (req_l);
 }
index 6a9d8d15ddf2be381eaefbc55d0147d343880c0a..cffd56ebefb849476cfa325d258f661a8119c107 100644 (file)
@@ -46,5 +46,5 @@ Priority_horizontal_align_engraver::acknowledge_element (Score_element_info i)
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Priority_horizontal_align_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Priority_horizontal_align_engraver);
index 92f1a2c8dfd6f414417b20486404bdfa82d0668c..2037955b83d85341edac74f6a5525dd4f0083eac 100644 (file)
@@ -18,7 +18,7 @@ Property_iterator::do_process_and_next (Moment m)
   Music_iterator::do_process_and_next (m);
 }
 
-IMPLEMENT_IS_TYPE_B1(Property_iterator, Music_iterator);
+
 
 Translation_property*
 Property_iterator::property_l () const
index db24b85fc0d12ca57025970b346d675d8c40db20..dafd7bf7b4160c5e2c3be8645b44944a5f8c82d2 100644 (file)
@@ -30,4 +30,4 @@ Relative_octave_music::do_print () const
   DOUT << "default pitch: " << last_pitch_.str ();
 }
 
-IMPLEMENT_IS_TYPE_B1 (Relative_octave_music, Music_wrapper);
+
index 5ed0f311556015b890cc3724c78e0184263a5a08..410a38d37cd7cbfb870c60f5395e6154484b7e06 100644 (file)
@@ -12,7 +12,7 @@
 #include "music-list.hh"
 #include "request.hh"
 
-IMPLEMENT_IS_TYPE_B1(Request_chord_iterator,Music_iterator);
+
 
 void
 Request_chord_iterator::construct_children()
@@ -67,12 +67,13 @@ Request_chord_iterator::do_process_and_next (Moment mom)
        {
          if (Request * req_l = dynamic_cast<Request*> (i.ptr()))
            {
-             bool gotcha = report_to_l()->try_request (req_l);
+             bool gotcha = report_to_l()->try_music (req_l);
              if (!gotcha)
-               req_l->warning (_f ("junking request: `%s\'", req_l->name()));
+               req_l->warning (_f ("junking request: `%s\'", classname( req_l)));
            }
          else
-           i.ptr ()->warning (_f ("Huh? Not a Request: `%s\'", i.ptr()->name ()));
+           i.ptr ()->warning (_f ("Huh? Not a Request: `%s\'",
+                                  classname (i.ptr())));
        }
       first_b_ = false;
     }
index aadbe80aef67c7a4b9cc385664196de46066a581..128af0a8830a644ab971329f140c729adb326880 100644 (file)
@@ -10,7 +10,7 @@
 #include "debug.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Request,Music);
+
 
 void
 Request::do_print() const
index 89ac8e65316395df4975487433789f46984dc553..14dab36b340d4a4e37a6ef7137830a7fb0aa4820 100644 (file)
@@ -13,7 +13,7 @@
 #include "note-column.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Rest_collision_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Rest_collision_engraver);
 
 Rest_collision_engraver::Rest_collision_engraver()
index 095c6ac4695620804dfd895388847bf459a68c27..c89d39a73a795302456908b6ebdc72352f3acbe7 100644 (file)
@@ -15,7 +15,7 @@
 #include "paper-def.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Rest_collision,Item);
+
 
 void
 Rest_collision::add_column (Note_column *nc_l)
index 2170886e550e7684cc0467acf1f607e21b481de0..93d26e0484b47c8f88559b5d294d1a0220638d42 100644 (file)
@@ -60,7 +60,7 @@ Rest_engraver::do_process_requests ()
 }
 
 bool
-Rest_engraver::do_try_request (Request *req)
+Rest_engraver::do_try_music (Music *req)
 {
   if (Rest_req *r = dynamic_cast <Rest_req *> (req))
     {
@@ -70,5 +70,5 @@ Rest_engraver::do_try_request (Request *req)
   return false;
 }
 
-IMPLEMENT_IS_TYPE_B1(Rest_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Rest_engraver);
index dc13cb911f14c724dc40f6a15b5fd01f7994740d..d9d2b765d004a3e4a835ce18a4b8ec2fa24bce17 100644 (file)
@@ -47,4 +47,4 @@ Rest::brew_molecule_p () const
   return m;
 }
 
-IMPLEMENT_IS_TYPE_B1(Rest, Rhythmic_head);
+
index 8bccc1eec63e24f2ea876dac1bacd1028c627d9d..388e54cab64af1d975325da40362bca521ad012c 100644 (file)
@@ -117,5 +117,5 @@ Rhythmic_column_engraver::do_post_move_processing()
 
 
 
-IMPLEMENT_IS_TYPE_B1(Rhythmic_column_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Rhythmic_column_engraver);
index b25b5ac950e20775e1862b507210e8298e74b58f..b2c72a65dd24cace9f40cab956e021d2f55b299a 100644 (file)
@@ -55,7 +55,7 @@ Rhythmic_head::do_substitute_dependent (Score_element*o,Score_element*n)
     dots_l_ = n ? dynamic_cast<Dots *> (n) :0;
 }
 
-IMPLEMENT_IS_TYPE_B1(Rhythmic_head, Item);
+
 void
 Rhythmic_head::do_print () const
 {
index d276f131029f68c35d721740b4edc42ce5df0130..3ee87e09e5b13972993df61d48e0ce52006dbda1 100644 (file)
@@ -9,4 +9,4 @@
 
 #include "score-bar.hh"
 
-IMPLEMENT_IS_TYPE_B1(Score_bar, Bar);
+
index 6481709e27ed14d4f34c568c81c12de2f9800858..54a52bf502884eb5be5a6fe61327496557f14d36 100644 (file)
@@ -65,4 +65,4 @@ Score_column::add_duration (Moment d)
   durations.push (d);
 }
 
-IMPLEMENT_IS_TYPE_B1(Score_column, Paper_column);
+
index 81aa07fdbf4a6d3d4bcc98890686dfbf5f13f4aa..60aec0732346150c2bb54d986aa16ed136df3d22 100644 (file)
@@ -9,7 +9,7 @@
 #include "score-element-info.hh"
 #include "request.hh"
 
-Score_element_info::Score_element_info (Score_element*s_l, Request*r_l)
+Score_element_info::Score_element_info (Score_element*s_l, Music *r_l)
 {
   elem_l_ = s_l;
   req_l_ = r_l;
index a82e50adeea0ce88e5fc2ca749b33bb8c0f46c4e..6bdc9d990285f8a07451aaa8f9b48d509f4ab73c 100644 (file)
@@ -111,7 +111,7 @@ void
 Score_element::print() const
 {
 #ifndef NPRINT
-  DOUT << name() << "{\n";
+  DOUT << classname(this) << "{\n";
   DOUT << "dets: " << dependent_size() << "dependencies: " << 
     dependency_size();
  
@@ -181,7 +181,7 @@ Score_element::do_brew_molecule ()
       i->origin_l_ = this;
     }
   
-  pscore_l_->outputter_l_->output_molecule (output, absolute_offset (), name());
+  pscore_l_->outputter_l_->output_molecule (output, absolute_offset (), classname(this));
   delete output;
 }
 
@@ -242,7 +242,7 @@ Score_element::do_junk_links()
 {
 }
 
-IMPLEMENT_IS_TYPE_B1(Score_element, Graphical_element);
+
 
 Molecule*
 Score_element::brew_molecule_p() const
index 37a73b00c19646b93af9baaa3d00693f05b963a9..296a129465568befa8525eb07b20fd056d6c01a8 100644 (file)
@@ -140,7 +140,7 @@ Score_engraver::typeset_all()
            if (!s->spanned_drul_[d])
              {
                s->set_bounds(d, command_column_l_);
-               ::warning (_f ("Unbound spanner `%s\'", s->name ()));
+               ::warning (_f ("Unbound spanner `%s\'", classname(s)));
              }
          } while (flip(&d) != LEFT);
        }
@@ -235,9 +235,9 @@ Score_engraver::get_output_p ()
 }
 
 bool
-Score_engraver::do_try_request (Request*r)
+Score_engraver::do_try_music (Music*r)
 {
-  bool gotcha = Engraver_group_engraver::do_try_request (r);  
+  bool gotcha = Engraver_group_engraver::do_try_music (r);  
 
   if (!gotcha)
     {
@@ -256,7 +256,7 @@ Score_engraver::do_try_request (Request*r)
 
 }
 
-IMPLEMENT_IS_TYPE_B1(Score_engraver,Engraver_group_engraver);
+
 ADD_THIS_TRANSLATOR(Score_engraver);
 
 void
index 48822afc4c3dbdbb627cc8e91aa931d67106a05b..f34dddf2827730f516858cb609dbe129b7db42c8 100644 (file)
@@ -19,7 +19,7 @@
 #include "source.hh"
 #include "audio-staff.hh"
 
-IMPLEMENT_IS_TYPE_B1(Score_performer,Performer_group_performer);
+
 ADD_THIS_TRANSLATOR(Score_performer);
 
 
index bb9f75513c8e44c953898448fe173c779f4cee99..fb0f0784d8da97edd879b0214196574206d9c26e 100644 (file)
@@ -75,5 +75,5 @@ Score_priority_engraver::acknowledge_element (Score_element_info inf)
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Score_priority_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Score_priority_engraver);
index e00f9f04a6c860b661c392beba41df763f506c1d..e1c5e273801d86a3f13785bf8fff32ad5717f16a 100644 (file)
@@ -13,7 +13,7 @@
 #include "stem.hh"
 #include "general-script-def.hh"
 
-IMPLEMENT_IS_TYPE_B1(Script_column,Horizontal_vertical_group_item);
+
 
 
 void
index daf721f0416ac8327228cd3d98e07a0356839e31..b74cf814f00dfbbf8c89d514681350d6368dbd08 100644 (file)
@@ -82,7 +82,7 @@ Script_def::get_atom (Paper_def *p , Direction d) const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Script_def,General_script_def);
+
 
 int
 Script_def::priority_i() const
index 17cc5dd70d32c9b7c505159cd546becd58d0db2a..3cc7914dc39fc98bfa95eeb3f6863c6ae7f74a3f 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  script-reg.cc -- implement Script_engraver
+  script-engraver.cc -- implement Script_engraver
 
   (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
@@ -19,19 +19,19 @@ Script_engraver::Script_engraver()
 }
 
 bool
-Script_engraver::do_try_request (Request *r_l)
+Script_engraver::do_try_music (Music *r_l)
 {
-  if (!dynamic_cast <Musical_script_req *> (r_l))
-    return false ;
-  
-  for (int i=0; i < script_req_l_arr_.size(); i++) 
+  if (Musical_script_req *mr = dynamic_cast <Musical_script_req *> (r_l))
     {
-      if (r_l->equal_b (script_req_l_arr_[i]))
-       return true;
+      for (int i=0; i < script_req_l_arr_.size(); i++) 
+       {
+         if (script_req_l_arr_[i]->equal_b (mr))
+           return true;
+       }
+      script_req_l_arr_.push (mr);
+      return true;
     }
-  script_req_l_arr_.push (dynamic_cast <Script_req *> (r_l));
-  
-  return true;
+  return false;
 }
 
 void
@@ -89,5 +89,5 @@ Script_engraver::do_post_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Script_engraver);
index c7e5d4177050a6481fcfc3882adb8b2dc06687b3..26900c5c2e138c82a9a61378d554fe04e26ba62d 100644 (file)
@@ -124,7 +124,7 @@ Script::brew_molecule_p () const
 }
 
 
-IMPLEMENT_IS_TYPE_B2 (Script,Item,Staff_side);
+
 
 int
 Script::compare (Script  *const&l1, Script *const&l2)
index 2b31c9eee741ef566c7174af59dc4ff4137e86e1..468b340d399369c04296a9473a33ddac6ff5cd97 100644 (file)
@@ -57,7 +57,7 @@ Separating_group_spanner::add_spacing_unit (Single_malt_grouping_item*i)
   add_dependency (i);
 }
 
-IMPLEMENT_IS_TYPE_B1(Separating_group_spanner, Spanner);
+
 
 void
 Separating_group_spanner::do_substitute_dependency (Score_element*o, Score_element*n)
index bf046b82acedfc40b8647152e31dc1d9e11df270..4545618efe41a21d0c24908b6a8cda169b72d8f6 100644 (file)
@@ -73,5 +73,5 @@ Separating_line_group_engraver::do_pre_move_processing ()
 }
 
 
-IMPLEMENT_IS_TYPE_B1 (Separating_line_group_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR( Separating_line_group_engraver);
index 0b1af3f676623b533331b3781e8f02aabc96edf6..c030ffafe68f1b47294dac46aac58479e4e81399 100644 (file)
@@ -41,7 +41,7 @@ Single_malt_grouping_item::my_width () const
  // add this->offset_ ? this-> relative_coordinate ()? 
 }
 
-IMPLEMENT_IS_TYPE_B1(Single_malt_grouping_item, Item);
+
 
 void
 Single_malt_grouping_item::do_substitute_dependency (Score_element*o, Score_element*n)
@@ -59,7 +59,7 @@ Single_malt_grouping_item::do_print () const
 #ifndef NDEBUG
   for (int i=0; i < item_l_arr_.size (); i++)
     {
-      DOUT << item_l_arr_[i]->name () << ", ";
+      DOUT << classname (item_l_arr_[i]) << ", ";
     }
 #endif
 }
index 33e2b24c2391138feda8e1ca3e8d2061542e83a9..24a87c81e6da5240b78e11cd2ce3c75d16b94ffa 100644 (file)
@@ -13,7 +13,7 @@
 #include "note-column.hh"
 
 bool
-Slur_engraver::do_try_request (Request *req_l)
+Slur_engraver::do_try_music (Music *req_l)
 {
   Musical_req *mus_l = dynamic_cast <Musical_req *> (req_l);
   if (Slur_req *sl = dynamic_cast <Slur_req *> (mus_l))
@@ -113,5 +113,5 @@ Slur_engraver::do_post_move_processing()
   new_slur_req_l_arr_.clear();
 }
 
-IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Slur_engraver);
index 73c8cb98fbb40f9590ae160a8c5d503942965b5d..26d369703d6656806da1083a60ae7486d8acdd5f 100644 (file)
@@ -29,7 +29,7 @@
 #include "encompass-info.hh"
 #include "main.hh"
 
-IMPLEMENT_IS_TYPE_B1(Slur,Bow);
+
 
 Slur::Slur ()
 {
index acf9c4fb06a21ada1a4c1b7c277099c71e641d11..ff7bdd65dc4466eb55b1578243f383d85f505cab 100644 (file)
@@ -84,5 +84,5 @@ Span_bar_engraver::do_pre_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Span_bar_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Span_bar_engraver);
index c44900e6093226a996f25fc7380f076c20a1d518..47813dc1eaf9092a1d91eb039e6853e62223b4af 100644 (file)
@@ -110,7 +110,7 @@ Span_bar::brew_molecule_p () const
   return output;
 }
 
-IMPLEMENT_IS_TYPE_B1 (Span_bar,Bar);
+
 
 Span_bar::Span_bar ()
 {
index 0aa5e9852ad1e151b33c932d84499a276ba57747..da1dfd2e7847b96a039be41432f6b81943539b38 100644 (file)
@@ -24,9 +24,9 @@ Span_score_bar_engraver::get_span_bar_p () const
 }
 
 
-IMPLEMENT_IS_TYPE_B1 (Span_score_bar_engraver, Span_bar_engraver);
-IMPLEMENT_IS_TYPE_B1 (Piano_bar_engraver, Span_score_bar_engraver);
-IMPLEMENT_IS_TYPE_B1 (Staff_group_bar_engraver, Span_score_bar_engraver);
+
+
+
 
 Span_bar*
 Piano_bar_engraver::get_span_bar_p () const
index 6952062a67291eb7cbcbf99fb24db21e18d26b2e..c6a42439078f14b561668ecbde615d5716f992a5 100644 (file)
@@ -37,6 +37,6 @@ Span_score_bar::do_pre_processing()
   //  Span_bar::do_pre_processing();
 }
 
-IMPLEMENT_IS_TYPE_B2(Span_score_bar, Span_bar, Score_bar);
+
 
   
index 25b9855f23d4e11bf5c494cdec7214a70f830e40..28f49f22af124915f3ed6e5def5c4cfaea3c2824 100644 (file)
 #include "molecule.hh"
 #include "paper-outputter.hh"
 
-IMPLEMENT_IS_TYPE_B1(Spanner,Score_element);
+
 
 void
 Spanner::do_print() const
 {
 #ifndef NPRINT
-  DOUT << "Between " << spanned_drul_[LEFT]->name ()
-       << " and " << spanned_drul_[RIGHT]->name() << '\n';
+  DOUT << "Between " << classname (spanned_drul_[LEFT])
+       << " and " << classname (spanned_drul_[RIGHT]) << '\n';
   if (broken_into_l_arr_.size())
     {
       DOUT << "with broken pieces:\n";
@@ -98,7 +98,7 @@ Spanner::set_bounds(Direction d, Item*i)
 
   if  (spanned_drul_[Direction(-d)] == spanned_drul_[d]
        && i)
-    warning (_f ("Spanner `%s\' with equal left and right spanpoints", name ()));
+    warning (_f ("Spanner `%s\' with equal left and right spanpoints", classname (this)));
 }
 
 void
@@ -140,7 +140,7 @@ Spanner::do_brew_molecule ()
   Molecule *output= brew_molecule_p ();
   Offset left_off (spanned_drul_[LEFT]->absolute_coordinate(X_AXIS), 0);
   Offset o = absolute_offset() + left_off;
-  pscore_l_->outputter_l_->output_molecule (output, o, name ());
+  pscore_l_->outputter_l_->output_molecule (output, o, classname (this));
   delete output;
 }
 
index b431eed33921255e0fd34fac46cd7fb8572a0a2e..9a6fcb660fd7c7bbd8b36e52030528f8b5e932d0 100644 (file)
@@ -42,6 +42,6 @@ Staff_bracket::do_post_processing ()
     }
 }
 
-IMPLEMENT_IS_TYPE_B1(Staff_bracket, Span_score_bar);
+
 
   
index 92c5cdd139867fd430618473fbfe478e9e21e5dd..9b51b97c7c0fae918ee9c9548b4e74387224ae4e 100644 (file)
@@ -15,7 +15,7 @@
 #include "stem.hh"
 #include "time-description.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Staff_margin_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR (Staff_margin_engraver);
 
 Staff_margin_engraver::Staff_margin_engraver ()
index 90f2c63ebcf086b4b6f0e83d5413e94cfa981aaa..801912bd8900a57fc058143cda23aeca96947963 100644 (file)
@@ -13,7 +13,7 @@
 #include "audio-item.hh"
 #include "audio-staff.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Staff_performer,Performer_group_performer);
+
 ADD_THIS_TRANSLATOR (Staff_performer);
 
 Staff_performer::Staff_performer ()
index bec8df6367415dfd1baf480b1ab54c4155a029e2..a3a3a14afd8c7cbb40cfdbf7921c9e1a9a2de2be 100644 (file)
@@ -141,4 +141,4 @@ Staff_side::do_substitute_dependency (Score_element*o, Score_element*n)
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Staff_side, Score_element);
+
index f3db413e82fbece411ff2a7eca1a141c3fc223ee..a83032eba0bcef39190e999c7f568005d7df4f85 100644 (file)
@@ -52,5 +52,5 @@ Staff_symbol_engraver::do_removal_processing()
 
 
 
-IMPLEMENT_IS_TYPE_B1(Staff_symbol_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Staff_symbol_engraver);
index 88a3a457c6abad5e5c3a58f28680f66ab2113635..b640d3f54ba07f8d45eaf852a7d8398452368114 100644 (file)
@@ -21,7 +21,7 @@ Staff_symbol::Staff_symbol ()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Staff_symbol,Spanner);
+
 
 void
 Staff_symbol::do_print() const
index 65351c29a7dec1fc27502879a0a8fcf493589c33..b8f3984c5b4355c2131e3a90f00bc31e4e0fc7b5 100644 (file)
@@ -101,7 +101,7 @@ Stem_engraver::do_pre_move_processing()
 }
 
 bool
-Stem_engraver::do_try_request (Request* r)
+Stem_engraver::do_try_music (Music* r)
 {
   Musical_req* mus_l = dynamic_cast <Musical_req *> (r);
   if (!mus_l)
@@ -116,5 +116,5 @@ Stem_engraver::do_try_request (Request* r)
   return true;
 }
 
-IMPLEMENT_IS_TYPE_B1(Stem_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Stem_engraver);
index 09193e06471d17d6488f5b52ccae5c01f70f27b2..91277cf1b3009229965c04e2e5f22e3a9b00f4ea 100644 (file)
@@ -19,7 +19,7 @@
 #include "beam.hh"
 #include "rest.hh"
 
-IMPLEMENT_IS_TYPE_B1 (Stem,Item);
+
 
 
 Stem::~Stem ()
index 89168838b741d7f43521d2921d3053499ec69c43..5c4a9de8819079158b2ed7decb4d4285b9e02432 100644 (file)
@@ -17,7 +17,7 @@ Super_element::Super_element()
 {
 }
 
-IMPLEMENT_IS_TYPE_B1(Super_element,Score_element);
+
 
 
 /**
index 20a5130ba6de4972a9c99e97dc884c99ffba5294..bc1cad3a9f2b02e6b820239772bebd8e01f789f5 100644 (file)
@@ -8,12 +8,12 @@
 #include "swallow-engraver.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Swallow_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Swallow_engraver);
 
 
 bool
-Swallow_engraver::do_try_request (Request*) 
+Swallow_engraver::do_try_music (Music*) 
 {
   return true;
 }
index 27b61ba4f17de757d70aa222f1611471cb644eec..8c656967c59beef301e2b2b92c76635dfa4dcb4b 100644 (file)
@@ -9,5 +9,5 @@
 #include "swallow-perf.hh"
 
 
-IMPLEMENT_IS_TYPE_B1(Swallow_performer, Performer);
+
 ADD_THIS_TRANSLATOR(Swallow_performer);
index 921d0ac6dc683ea9e0999789cd04fc245a16a5a5..bbdac9dee93fd8864068fc2e9543eaaaaef572f6 100644 (file)
@@ -79,4 +79,4 @@ Text_def::print() const
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Text_def,General_script_def);
+
index f9fca7840e1f997a6224e443d3f21bd127b773d1..eb4383f3241b23008bdd57d361b2db0b775b2e84 100644 (file)
@@ -80,4 +80,4 @@ Text_item::brew_molecule_p () const
 }
 
 
-IMPLEMENT_IS_TYPE_B1 (Text_item,Item);
+
index 522081cedfa146e31b50277c983da4eda25c717f..e8d2f612bca1cbf91cecdfa2e7a33e0e5f86a0e3 100644 (file)
@@ -39,7 +39,7 @@ Text_spanner::Text_spanner()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Text_spanner,Spanner);
+
 
 void
 Text_spanner::do_print() const
index 1bf3a9640e42e7e82b2420935d4bb3137d0e3577..0aead695368b6b9ee48c917f9e2e258ab4512b3e 100644 (file)
@@ -12,7 +12,7 @@
 #include "p-col.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1(Tie,Bow);
+
 
 void
 Tie::set_head (Direction d, Note_head * head_l)
index 3f5a3c5d6dab291e565f3ea8ad58ae208c52394e..63a0390e5f31715786043da50c904d851fe5ec1e 100644 (file)
@@ -26,7 +26,7 @@ Ties_engraver::do_post_move_processing()
 }
 
 bool
-Ties_engraver::do_try_request (Request*req)
+Ties_engraver::do_try_music (Music*req)
 {
   if (Tie_req * r = dynamic_cast <Tie_req *> (req))
     {  
@@ -130,7 +130,7 @@ Ties_engraver::do_process_requests ()
 {}
 
 
-IMPLEMENT_IS_TYPE_B1(Ties_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Ties_engraver);
 
 
index a5ff8b4595fddd3e403af491520ff7de3443ae68..2045dcb4b07f0509ff8a9a1685d1ad8758ff8482 100644 (file)
@@ -21,7 +21,7 @@ void
 Time_signature_engraver::do_process_requests()
 {
   Translator * result =
-    daddy_grav_l()->get_simple_translator (Timing_engraver::static_name ());   // ugh
+    daddy_grav_l()->get_simple_translator ("Timing_engraver"); // ugh
 
   if (!result)
     {
@@ -67,4 +67,4 @@ Time_signature_engraver::do_pre_move_processing()
 
 
 ADD_THIS_TRANSLATOR(Time_signature_engraver);
-IMPLEMENT_IS_TYPE_B1(Time_signature_engraver,Engraver); 
index 644055017060c0a99ede69d429a2ad37633f55ef..4efa775cf8fc1460c34654cee3cf312af9988339 100644 (file)
@@ -10,7 +10,7 @@
 #include "command-request.hh"
 #include "audio-item.hh"
 
-IMPLEMENT_IS_TYPE_B1(Time_signature_performer,Performer);
+
 ADD_THIS_TRANSLATOR(Time_signature_performer);
 
 Time_signature_performer::Time_signature_performer()
@@ -40,7 +40,7 @@ Time_signature_performer::do_process_requests()
 }
 
 bool
-Time_signature_performer::do_try_request (Request* req_l)
+Time_signature_performer::do_try_music (Music* req_l)
 {
   if (time_signature_req_l_)
     return false;
index a1330d55a4d5fc23a0cca9f6b48123c92de5a8ca..58adb32966a6de49a4a4b5bfb0e41cc60da9cd46 100644 (file)
@@ -43,4 +43,4 @@ Time_signature::brew_molecule_p () const
 
 
 
-IMPLEMENT_IS_TYPE_B1(Time_signature,Item);
+
index dfe98a9d30204beb40fb7d730fae130f87815d7a..f6ddb5f9b3871b5ec1272727f33063e5648ea11d 100644 (file)
@@ -19,5 +19,5 @@ Timing_engraver::fill_staff_info (Staff_info &inf)
   inf.rhythmic_C_ = &default_grouping_;
 }
 
-IMPLEMENT_IS_TYPE_B1(Timing_engraver, Timing_translator);
+
 ADD_THIS_TRANSLATOR(Timing_engraver);
index 856525785b8b65cbc8dd8331ee864462dc6f0895..d5da1d64023e9ac0d0015d91d94dc247a2398345 100644 (file)
@@ -18,7 +18,7 @@ Timing_translator::Timing_translator ()
 }
 
 bool
-Timing_translator::do_try_request(Request*r)
+Timing_translator::do_try_music (Music*r)
 {
   if (Timing_req *t =  dynamic_cast <Timing_req *> (r))
     {
@@ -26,7 +26,7 @@ Timing_translator::do_try_request(Request*r)
        {
          if (timing_req_l_arr_[i]->equal_b(t))
            return true;
-         if (timing_req_l_arr_[i]->name() == r->name())
+         if (String (classname (timing_req_l_arr_[i])) == classname (r))
            {
              r->warning (_ ("conflicting timing request"));
              return false;
@@ -126,7 +126,7 @@ Timing_translator::do_pre_move_processing()
     global_l->add_moment_to_process (time_.next_bar_moment ());
 }
 
-IMPLEMENT_IS_TYPE_B1(Timing_translator, Translator);
+
 ADD_THIS_TRANSLATOR(Timing_translator);
 
 void
index f4a9ab245e4d8262e1164d02a262a4d28355283d..6e37d798fe8376e40914840895ce0749d585a8d1 100644 (file)
@@ -9,7 +9,7 @@
 #include "translation-property.hh"
 #include "debug.hh"
 
-IMPLEMENT_IS_TYPE_B1(Translation_property, Music);
+
 
 void
 Translation_property::do_print () const
index 86de42722413b928fca1e455e66d265484b3226c..60c608497638a0fc00fff68fd5c8996f93ab0cf1 100644 (file)
@@ -24,7 +24,7 @@ add_translator (Translator *t)
   if (!global_translator_dict_p)
     global_translator_dict_p = new Dictionary<Translator*>;
 
-  global_translator_dict_p->elem (t->name ()) = t;
+  global_translator_dict_p->elem (classname (t)) = t;
 }
 
 Translator*
index 5d9a3e31fbbae6d1cc3b4c668b0179c0f5b16450..7b59009780d2d600a2ee7090e5d258f4c6526bce 100644 (file)
@@ -47,7 +47,7 @@ Translator_group::check_removal()
 
 
 
-IMPLEMENT_IS_TYPE_B1(Translator_group, Translator);
+
 
 void
 Translator_group::add_translator (Translator *trans_p)
@@ -187,16 +187,16 @@ Translator_group::find_create_translator_l (String n, String id)
 
 
 bool
-Translator_group::do_try_request (Request* req_l)
+Translator_group::do_try_music (Music* req_l)
 {
   bool hebbes_b =false;
 
   Link_array<Translator> nongroups (nongroup_l_arr ());
   
   for (int i =0; !hebbes_b && i < nongroups.size() ; i++)
-    hebbes_b =nongroups[i]->try_request (req_l);
+    hebbes_b =nongroups[i]->try_music (req_l);
   if (!hebbes_b && daddy_trans_l_)
-    hebbes_b = daddy_trans_l_->try_request (req_l);
+    hebbes_b = daddy_trans_l_->try_music (req_l);
   return hebbes_b ;
 }
 
@@ -242,7 +242,7 @@ Translator_group::nongroup_l_arr () const
 void
 Translator_group::terminate_translator (Translator*r_l)
 {
-  DOUT << "Removing " << r_l->name() << " at " << now_moment () << '\n';
+  DOUT << "Removing " << classname (r_l) << " at " << now_moment () << '\n';
   r_l->removal_processing();
   Translator * trans_p =remove_translator_p (r_l);
 
@@ -267,12 +267,12 @@ Translator_group::remove_translator_p (Translator*trans_l)
 
 
 Translator*
-Translator_group::get_simple_translator (char const *type) const
+Translator_group::get_simple_translator (String type) const
 {
   Link_array<Translator> nongroups (nongroup_l_arr ());
   for (int i=0; i < nongroups.size(); i++)
     {
-      if (nongroups[i]->name() == type)
+      if (classname (nongroups[i]) == type)
        return nongroups[i];
     }
   if (daddy_trans_l_)
index e8223784eaf4c81d8a3833f6965dc1522c969fc3..35ef5a7abe321d92a688f50169b65c0e16d69e99 100644 (file)
@@ -41,7 +41,7 @@ Translator::is_alias_b (String s) const
 }
 
 bool
-Translator::do_try_request (Request *)
+Translator::do_try_music (Music *)
 {
   return false;
 }
@@ -73,8 +73,8 @@ void
 Translator::print () const
 {
 #ifndef NPRINT
-  DOUT << name () << " {";
-  if (name () != type_str_)
+  DOUT << classname (this) << " {";
+  if (classname (this) != type_str_)
     DOUT << "type = " << type_str_;
   for (Dictionary_iter<Scalar> i (properties_dict_); i.ok (); i++)
     {
@@ -90,7 +90,7 @@ Translator::do_print () const
 {
 }
 
-IMPLEMENT_IS_TYPE_B(Translator);
+
 
 
 void
@@ -127,12 +127,12 @@ Translator::removal_processing ()
 
 
 bool
-Translator::try_request (Request * r)
+Translator::try_music (Music * r)
 {
   if (status < MOVE_INITED)
     post_move_processing ();
 
-  return do_try_request (r);
+  return do_try_music (r);
 }
 
 void
index 952c33cdbd969fc06451ac07e397e4fd42996619..5011ac67f6389bd7b9eb3c4060484c8c581b4a09 100644 (file)
@@ -35,4 +35,4 @@ Transposed_music::to_relative_octave (Musical_pitch p)
   return p;
 }
 
-IMPLEMENT_IS_TYPE_B1 (Transposed_music, Music_wrapper);
+
diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc
new file mode 100644 (file)
index 0000000..d7d9190
--- /dev/null
@@ -0,0 +1,81 @@
+/*   
+  auto-plet-engraver.cc --  implement Auto_plet_engraver
+  
+  source file of the GNU LilyPond music typesetter
+  
+  (c) 1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  
+ */
+
+#include "tuplet-engraver.hh"
+#include "command-request.hh"
+#include "tuplet-spanner.hh"
+#include "note-column.hh"
+#include "compressed-music.hh"
+#include "text-def.hh"
+
+bool
+Tuplet_engraver::do_try_music (Music *r)
+{
+  if (Compressed_music * c = dynamic_cast<Compressed_music *> (r))
+    {
+      compressed_music_arr_.push (c);
+      stop_moments_.push (now_moment () + c->duration ());
+      return true;
+    }
+  return false;
+}
+
+void
+Tuplet_engraver::do_process_requests ()
+{
+  for (int i= started_span_p_arr_.size ();
+       i < compressed_music_arr_.size (); i++)
+    {
+      Plet_spanner* glep = new Plet_spanner ();
+      started_span_p_arr_.push (glep);
+
+      Text_def *t = new Text_def;
+      t->text_str_ = to_str (compressed_music_arr_[i]->den_i_);
+      glep->tdef_p_.set_p  (t);
+      announce_element (Score_element_info (glep, compressed_music_arr_ [i]));
+    }
+}
+
+void
+Tuplet_engraver::acknowledge_element (Score_element_info i)
+{
+  if (Note_column *nc = dynamic_cast<Note_column *> (i.elem_l_))
+    {
+      for (int j =0; j  <started_span_p_arr_.size (); j++)
+       started_span_p_arr_[j]->add_column (nc);
+    }
+}
+
+void
+Tuplet_engraver::do_post_move_processing ()
+{
+  Moment now = now_moment ();
+  for (int i= started_span_p_arr_.size (); i--; )
+    {
+      if (now >= stop_moments_[i])
+       {
+         typeset_element (started_span_p_arr_[i]);
+         started_span_p_arr_.del (i);
+         stop_moments_.del(i);
+         compressed_music_arr_.del(i);
+       }
+    }
+}
+
+void
+Tuplet_engraver::do_removal_processing ()
+{
+  for (int i=0; i < started_span_p_arr_.size (); i++)
+    {
+      typeset_element (started_span_p_arr_[i]);
+    }  
+}
+
+ADD_THIS_TRANSLATOR(Tuplet_engraver);
+
diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc
new file mode 100644 (file)
index 0000000..0d415a9
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+  plet-spanner.cc -- implement Plet_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1997--1998 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+#include "atom.hh"
+#include "box.hh"
+#include "debug.hh"
+#include "lookup.hh"
+#include "molecule.hh"
+#include "p-col.hh"
+#include "paper-def.hh"
+#include "tuplet-spanner.hh"
+#include "stem.hh"
+#include "text-def.hh"
+#include "note-column.hh"
+
+Plet_spanner::Plet_spanner ()
+{
+  visibility_i_ = 3;
+
+  tdef_p_.set_p(new Text_def);
+  tdef_p_->align_dir_ = CENTER;
+  tdef_p_->style_str_ = "italic";
+}
+
+Molecule*
+Plet_spanner::brew_molecule_p () const
+{
+  Molecule* mol_p = new Molecule;
+
+  if (column_arr_.size ()){
+    Real w = width ().length ();
+    Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_]
+      - column_arr_[0]->extent (Y_AXIS) [dir_];
+
+  
+    Atom num (tdef_p_->get_atom (paper (), CENTER));
+    num.translate (Offset (w/2, dy/2));
+
+    if (visibility_i_ >= 1)
+      mol_p->add_atom (num);
+
+    mol_p->add_atom (lookup_l ()->plet (dy, w, dir_));
+  }
+  return mol_p;
+}
+  
+void
+Plet_spanner::do_add_processing ()
+{
+  if (column_arr_.size ())
+    {
+      
+      set_bounds (LEFT, column_arr_[0]);
+      set_bounds (RIGHT, column_arr_.top ());  
+    }
+}
+  
+void
+Plet_spanner::do_post_processing ()
+{
+    if (column_arr_.size())
+       translate_axis (column_arr_[0]->extent (Y_AXIS)[dir_], Y_AXIS);
+}
+
+void
+Plet_spanner::do_substitute_dependency (Score_element* o, Score_element* n)
+{
+  if (Note_column *onc = dynamic_cast <Note_column *> (o))
+    column_arr_.substitute (onc, dynamic_cast<Note_column*> (n));
+}
+  
+void
+Plet_spanner::set_default_dir ()
+{
+  dir_ = UP;
+  for (int i=0; i < column_arr_.size (); i ++) 
+    {
+      if (column_arr_[i]->dir_ < 0) 
+       {
+         dir_ = DOWN;
+         break;
+       }
+    }
+}
+
+
+void
+Plet_spanner::add_column (Note_column*n)
+{
+  column_arr_.push (n);
+  add_dependency (n);
+}
+
index 3ef7567af594db22b9e7fa4d01d36f0c3071c918..ef8f39ef08e9b3d0c3fa909befdc3b22bea776ab 100644 (file)
@@ -15,14 +15,14 @@ Type_swallow_translator::Type_swallow_translator ()
 }
 
 bool
-Type_swallow_translator::do_try_request (Request*r)
+Type_swallow_translator::do_try_music (Music*r)
 {
   //  if (type_ && type_->before (typeid( *r))) // 
   //  return true;
   return false;                        // ugh. FIXME.
 }
 
-IMPLEMENT_IS_TYPE_B1(Type_swallow_translator, Translator);
+
 
 DECLARE_REQUEST_SWALLOWER(Skip_req);
 
index a270ad7a9f7b248045a483baf937ad3fa89ff471..6fa9794f883860a027dabfe598c446ebf6358a87 100644 (file)
@@ -58,5 +58,5 @@ Vertical_align_engraver::acknowledge_element (Score_element_info i)
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Vertical_align_engraver, Engraver);
+
 ADD_THIS_TRANSLATOR(Vertical_align_engraver);
index f5b0095a2cebd89ef92f82e0dddb473087849f89..41a84e24b997d405eb93f69f997230ee10b1d83d 100644 (file)
@@ -9,7 +9,7 @@
 #include "vertical-align-spanner.hh"
 
 
-IMPLEMENT_IS_TYPE_B2(Vertical_align_spanner, Align_element, Spanner);
+
 
 Vertical_align_spanner::Vertical_align_spanner ()
 {
index 61c644676cdbe4652f05f2a3217fc30897356ff3..cbfa7333b563fe12eac4ecefb745ac3c0147d619 100644 (file)
@@ -23,4 +23,4 @@ Vertical_group_element::do_height() const
   return Graphical_axis_group::extent (Y_AXIS);
 }
 
-IMPLEMENT_IS_TYPE_B1(Vertical_group_element, Axis_group_element);
+
index 2197db7fdd8b7548b0194d462786efed25162a68..638afa364d399177fa3a3640e37cccbc88b017a3 100644 (file)
@@ -10,7 +10,7 @@
 #include "item.hh"
 #include "p-col.hh"
 
-IMPLEMENT_IS_TYPE_B2(Vertical_group_spanner, Axis_group_spanner, Vertical_group_element);
+
 
 
 Vertical_group_spanner::Vertical_group_spanner ()
index 3c902918d5ef3045ceb3cd1d299f2f12005320b4..a03c3376647d131246a40943f2e415fe8febc691 100644 (file)
@@ -83,7 +83,7 @@ Sequential_music_iterator::~Sequential_music_iterator()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Sequential_music_iterator,Music_iterator);
+
 
 void
 Sequential_music_iterator::do_process_and_next (Moment until)
index 40c4ce7d3c7800f066f9dafc3976a15df8a49522..3499e9627c68a7aa568630efb72d8cebc7708fdc 100644 (file)
@@ -1,9 +1,4 @@
-
-\paper { \translator {
-       \OrchestralPartStaffContext
-
-       }
-       \translator { \ScoreContext
-               skipBars = 1;   
-       }
+\paper { 
+       \translator { \OrchestralPartStaffContext }
+       \translator { \ScoreContext skipBars = 1; }
 }
index eeb3e58ee79b29ebe669515d1a7e8b56bb5782bc..0f2537d2f574b061bdcd4fd5285d81e4d18b70f0 100644 (file)
@@ -75,6 +75,7 @@ strijkers = \type StaffGroup = strijkers_group <
        >
        \paper{
                % Give hara-kiri something to do...
+               % URG fixme Score+HaraKiri!
                linewidth = 130.0\mm;
                \translator { \OrchestralScoreContext }
        }
index 0110e366527db44deaf23746d5bec65015411f3e..a70465726d6d1ae6354f66d2e556dd06edb17410 100644 (file)
@@ -125,7 +125,7 @@ $lyric_verse2 = \lyrics{
        \[/3 Mit4 der8 \] T\"o-4. ne8
        \[/3 s\"u-4 "\ss{}en"8 \] Kla-4. gen8
        Fleh-4. en8 \[/3 sie4 f\"ur8 \]
-       mich.2 _4
+       mich2 _4
        _4_ _ 
        _4_ _
 
@@ -159,7 +159,7 @@ $lyric_through = \lyrics{
        \[/3 Komm4 be-8 \] gl\"u4. cke8 |
        mich!2. |
        \[/3 Komm4 be-8 \] gl\"u4. cke8 |
-       mich!2. |
+       mich,2. __ |
        _2 be-4 |
        gl\"u-2. |
        cke2. |
@@ -444,11 +444,19 @@ $grand_staff = \type GrandStaff<
        % To get original, \transpose d'
        % \transpose a gives a' to d'' (for basses, who sing an octave down)
        <
-               { \notes \transpose a { \$vocal_staff } }
+% kjoet, but i like the original better -- jcn
+%              { \notes \transpose a { \$vocal_staff } }
+%              \$lyric_staff
+%              { \notes \transpose a { \$grand_staff } }
+               { \notes { \$vocal_staff } }
                \$lyric_staff
-               { \notes \transpose a { \$grand_staff } }
+               { \notes { \$grand_staff } }
        >
-       \paper { \translator { \OrchestralScoreContext }}
+       \paper { 
+%              \translator { \OrchestralScoreContext }
+%              \translator { \OrchestralPartStaffContext }
+               \translator { \HaraKiriStaffContext }
+       }
        \midi{
                \tempo 4 = 54;
        }
diff --git a/ps/lily.ps b/ps/lily.ps
new file mode 100644 (file)
index 0000000..32c75a0
--- /dev/null
@@ -0,0 +1,176 @@
+%!PS-Adobe-1.0: lily.ps
+
+% round cappings
+1 setlinecap
+
+/draw_beam % width slope thick
+{
+        2 div /beam_thick exch def
+        /beam_slope exch def
+        /beam_wd exch def
+        beam_slope beam_wd mul /beam_ht exch def
+        0 beam_thick neg moveto 
+        beam_wd beam_ht rlineto 
+        0 beam_thick 2 mul rlineto
+        0 beam_thick lineto
+        closepath fill
+} bind def
+
+/draw_decrescendo % cont height width
+{
+       stafflinethickness setlinewidth
+       /cresc_cont exch def
+       /cresc_ht exch def
+       /cresc_wd exch def
+
+       cresc_wd cresc_cont moveto
+       0 cresc_ht lineto
+       stroke
+       cresc_wd cresc_cont neg moveto
+       0 cresc_ht neg lineto
+       stroke
+} bind def
+
+/draw_crescendo % cont height width
+{
+       stafflinethickness setlinewidth
+       /cresc_cont exch def
+       /cresc_ht exch def
+       /cresc_wd exch def
+
+       0 cresc_cont moveto
+       cresc_wd cresc_ht lineto
+       stroke
+       0 cresc_cont neg moveto
+       cresc_wd cresc_ht neg lineto
+       stroke
+} bind def
+
+/lily_distance 
+{
+       1 copy mul exch 1 copy mul add sqrt
+} bind def
+
+/draw_tuplet
+{
+       tuplet_t setlinewidth
+% urg: the only Level-2 PS, check effect in print
+%      true setstrokeadjust
+       1 setlinecap
+       1 setlinejoin
+       /dir exch def
+       /tuplet_dy exch def
+       /tuplet_dx exch def
+       staffheight 2 div /tuplet_gapx exch def
+       tuplet_dy tuplet_dx div tuplet_gapx mul /tuplet_gapy exch def
+       staffheight 4 div dir mul /tuplet_h exch def
+
+       0 0 moveto
+       0 tuplet_h lineto 
+       tuplet_dx tuplet_gapx sub 2 div 
+               tuplet_dy tuplet_gapy sub 2 div tuplet_h add lineto
+       tuplet_dx tuplet_gapx add 2 div 
+               tuplet_dy tuplet_gapy add 2 div tuplet_h add moveto
+       tuplet_dx tuplet_dy tuplet_h add lineto
+       tuplet_dx tuplet_dy lineto
+       stroke
+} bind def
+
+/draw_slur
+{
+       stafflinethickness setlinewidth
+       moveto
+       curveto
+       lineto
+       curveto
+       gsave
+       fill
+       grestore
+       stroke
+} bind def
+
+/draw_dashed_slur
+{
+       1 setlinecap
+       1 setlinejoin
+       setdash
+       setlinewidth
+       moveto
+       curveto
+       stroke
+} bind def
+
+
+
+/bracket_traject
+{
+  /traject_ds exch def
+  /traject_alpha exch def
+  traject_ds traject_alpha sin mul add
+  exch
+  traject_ds traject_alpha cos mul add
+  exch
+} bind def
+
+
+
+/half_bracket
+{
+%6
+       0 0
+%5a
+       bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+       bracket_alpha bracket_v -0.15 mul bracket_traject
+%5b
+       1 bracket_h
+       0 bracket_v 0.5 mul bracket_traject
+%5c
+       0 bracket_h
+%4a
+       bracket_b bracket_h bracket_t sub
+       0 bracket_v 0.4 mul bracket_traject
+%4b
+       bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+       bracket_alpha bracket_v -0.25 mul bracket_traject
+%4c
+       bracket_b bracket_v add bracket_h bracket_t sub bracket_u add
+%3
+       bracket_b bracket_h bracket_t sub
+%2
+       bracket_b 0
+%1
+       0 0
+} bind def
+
+/draw_half_bracket {
+       moveto
+       lineto
+       lineto
+       curveto
+       curveto
+       lineto
+       gsave
+       fill
+       grestore
+} bind def
+
+/draw_bracket % height
+{
+       2 div bracket_b add /bracket_h exch def
+       bracket_t setlinewidth
+% urg: the only Level-2 PS, check effect in print
+%      true setstrokeadjust
+       1 setlinecap
+       1 setlinejoin
+       half_bracket
+       20 copy
+       1 -1 scale
+       draw_half_bracket
+       stroke
+       1 -1 scale
+% ugh, ugh:
+       0.05 0 translate
+       draw_half_bracket
+       stroke
+} bind def
+
index 48b4bfb7b7f883b57b42d245ab448500a5a4f0fb..a862db2153221135239ab9c882dbc84229aee678 100644 (file)
        grestore
 } bind def
 
+/extender % width
+{
+       gsave
+       0 0 moveto
+       stafflinethickness 0.8 mul setlinewidth
+       0 lineto stroke
+       grestore
+} bind def
+
 /widthbar % height width
 {
        gsave
index 7ddeda4f7692eba6c235ab89c762a5c6027f7aae..93bf012315193ee3f29a11aac74d930c979dbdf9 100644 (file)
@@ -74,7 +74,6 @@
 
         \special{! 
 /interline \mudelapaperinterline0  def % ugh.  Only works x.yyyy floats 
-stafflinethickness 1.2 mul /plet_t exch def
 interline 3 div /bracket_b exch def
 interline 2 mul /bracket_w exch def
 stafflinethickness 2 mul /bracket_t exch def
@@ -82,6 +81,7 @@ interline 1.5 mul /bracket_v exch def
 bracket_v /bracket_u exch def
 50 /bracket_alpha exch def
 staffheight 4 div /interline exch def
+stafflinethickness 1.2 mul /tuplet_t exch def
 1 setlinecap}
 }
 
index 9066a06522ee4650952724aaeb4f7349e7255679..4eeffbc50dbd89b3787093b03d31a15e2dc88b1e 100644 (file)
 \def\finishbar#1{\rightalign{\thinbar{#1}\kern\smallspace\thickbar{#1}}}
 \def\fatdoublebar#1{\hbox{\phantom{\repeatcolon\kern2\smallspace}\thickbar{#1}\kern\smallspace\thickbar{#1}}}
 
-
+\def\extender#1{\vrule width#1 height .8\stafflinethickness}
 
 % ugh
 % see e.g. input/test/beam-pos.ly
 % does some rounding; i can't really check this from screen on i
 % 600x600 res.
 %
-\def\rulesym#1#2{\dimen0=#1%
+\def\rulesym#1#2{\dimen0=#1     %obsolete
         \vrule height .5\dimen0 depth .5\dimen0 width #2}
 \def\shiftedrulesym#1#2{\dimen0=#1%
         \vrule height .7\dimen0 depth .3\dimen0 width #2}