]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.61 release/0.0.61
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 12 May 1997 22:32:15 +0000 (00:32 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 12 May 1997 22:32:15 +0000 (00:32 +0200)
74 files changed:
.version
Documentation/faq.pod
Documentation/lilypond.pod
NEWS
TODO
bin/make_patch
bin/make_website
configure
configure.in
flower/.version
flower/NEWS
flower/choleski.cc
flower/dstream.cc
flower/flower-debug.cc
flower/include/dstream.hh
flower/include/fproto.hh
flower/include/list.hh
flower/include/parray.hh [new file with mode: 0644]
flower/include/pcursor.hh
flower/include/plist.hh
flower/include/plist.icc
flower/include/plist.tcc
init/table_sixteen.ini
input/keys.ly [new file with mode: 0644]
input/scripts.ly [new file with mode: 0644]
input/toccata-fuga-E.ly
lib/include/source.hh
lily/.version
lily/crescendo.cc
lily/include/beam.hh
lily/include/input-music.hh
lily/include/input-register.hh
lily/include/input-score.hh
lily/include/input-staff.hh
lily/include/local-key-reg.hh
lily/include/molecule.hh
lily/include/musical-request.hh
lily/include/p-col.hh
lily/include/p-score.hh
lily/include/p-staff.hh
lily/include/pulk-voices.hh
lily/include/register-group.hh
lily/include/request-column.hh
lily/include/rest-column.hh
lily/include/score.hh
lily/include/scoreline.hh
lily/include/staff.hh
lily/include/tie-reg.hh
lily/include/tie.hh
lily/include/voice-element.hh
lily/include/voice.hh
lily/lexer.l
lily/local-key-reg.cc
lily/musical-request.cc
lily/note.cc
lily/p-score.cc
lily/parser.y
lily/pulk-voices.cc
lily/request-column.cc
lily/rest-collision.cc
lily/rest-column.cc
lily/slur.cc
lily/staff.cc
lily/template4.cc
lily/text-def.cc
lily/text-item.cc
lily/text-reg.cc
lily/tie-reg.cc
lily/tie.cc
make/Template.make
make/lilypond.lsm
make/lilypond.spec
mf/Makefile
tex/lilyponddefs.tex

index d3c588005d21426925ad948c4465fc6fbf2782e8..6ede8d6ba5d1592cbc88e823d37a9f176b240b08 100644 (file)
--- a/.version
+++ b/.version
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 60
+TOPLEVEL_PATCH_LEVEL = 61
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index 4aeef3751f79abb675de181dfa9e172a09da4dd4..01445ded1601453e8dd1230dcf974243b1fbc389 100644 (file)
@@ -6,6 +6,15 @@ FAQ - GNU LilyPond FAQs
 
 Some questions that have been answered before.
 
 
 Some questions that have been answered before.
 
+=head2 Installing
+
+Q: I get all kinds of errors while  compiling parser.cc
+
+A: LilyPond uses features of bison version 1.25. Please confirm that
+you are using a version 1.25 or better. If the problem persists, then
+please mail me.
+
+
 =head2 Language: mudela
 
 Q: Why can't you type C<#c> in stead of C<cis> ?
 =head2 Language: mudela
 
 Q: Why can't you type C<#c> in stead of C<cis> ?
index 1de734b053cdc47d000623450a37a0cf74b36163..2d71f9971f2b39fbc8bfd7acd6d734278f0512db 100644 (file)
@@ -244,6 +244,13 @@ http://www.stack.nl/~hanwen/lilypond/index.html. This webpage contains
 the MIDI, GIF and PS files for some standard music files. It also has
 the complete LilyPond documentation
 
 the MIDI, GIF and PS files for some standard music files. It also has
 the complete LilyPond documentation
 
+A mailing list for GNU LilyPond has been setup, it's at
+lilypond@gnu.ai.mit.edu. To subscribe, send mail to
+lilypond-request@gnu.ai.mit.edu.
+
+For discussions concerning the GNU Music project, 
+gnu-music-discuss@vanderbilt. .edu
+
 =head1  REMARKS
 
 GNU LilyPond has no connection with the music package Rosegarden, other
 =head1  REMARKS
 
 GNU LilyPond has no connection with the music package Rosegarden, other
diff --git a/NEWS b/NEWS
index b44d208d44035529402807ddea912eb33f5cfc45..f21cc70d039aa5fc557bdfcf255907c0c75f8b46 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,24 @@
+pl 61
+       - scales.ly bugfix: dimensions default to ((0,0),(0,0))
+       - naming: PointerList->Pointer_list
+       - tied notes don't get accidental
+       - bf: crescendo size
+       - fixes: make_patch,
+       - bf: _"text" direction
+       - mailing list into lilypond.pod
+
+pl 60.mb
+       - set_flower_debug: Warning if -d is used when NPRINT is defined.
+       - Fixed several TeX details. vcenter renamed since it interfered
+         with LaTeX. Position of accents changed.
+       - New example; scriptS.ly
+       - table_sixteen: added scriptdefinition (Lilypond breaks if a
+         script is defined without dimensions).
+       - bf: ifndef typos in p-score.cc, choleski.cc
+       - bf: Slur::do_post_processing(), whole notes caused SIGSEGV.
+
+
+*******
 pl 60
        - Request_register::get_feature(), tie direction, Slur direction
        - lilypond output is now directly texable. 
 pl 60
        - Request_register::get_feature(), tie direction, Slur direction
        - lilypond output is now directly texable. 
@@ -13,6 +34,14 @@ pl 59
 
 ******
 may 2
 
 ******
 may 2
+pl 58.jnc1
+       - bf: toccata-fuga-E.ly
+
+pl 57.jcn4
+       - mi2mu handles rests (quantified only)
+       - fixed configure buglet
+        - "!date" Fri May  2 02:18:12 MET DST 1997
 pl 58
        - lexer cleanup
        - national chars in lyrics
 pl 58
        - lexer cleanup
        - national chars in lyrics
diff --git a/TODO b/TODO
index b65304f456edfd01d2ffb3ed5ef40defec1ab3fb..e4b56d238191bafd75e10e170309541f94c44be4 100644 (file)
--- a/TODO
+++ b/TODO
@@ -24,8 +24,7 @@ IMPORTANT
 
        * a Hands on tutorial [HKN]
 
 
        * a Hands on tutorial [HKN]
 
-
-PROJECT:
+PROJECTS
 
        * Output class, handles 
        - help text /(c) notice?
 
        * Output class, handles 
        - help text /(c) notice?
@@ -34,21 +33,35 @@ PROJECT:
        - quiet/ignore-version options
        - logfile output
 
        - quiet/ignore-version options
        - logfile output
 
-
        * elaborate Staff_side baseclass:
        * elaborate Staff_side baseclass:
-        - scripts
-        - text
-        - slur start/end
+       - scripts
+       - text
+       - slur start/end
 
        * Output an output format independent (ofi) typeset file; and 
          make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
        - poor man's ascii output possible?
 
        * Output an output format independent (ofi) typeset file; and 
          make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
        - poor man's ascii output possible?
-       - MusixTeX output possible?
+       - MusixTeX output possible? (would have to be done before break calc.)
+       - NIFF ?
        - PostScript output (esp. Beams, Slurs, etc)
 
        - PostScript output (esp. Beams, Slurs, etc)
 
+       * TeX spanners , use texbeam.cc as an example
+       - Glissando
+       - trill
+       - bracket
+
+       * Rewrite Beam and Rhythmic_grouping
+       - [c8. c32 c32]
+       - interbeam height
+       - general shaving
+       - use plet grouping
+       - abbreviations [c2 c2]1/2
+       - separate visual from rhythmic info
+
 PARSER
 PARSER
-       * Duration-> Musical_duration, typedef Rational Duration?
+       * Duration -> Musical_duration, typedef Rational Duration?
 
 
+**********************
 HKN buglist:
 
 \bar || ook dunne streepjes? Sluit de balk niet af! (soms met de
 HKN buglist:
 
 \bar || ook dunne streepjes? Sluit de balk niet af! (soms met de
@@ -60,21 +73,12 @@ Hele rusten ook in andere maatsoort dan 4/4 (en centreren in de maat)
 barcheck failed in lyric mode -> assert (zie barcheck.ly) (0.0.57)
 ------------------------/
 
 barcheck failed in lyric mode -> assert (zie barcheck.ly) (0.0.57)
 ------------------------/
 
-optie om te stoppen na eerste barcheck fail? (en wellicht in eerder
-stadium van preprocessing)
-
 noten staan vaak te dicht aan de rechterkant van de maatstreep.
 
 optie om nummers/markers boven maatstrepen te zetten
 
 tekst staat erg ver van notenbalken af
 
 noten staan vaak te dicht aan de rechterkant van de maatstreep.
 
 optie om nummers/markers boven maatstrepen te zetten
 
 tekst staat erg ver van notenbalken af
 
-barcheck her-synchroniseren? (evt met optie)
-
-script ^"3" onder ondanks boven?
-
-symbolen voor triller? (dus "tr---")
-
 waarom geen ; achter dingen in \paper? (\textwidth 180\mm)
 (sowieso: wanneer wel en geen ; ?)
 
 waarom geen ; achter dingen in \paper? (\textwidth 180\mm)
 (sowieso: wanneer wel en geen ; ?)
 
@@ -88,18 +92,6 @@ midi: instrumenten definieren?
 midi: tempo halverwege het stuk wijzigen?
 midi: gebonden noten niet herhalen?
 
 midi: tempo halverwege het stuk wijzigen?
 midi: gebonden noten niet herhalen?
 
---------/\
-De beam van de triool klopt niet.
-        <[d8. b8.> \duration 32; <e'32*2/3 cis'32*2/3> <d'32*2/3 b32*2/3>
-        <cis'32*2/3 a32*2/3> \duration 16; <b gis> <d' fis> <cis' e>
-<b d]> |
-(zie ook ergens in lacidarem-pianoI.ly)
---------/
-scales.ly compileert niet meer (vanwege transpose?)
-
-Lengte van de stokken klopt vaak niet, zie bijv. de eerste maat van
-langestok.ly.
-
 Triolen enzo: het zou handig zijn als je het cijfer "3" ook _tussen_
 twee noten kon plaatsen. Dat is bijvoorbeeld nodig in
 c4*2/3 c8*2/3
 Triolen enzo: het zou handig zijn als je het cijfer "3" ook _tussen_
 twee noten kon plaatsen. Dat is bijvoorbeeld nodig in
 c4*2/3 c8*2/3
@@ -107,27 +99,23 @@ c4*2/3 c8*2/3
 ---------------\
 \bar "||" \meter 6/8; op het eind van de regel staat door elkaar
 gedrukt.
 ---------------\
 \bar "||" \meter 6/8; op het eind van de regel staat door elkaar
 gedrukt.
-
+****************
 
 BUGS
 
        * detect -pipe
        
 
 BUGS
 
        * detect -pipe
        
+       * staccato dot positions.
+
+       * stacked scripts.
+
        * redo timing stuff <-> pulk to allow \meter 2/4; e2. to work
        out correctly
 
        * key transposition.
 
        * redo timing stuff <-> pulk to allow \meter 2/4; e2. to work
        out correctly
 
        * key transposition.
 
-       * hairpin width
-
        * help-lines for rests
 
        * help-lines for rests
 
-       * [c8. c32 c32]
-
-       * \duration 8; e*2/3
-
-       * cis ( | ) cis
-
        * lilypond - -> crash
 
        * chlapik balk ruimte 
        * lilypond - -> crash
 
        * chlapik balk ruimte 
@@ -155,6 +143,9 @@ INPUTLANGUAGE
 
        * relative mode for pitch entering
 
 
        * relative mode for pitch entering
 
+       * \duration 8; e*2/3
+
+
        * configure pitch_byte
 
        * special key.
        * configure pitch_byte
 
        * special key.
@@ -169,6 +160,8 @@ INPUTLANGUAGE
 
 SMALLISH PROJECTS
 
 
 SMALLISH PROJECTS
 
+       * write Dynamic_line (to group dynamics horizontally)
+
        * write Rest_collision
 
        * use Real for y positions.
        * write Rest_collision
 
        * use Real for y positions.
@@ -218,9 +211,6 @@ SMALLISH PROJECTS
 
        * stafftypes: voice names/ instrument names.
 
 
        * stafftypes: voice names/ instrument names.
 
-       * Lookup::tex_glissando, Lookup::tex_bracket,  (use texbeam.cc as an
-       example.)
-
        * Decent TeX titledefs (\tempo, \metron, etc. )
 
        * C meter iso 4/4
        * Decent TeX titledefs (\tempo, \metron, etc. )
 
        * C meter iso 4/4
@@ -263,8 +253,6 @@ FUTURE
 
        * put scripts on bars
 
 
        * put scripts on bars
 
-       * glissando
-
        * guitar chord
 
        * Junk Staff_column, and find the requests while walking the Voices.?
        * guitar chord
 
        * Junk Staff_column, and find the requests while walking the Voices.?
@@ -301,10 +289,11 @@ IDEAS
 
        * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
 
 
        * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
 
-       * use an embedded language: scheme, lisp, S-lang, Perl, GUILE, ?
+       * use an embedded language: Python, Scheme?
        for : 
                - Items/Spanners
                - Registers
        for : 
                - Items/Spanners
                - Registers
+               - Complex mudela
 
        * y -dims in internote?
 
 
        * y -dims in internote?
 
@@ -350,3 +339,4 @@ IDEAS
            %  --|---         --|---
           (where "to" is a tiny bow)
 
            %  --|---         --|---
           (where "to" is a tiny bow)
 
+       * move towards incremental algorithms.
index 8ec7326f7b9c786f88efb4caacd34eb5180f2402..a70faaeea5e14058852d745c9db1635e7460e83f 100755 (executable)
@@ -35,8 +35,10 @@ then
    tar zfx $oldarc
 fi
 
    tar zfx $oldarc
 fi
 
-#(cd $nm$old; touch depend; make clean)
-#(cd $nm$new; touch depend; make clean)
+# not interested in auto generated files.
+for a in lilypond.lsm INSTALL.text AUTHORS.text lilypond.spec configure; do
+    rm `find  $nm$old $nm$new  -name $a`
+done    
 
 echo 'use cd source-dir; patch -E -p0 < this_patch'> patch-$new
 
 
 echo 'use cd source-dir; patch -E -p0 < this_patch'> patch-$new
 
index 380a5cbca15609e26dd7d05c6d48f82329bea7ea..0f9ad202fc803b1e39db9fc5d3342be2969851e8 100755 (executable)
@@ -67,10 +67,12 @@ sub gen_examples
            "dvips -o $a.ps $texfile;";
 
        }
            "dvips -o $a.ps $texfile;";
 
        }
+
+       my_system "mv lelie.midi $a.midi; "     if ( -f "lelie.midi" );
+
        # generate the pixmap at twice the size, then rescale (for antialiasing)
        if ( ! -f "$a.gif" ) {
        # generate the pixmap at twice the size, then rescale (for antialiasing)
        if ( ! -f "$a.gif" ) {
-           my_system "mv lelie.midi $a.midi; ",
-            "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE  $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif",
+           my_system "gs -q -sDEVICE=ppmraw -sOutputFile=- -r200 -dNOPAUSE  $a.ps -c quit |pnmscale 0.5| ppmtogif > $a.gif",
             "gzip $a.ps";
        }   
     }
             "gzip $a.ps";
        }   
     }
index ce276ad5d61ab4beecb12042eada9fdb40dc54ce..9e35706c4fcdb968996ad828f1fe8118375429a0 100755 (executable)
--- a/configure
+++ b/configure
@@ -535,7 +535,13 @@ fi
 
 
 
 
 
 
-
+# if given here, these vars are initted at the checking point.
+printing_b=no
+checking_b=yes
+debug_b=yes
+optimise_b=no
+profile_b=no
+    
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CXXCPP $CPPFLAGS'
 ac_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
 ac_cpp='$CXXCPP $CPPFLAGS'
@@ -634,7 +640,7 @@ 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
 # 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:638: checking for $ac_word" >&5
+echo "configure:644: 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 eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -665,7 +671,7 @@ test -n "$CXX" || CXX="gcc"
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
 
 
 echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:669: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:675: 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_ext=C
 # CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -675,11 +681,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
 cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext <<EOF
 cross_compiling=$ac_cv_prog_cxx_cross
 
 cat > conftest.$ac_ext <<EOF
-#line 679 "configure"
+#line 685 "configure"
 #include "confdefs.h"
 main(){return(0);}
 EOF
 #include "confdefs.h"
 main(){return(0);}
 EOF
-if { (eval echo configure:683: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:689: \"$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_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -699,12 +705,12 @@ 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: 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:703: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:709: 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 "$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:708: checking whether we are using GNU C++" >&5
+echo "configure:714: 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
 if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -713,7 +719,7 @@ else
   yes;
 #endif
 EOF
   yes;
 #endif
 EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:717: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:723: \"$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
   ac_cv_prog_gxx=yes
 else
   ac_cv_prog_gxx=no
@@ -728,7 +734,7 @@ if test $ac_cv_prog_gxx = yes; then
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS=
   echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
   ac_save_CXXFLAGS="$CXXFLAGS"
   CXXFLAGS=
   echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:732: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:738: 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
 if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -758,7 +764,7 @@ fi
 # 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
 # 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:762: checking for $ac_word" >&5
+echo "configure:768: 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 eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -814,7 +820,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
 # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
 # ./install, which can be erroneously created by make from ./install.sh.
 echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:818: checking for a BSD compatible install" >&5
+echo "configure:824: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 if test -z "$INSTALL"; then
 if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -868,7 +874,7 @@ 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
 # 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:872: checking for $ac_word" >&5
+echo "configure:878: 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 eval "test \"`echo '$''{'ac_cv_prog_FIND'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -918,7 +924,7 @@ 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
 # 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:922: checking for $ac_word" >&5
+echo "configure:928: 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 eval "test \"`echo '$''{'ac_cv_prog_BISON'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -952,7 +958,7 @@ 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
 # 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:956: checking for $ac_word" >&5
+echo "configure:962: 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 eval "test \"`echo '$''{'ac_cv_prog_FLEX'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -986,7 +992,7 @@ 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
 # 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:990: checking for $ac_word" >&5
+echo "configure:996: 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 eval "test \"`echo '$''{'ac_cv_prog_MAKE'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1020,7 +1026,7 @@ 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
 # 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:1024: checking for $ac_word" >&5
+echo "configure:1030: checking for $ac_word" >&5
 if eval "test \"`echo '$''{'ac_cv_prog_PODMAN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
 if eval "test \"`echo '$''{'ac_cv_prog_PODMAN'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
 else
@@ -1056,7 +1062,7 @@ if test "x$TEXPREFIX" = xauto ; then
     
 
     echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
     
 
     echo $ac_n "checking TeX/MF root dir directory""... $ac_c" 1>&6
-echo "configure:1060: checking TeX/MF root dir directory" >&5    
+echo "configure:1066: checking TeX/MF root dir directory" >&5    
 
     find_root_prefix="$prefix"
     
 
     find_root_prefix="$prefix"
     
@@ -1094,7 +1100,7 @@ if test "x$TEXDIR" = xauto ; then
     
     
     echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
     
     
     echo $ac_n "checking TeX input directory""... $ac_c" 1>&6
-echo "configure:1098: checking TeX input directory" >&5    
+echo "configure:1104: checking TeX input directory" >&5    
     find_dirdir=`(cd $find_texprefix; 
       $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
     
     find_dirdir=`(cd $find_texprefix; 
       $FIND ./ -type d -a -name tex -print |sort|head -1|sed 's#^\./##')`
     
@@ -1116,7 +1122,7 @@ if test "x$MFDIR" = xauto; then
     
     
     echo $ac_n "checking MF input directory""... $ac_c" 1>&6
     
     
     echo $ac_n "checking MF input directory""... $ac_c" 1>&6
-echo "configure:1120: checking MF input directory" >&5    
+echo "configure:1126: checking MF input directory" >&5    
     find_dirdir=`(cd $find_texprefix; 
       $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
     
     find_dirdir=`(cd $find_texprefix; 
       $FIND ./ -type d -a -name source -print |sort|head -1|sed 's#^\./##')`
     
@@ -1167,7 +1173,7 @@ else
 fi
 
 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
 fi
 
 echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1171: checking how to run the C++ preprocessor" >&5
+echo "configure:1177: 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
 if test -z "$CXXCPP"; then
 if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
   echo $ac_n "(cached) $ac_c" 1>&6
@@ -1180,12 +1186,12 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
 cross_compiling=$ac_cv_prog_cxx_cross
   CXXCPP="${CXX-g++} -E"
   cat > conftest.$ac_ext <<EOF
-#line 1184 "configure"
+#line 1190 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1189: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1195: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   :
@@ -1205,17 +1211,17 @@ echo "$ac_t""$CXXCPP" 1>&6
 
 ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
 
 ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1209: checking for FlexLexer.h" >&5
+echo "configure:1215: 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
 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 1214 "configure"
+#line 1220 "configure"
 #include "confdefs.h"
 #include <FlexLexer.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
 #include "confdefs.h"
 #include <FlexLexer.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1219: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1225: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
 ac_err=`grep -v '^ *+' conftest.out`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -1619,7 +1625,7 @@ fi
 eval "DIR_DATADIR=$datadir"
 DIR_DATADIR="$DIR_DATADIR/lilypond"
 echo $ac_n "checking ""... $ac_c" 1>&6
 eval "DIR_DATADIR=$datadir"
 DIR_DATADIR="$DIR_DATADIR/lilypond"
 echo $ac_n "checking ""... $ac_c" 1>&6
-echo "configure:1623: checking " >&5
+echo "configure:1629: checking " >&5
 
 cat << EOF > lib/out/config.hh
 
 
 cat << EOF > lib/out/config.hh
 
index 7bb5c5d9999b3491bb4d5fe0d14cede1ac3c24d1..fbf2c3d8d84531f87cb48bfb23eb1eb9be35b0bd 100644 (file)
@@ -3,12 +3,7 @@ dnl  Process this file with autoconf to produce a configure script.
 
 dnl should cache result.
 dnl should  look in $prefix first.
 
 dnl should cache result.
 dnl should  look in $prefix first.
-printing_b=no
-checking_b=yes
-debug_b=yes
-optimise_b=no
-profile_b=no
-#shared_b=no
+
 
 AC_DEFUN(AC_TEX_PREFIX, [
     
 
 AC_DEFUN(AC_TEX_PREFIX, [
     
@@ -79,7 +74,13 @@ dnl     AC_REQUIRE([AC_TEX_PREFIX])
    
 AC_INIT(flower/choleski.cc)
 
    
 AC_INIT(flower/choleski.cc)
 
-
+# if given here, these vars are initted at the checking point.
+printing_b=no
+checking_b=yes
+debug_b=yes
+optimise_b=no
+profile_b=no
+    
 AC_LANG_CPLUSPLUS
 
 AC_ARG_ENABLE(printing,
 AC_LANG_CPLUSPLUS
 
 AC_ARG_ENABLE(printing,
index 6a81adeb2e65db11d7003a95260b3de1d3e6dbc2..0801c617c17da9e79a70e344331c10e7e75d5878 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 1
 MINOR_VERSION = 1
 MAJOR_VERSION = 1
 MINOR_VERSION = 1
-PATCH_LEVEL = 14
+PATCH_LEVEL = 15
 # use to send patches, always empty for released version:
 MY_PATCH_LEVEL = # include separator: "-1" or ".a"
 #
 # use to send patches, always empty for released version:
 MY_PATCH_LEVEL = # include separator: "-1" or ".a"
 #
index 3910ba6ccd9aaf226d484ec6841883e7ec3419e7..2da3968aa2ebddc86b92b6df9bb9295cbc90fac0 100644 (file)
@@ -1,3 +1,7 @@
+pl 1.1.15
+       - #ifndef fixes (MB)
+       - Dstream::clear ()
+
 pl 1.1.14
        - interval methods
 pl 1.1.13
 pl 1.1.14
        - interval methods
 pl 1.1.13
index 1d64f949acdc775844c65d58f16dc8778937f2be..d10372fdfdc0339d089cdf935495a59d4dda42e5 100644 (file)
@@ -55,7 +55,7 @@ Choleski_decomposition::Choleski_decomposition(Matrix P)
        D(k) = d;
     }
 
        D(k) = d;
     }
 
-#ifdef NDEBUG
+#ifndef NDEBUG
     assert((original()-P).norm() / P.norm() < EPS);
 #endif
 }
     assert((original()-P).norm() / P.norm() < EPS);
 #endif
 }
@@ -81,10 +81,10 @@ Choleski_decomposition::inverse() const
            invm(i,j) = inv(j);
     }
     
            invm(i,j) = inv(j);
     }
     
-#ifdef NDEBUG
+#ifndef NDEBUG
     Matrix I1(n), I2(original());
     I1.unit();
     Matrix I1(n), I2(original());
     I1.unit();
-    assert((I1-original()*invm).norm()/original.norm() < EPS);
+    assert((I1-I2*invm).norm()/I2.norm() < EPS);
 #endif
     
     return invm;
 #endif
     
     return invm;
index 73416a4e46c8217698db8618e7a65561da6b94cd..23b77bbbc4ed51df03e99c1ef957e8683b4f48d2 100644 (file)
@@ -1,4 +1,10 @@
+/*
+  dstream.cc -- implement Dstream
+
+  source file of the Flower Library
 
 
+  (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
 
 #include <fstream.h>
 #include "assoc.hh"
 
 #include <fstream.h>
 #include "assoc.hh"
@@ -6,7 +12,7 @@
 #include "scalar.hh"
 #include "text-db.hh"
 #include "string-convert.hh"
 #include "scalar.hh"
 #include "text-db.hh"
 #include "string-convert.hh"
-
+#include "assoc-iter.hh"
 /// indent of each level 
 const INDTAB = 2;
 
 /// indent of each level 
 const INDTAB = 2;
 
@@ -38,25 +44,25 @@ strip_member(String pret)
 Dstream&
 Dstream::identify_as(String name)
 {
 Dstream&
 Dstream::identify_as(String name)
 {
-    if (!os)
+    if (!os_l_)
        return *this;
     
     String mem(strip_pretty(name));
     String cl(strip_member(mem));
     String idx = cl;
     
        return *this;
     
     String mem(strip_pretty(name));
     String cl(strip_member(mem));
     String idx = cl;
     
-    if (silent->elt_b(mem))
+    if (silent_assoc_p_->elt_b(mem))
        idx  = mem;
        idx  = mem;
-    else if (silent->elt_b(cl))
+    else if (silent_assoc_p_->elt_b(cl))
        idx = cl;
     else {
        idx = cl;
     else {
-       (*silent)[idx] = false;
+       (*silent_assoc_p_)[idx] = false;
     }
     }
-    local_silence = (*silent)[idx];
-    if (classname != idx && !local_silence) {
-       classname=idx;
-       if (!(*silent)["Dstream"])
-           *os << "[" << classname << ":]"; // messy.
+    local_silence_b_ = (*silent_assoc_p_)[idx];
+    if (current_classname_str_ != idx && !local_silence_b_) {
+       current_classname_str_=idx;
+       if (!(*silent_assoc_p_)["Dstream"])
+           *os_l_ << "[" << current_classname_str_ << ":]"; // messy.
     }
     return *this;
 }
     }
     return *this;
 }
@@ -64,9 +70,9 @@ Dstream::identify_as(String name)
 bool
 Dstream::silence(String s)
 {
 bool
 Dstream::silence(String s)
 {
-    if (!silent->elt_b(s))
+    if (!silent_assoc_p_->elt_b(s))
        return false;
        return false;
-    return (*silent)[s];
+    return (*silent_assoc_p_)[s];
 }
 
 /** Output a string via the Dstream. This is the only output
 }
 
 /** Output a string via the Dstream. This is the only output
@@ -95,31 +101,31 @@ Dstream::operator<<(char const *ch_l)
 void
 Dstream::output(String s)
 {
 void
 Dstream::output(String s)
 {
-    if (local_silence|| !os)
+    if (local_silence_b_|| !os_l_)
        return ;
     
     for (char const *cp = s  ; *cp; cp++)
        switch(*cp) {
            case '{':
            case '[':
        return ;
     
     for (char const *cp = s  ; *cp; cp++)
        switch(*cp) {
            case '{':
            case '[':
-           case '(': indentlvl += INDTAB;
-               *os << *cp;             
+           case '(': indent_level_i_ += INDTAB;
+               *os_l_ << *cp;          
                break;
                
            case ')':
            case ']':
            case '}':
                break;
                
            case ')':
            case ']':
            case '}':
-               indentlvl -= INDTAB;
-               *os << *cp              ;
+               indent_level_i_ -= INDTAB;
+               *os_l_ << *cp           ;
                
                
-               assert  (indentlvl>=0) ;
+               assert  (indent_level_i_>=0) ;
                break;
                
            case '\n':
                break;
                
            case '\n':
-               *os << '\n' << String (' ', indentlvl) << flush;
+               *os_l_ << '\n' << String (' ', indent_level_i_) << flush;
                break;        
            default:
                break;        
            default:
-               *os << *cp;
+               *os_l_ << *cp;
                break;
            }
     return ;    
                break;
            }
     return ;    
@@ -128,10 +134,10 @@ Dstream::output(String s)
 
 Dstream::Dstream(ostream *r, char const * cfg_nm )
 {
 
 Dstream::Dstream(ostream *r, char const * cfg_nm )
 {
-    os = r;
-    silent = new Assoc<String,bool>;
-    indentlvl = 0;
-    if (!os)
+    os_l_ = r;
+    silent_assoc_p_ = new Assoc<String,bool>;
+    indent_level_i_ = 0;
+    if (!os_l_)
        return;
     
     char const * fn =cfg_nm ? cfg_nm : ".dstreamrc";
        return;
     
     char const * fn =cfg_nm ? cfg_nm : ".dstreamrc";
@@ -148,7 +154,7 @@ Dstream::Dstream(ostream *r, char const * cfg_nm )
             r.message("not enough fields in Dstream init.");
             continue;
         }
             r.message("not enough fields in Dstream init.");
             continue;
         }
-        (*silent)[r[0]] = (bool)(int)(Scalar(r[1]));
+        (*silent_assoc_p_)[r[0]] = (bool)(int)(Scalar(r[1]));
     }
 
 }
     }
 
 }
@@ -156,6 +162,15 @@ Dstream::Dstream(ostream *r, char const * cfg_nm )
 
 Dstream::~Dstream()
 {    
 
 Dstream::~Dstream()
 {    
-    delete silent;
-    assert(!indentlvl) ;
+    delete silent_assoc_p_;
+    assert(!indent_level_i_) ;
+}
+
+void
+Dstream::clear_silence() 
+{
+    for (Assoc_iter<String, bool> i(*silent_assoc_p_); i.ok(); i++) {
+       i.val() = 0;
+    }
+                       
 }
 }
index 7617faaa24a7f914340e6e96d88841b62da4be8c..702304e71fba71d8160198841ae4cdd7d5c0f1a9 100644 (file)
@@ -12,6 +12,9 @@ Dstream *flower_dstream  = &default_flower_stream;
  */
 void set_flower_debug(Dstream&ds, bool b)
 {
  */
 void set_flower_debug(Dstream&ds, bool b)
 {
+#ifdef NPRINT
+    cout << "Debug printout disabled, see the installation guide." << endl;
+#endif
     flower_check_debug = b;
     flower_dstream = &ds;
 }
     flower_check_debug = b;
     flower_dstream = &ds;
 }
index 64cb61202639bc7ec5c69045ba5624495b6d8b93..63130d1204217978496e1c7eb22f32eebe458ed6 100644 (file)
@@ -1,3 +1,10 @@
+/*
+  dstream.hh -- declare Dstream
+
+  source file of the Flower Library
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
 
 #ifndef DSTREAM_HH
 #define DSTREAM_HH
 
 #ifndef DSTREAM_HH
 #define DSTREAM_HH
@@ -27,14 +34,14 @@ struct Assoc;
   */
 class Dstream
 {
   */
 class Dstream
 {
-    ostream *os;
-    int indentlvl;
-    bool local_silence;
-    String classname;
+    ostream *os_l_;
+    int indent_level_i_;
+    bool local_silence_b_;
+    String current_classname_str_;
     void output(String s);
     void output(String s);
-    Assoc<String, bool> *silent;
+    Assoc<String, bool> *silent_assoc_p_;
 public:
 public:
-
+    void clear_silence();
     bool silence(String);
     
     /**
     bool silence(String);
     
     /**
index 5f3bdfcff42a9eec36fbbbb616ada6e4e730e8b8..ef4c6422b2da874b00eee81af6301b01b327d6bd 100644 (file)
@@ -21,8 +21,8 @@ template<class T> struct Array;
 template<class T> struct sstack;
 template<class T,class K> struct Assoc;
 template<class T> struct List;
 template<class T> struct sstack;
 template<class T,class K> struct Assoc;
 template<class T> struct List;
-template<class T> struct PointerList;
-template<class T> struct IPointerList;
+template<class T> struct Pointer_list;
+template<class T> struct IPointer_list;
 template<class T> struct Cursor;
 template<class T> struct PCursor;
 template<class T> struct Link;
 template<class T> struct Cursor;
 template<class T> struct PCursor;
 template<class T> struct Link;
index a7389ed489a2ad14ca35ec62c54d0322d7157fe7..cdf57ced99ca6149d735cec18cee0c3194fd9c53 100644 (file)
@@ -15,7 +15,7 @@ template<class T> class Link;
    items are always stored as copies in List, but:
    #List<String># :  copies of #String# stored 
    #List<String*># : copies of #String*# stored! 
    items are always stored as copies in List, but:
    #List<String># :  copies of #String# stored 
    #List<String*># : copies of #String*# stored! 
-   (do not use, use \Ref{PointerList} #<String*># instead.)
+   (do not use, use \Ref{Pointer_list} #<String*># instead.)
  
    {\bf note:} 
    retrieving "invalid" cursors, i.e. 
  
    {\bf note:} 
    retrieving "invalid" cursors, i.e. 
diff --git a/flower/include/parray.hh b/flower/include/parray.hh
new file mode 100644 (file)
index 0000000..ed12074
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+  parray.hh -- declare Pointer_array
+
+  source file of the Flower Library
+
+  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
+
+#ifndef PARRAY_HH
+#define PARRAY_HH
+
+#include "varray.hh"
+
+template<class T>
+class Pointer_array : public Array<T>
+{
+public:
+    int find_i (T t) const{
+       for (int i=0; i < size(); i++)
+           if (elem(i) == t)
+               return i;
+       return -1;
+    }
+    T find_l(T t)const
+    {
+       int i = find_i(t);
+       if (i >= 0)
+           return elem(i);
+       else
+           return 0;
+    }
+};
+#endif // PARRAY_HH
index 459977a47111595f04c0d06635fe75421fea1ca0..dffe02b9ef1b7149b9c48b76dbd2baf7586f3b49 100644 (file)
 #include "plist.hh"
 #include "cursor.hh"
 
 #include "plist.hh"
 #include "cursor.hh"
 
-/**  cursor to go with PointerList. 
-  don't create PointerList<void*>'s.
+/**  cursor to go with Pointer_list. 
+  don't create Pointer_list<void*>'s.
   This cursor is just an interface class for Cursor. It takes care of the
   appropriate type casts
  */
 template<class T>
 class PCursor : private Cursor<void *> {
   This cursor is just an interface class for Cursor. It takes care of the
   appropriate type casts
  */
 template<class T>
 class PCursor : private Cursor<void *> {
-    friend class IPointerList<T>;
+    friend class IPointer_list<T>;
 
     /// delete contents
     void junk();
 
     /// delete contents
     void junk();
@@ -36,14 +36,14 @@ public:
        return remove_p();
     }
     
        return remove_p();
     }
     
-    PointerList<T> &list() { return (PointerList<T>&)Cursor<void*>::list(); }
+    Pointer_list<T> &list() { return (Pointer_list<T>&)Cursor<void*>::list(); }
     PCursor<T> operator++(int) { return Cursor<void*>::operator++(0);}
     PCursor<T> operator--(int) { return Cursor<void*>::operator--(0); }
     PCursor<T> operator+=(int i) { return Cursor<void*>::operator+=(i);}
     PCursor<T> operator-=(int i) { return Cursor<void*>::operator-=(i); }    
     PCursor<T> operator -(int no) const { return Cursor<void*>::operator-(no);}
     int operator -(PCursor<T> op) const { return Cursor<void*>::operator-(op);}
     PCursor<T> operator++(int) { return Cursor<void*>::operator++(0);}
     PCursor<T> operator--(int) { return Cursor<void*>::operator--(0); }
     PCursor<T> operator+=(int i) { return Cursor<void*>::operator+=(i);}
     PCursor<T> operator-=(int i) { return Cursor<void*>::operator-=(i); }    
     PCursor<T> operator -(int no) const { return Cursor<void*>::operator-(no);}
     int operator -(PCursor<T> op) const { return Cursor<void*>::operator-(op);}
-    PCursor<T> operator +( int no) const {return Cursor<void*>::operator+(no);}    PCursor(const PointerList<T> & l) : Cursor<void*> (l) {}
+    PCursor<T> operator +( int no) const {return Cursor<void*>::operator+(no);}    PCursor(const Pointer_list<T> & l) : Cursor<void*> (l) {}
     PCursor() : Cursor<void*> () {}
     PCursor( const Cursor<void*>& cursor ) : Cursor<void*>(cursor) { }
     void* vptr() const { return *((Cursor<void*> &) *this); }
     PCursor() : Cursor<void*> () {}
     PCursor( const Cursor<void*>& cursor ) : Cursor<void*>(cursor) { }
     void* vptr() const { return *((Cursor<void*> &) *this); }
index 80d780e3d61d390fcd761ea6f7058de2e97af96c..afbf942c738e1ea1503179c5bbb9d2b5569aeac5 100644 (file)
 /**
   A list of pointers.
   
 /**
   A list of pointers.
   
-  Use for list of pointers, e.g. PointerList<AbstractType*>. 
+  Use for list of pointers, e.g. Pointer_list<AbstractType*>. 
   This class does no deletion of the pointers, but it knows how to
   copy itself (shallow copy). We could have derived it from List<T>,
   This class does no deletion of the pointers, but it knows how to
   copy itself (shallow copy). We could have derived it from List<T>,
-  but this design saves a lot of code dup; for all PointerLists in the
+  but this design saves a lot of code dup; for all Pointer_lists in the
   program only one parent List<void*> is instantiated.
   */
 template<class T>
   program only one parent List<void*> is instantiated.
   */
 template<class T>
-class PointerList : public List<void *>
+class Pointer_list : public List<void *>
 {
  public:
     PCursor<T> top() const{
 {
  public:
     PCursor<T> top() const{
@@ -29,11 +29,11 @@ class PointerList : public List<void *>
        return PCursor<T> (List<void*>::bottom());
     }
     PCursor<T> find(T) const;
        return PCursor<T> (List<void*>::bottom());
     }
     PCursor<T> find(T) const;
-    void concatenate(PointerList<T> const &s) { List<void*>::concatenate(s); }
-    PointerList() {}
+    void concatenate(Pointer_list<T> const &s) { List<void*>::concatenate(s); }
+    Pointer_list() {}
 };
 
 };
 
-/**   PointerList which deletes pointers given to it. 
+/**   Pointer_list which deletes pointers given to it. 
   NOTE:
   
   The copy constructor doesn't do what you'd want:
   NOTE:
   
   The copy constructor doesn't do what you'd want:
@@ -41,25 +41,25 @@ class PointerList : public List<void *>
 
     new T(*cursor)
 
 
     new T(*cursor)
 
-  You have to copy this yourself, or use the macro PointerList__copy
+  You have to copy this yourself, or use the macro Pointer_list__copy
   
   */
 template<class T>
   
   */
 template<class T>
-class IPointerList : public PointerList<T> {
+class IPointer_list : public Pointer_list<T> {
 public:
 public:
-    IPointerList(IPointerList const &) { set_empty(); }
-    IPointerList() { }
-    ~IPointerList();
+    IPointer_list(IPointer_list const &) { set_empty(); }
+    IPointer_list() { }
+    ~IPointer_list();
 };
 
 };
 
-#define IPointerList__copy(T, to, from, op)   \
+#define IPointer_list__copy(T, to, from, op)   \
   for (PCursor<T> _pc_(from); _pc_.ok(); _pc_++)\
       to.bottom().add(_pc_->op)\
   \
 
 
 template<class T>
   for (PCursor<T> _pc_(from); _pc_.ok(); _pc_++)\
       to.bottom().add(_pc_->op)\
   \
 
 
 template<class T>
-void PL_copy(IPointerList<T*> &dst,IPointerList<T*> const&src);
+void PL_copy(IPointer_list<T*> &dst,IPointer_list<T*> const&src);
 
 
 
 
 
 
index 8b5f8eea56d8a8eef15b64dd7a2d0078d06ef7fa..f24e0ddf4500ecbc96c3989ac20c5888c74ac37f 100644 (file)
@@ -9,7 +9,7 @@
 
 template<class T>
 void
 
 template<class T>
 void
-PL_copy(IPointerList<T*> &to, IPointerList<T*> const&src)
+PL_copy(IPointer_list<T*> &to, IPointer_list<T*> const&src)
 {
     for (PCursor<T*> pc(src); pc.ok(); pc++) {
        T *q = pc;
 {
     for (PCursor<T*> pc(src); pc.ok(); pc++) {
        T *q = pc;
index d18e01f9025ac64d57d745e83a5633b6fb9358cd..7129cdbe3d2027ba1fd44b6941005c32a2dbe077 100644 (file)
@@ -1,12 +1,12 @@
 #include "plist.hh"
 
 #include "plist.hh"
 
-#define PL_instantiate(a)  template class PointerList<a*>; \
+#define PL_instantiate(a)  template class Pointer_list<a*>; \
        template class PCursor<a*>;
 #define IPL_instantiate(a) PL_instantiate(a); \
        template class PCursor<a*>;
 #define IPL_instantiate(a) PL_instantiate(a); \
-       template class IPointerList<a*>
+       template class IPointer_list<a*>
        
 template<class T>
        
 template<class T>
-IPointerList<T>::~IPointerList()
+IPointer_list<T>::~IPointer_list()
 {
     PCursor<T> c( *this );
     while (c.ok()) {
 {
     PCursor<T> c( *this );
     while (c.ok()) {
@@ -16,7 +16,7 @@ IPointerList<T>::~IPointerList()
 
 template<class T>
 PCursor<T> 
 
 template<class T>
 PCursor<T> 
-PointerList<T>::find(T what ) const
+Pointer_list<T>::find(T what ) const
 {
     PCursor<T> i(*this);
     for (; i.ok(); i++)
 {
     PCursor<T> i(*this);
     for (; i.ok(); i++)
index 82364493b752b6a59260c1d430148c2566e1c322..a1beff522b506c53f3030854b6360e5103b77543 100644 (file)
@@ -13,16 +13,16 @@ table_sixteen=
     "scripts" = \table {
            "fermata" "\fermata"                0\pt 0\pt       0\pt 6\pt
            "-fermata" "\ifermata"              0\pt 0\pt       -6\pt 0\pt
     "scripts" = \table {
            "fermata" "\fermata"                0\pt 0\pt       0\pt 6\pt
            "-fermata" "\ifermata"              0\pt 0\pt       -6\pt 0\pt
-           "portato" "\portato"
-           "-portato" "\iportato"
-           "tenuto" "\tenuto"  
-           "-tenuto" "\itenuto"
+           "portato" "\portato"                0\pt 4.8\pt     0\pt 2\pt
+           "-portato" "\iportato"              0\pt 4.8\pt     -2\pt 0\pt
+           "tenuto" "\tenuto"                  0\pt 4.8\pt     0\pt 1\pt
+           "-tenuto" "\itenuto"                0\pt 4.8\pt     -1\pt 0\pt
            "sforzato" "\sforzato"              -0.8\pt 4.8\pt  -1.92\pt 1.92\pt
            "marcato" "\marcato"                0\pt 4.8\pt     0\pt 4\pt
            "-marcato" "\imarcato"              0\pt 4.8\pt     -4\pt 0\pt
            "staccato" "\staccato"              0\pt 0\pt        0\pt 5\pt
            "sforzato" "\sforzato"              -0.8\pt 4.8\pt  -1.92\pt 1.92\pt
            "marcato" "\marcato"                0\pt 4.8\pt     0\pt 4\pt
            "-marcato" "\imarcato"              0\pt 4.8\pt     -4\pt 0\pt
            "staccato" "\staccato"              0\pt 0\pt        0\pt 5\pt
-           "staccatissimo" "\staccatissimo"    0\pt 0\pt       0\pt 7.5\pt
-           "-staccatissimo" "\istaccatissimo"  0\pt 0\pt       -7.5\pt 0\pt
+           "staccatissimo" "\staccatissimo"    0\pt 0\pt       0\pt 1\pt
+           "-staccatissimo" "\istaccatissimo"  0\pt 0\pt       0\pt 1\pt
            "upbow" "\upbow"                    -1\pt 6\pt      0\pt 5\pt
            "downbow" "\downbow"                0\pt 5\pt       0\pt 7.5\pt
            "back" "\backorfront"               0\pt 6\pt       0\pt 3\pt
            "upbow" "\upbow"                    -1\pt 6\pt      0\pt 5\pt
            "downbow" "\downbow"                0\pt 5\pt       0\pt 7.5\pt
            "back" "\backorfront"               0\pt 6\pt       0\pt 3\pt
diff --git a/input/keys.ly b/input/keys.ly
new file mode 100644 (file)
index 0000000..c215a57
--- /dev/null
@@ -0,0 +1,31 @@
+%{MudelaHeader
+
+ filename: keys.ly
+ title:
+ description: 
+ composers:
+ entered-by:
+ copyright:
+
+ Tested Features: local key, key
+EndMudelaHeader
+%}
+\version "0.0.57";
+
+
+blah = \melodic{
+       \duration 4;
+       \meter 4/4;
+       \octave c';
+       cis c cis cis |
+       <cis dis eis fes ges> cis dis2 ~ | 
+               \meter 2/4 ;
+       dis dis ~ | c cis~ | c 
+}
+
+\score{
+       \staff { 
+               melodicregs
+               blah
+       }
+}
diff --git a/input/scripts.ly b/input/scripts.ly
new file mode 100644 (file)
index 0000000..4890522
--- /dev/null
@@ -0,0 +1,75 @@
+%{MudelaHeader
+
+ filename: scripts.ly
+ title:
+ description: 
+ composers:
+ entered-by:HWN, MB
+ copyright:
+
+ Tested Features: scripts, text.
+EndMudelaHeader
+%}
+\version "0.0.57";
+
+
+blah = \staff{  melodicregs
+
+       \melodic {
+       \octave c';
+       'c ->-.-\fermata-"text"
+       c ->-.-\fermata-"text"
+       c' ->-.-\fermata-"text"
+       c'' ->-.-\fermata-"text"
+
+       'd ->-.-\fermata-"text"
+       d ->-.-\fermata-"text"
+       d' ->-.-\fermata-"text"
+       d'' ->-.-\fermata-"text"
+
+       'c ^>^.^\fermata^"text"
+       c ^>^.^\fermata^"text"
+       c' ^>^.^\fermata^"text"
+       c'' ^>^.^\fermata^"text"
+
+       'd ^>^.^\fermata^"text"
+       d ^>^.^\fermata^"text"
+       d' ^>^.^\fermata^"text"
+       d'' ^>^.^\fermata ^"text"
+
+       'c _>_._\fermata _"text"
+       c _>_._\fermata _"text"
+       c' _>_._\fermata _"text"
+       c'' _>_._\fermata _"text"
+
+       'd _>_._\fermata _"text"
+       d _>_._\fermata _"text"
+       d' _>_._\fermata _"text"
+       d'' _>_._\fermata _"text"
+                       
+      \meter 4/4;
+       \duration  8;
+       \octave c';
+       [c \< d e \! f][d' \> e' f' \! g'] 
+       [c-> \< d-> e-> \! f->][d'-> \> e'-> f'-> \! g'->] 
+       [c-^ \< d-^ e-^ \! f-^][d'-^ \> e'-^ f'-^ \! g'-^] 
+       [c-. \< d-. e-. \! f-.][d'-. \> e'-. f'-. \! g'-.]
+       [c-- \< d-- e-- \! f--][d'-- \> e'-- f'-- \! g'--] 
+       [c-\portato \< d-\portato e-\portato \! f-\portato]
+               [d'-\portato \> e'-\portato f'-\portato \! g'-\portato]
+       [c-\upbow \< d-\upbow e-\upbow \! f-\upbow]
+               [d'-\upbow \> e'-\upbow f'-\upbow \! g'-\upbow] 
+       [c-| \< d-| e-| \! f-|][d'-| \> e'-| f'-| \! g'-|]
+       [c-\fermata \< d-\fermata e-\fermata \! f-\fermata]
+               [d'-\fermata \> e'-\fermata f'-\fermata \! g'-\fermata] 
+       [c-\lheel \< d-\lheel e-\lheel \! f-\lheel]
+               [d'-\lheel \> e'-\lheel f'-\lheel \! g'-\lheel]
+}
+}
+
+\score{
+       blah
+       \paper{
+               \symboltables {table_sixteen}
+       }
+}
index 4cdeb0a2f2ef9f9ca034daa5287a89adb3df9ac0..dade648ae5386936bcf74ef59875278f9a4e4b73 100644 (file)
@@ -1,17 +1,24 @@
-% toccata-fuga-E.ly
-% 
-% toccata and fuga in E-major
-% Johann Sebastian Bach (1685-1750)
-% bwv 566
-%
-% toccata: 3 bar excerpt
-% 2nd fuga: transposed subject --- 4 bar except
-%
-% purpose of this file is testing: 
-%     * real-life collisions
-%     * multi-voice input --- splitting?
-%     * organ staff...
-%
+%{MudelaHeader
+
+ filename: toccata-fuga-E.ly
+ title: toccata and fuga in E-major bwv 566
+ description:  
+ toccata: 3 bar excerpt
+ 2nd fuga: transposed subject --- 4 bar excerpt
+
+ composers: Johann Sebastian Bach (1685-1750)
+ entered-by: JCN
+ copyright:
+
+ Tested Features:
+ purpose of this file is testing: 
+     * real-life collisions
+     * multi-voice input --- splitting?
+     * organ staff...
+
+EndMudelaHeader
+%}
+
 
 \version "0.0.57";
 
 
 \version "0.0.57";
 
@@ -53,9 +60,9 @@ toccata_pedal = \melodic{
        % 13
        r4 'fis4-\ltoe 'e4.-\lheel e8-\rheel | 
        % 14
        % 13
        r4 'fis4-\ltoe 'e4.-\lheel e8-\rheel | 
        % 14
-       fis4.-\rtoe fis8-.-\rtoe fis4-\rtoe [e8-\ltoe ais8-\rtoe] | 
+       fis4.-\rtoe fis8-.-\rtoe fis4-\rtoe [e8-\ltoe a8-\rtoe] | 
        % 15
        % 15
-       dis4-\ltoe gis4-\rtoe [cis8-\ltoe 'b8-\lheel 'ais8-\rtoe 'gis8-\ltoe] |
+       dis4-\ltoe gis4-\rtoe [cis8-\ltoe 'b8-\lheel 'a8-\rtoe 'gis8-\ltoe] |
        % 16
 }
 
        % 16
 }
 
index 05890f1310136adc2bcea635a8f9816a59ff6484..58ac1e7ae44288fd5245ec26058cce825895aff0 100644 (file)
@@ -19,7 +19,7 @@ public:
 private:
     const File_path * path_C_;
     void add( Source_file* sourcefile_p );
 private:
     const File_path * path_C_;
     void add( Source_file* sourcefile_p );
-    IPointerList<Source_file*> sourcefile_p_iplist_;
+    IPointer_list<Source_file*> sourcefile_p_iplist_;
     bool binary_b_ ;
 };
 
     bool binary_b_ ;
 };
 
index 4a6628d2a94ab2e21c78c0b6b3e6b2894e5974a8..cc03f17df4279b38cd445bbf81bc3b1ca0016c22 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 60
+PATCH_LEVEL = 61
 
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
index 09b775f8de306925947e63eab234e328a4729d48..f520106c19f0e7cc571f7d635ed368740c470f5d 100644 (file)
@@ -27,8 +27,9 @@ Crescendo::do_break_at(PCol*, PCol*)const
 
 
 Molecule*
 
 
 Molecule*
-Crescendo::brew_molecule_p() const return m_p ;
+Crescendo::brew_molecule_p() const
 {
 {
+    Molecule* m_p =0;
     Real x_off_dim=0.0;
     Real absdyn_dim = 10 PT;   // ugh
     
     Real x_off_dim=0.0;
     Real absdyn_dim = 10 PT;   // ugh
     
@@ -46,10 +47,14 @@ Crescendo::brew_molecule_p() const return m_p ;
        error("Crescendo too small");
        w_dim = 0;
     }
        error("Crescendo too small");
        w_dim = 0;
     }
-    Symbol s( paper()->lookup_l()->hairpin(w_dim, grow_dir_i_ < 0) );
+    Real lookup_wid = w_dim * 0.9; // make it slightly smaller.
+
+    Symbol s( paper()->lookup_l()->hairpin( lookup_wid, grow_dir_i_ < 0) );
     m_p->add(Atom(s));
     int pos = get_position_i(s.dim.y);
     m_p->add(Atom(s));
     int pos = get_position_i(s.dim.y);
-    m_p->translate(Offset(x_off_dim,pos * paper()->internote()));
+    m_p->translate(Offset(x_off_dim + 0.05 * w_dim, 
+                         pos * paper()->internote()));
+    return m_p;
 }
 
 IMPLEMENT_STATIC_NAME(Crescendo);
 }
 
 IMPLEMENT_STATIC_NAME(Crescendo);
index a85858bad82c9c62d78ca0b0056c2778c9a61118..f1ac0c1eaaee84daf70cffd83393be12daf44e49 100644 (file)
@@ -14,7 +14,7 @@
   make sure that they reach the beam and that point in the correct
   direction */
 struct Beam:  public Directional_spanner {
   make sure that they reach the beam and that point in the correct
   direction */
 struct Beam:  public Directional_spanner {
-    PointerList<Stem*> stems;
+    Pointer_list<Stem*> stems;
     /// the slope of the beam in posns / point (dimension)   
     Real slope;
 
     /// the slope of the beam in posns / point (dimension)   
     Real slope;
 
index 7102ed35eb98a311f645c2e92ff0822cb13941bf..b34fedc18359bf946c11f64bccd596201d47c329 100644 (file)
@@ -12,7 +12,7 @@
 #include "voice.hh"
 #include "moment.hh"
 
 #include "voice.hh"
 #include "moment.hh"
 
-struct Voice_list : public PointerList<Voice*> {
+struct Voice_list : public Pointer_list<Voice*> {
     void translate_time(Moment dt);
 };
 
     void translate_time(Moment dt);
 };
 
@@ -67,7 +67,7 @@ struct Simple_music : Input_music {
 
 /// Complex_music consists of multiple voices
 struct Complex_music : Input_music {
 
 /// Complex_music consists of multiple voices
 struct Complex_music : Input_music {
-    IPointerList<Input_music*> elts;
+    IPointer_list<Input_music*> elts;
     /* *************** */
     virtual void transpose(Melodic_req const&) const ;
     virtual void set_default_group(String g);
     /* *************** */
     virtual void transpose(Melodic_req const&) const ;
     virtual void set_default_group(String g);
index 6149121e29b129642e983d05f17d7a3a183d6f88..bf945ab10063ba75da9a26a2623311c7da6ae6f2 100644 (file)
@@ -16,7 +16,7 @@
 #include "input.hh"
 
 struct Input_register : Input { 
 #include "input.hh"
 
 struct Input_register : Input { 
-    IPointerList<Input_register*> ireg_list_;
+    IPointer_list<Input_register*> ireg_list_;
     String name_str_;
     
     void add(Input_register*);
     String name_str_;
     
     void add(Input_register*);
index a55b7a43782183985b8832b24fbf741ea083115e..6e6a3ceaaf98f9bba7c674afb2fc992d3d0f6116 100644 (file)
@@ -24,7 +24,7 @@ public:
     /// paper_, staffs_ and commands_ form the problem definition.
     Paper_def *paper_p_;
     Midi_def* midi_p_;
     /// paper_, staffs_ and commands_ form the problem definition.
     Paper_def *paper_p_;
     Midi_def* midi_p_;
-    IPointerList<Input_staff*> staffs_;
+    IPointer_list<Input_staff*> staffs_;
 
     
     /* *************************************************************** */
 
     
     /* *************************************************************** */
index 0a35b460b6d444b185c371d6fb23cfa5fd95ae0e..0bbdc1326614117cf05f4ff0a6ddf2ccf48da5fd 100644 (file)
@@ -16,7 +16,7 @@
 class Input_staff:public Input {
 public:
     
 class Input_staff:public Input {
 public:
     
-    IPointerList<Input_music*> music_;
+    IPointer_list<Input_music*> music_;
     Input_register * ireg_p_;
     
     /* *************** */
     Input_register * ireg_p_;
     
     /* *************** */
index 2ab094b3b397613c7c3a142e0c637130a8d75066..4921bd03aaf7f5083cee4b6c6e825c331364708f 100644 (file)
@@ -9,11 +9,15 @@
 #define LOCALKEYREG_HH
 #include "register.hh"
 #include "key.hh"
 #define LOCALKEYREG_HH
 #include "register.hh"
 #include "key.hh"
+#include "parray.hh"
 
 struct Local_key_register : Request_register {
     Key local_key_;
 
 struct Local_key_register : Request_register {
     Key local_key_;
-    Local_key_item* key_item_p_;
     Key const *key_C_;
     Key const *key_C_;
+    Array<Note_req* > mel_l_arr_;
+    Array<Item* > support_l_arr_;
+    Pointer_array<Item * > forced_l_arr_;
+    Pointer_array<Item *> tied_l_arr_;
     /* *************** */
     virtual void process_requests();
     virtual void acknowledge_element(Staff_elem_info);
     /* *************** */
     virtual void process_requests();
     virtual void acknowledge_element(Staff_elem_info);
index 084321ce4e809be9a755ee93a95acad107f975f6..312111bff283e0a33556326ecd0dd92365d3a4d3 100644 (file)
@@ -30,7 +30,7 @@ struct Atom {
 /** a group of individually translated symbols. You can add molecules
     to the top, to the right, etc.  */
 struct Molecule {
 /** a group of individually translated symbols. You can add molecules
     to the top, to the right, etc.  */
 struct Molecule {
-    IPointerList<Atom*> ats;   // change to List<Atom>? 
+    IPointer_list<Atom*> ats;  // change to List<Atom>? 
 
     /* *************** */
     
 
     /* *************** */
     
index eaba302d2bb8d5a486f2e98080cdeb1f2c6f7c7a..721b2ff51cfee1a26cd69459f11d9f8dde7c3cec 100644 (file)
@@ -114,6 +114,7 @@ struct Melodic_req :virtual Musical_req
     /// return pitch from central c (in halfnotes)
     int pitch()const; 
     Melodic_req();
     /// return pitch from central c (in halfnotes)
     int pitch()const; 
     Melodic_req();
+    static int compare(Melodic_req const&, Melodic_req const&);
    
     REQUESTMETHODS(Melodic_req,melodic);
 };
    
     REQUESTMETHODS(Melodic_req,melodic);
 };
index 2a2dd92afc5d322a3ba9ac5b6327661f737d4e59..58206b4306c0f0dbd9382bc0627eef79bbee1b51 100644 (file)
@@ -22,8 +22,8 @@
 
 class PCol { 
 public:
 
 class PCol { 
 public:
-    PointerList<Item const *> its;
-    PointerList<Spanner const *> stoppers, starters;
+    Pointer_list<Item const *> its;
+    Pointer_list<Spanner const *> stoppers, starters;
     
     /** prebreak is put before end of line.
     if broken here, then (*this) column is discarded, and prebreak
     
     /** prebreak is put before end of line.
     if broken here, then (*this) column is discarded, and prebreak
index 3177613ec5e89bd4abbe40367ba25b74a1b2856a..0cc7a2bc15469ca7dcde167d21e7cb07f6192034 100644 (file)
@@ -18,25 +18,25 @@ struct PScore {
     Paper_def *paper_l_;
     
     /// the columns, ordered left to right
     Paper_def *paper_l_;
     
     /// the columns, ordered left to right
-    IPointerList<PCol *> cols;
+    IPointer_list<PCol *> cols;
 
     /// the idealspacings, no particular order
 
     /// the idealspacings, no particular order
-    IPointerList<Idealspacing*> suz;
+    IPointer_list<Idealspacing*> suz;
 
     /// the staffs ordered top to bottom
 
     /// the staffs ordered top to bottom
-    IPointerList<PStaff*> staffs;
+    IPointer_list<PStaff*> staffs;
 
     /// all symbols in score. No particular order.
 
     /// all symbols in score. No particular order.
-    IPointerList<Item*> its;
+    IPointer_list<Item*> its;
 
     /// if broken, the different lines
 
     /// if broken, the different lines
-    IPointerList<Line_of_score*> lines;
+    IPointer_list<Line_of_score*> lines;
 
     /// crescs etc; no particular order
 
     /// crescs etc; no particular order
-    IPointerList<Spanner *> spanners;
+    IPointer_list<Spanner *> spanners;
 
     /// broken spanners
 
     /// broken spanners
-    IPointerList<Spanner*> broken_spans;
+    IPointer_list<Spanner*> broken_spans;
 
     /* *************** */
     /* CONSTRUCTION */
 
     /* *************** */
     /* CONSTRUCTION */
index c95834c2fb8ab5dd3bedde04144fe87e831acfdd..a1c5fb4daa91ff8fda598e44473569495e8e8ca3 100644 (file)
@@ -11,8 +11,8 @@ struct PStaff {
     PScore * pscore_l_;
     
     
     PScore * pscore_l_;
     
     
-    PointerList<Spanner const *> spans;
-    PointerList<Item*> its;
+    Pointer_list<Spanner const *> spans;
+    Pointer_list<Item*> its;
 
     /* *************** */
     void add(Item*i);
 
     /* *************** */
     void add(Item*i);
index 2cc5a48831edd5e5275c6a436811a582ef35e744..e871517388447c89d565cfabfe2027647a99729b 100644 (file)
@@ -34,15 +34,15 @@ int compare(Voice_l const &p1, Voice_l const &p2);
 class Pulk_voices
 {
 PQueue< Voice_l > voice_pq_;
 class Pulk_voices
 {
 PQueue< Voice_l > voice_pq_;
-    IPointerList< Pulk_voice * > pulk_p_list_;
-    PointerList<Staff *> staff_l_list_;
+    IPointer_list< Pulk_voice * > pulk_p_list_;
+    Pointer_list<Staff *> staff_l_list_;
     Moment next_mom_;
 
 public:
     Moment last_;
     bool ok() const;
     Moment next_mom() { return next_mom_; }
     Moment next_mom_;
 
 public:
     Moment last_;
     bool ok() const;
     Moment next_mom() { return next_mom_; }
-    Pulk_voices(PointerList<Staff*> const&);
+    Pulk_voices(Pointer_list<Staff*> const&);
     void get_aligned_request(Request_column *col_l );
 };
 
     void get_aligned_request(Request_column *col_l );
 };
 
index fcfc4ba5c6dc4e8ed9efc60c5a091445b67494f6..be21d7fd5e4060214988f75cabeb09380fde6123 100644 (file)
@@ -21,7 +21,7 @@
   */
 class Register_group_register : public Request_register {
 protected:
   */
 class Register_group_register : public Request_register {
 protected:
-    IPointerList<Request_register*> reg_list_;
+    IPointer_list<Request_register*> reg_list_;
     virtual void do_print()const;
 public:
 
     virtual void do_print()const;
 public:
 
index 32a6f63773a9a03c073f1f0212d2ad212bf4366b..e3d5d3184e94b401601fd10c4a3f7ff61dc06d79 100644 (file)
  */
 class Request_column 
 {
  */
 class Request_column 
 {
-    IPointerList<Staff_column*> staff_cols_;
+    IPointer_list<Staff_column*> staff_cols_;
     Array<Staff_column*> staff_col_l_arr_;
     
 public:
     Score_column *musical_column_l_, *command_column_l_;
     Array<Staff_column*> staff_col_l_arr_;
     
 public:
     Score_column *musical_column_l_, *command_column_l_;
-    Request_column(PointerList<Staff*> const& );
+    Request_column(Pointer_list<Staff*> const& );
     bool used_b()const;
     Moment when();
     void add_reqs(int staff_idx, Array<Request*> const&);
     bool used_b()const;
     Moment when();
     void add_reqs(int staff_idx, Array<Request*> const&);
index 04e86e581adb99d08785ce0a17ef9d3a71b3ae90..a753c61d937315affa61e9b3d4f519b32ff91e5c 100644 (file)
@@ -23,6 +23,7 @@ public:
     void add(Notehead *);
     NAME_MEMBERS(Rest_column);
     void translate_y(Real dy);
     void add(Notehead *);
     NAME_MEMBERS(Rest_column);
     void translate_y(Real dy);
+    Rest_column();
 };
 
 #endif // REST_COLUMN_HH
 };
 
 #endif // REST_COLUMN_HH
index e83540533b60aff0e26e0ecd7274209e616bc836..7376e9797655121d4ce584c75a7e1268fba14b34 100644 (file)
@@ -24,12 +24,12 @@ struct Score {
     /// paper_, staffs_ and commands_ form the problem definition.
     Paper_def *paper_p_;
     Midi_def *midi_p_;
     /// paper_, staffs_ and commands_ form the problem definition.
     Paper_def *paper_p_;
     Midi_def *midi_p_;
-    IPointerList<Staff*> staffs_;
+    IPointer_list<Staff*> staffs_;
     
     /// "runtime" fields for setting up spacing    
     
     /// "runtime" fields for setting up spacing    
-    IPointerList<Request_column*> rcols_;
+    IPointer_list<Request_column*> rcols_;
     
     
-    IPointerList<Score_column*> cols_;
+    IPointer_list<Score_column*> cols_;
     PScore *pscore_p_;
 
     Input input_;
     PScore *pscore_p_;
 
     Input input_;
index 9196a96ab334f984672fdc5e2a253b07c5e17be1..33bbc4a2d874aa4632a55ac46b6dea742421696b 100644 (file)
 /// the columns of a score that form one line.
 struct
 Line_of_score {
 /// the columns of a score that form one line.
 struct
 Line_of_score {
-    PointerList<PCol *> cols;
+    Pointer_list<PCol *> cols;
 
     // need to store height of each staff.
 
     // need to store height of each staff.
-    IPointerList<Line_of_staff*> staffs;
+    IPointer_list<Line_of_staff*> staffs;
     PScore * pscore_l_;        // needed to generate staffs
 
     /* *************** */
     PScore * pscore_l_;        // needed to generate staffs
 
     /* *************** */
index e0613136f25bdd952b05e8b28d599d627603ae09..29f6839f7314672a88cd520eee20d86b36b554ef 100644 (file)
@@ -20,9 +20,9 @@ class Staff {
 public:
     Input_register * ireg_p_;
     
 public:
     Input_register * ireg_p_;
     
-    PointerList<Voice*> voice_list_;
+    Pointer_list<Voice*> voice_list_;
     /// runtime field
     /// runtime field
-    PointerList<Staff_column*> cols_;
+    Pointer_list<Staff_column*> cols_;
 
     Score *score_l_;
     PScore *pscore_l_;
 
     Score *score_l_;
     PScore *pscore_l_;
@@ -30,7 +30,7 @@ public:
     
     /* *************************************************************** */
 
     
     /* *************************************************************** */
 
-    void add(const PointerList<Voice*> &s);
+    void add(const Pointer_list<Voice*> &s);
 
     void add_voice(Voice *v_p);
     Paper_def*paper()const;
 
     void add_voice(Voice *v_p);
     Paper_def*paper()const;
index 082de4e70cd0f4b5ea59a8b9c6cf8bd5acc31697..5a0028f83e4e1373a21047b1043b53a43ff104f5 100644 (file)
@@ -19,6 +19,8 @@ class Tie_register : public Request_register {
     Tie_req * req_l_;
     int dir_i_;
     Tie_req *end_req_l_;
     Tie_req * req_l_;
     int dir_i_;
     Tie_req *end_req_l_;
+    Melodic_req * end_melodic_req_l_;
+    Melodic_req  * melodic_req_l_;
     
 protected:
     virtual ~Tie_register();
     
 protected:
     virtual ~Tie_register();
index 972d2cf97e22511342f76943f9b45fce89600a96..7f03564866a36dbfe608015e70e71d77f455b153 100644 (file)
@@ -18,9 +18,9 @@ class Tie : public Bow {
     virtual void do_post_processing();
     virtual void set_default_dir();
 public:
     virtual void do_post_processing();
     virtual void set_default_dir();
 public:
+    bool same_pitch_b_;
     Notehead * left_head_l_;
     Notehead * right_head_l_;
     Notehead * left_head_l_;
     Notehead * right_head_l_;
-
     void set_head(int, Notehead*head_l);
     Tie();
     
     void set_head(int, Notehead*head_l);
     Tie();
     
index cd02239f5ed966176f3c91b409280d44af87fdac..fc85b58e3b12bd09cf9b9130ce0069607ac6fdff 100644 (file)
@@ -24,7 +24,7 @@ public:
       Voice_element */
     Moment duration_;
     Voice const *voice_C_;
       Voice_element */
     Moment duration_;
     Voice const *voice_C_;
-    IPointerList<Request*> req_p_list_;
+    IPointer_list<Request*> req_p_list_;
     Request * principal_req_l_;
 
     /* *************** */
     Request * principal_req_l_;
 
     /* *************** */
index 5ddcc91933c426d4a0645edea7eb17a96c11d8f0..475fc4466856a24a7e7e9b0cd64c91181fe08d71 100644 (file)
@@ -18,7 +18,7 @@ struct Voice {
     /** the elements, earliest first.
       Please use the member #add()# to add a new element
       */
     /** the elements, earliest first.
       Please use the member #add()# to add a new element
       */
-    IPointerList<Voice_element *> elts_;
+    IPointer_list<Voice_element *> elts_;
     Moment start_;
 
     /* *************** */
     Moment start_;
 
     /* *************** */
index d4435664cacb78ba40e466c8382ab5e1e44eea75..38adcc5fd914f145b9d443c17993ec02ad67b205 100644 (file)
@@ -63,7 +63,7 @@ KEYWORD               \\{WORD}
 WHITE          [ \n\t\f]
 BLACK          [^ \n\t\f]
 RESTNAME       [rs]
 WHITE          [ \n\t\f]
 BLACK          [^ \n\t\f]
 RESTNAME       [rs]
-NOTECOMMAND    \\{WORD}
+NOTECOMMAND    \\{A}+
 DOTS           \.+
 LYRICS         ({AA}|{NATIONAL})[^0-9 \t\n\f]*
 
 DOTS           \.+
 LYRICS         ({AA}|{NATIONAL})[^0-9 \t\n\f]*
 
index 84ec5baf690b34cf0684692b35cb0f18446a728d..2fac0d573d21c3ac2ca8a909adbea239c03868e0 100644 (file)
 #include "key-reg.hh"
 #include "debug.hh"
 #include "key-item.hh"
 #include "key-reg.hh"
 #include "debug.hh"
 #include "key-item.hh"
+#include "tie.hh"
+#include "notehead.hh"
 
 Local_key_register::Local_key_register()
 {
 
 Local_key_register::Local_key_register()
 {
-    key_item_p_ = 0;
     key_C_ = 0;
 }
 
 void
 Local_key_register::pre_move_processing()
 {
     key_C_ = 0;
 }
 
 void
 Local_key_register::pre_move_processing()
 {
-    if (key_item_p_) {
-       typeset_element(key_item_p_);
-       key_item_p_ = 0;
+    if (mel_l_arr_.size()) {
+       Local_key_item *key_item_p = 0;
+       for (int i=0; i  < mel_l_arr_.size(); i++) {
+           Item * support_l = support_l_arr_[i];
+
+           Note_req * note_l = mel_l_arr_[i];
+           if (tied_l_arr_.find_l(support_l) && !forced_l_arr_.find_l(support_l))
+               continue;
+           
+           if (!key_item_p)
+               key_item_p = new Local_key_item(*get_staff_info().c0_position_i_l_);
+           key_item_p->add(note_l);
+           key_item_p->add(support_l);
+           local_key_.oct(note_l->octave_i_)
+               .set(note_l->notename_i_, note_l->accidental_i_);
+       }
+       if (key_item_p)
+           typeset_element(key_item_p);
     }
     }
+    mel_l_arr_.set_size(0);
+    tied_l_arr_.set_size(0);
+    support_l_arr_.set_size(0);
+    forced_l_arr_.set_size(0); 
 }
 
 void
 Local_key_register::acknowledge_element(Staff_elem_info info)
 {    
 }
 
 void
 Local_key_register::acknowledge_element(Staff_elem_info info)
 {    
+    Staff_elem * elem_l = info.elem_l_;
     if (info.req_l_->note()) {
     if (info.req_l_->note()) {
-       Note_req * note_l_ = info.req_l_->note();
+       Note_req * note_l = info.req_l_->note();
+       Item * item_l = info.elem_l_->item();
 
 
-       if( note_l_->forceacc_b_ ||
-           local_key_.oct(note_l_->octave_i_).acc(note_l_->notename_i_)
-           != note_l_->accidental_i_) {
-           Item * support_l_ = info.elem_l_->item();
-       
-
-           if (!key_item_p_) {
-               key_item_p_ = new Local_key_item(*get_staff_info().c0_position_i_l_);
-           }
-           
-           key_item_p_->add(note_l_);
-           key_item_p_->add(support_l_);
-           local_key_.oct(note_l_->octave_i_)
-               .set(note_l_->notename_i_, note_l_->accidental_i_);
+       if( note_l->forceacc_b_ ||
+           local_key_.oct(note_l->octave_i_).acc(note_l->notename_i_)
+           != note_l->accidental_i_) {
+           mel_l_arr_.push(note_l );
+           support_l_arr_.push(item_l);
+           if (note_l->forceacc_b_)
+               forced_l_arr_.push(item_l);
        }
        }
-    } else if (info.req_l_->command()  && info.req_l_->command()->keychange()) { 
+    } else if (info.req_l_->command()
+              && info.req_l_->command()->keychange()) { 
        Key_register * key_reg_l =
            (Key_register*)info.origin_reg_l_arr_[0];
        key_C_ = &key_reg_l->key_;
        local_key_ = *key_C_;
        Key_register * key_reg_l =
            (Key_register*)info.origin_reg_l_arr_[0];
        key_C_ = &key_reg_l->key_;
        local_key_ = *key_C_;
-    } else if (info.elem_l_->name() == Key_item::static_name()) {
+    } else if (elem_l->name() == Key_item::static_name()) {
        Key_register * key_reg_l =
            (Key_register*)info.origin_reg_l_arr_[0];
        key_C_ = &key_reg_l->key_;
        Key_register * key_reg_l =
            (Key_register*)info.origin_reg_l_arr_[0];
        key_C_ = &key_reg_l->key_;
+    } else if (elem_l->name() == Tie::static_name()) {
+       Tie * tie_l = (Tie*)elem_l;
+       if (tie_l->same_pitch_b_)
+           tied_l_arr_.push(tie_l-> right_head_l_ );
     }
 }
 
     }
 }
 
@@ -69,7 +89,7 @@ Local_key_register::process_requests()
        if (key_C_)
            local_key_= *key_C_;
        else if( time_C_->when_ >Moment(0))
        if (key_C_)
            local_key_= *key_C_;
        else if( time_C_->when_ >Moment(0))
-           warning ("Help me! can't figure  current key");
+           warning ("Help me! can't figure out current key");
     }
 }
 
     }
 }
 
index 5ed08aa996b9b6efff759ad753bee4cb541ef1cf..9f65d8a88f88d0159ee450bb86bad6e46e12c121 100644 (file)
@@ -127,11 +127,23 @@ Melodic_req::transpose(Melodic_req const & delta)
 
 IMPLEMENT_STATIC_NAME(Melodic_req);
 
 
 IMPLEMENT_STATIC_NAME(Melodic_req);
 
+int
+Melodic_req::compare(Melodic_req const&m1, Melodic_req const&m2)
+{
+    if (m1.octave_i_ != m2.octave_i_)
+       return m1.octave_i_ -m2.octave_i_;
+    else if (m1.notename_i_ != m2.notename_i_)
+       return m1.notename_i_ - m2.notename_i_;
+    else  if (m1.accidental_i_ != m2.accidental_i_)
+       return m1.accidental_i_ - m2.accidental_i_;
+    return 0;
+}
+
 void
 Melodic_req::do_print() const
 {
 #ifndef NPRINT
 void
 Melodic_req::do_print() const
 {
 #ifndef NPRINT
-       mtor << "notename: " << notename_i_ << " acc: " <<accidental_i_<<" oct: "<< octave_i_;
+    mtor << "notename: " << notename_i_ << " acc: " <<accidental_i_<<" oct: "<< octave_i_;
 #endif
 }
 
 #endif
 }
 
index a939391bf3be88fdbb27bad1032c7b0c45bdbfce..6b0062095823c7aca3ce0e10d5235dea1f692cb3 100644 (file)
@@ -49,6 +49,8 @@ get_scriptdef(char c)
        break;
     case  '.' : s = "staccato";
        break;
        break;
     case  '.' : s = "staccato";
        break;
+    default:
+       assert(false);
     }
     return new String(s);
 }
     }
     return new String(s);
 }
index ff3482097e461f063df18bdd43b562652b9787ee..184e90db3f4fe166d7e0f05033f18ea838c3860f 100644 (file)
@@ -150,7 +150,7 @@ PScore::select_items(PStaff*ps, PCol*pc)
 void
 PScore::OK()const
 {
 void
 PScore::OK()const
 {
-#ifdef NDEBUG
+#ifndef NDEBUG
     for (iter_top(cols,cc); cc.ok(); cc++)
        cc->OK();
     for (iter_top(suz,i); i.ok(); i++)
     for (iter_top(cols,cc); cc.ok(); cc++)
        cc->OK();
     for (iter_top(suz,i); i.ok(); i++)
index 6ece45d55e4012f4bcacbb4cd6b2f30d0b70570d..d92c97012334f4367fa9798e9a646c49fdb903c1 100644 (file)
@@ -1093,7 +1093,7 @@ symboldef:
                delete $2;
        }
        | STRING {
                delete $2;
        }
        | STRING {
-               Box b;
+               Box b(Interval(0,0), Interval(0,0));
                $$ = new Symbol(*$1, b);
                delete $1;
        }
                $$ = new Symbol(*$1, b);
                delete $1;
        }
index 3fe5a30fbd513835e3602ec953453e0b03b8c992..dc3c26604ee57e4c8c4c33abe7e3903234be09bd 100644 (file)
@@ -13,7 +13,7 @@
 #include "request-column.hh"
 #include "debug.hh"
 
 #include "request-column.hh"
 #include "debug.hh"
 
-Pulk_voices::Pulk_voices(PointerList<Staff*> const& l)
+Pulk_voices::Pulk_voices(Pointer_list<Staff*> const& l)
     : staff_l_list_(l)
 {
     int staff_i = 0;
     : staff_l_list_(l)
 {
     int staff_i = 0;
index 4fd9d53ab9edc94202f10f365885bab77a0a3ffd..47013d222a9fca20e6502952fef696c90f4bc60d 100644 (file)
@@ -23,7 +23,7 @@ Request_column::add_reqs(int idx , Array<Request*> const & req_l_arr)
     staff_col_l_arr_[idx]->add_reqs(req_l_arr);
 }
 
     staff_col_l_arr_[idx]->add_reqs(req_l_arr);
 }
 
-Request_column::Request_column(PointerList<Staff*> const& list )
+Request_column::Request_column(Pointer_list<Staff*> const& list )
 {
     musical_column_l_ = command_column_l_ =0;
     iter(list.top(), j);
 {
     musical_column_l_ = command_column_l_ =0;
     iter(list.top(), j);
index 2a6e1e755fd499e972b19faf620f534326e2ecf5..42f7bbbfe33912f0d8e694c0256a470f221df1d9 100644 (file)
@@ -28,7 +28,7 @@ Rest_collision::add(Collision * c_l)
 void
 Rest_collision::do_post_processing()
 {
 void
 Rest_collision::do_post_processing()
 {
-    #if 0
+#if 0
         bool rest_b_a[4];
        rest_b_a[j] = (col_l_a[j]) ? col_l_a[j]->rest_b_ : false;       
     do {
         bool rest_b_a[4];
        rest_b_a[j] = (col_l_a[j]) ? col_l_a[j]->rest_b_ : false;       
     do {
index 5ab8b164dae5c383c6ca04508ade2dee8f5edc06..f9543a2e013e5976df74e5a155c38a9612dd010c 100644 (file)
@@ -25,3 +25,9 @@ Rest_column::translate_y(Real dy_f)
 }
 
 IMPLEMENT_STATIC_NAME(Rest_column);
 }
 
 IMPLEMENT_STATIC_NAME(Rest_column);
+
+Rest_column::Rest_column()
+{
+    dir_i_ = 0;
+}
+    
index 7de562215a3ca5e33a72949d89d0920f9aefbac4..1b7bb0f76a028a13d27da1cb8fbeebd4d8947802 100644 (file)
@@ -74,8 +74,14 @@ Slur::do_post_processing()
     if (!dir_i_)
        set_default_dir();
     Real inter_f = paper()->internote();
     if (!dir_i_)
        set_default_dir();
     Real inter_f = paper()->internote();
-    left_pos_i_ = encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f;
-    right_pos_i_ = encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f;
+    if (encompass_arr_[0]->stem_l_)
+        left_pos_i_ = encompass_arr_[0]->stem_l_->height()[dir_i_]/inter_f;
+    else
+        left_pos_i_ = 0;
+    if (encompass_arr_.top()->stem_l_)
+        right_pos_i_ = encompass_arr_.top()->stem_l_->height()[dir_i_]/inter_f;
+    else
+        right_pos_i_ = 0;
 
     left_pos_i_ += dir_i_;
     right_pos_i_ += dir_i_;
 
     left_pos_i_ += dir_i_;
     right_pos_i_ += dir_i_;
index 1226fce46a76e085aee96241973c9483ce8902e1..a3f71b0be781e9799755cc783cdf4f1d2a1e2631 100644 (file)
@@ -19,7 +19,7 @@
 
 
 void
 
 
 void
-Staff::add(PointerList<Voice*> const &l)
+Staff::add(Pointer_list<Voice*> const &l)
 {
     for (iter_top(l,i); i.ok(); i++)
        voice_list_.bottom().add(i);
 {
     for (iter_top(l,i); i.ok(); i++)
        voice_list_.bottom().add(i);
index d26e748e6f490afe5ebc94024471d4675eeba0ce..399b9ed384a04f7e5541be2105889ed49a28a21a 100644 (file)
@@ -1,5 +1,5 @@
 /*
 /*
-  template4.cc -- instantiate PointerList baseclass.
+  template4.cc -- instantiate Pointer_list baseclass.
 
   source file of the LilyPond music typesetter
 
 
   source file of the LilyPond music typesetter
 
index 55d04c85bf999956056aef8f9c98c743bb5b5d33..a601d4367ca031b03dd8870b668a47bc4ac95f1b 100644 (file)
@@ -19,7 +19,7 @@ Text_def::width() const
 
 Text_def::Text_def()
 {   
 
 Text_def::Text_def()
 {   
-    align_i_ = -1;                     // right
+    align_i_ = 1;                      // right
     pdef_l_ = 0;
     style_str_ = "roman";
 }
     pdef_l_ = 0;
     style_str_ = "roman";
 }
index 9972a36dc135065a3c0452b1405b8abbad7a6576..6d3b67d003e0623bb331d72cd8f8923b75146f3c 100644 (file)
@@ -51,7 +51,7 @@ Text_item::do_pre_processing()
 void
 Text_item::do_post_processing()
 {
 void
 Text_item::do_post_processing()
 {
-        set_default_index();
+    set_default_index();
 }
 
     
 }
 
     
index 82e12d6cd7c869c211958ac769fa78a7d8ad7aae..a3231cec410027c2d4cd370b8e1e4fa3aca8b212 100644 (file)
@@ -39,7 +39,7 @@ void
 Text_register::process_requests()
 {
     if (text_req_l_) {
 Text_register::process_requests()
 {
     if (text_req_l_) {
-       text_p_ = new Text_item(text_req_l_->tdef_p_, 0); // ugh
+       text_p_ = new Text_item(text_req_l_->tdef_p_, text_req_l_->dir_i_); // ugh
        announce_element(Staff_elem_info(text_p_, text_req_l_));
     }
 }
        announce_element(Staff_elem_info(text_p_, text_req_l_));
     }
 }
@@ -47,7 +47,8 @@ void
 Text_register::pre_move_processing()
 {
     if (text_p_) {
 Text_register::pre_move_processing()
 {
     if (text_p_) {
-       text_p_->dir_i_ = dir_i_;
+       if (dir_i_ && !text_p_->dir_i_)
+           text_p_->dir_i_ = dir_i_;
        Staff_symbol* s_l = get_staff_info().staff_sym_l_;
        text_p_->set_staffsym(s_l);
        typeset_element(text_p_);
        Staff_symbol* s_l = get_staff_info().staff_sym_l_;
        text_p_->set_staffsym(s_l);
        typeset_element(text_p_);
index af9c539803fc0cb55de3218f20c0c34621a5ef81..c1c5b0bc837d452f455cebce480bebea5b2d09e7 100644 (file)
@@ -19,6 +19,8 @@ Tie_register::Tie_register()
     req_l_ =0;
     end_req_l_ =0;
     end_mom_ = -1;
     req_l_ =0;
     end_req_l_ =0;
     end_mom_ = -1;
+    melodic_req_l_ = 0;
+    end_melodic_req_l_ =0;
 }
 
 void
 }
 
 void
@@ -34,6 +36,7 @@ Tie_register::post_move_processing()
     if (tie_p_ && get_staff_info().when() == end_mom_) {
        end_tie_p_ = tie_p_;
        end_req_l_ = req_l_;
     if (tie_p_ && get_staff_info().when() == end_mom_) {
        end_tie_p_ = tie_p_;
        end_req_l_ = req_l_;
+       end_melodic_req_l_ = melodic_req_l_;
        tie_p_ =0;
        req_l_ =0;
        end_mom_ = -1;
        tie_p_ =0;
        req_l_ =0;
        end_mom_ = -1;
@@ -71,11 +74,15 @@ void
 Tie_register::acknowledge_element(Staff_elem_info i)
 {
     if (i.elem_l_->name() == Notehead::static_name()) {
 Tie_register::acknowledge_element(Staff_elem_info i)
 {
     if (i.elem_l_->name() == Notehead::static_name()) {
-       if (tie_p_)
+       if (tie_p_) {
            tie_p_->set_head(-1, (Notehead*)i.elem_l_);
            tie_p_->set_head(-1, (Notehead*)i.elem_l_);
-       
+           melodic_req_l_ = i.req_l_->musical()->melodic();
+       }
+
        if (end_tie_p_) {
            end_tie_p_->set_head(1, (Notehead*)i.elem_l_);
        if (end_tie_p_) {
            end_tie_p_->set_head(1, (Notehead*)i.elem_l_);
+           if (!Melodic_req::compare ( *end_melodic_req_l_, *melodic_req_l_))
+               end_tie_p_->same_pitch_b_ = true;
            announce_element(Staff_elem_info(end_tie_p_,end_req_l_));
        }
     }
            announce_element(Staff_elem_info(end_tie_p_,end_req_l_));
        }
     }
index 06c09a3b82aea36cac24adb78daa4938854cfb17..5c71c9d133bd27028600c0813b9116e2f88f9342 100644 (file)
@@ -41,6 +41,7 @@ Tie::Tie()
 {
     right_head_l_ =0;
     left_head_l_ =0;
 {
     right_head_l_ =0;
     left_head_l_ =0;
+    same_pitch_b_ =false;
 }
 
 void
 }
 
 void
index f9246f92e368cd5381e271d36c3b2b1bc5574dea..7293362324fd3750cf2dc4ed8e9fede2d5be622f 100644 (file)
@@ -55,8 +55,9 @@ LOADLIBES +=
 
 # main target of this module:
 #
 
 # main target of this module:
 #
-MAINTARGET = $(EXECUTABLE)
+MAINTARGET = $(EXECUTABLE)
 # MAINTARGET = $(LIBRARY)
 # MAINTARGET = $(LIBRARY)
+MAINTARGET = 
 
 default: $(MAINTARGET)
 #
 
 default: $(MAINTARGET)
 #
index 789c602b6de8a555651c8c41834f6369f5b271e8..00c79bcf92ea453cfca63840c0fceda26e7eea23 100644 (file)
@@ -2,8 +2,8 @@
 
 Begin3
 Title: LilyPond
 
 Begin3
 Title: LilyPond
-Version: 0.0.60
-Entered-date: 05/05/97
+Version: 0.0.61
+Entered-date: 05/12/97
 Description: LilyPond is a program which converts a music-script (mudela) into
 TeX output, or MIDI to produce multi-staff scores. Features include multiple
 meters, clefs, keys, lyrics, versatile input-language, cadenzas
 Description: LilyPond is a program which converts a music-script (mudela) into
 TeX output, or MIDI to produce multi-staff scores. Features include multiple
 meters, clefs, keys, lyrics, versatile input-language, cadenzas
@@ -13,7 +13,7 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: pcnov095.win.tue.nl /pub/lilypond/  
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: pcnov095.win.tue.nl /pub/lilypond/  
-       300k lilypond-0.0.60.tar.gz
+       300k lilypond-0.0.61.tar.gz
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
index fb892b56f9fa98c7cc94dc03bf268ab420f07cfd..5e8fa68686f573657ed26b0fdd8e498b17cbc497 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
 Name: lilypond
-Version: 0.0.60
+Version: 0.0.61
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.60.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.61.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
@@ -25,7 +25,7 @@ make all
 strip bin/lilypond bin/mi2mu
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
 strip bin/lilypond bin/mi2mu
 make prefix="$RPM_BUILD_ROOT/usr" install
 %files
-%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/examples.text Documentation/out/faq.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/kortjakje.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif
+%doc Documentation/out/AUTHORS.text Documentation/out/CodingStyle.text Documentation/out/INSTALL.text Documentation/out/MANIFESTO.text Documentation/out/convert-mudela.text Documentation/out/error.text Documentation/out/examples.text Documentation/out/faq.text Documentation/out/index.text Documentation/out/language.text Documentation/out/lilygut.text Documentation/out/lilypond.text Documentation/out/mi2mu.text Documentation/out/mudela.text input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/error.ly input/header.ly input/kortjakje.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/scsii-menuetto.ly input/scsii-menuetto.tex input/slurs.ly input/standchen.ly input/standchen.tex input/toccata-fuga-E.ly input/twinkle.ly input/wohltemperirt.ly Documentation/lelie_logo.gif
 /usr/bin/convert-mudela
 /usr/bin/lilypond
 /usr/lib/libflower.so
 /usr/bin/convert-mudela
 /usr/bin/lilypond
 /usr/lib/libflower.so
index 3a2fb59ea8101d90ec93adb8c4d572f303fb179c..ff0937ad8c006b7adacb528d163e744a3a03fbcf 100644 (file)
@@ -40,7 +40,7 @@ LOADLIBES +=
 
 # main target of this module:
 #
 
 # main target of this module:
 #
-MAINTARGET = $(EXECUTABLE)
+MAINTARGET = 
 
 default: $(MAINTARGET)
 #
 
 default: $(MAINTARGET)
 #
index 47252308602670ff9f2bba676f48b311a6d883e0..ca18e61502f7abfcef7bce3731db28d2d7f729da 100644 (file)
@@ -21,7 +21,7 @@
         \rationalmultiply\dimen0*#2%
         \raise\dimen0\hbox{#1}}
 \def\maccentdef#1#2#3{\def#1{\maccentraise{\mchar{#2}}{#3}}}
         \rationalmultiply\dimen0*#2%
         \raise\dimen0\hbox{#1}}
 \def\maccentdef#1#2#3{\def#1{\maccentraise{\mchar{#2}}{#3}}}
-\def\vcenter#1{\vbox to 0pt{\vss #1\vss}}
+\def\vertcenter#1{\vbox to 0pt{\vss #1\vss}}
 
 \def\mathdef#1#2{\def#1{\mathchar{#2}}}
 \def\mathchar#1{\mathfont\char#1}
 
 \def\mathdef#1#2{\def#1{\mathchar{#2}}}
 \def\mathchar#1{\mathfont\char#1}
 \def\kdynm{\dynfont m\kern-.15ex}
 \def\kdynp{\dynfont p\kern-.15ex}
 
 \def\kdynm{\dynfont m\kern-.15ex}
 \def\kdynp{\dynfont p\kern-.15ex}
 
-\def\dynppp{\dynfont\dynp\kdynp p}
 
 
-\def\dynpp{\dynfont p\kdynp}
 \def\dynp{\dynfont p}
 \def\dynp{\dynfont p}
+\def\dynpp{\dynp\kdynp}
+\def\dynppp{\dynpp\kdynp}
 \def\dynmp{\dynfont m\kdynp}
 \def\dynmf{\dynfont m\kdynf}
 \def\dynf{\dynfont f}
 \def\dynmp{\dynfont m\kdynp}
 \def\dynmf{\dynfont m\kdynf}
 \def\dynf{\dynfont f}
-\def\dynff{\dynfont f\kdynf}
-\def\dynfff{\dynfont f\kdynf \kdynf}
+\def\dynff{\dynf\kdynf}
+\def\dynfff{\dynff\kdynf}
 
 \def\slurcharh#1{{\slurhfont\char#1}}
 \def\slurcharu#1{{\slurufont\char#1}}
 
 \def\slurcharh#1{{\slurhfont\char#1}}
 \def\slurcharu#1{{\slurufont\char#1}}
 \def\sixteenthflag{\topalign{\usixteenthflag}}
 \def\thirtysecondflag{\topalign{\uthirtysecondflag}}
 
 \def\sixteenthflag{\topalign{\usixteenthflag}}
 \def\thirtysecondflag{\topalign{\uthirtysecondflag}}
 
-\def\cquartrest{\vcenter\quartrest}
-\def\ceighthrest{\vcenter\eighthrest}
-\def\csixteenthrest{\vcenter\sixteenthrest}
-\def\cthirtysecondrest{\vcenter\thirtysecondrest}
+\def\cquartrest{\vertcenter\quartrest}
+\def\ceighthrest{\vertcenter\eighthrest}
+\def\csixteenthrest{\vertcenter\sixteenthrest}
+\def\cthirtysecondrest{\vertcenter\thirtysecondrest}
 
 \def\lsingledot{\kern-\notewidth\singledot}
 \def\ldoubledot{\kern-\notewidth\doubledot}
 
 \def\lsingledot{\kern-\notewidth\singledot}
 \def\ldoubledot{\kern-\notewidth\doubledot}
 \maccentdef\sforzato{30}{-3/2}
 \maccentdef\marcato{20}{-1/1}
 \maccentdef\imarcato{21}{1/1}
 \maccentdef\sforzato{30}{-3/2}
 \maccentdef\marcato{20}{-1/1}
 \maccentdef\imarcato{21}{1/1}
-\maccentdef\staccato{24}{-1/1}
-\maccentdef\istaccato{25}{1/1}
-\maccentdef\staccatissimo{28}{-1/1}
-\maccentdef\istaccatissimo{29}{1/1}
-\maccentdef\portato{18}{-9/10}
-\maccentdef\iportato{19}{9/10}
-\maccentdef\tenuto{26}{0/1}
-\maccentdef\itenuto{27}{0/1}
+\maccentdef\staccato{24}{-1/3}
+\maccentdef\istaccato{25}{1/3}
+\maccentdef\staccatissimo{28}{-5/5}
+\maccentdef\istaccatissimo{29}{2/5}
+\maccentdef\portato{18}{-6/5}
+\maccentdef\iportato{19}{3/5}
+\maccentdef\tenuto{26}{-1/1}
+\maccentdef\itenuto{27}{1/1}
 \maccentdef\fermata{80}{-1/1}
 \maccentdef\ifermata{81}{1/1}
 
 \maccentdef\fermata{80}{-1/1}
 \maccentdef\ifermata{81}{1/1}
 
 \mdef\ispicato{29}
 \mdef\upbow{23}
 \mdef\downbow{22}
 \mdef\ispicato{29}
 \mdef\upbow{23}
 \mdef\downbow{22}
-\mdef\portato{26}
 
 \mathdef\cup{91} % \cup
 \mathdef\wedge{94} % \wedge
 
 \mathdef\cup{91} % \cup
 \mathdef\wedge{94} % \wedge