+* Small cleanups to bring down compile time and binary ensmallment.
+
+* Made Lookup into a smob, and use guile alist iso. an STL map.
+
+* Changed repeated music semantics for relative octave: each
+alternative takes its inital octave from the body.
+
+* Fixed: parser accepts booleans for property values as well.
+
+* Added Scarlatti sonata test file to input/
+
+* kpathsea support, courtesy Carsten Block <carsten.block@gmx.de>
+
+1.3.70
+======
* Fixed: long standing problem in optical-illusion code.
* Fixed: stop beam if stem *has* a beam in auto-beam-engraver.
@mudelafile{dots.ly}
-Accidentals worki: the second note does not get a sharp. The third and
+Accidentals work: the second note does not get a sharp. The third and
fourth show forced and courtesy accidentals
@mudelafile{accidental.ly}
@mudelafile{generic-property-override.ly}
-Paper column supports a special output property that allows you to force
-page breaks (among others).
-
-@mudelafile{between-systems.ly}
-
@section Repeats
LilyPond has three modes for repeats: folded, unfolded and
If you do not want to use PostScript output, edit @file{mf/GNUmakefile}.
+@item kpathsea, a library for searching (TeX) files. @code{kpathsea} is
+usually included with your installation of TeX.
+
@end itemize
If you do not want to use PostScript output, edit `mf/GNUmakefile'.
+ * kpathsea, a library for searching (TeX) files. `kpathsea' is
+ usually included with your installation of TeX.
+
Running
=======
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=3
-PATCH_LEVEL=70
+PATCH_LEVEL=71
MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
#define DIRSEP '@DIRSEP@'
#define PATHSEP '@PATHSEP@'
-/* define GUILE-ification */
-#undef HAVE_LIBGUILE
+/* define if no assert */
+#define HAVE_ASSERT_H 1
# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
+echo "configure:1514: checking how to run the C preprocessor" >&5
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ # This must be in double quotes, not single quotes, because CPP may get
+ # substituted into the Makefile and "${CC-cc}" will confuse make.
+ CPP="${CC-cc} -E"
+ # On the NeXT, cc -E runs the code through the compiler's parser,
+ # not just through cpp.
+ cat > conftest.$ac_ext <<EOF
+#line 1529 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1535: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -E -traditional-cpp"
+ cat > conftest.$ac_ext <<EOF
+#line 1546 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1552: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP="${CC-cc} -nologo -E"
+ cat > conftest.$ac_ext <<EOF
+#line 1563 "configure"
+#include "confdefs.h"
+#include <assert.h>
+Syntax Error
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1569: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ :
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ CPP=/lib/cpp
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+ ac_cv_prog_CPP="$CPP"
+fi
+ CPP="$ac_cv_prog_CPP"
+else
+ ac_cv_prog_CPP="$CPP"
+fi
+echo "$ac_t""$CPP" 1>&6
+
+for ac_hdr in assert.h
+do
+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
+echo "configure:1597: checking for $ac_hdr" >&5
+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1602 "configure"
+#include "confdefs.h"
+#include <$ac_hdr>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:1607: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
+if test -z "$ac_err"; then
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=yes"
+else
+ echo "$ac_err" >&5
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ eval "ac_cv_header_$ac_safe=no"
+fi
+rm -f conftest*
+fi
+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
+ echo "$ac_t""yes" 1>&6
+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
+ cat >> confdefs.h <<EOF
+#define $ac_tr_hdr 1
+EOF
+
+else
+ echo "$ac_t""no" 1>&6
+fi
+done
+
printing_b=no
# Check whether --enable-printing or --disable-printing was given.
fi
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:1540: checking how to run the C++ preprocessor" >&5
+echo "configure:1660: 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
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 1553 "configure"
+#line 1673 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1558: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
# 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:1595: checking for $ac_word" >&5
+echo "configure:1715: 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
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1627: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1747: 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.
cat > conftest.$ac_ext << EOF
-#line 1638 "configure"
+#line 1758 "configure"
#include "confdefs.h"
int main(){return(0);}
EOF
-if { (eval echo configure:1643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; 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
{ 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:1669: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1789: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1674: checking whether we are using GNU C++" >&5
+echo "configure:1794: 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
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1683: \"$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:1803: \"$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_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1702: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1822: 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
ac_safe=`echo "FlexLexer.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for FlexLexer.h""... $ac_c" 1>&6
-echo "configure:1736: checking for FlexLexer.h" >&5
+echo "configure:1856: checking for FlexLexer.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1741 "configure"
+#line 1861 "configure"
#include "confdefs.h"
#include <FlexLexer.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1746: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking whether explicit instantiation is needed""... $ac_c" 1>&6
-echo "configure:1797: checking whether explicit instantiation is needed" >&5
+echo "configure:1917: checking whether explicit instantiation is needed" >&5
if eval "test \"`echo '$''{'lily_cv_need_explicit_instantiation'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1802 "configure"
+#line 1922 "configure"
#include "confdefs.h"
template <class T> struct foo { static int baz; };
return foo<int>::baz;
; return 0; }
EOF
-if { (eval echo configure:1812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
lily_cv_need_explicit_instantiation=no
else
# 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:1839: checking for $ac_word" >&5
+echo "configure:1959: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_YACC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:1882: checking for $ac_word" >&5
+echo "configure:2002: 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
# 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:1917: checking for $ac_word" >&5
+echo "configure:2037: 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
# 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:1985: checking for $ac_word" >&5
+echo "configure:2105: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2018: checking for $ac_word" >&5
+echo "configure:2138: 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
echo $ac_n "checking language""... $ac_c" 1>&6
-echo "configure:2074: checking language" >&5
+echo "configure:2194: checking language" >&5
case "$language" in
En* | en* | Am* | am* | US* | us*)
lang=English;;
echo $ac_n "checking for gettext in -lintl""... $ac_c" 1>&6
-echo "configure:2110: checking for gettext in -lintl" >&5
+echo "configure:2230: checking for gettext in -lintl" >&5
ac_lib_var=`echo intl'_'gettext | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lintl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2118 "configure"
+#line 2238 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
gettext()
; return 0; }
EOF
-if { (eval echo configure:2132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
for ac_func in gettext
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2162: checking for $ac_func" >&5
+echo "configure:2282: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2167 "configure"
+#line 2287 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
# 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:2225: checking for $ac_word" >&5
+echo "configure:2345: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MSGFMT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
test -n "$MSGFMT" || MSGFMT="\$(SHELL) \$(step-bindir)/fake-msgfmt.sh "
echo $ac_n "checking whether msgfmt accepts -o""... $ac_c" 1>&6
-echo "configure:2256: checking whether msgfmt accepts -o" >&5
+echo "configure:2376: checking whether msgfmt accepts -o" >&5
msgfmt_output="`msgfmt -o bla 2>&1 | grep usage`"
if test "$msgfmt_output" = ""; then
echo "$ac_t""yes" 1>&6
# 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:2284: checking for $ac_word" >&5
+echo "configure:2404: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_METAFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2320: checking for $ac_word" >&5
+echo "configure:2440: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2358: checking for $ac_word" >&5
+echo "configure:2478: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_METAPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2394: checking for $ac_word" >&5
+echo "configure:2514: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2433: checking for $ac_word" >&5
+echo "configure:2553: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMETAFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2469: checking for $ac_word" >&5
+echo "configure:2589: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMFONT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2507: checking for $ac_word" >&5
+echo "configure:2627: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMETAPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# 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:2543: checking for $ac_word" >&5
+echo "configure:2663: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_INIMPOST'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking for working metafont mode""... $ac_c" 1>&6
-echo "configure:2577: checking for working metafont mode" >&5
+echo "configure:2697: checking for working metafont mode" >&5
modelist='ljfour lj4 lj3 lj2 ljet laserjet'
for MFMODE in $modelist; do
$METAFONT "\mode:=$MFMODE; mode_setup; end." > /dev/null 2>&1
# 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:2623: checking for $ac_word" >&5
+echo "configure:2743: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_KPSEWHICH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
test -n "$KPSEWHICH" || KPSEWHICH="no"
echo $ac_n "checking for tfm path""... $ac_c" 1>&6
-echo "configure:2654: checking for tfm path" >&5
+echo "configure:2774: checking for tfm path" >&5
TFM_FONTS="cmr msam"
## First, let's just see if we can find Guile at all.
echo $ac_n "checking "for guile-config"""... $ac_c" 1>&6
-echo "configure:2682: checking "for guile-config"" >&5
+echo "configure:2802: checking "for guile-config"" >&5
for guile_config in guile-config $target-guile-config $build-guile-config; do
echo "$ac_t"""$guile_config"" 1>&6
if ! $guile_config --version > /dev/null 2>&1 ; then
echo "configure: warning: "cannot execute $guile_config"" 1>&2
echo $ac_n "checking "if we are cross compiling"""... $ac_c" 1>&6
-echo "configure:2688: checking "if we are cross compiling"" >&5
+echo "configure:2808: checking "if we are cross compiling"" >&5
guile_config=error
else
break
exit 1
fi
echo $ac_n "checking "Guile version"""... $ac_c" 1>&6
-echo "configure:2699: checking "Guile version"" >&5
+echo "configure:2819: checking "Guile version"" >&5
need_guile_version="1.3.4"
guile_version=`expr "\`$guile_config --version 2>&1\`" : ".*\($need_guile_version\).*"`
echo "$ac_t"""$guile_version"" 1>&6
## The GUILE_FLAGS macro.
echo $ac_n "checking for Guile""... $ac_c" 1>&6
-echo "configure:2712: checking for Guile" >&5
+echo "configure:2832: checking for Guile" >&5
if ! $guile_config link > /dev/null ; then
echo "$ac_t"""cannot execute $guile_config"" 1>&6
{ echo "configure: error: "cannot find guile-config; is Guile installed?"" 1>&2; exit 1; }
# Extract the first word of "guile", so it can be a program name with args.
set dummy guile; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2727: checking for $ac_word" >&5
+echo "configure:2847: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_GUILE'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6
-echo "configure:2765: checking for 8-bit clean memcmp" >&5
+echo "configure:2885: checking for 8-bit clean memcmp" >&5
if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_func_memcmp_clean=no
else
cat > conftest.$ac_ext <<EOF
-#line 2773 "configure"
+#line 2893 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:2786: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_memcmp_clean=yes
else
test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}"
echo $ac_n "checking for vprintf""... $ac_c" 1>&6
-echo "configure:2804: checking for vprintf" >&5
+echo "configure:2924: checking for vprintf" >&5
if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2809 "configure"
+#line 2929 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char vprintf(); below. */
; return 0; }
EOF
-if { (eval echo configure:2835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_vprintf=yes"
else
if test "$ac_cv_func_vprintf" != yes; then
echo $ac_n "checking for _doprnt""... $ac_c" 1>&6
-echo "configure:2859: checking for _doprnt" >&5
+echo "configure:2979: checking for _doprnt" >&5
if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2864 "configure"
+#line 2984 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char _doprnt(); below. */
; return 0; }
EOF
-if { (eval echo configure:2890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func__doprnt=yes"
else
for ac_func in memmem snprintf vsnprintf gettext isinf
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2917: checking for $ac_func" >&5
+echo "configure:3037: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2922 "configure"
+#line 3042 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:2948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3068: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
# 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:2987: checking for $ac_word" >&5
+echo "configure:3107: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAKEINFO'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "perl", so it can be a program name with args.
set dummy perl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:3020: checking for $ac_word" >&5
+echo "configure:3140: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_PERL'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
s%@ILDFLAGS@%$ILDFLAGS%g
s%@DEFINES@%$DEFINES%g
s%@EXTRA_LIBES@%$EXTRA_LIBES%g
+s%@CPP@%$CPP%g
s%@CXX@%$CXX%g
s%@CXXCPP@%$CXXCPP%g
s%@YACC@%$YACC%g
fi
+# ugh, hack.
# Uncomment the configuration options your package needs.
AC_STEPMAKE_COMPILE
# AC_HAVE_HEADERS(limits.h malloc.h string.h unistd.h values.h)
+AC_HAVE_HEADERS(assert.h)
printing_b=no
AC_ARG_ENABLE(printing,
AC_STEPMAKE_END
+# ugh, hack.
#include <assert.h>
#include "axes.hh"
+#include "string.hh"
String
axis_name_str (Axis a)
#include <limits.h> // INT_MAX
#include <assert.h>
-#include "proto.hh"
+#include "flower-proto.hh"
#include "string.hh"
#include "source-file.hh"
#include "binary-source-file.hh"
*/
#include "direction.hh"
+#include "string.hh"
String
direction_str (Direction d, Axis a)
};
-#include "string.hh" // ugh
+class String;
String axis_name_str (Axis);
#ifndef FILE_STORAGE_HH
#define FILE_STORAGE_HH
-#include "proto.hh"
+#include "flower-proto.hh"
/**
/*
- fproto.hh -- typenames in flowerlib
+ fflower-proto.hh -- typenames in flowerlib
(c) 1996 Han-Wen Nienhuys
*/
typedef unsigned char Byte;
+struct Duration;
+struct Duration_iterator;
+struct Source_file;
+struct Binary_source_file;
+struct Sources;
+struct File_storage;
+struct Mapped_file_storage;
+struct Simple_file_storage;
+
+
#endif // FPROTO_HH
#ifndef INPUT_HH
#define INPUT_HH
-#include "proto.hh"
+#include "flower-proto.hh"
/**
Base class for anything that records its poisition in the parse file.
-/*
- proto.hh -- part of LilyPond
-
- (c) 1996,97 Han-Wen Nienhuys
-*/
-
-#ifndef PROTO_HH
-#define PROTO_HH
-
-#include "flower-proto.hh"
-#include "real.hh"
-struct Duration;
-struct Duration_iterator;
-struct Source_file;
-struct Binary_source_file;
-struct Sources;
-struct File_storage;
-struct Mapped_file_storage;
-struct Simple_file_storage;
-
-#endif // PROTO_HH
+#error
#include "compare.hh"
#include "arithmetic-operator.hh"
#include "flower-proto.hh"
-#include "string.hh"
+class String;
/**
Rational numbers. Included is support for + and - infinity.
#ifndef SOURCE_FILE_HH
#define SOURCE_FILE_HH
-#include "proto.hh"
+#include "flower-proto.hh"
#include "string.hh"
#include "interval.hh"
#ifndef SOURCE_HH
#define SOURCE_HH
#include "cons.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
/**
a set of sourcefiles.
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <iostream.h>
-#include "proto.hh"
+#include "flower-proto.hh"
#include "input.hh"
#include "string.hh"
#include "source.hh"
#endif
#include "string.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "warn.hh"
#include "file-storage.hh"
#include <strstream.h>
#include "string.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "warn.hh"
#include "source-file.hh"
#include "simple-file-storage.hh"
#include "killing-cons.tcc"
#include "binary-source-file.hh"
#include "string.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "source-file.hh"
#include "source.hh"
#include "file-path.hh"
SUBDIRS=test bugs tutorial
-examples=trip star-spangled-banner paddy
+examples=trip star-spangled-banner paddy scarlatti-edited
flexamples=
LOCALSTEPMAKE_TEMPLATES=mutopia
--- /dev/null
+% test.ly LilyPond 1.3.70 -- 6 July 2000
+
+\header {
+ title = "Scarlatti test";
+ composer = "D. Scarlatti and J. D. S. Sankey";
+}
+
+\version "1.3.70";
+
+\include "scarlatti-properties.ly"
+\include "scarlatti-paper.ly"
+
+\score{
+ \notes \context PianoStaff <
+ \context Staff=up <
+ \key d \major ;
+ \time 3/8;
+ \clef treble;
+ \autochange Staff
+ \context Voice=va< \zs
+ \su
+ \context Thread=ta{ \n
+ \rh \sm [ \times 2/3{a'32 d'' fis''}\n a''16] a'8 g'|
+ %a2
+ \times 2/3{\lh d'16 \rh fis' g' a' b' cis'' d'' fis'' g''}|
+ %a3
+ a''8 a' g'|
+ %a4
+ a'8 s \lh d''|
+ %a5
+ s8 \rh fis'' s|
+ %a6
+ a''32 s fis'' s d'' s a' s d' s a s|
+ %a7
+ r16 a' fis'8. d'16~
+ %a8
+ d'16 g' e'8. cis'16|
+ %a9
+ r16 a' fis'8. d'16~
+ %a10
+ d'16 g' e'8. cis'16|
+ %a11
+ r16 fis' d'8. g'16~
+ %a12
+ g'16 fis'8 e' b'16~
+ %a13
+ b'16 a' fis'8. d''16~
+ %a14
+ d''16 cis'' a'8. fis''16~
+ %a15
+ \sd fis''16 e''8 cis'' a'16~
+ %a16
+ \su a'8 d'' b''16 s|
+ %a17
+ \lh \sd r16 e''8 cis'' a'16~
+ %a18
+ \su a'8 d'' b''16 s|
+ %a19
+ s8 a''^"M" s4
+ %a20
+ a''8 s4
+ %a21
+ fis''8 s4
+ %a22
+ b''8^"M" a''|
+ %a23
+ gis''8 \rh[b' c'']|
+ %a24
+ gis'8 f''32 d'' ais' b' e'' c'' gis' a'|
+ %a25
+ d''32 b' fis' gis' c'' a' dis' e' b' gis' dis' e'|
+ %a26
+ a'8~a'32 gis' a' b' c'' gis' a' b'|
+ %a27
+ r8 a'4~
+ %a28
+ a'8 a'4~
+ %a29
+ a'8 cis''4^\prall~
+ %a30
+ cis''4.^\prall~
+ %a31
+ cis''4._\prall~
+ %a32
+ cis''4._\prall
+ %a33
+ \times 12/15{a''16 \sm gis''32 fis'' e'' d'' cis'' b' a' gis' fis' e' d' cis' b \n}
+ %a34
+ \lh a32 \rh[e' cis' a]\lh cis' \rh[a' e' cis']\lh e' \rh[cis'' a' e']|
+ %a35
+ \lh a'32 \rh[e'' cis'' a']\lh cis'' \rh[a'' e'' cis'']\lh a' \rh[e'' cis'' a']|
+ %a36
+ \lh e'32 \rh[cis'' a' e']\lh cis' \rh[a' e' cis']\lh a \rh[e' cis' a]|
+ %a37
+ \lh a,16 d32 e \rh a4 \bar "||";
+ }
+ \context Thread=tb{ \n
+ \rh s8 fis' e'|
+ s4.
+ %a3
+ s8 fis' e'|
+ %a4
+ fis'8 s \lh a'|
+ %a5
+ s8 \rh d'' s|
+ \skip \longa*35/64;
+ %a11
+ e'16~
+ %a12
+ e'16 s s4|
+ s4.*10
+ %a23
+ s8 gis' a'|
+ %a24
+ b'8 s4|
+ s4.*6
+ %a31
+ s8 e''4^\prall~e''4.^\prall
+ }
+ \context Thread=tc{ \n
+ \rh s8 d' cis'|
+ s4.
+ %a3
+ s8 d' cis'
+ %a4
+ d'8 s \lh fis'|
+ %a5
+ s8 \rh a'
+ }>
+ \autochange Staff
+ \context Voice=vb< \zs
+ \sd
+ \context Thread=td{ \n
+ \lh \sm[\times 2/3{d32 fis a}\n d'16]a8 a|
+ %b2
+ d4 s8|
+ %b3
+ s8 a a|
+ %b4
+ r32[d fis a][d' fis' a' d'']r \rh[d fis a]
+ %b5
+ [d'32 fis' a' d'']r32 \lh[d fis a][d' fis' a' d'']
+ %b6
+ s a''32 s fis'' s d'' s a' s d' s a|
+ %b7
+ \su r8. fis16 b8|
+ %b8
+ r8. g16 a8~
+ %b9
+ a16 r8 fis16 b8|
+ %b10
+ r8. g16 b8|
+ s4.
+ %b12
+ r8 a b|
+ %b13
+ \sd r8 d'4|
+ %b14
+ e'8 fis'4|
+ %b15
+ \su s8 a''^"M" s|
+ %b16
+ \sd b8 d' gis'|
+ %b17
+ \rh \su s8 a'' s|
+ %b18
+ \sd b8 d' gis'|
+ %b19
+ \times 2/3{a'16 c'' b' a' c'' d'' e'' c'' b'}|
+ %b20
+ \times 2/3{a'16 c'' b' a' c'' d'' e'' c'' b'}|
+ %b21
+ \times 2/3{a'16 c'' b' a' b' c''}dis''32 c'' b' a'|
+ %b22
+ b'32 gis' dis' e' d''8 cis''|
+ %b23
+ b'32 gis' dis' e' s4|
+ %b24
+ s8 \lh d' cis'|
+ %b25
+ b8 a gis|
+ %b26
+ a32 d' c' b c' \rs f' \zs e' d' c' e' fis' gis'|
+ %b27
+ [\su a8 \sd a' \su b]|
+ %b28
+ [a8 \sd a' \su b]|
+ %b29
+ [a8 \sd a' \su b]|
+ %b30
+ [a8 \sd a' \su b]|
+ %b31
+ [a8 \sd a' \su b]|
+ %b32
+ [a8 \sd a' \su b]|
+ }
+ \context Thread=te{ \n
+ \lh s4.*24
+ %b25
+ b,8 a, gis,|
+ s4.
+ %b27
+ s4 d'8|
+ %b28
+ cis'8 s d'|
+ %b29
+ cis'8 s d'|
+ %b30
+ cis'8 s d'|
+ %b31
+ cis'8 s d'|
+ %b32
+ cis'8
+ }>
+ \autochange Staff
+ \context Voice=vc< \zs
+ \sd
+ \context Thread=tf{ \n
+ \lh s4.*6
+ %c7
+ d4.|
+ %c8
+ e4.|
+ %c9
+ d4.|
+ %c10
+ e4.|
+ %c11
+ d8 fis cis|
+ %c12
+ d4 g8|
+ %c13
+ fis4 b8|
+ %c14
+ a4 d'8|
+ %c15
+ a8 s a_"M"|
+ %c16
+ s4 s16 \rh e|
+ %c17
+ a8 s a|
+ %c18
+ s4 s16 \lh e|
+ %c19
+ a8_"M" s a|
+ %c20
+ g8 s g|
+ %c21
+ dis8 s dis|
+ %c22
+ e8 s4|
+ %c23
+ s8 e dis|
+ %c24
+ e8 d cis
+ }
+ \context Thread=tg{ \n
+ \lh s4.*10
+ %c11
+ s4 a8
+ }>
+ >
+ \context Staff=down<
+ \clef bass;
+ \key d \major;
+ s4.*37
+ >>
+ \paper {
+ %sonata-specific settings
+ \translator{\VoiceContext beamAutoBegin=0;beamAutoEnd_8="3/8";
+ beamAutoEnd_16="3/8";beamAutoEnd_24="1/8";beamAutoEnd_32="1/8";}
+ }
+}
+
--- /dev/null
+\paper{
+ %my standard paper block
+ 0=\font "feta19"
+ -1=\font "feta16"
+ arithmetic_multiplier=7.\pt;
+ indent=0.;
+ linewidth=188.\mm;
+ forced_stem_shorten0=0.;
+ forced_stem_shorten1=0.;
+ forced_stem_shorten2=0.;
+ forced_stem_shorten3=0.;
+ \translator{
+ \PianoStaffContext
+ maxVerticalAlign=42.\pt;
+ minVerticalAlign=42.\pt;
+ }
+ \translator{\StaffContext
+ timeSignatureStyle="C";}
+ \translator{\VoiceContext
+ noStemExtend = ##t
+ tupletVisibility = ##f
+ }
+}
+
+
--- /dev/null
+
+
+rh=\property Thread.noteHeadStyle=##f
+lh=\property Thread.noteHeadStyle = #'diamond
+n=\property Thread.fontSize=#0
+sm=\property Thread.fontSize=#-1
+su=\property Voice.verticalDirection=#1
+sd=\property Voice.verticalDirection=#-1
+zs=\property Voice.forceHorizontalShift=#0.0
+ls=\property Voice.forceHorizontalShift=#-0.6
+sls=\property Voice.forceHorizontalShift=#-0.22
+rs=\property Voice.forceHorizontalShift=#0.6
+srs=\property Voice.forceHorizontalShift=#0.22
+ab=\property Voice.noAutoBeaming=##f
+xb=\property Voice.noAutoBeaming=##t
NAME = lilypond
SUBDIRS = include
+EXTRA_LIBES=-lkpathsea
MODULE_LIBS=$(depth)/flower
-MODULE_INCLUDES= $(depth)/flower/include
+MODULE_INCLUDES= $(depth)/flower/include
MODULE_CXXFLAGS=
HELP2MAN_EXECS = lilypond
STEPMAKE_TEMPLATES= c++ executable po help2man
include $(depth)/make/stepmake.make
-
+EXTRA_LIBES=-lkpathsea
# force these: Make can't know these have to be generated in advance
$(outdir)/my-lily-parser.o: $(outdir)/parser.hh
$(outdir)/my-lily-lexer.o: $(outdir)/parser.hh
#include "lily-guile.hh"
#include "tfm-reader.hh"
+extern "C" {
+#include <kpathsea/kpathsea.h>
+}
+
const char * default_font_sz_ = "cmr10";
All_font_metrics::All_font_metrics (String path)
SCM sname = ly_symbol2scm (name.ch_C ());
if (!afm_p_dict_.elem_b (sname))
{
- String path = name + ".afm";
- path = search_path_.find (path);
+ String path;
if (path.empty_b ())
+ {
+ char * p = kpse_find_file(name.ch_C(), kpse_afm_format, true);
+ if (p)
+ path = p;
+ }
+
+ if (path.empty_b())
+ path = search_path_.find (name + ".afm");
+ if (path.empty_b())
return 0;
-
+
if (verbose_global_b)
progress_indication ("[" + path);
Adobe_font_metric * afm_p = read_afm_file (path);
SCM sname = ly_symbol2scm (name.ch_C ());
if (!tfm_p_dict_.elem_b (sname))
{
- String path = name + ".tfm";
- path = search_path_.find (path);
- if (path.empty_b ())
+ String path;
+
+ if (path.empty_b())
+ {
+ char * p = kpse_find_tfm(name.ch_C());
+ path = p;
+ }
+ if (path.empty_b())
+ path = search_path_.find (name + ".tfm");
+ if (path.empty_b())
return 0;
+
if (verbose_global_b)
progress_indication ("[" + path);
Tex_font_metric * tfm_p = Tex_font_metric_reader::read_file (path);
/*
[TODO]
+ * shorter! (now +- 1000 lines)
* less hairy code
* move paper vars to scm
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "proto.hh"
+#include "flower-proto.hh"
#include "engraver-group-engraver.hh"
#include "engraver.hh"
#include "debug.hh"
*/
-#include "proto.hh"
+#include "flower-proto.hh"
#include "musical-request.hh"
#include "lyric-extender.hh"
#include "paper-column.hh"
#include "ly-smobs.icc"
#include "font-metric.hh"
+#include "string.hh"
Box
Font_metric::text_dimension (String text) const
(c) 1999 Glen Prideaux <glenprideaux@iname.com>
*/
-#include "proto.hh"
+#include "flower-proto.hh"
#include "musical-request.hh"
#include "hyphen-spanner.hh"
#include "paper-column.hh"
+++ /dev/null
-/*
- idealspacing.cc -- implement Idealspacing
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1996--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "idealspacing.hh"
-#include "paper-column.hh"
-#include "paper-score.hh"
-#include "debug.hh"
-
-
-Idealspacing::Idealspacing()
-{
- space_f_ = 0.0;
- hooke_f_ = 0.0;
- cols_drul_[LEFT] = cols_drul_[RIGHT] = -1;
-}
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
+
/*
JUNKTHIS!
*/
#include "translator-group.hh"
#include "ly-smobs.icc"
+
IMPLEMENT_UNSMOB(Identifier, identifier);
IMPLEMENT_SMOBS(Identifier);
#ifndef ALL_FONTS_HH
#define ALL_FONTS_HH
-#include "dictionary.hh"
+
#include "file-path.hh"
#include "lily-proto.hh"
#include "font-metric.hh"
#ifndef AUDIO_COLUMN_HH
#define AUDIO_COLUMN_HH
-#include "proto.hh"
+#include "flower-proto.hh"
#include "lily-proto.hh"
#include "moment.hh"
#include "parray.hh"
#ifndef AUDIO_STAFF_HH
#define AUDIO_STAFF_HH
-#include "proto.hh"
#include "parray.hh"
#include "lily-proto.hh"
#include "audio-element.hh"
static Real rest_collision_callback (Score_element *,Axis);
Beam (SCM);
static void add_stem (Score_element*,Score_element*);
- static void set_grouping (Score_element*,Rhythmic_grouping def, Rhythmic_grouping current);
static void set_beaming (Score_element*,Beaming_info_list *);
static void set_stemlens (Score_element*);
static int get_multiplicity (Score_element*me);
#define DIMENSIONS_HH
#include "real.hh"
-#include "string.hh"
+class String;
const Real INCH_TO_PT=72.270;
const Real CM_TO_PT=INCH_TO_PT/2.54;
+++ /dev/null
-/*
- header.hh -- declare Header
-
- source file of the GNU LilyPond music typesetter
-
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-
-#ifndef HEADER_HH
-#define HEADER_HH
-
-#include "string.hh"
-#include "dictionary.hh"
-#include "scope.hh"
-
-
-
-#endif // HEADER_HH
+++ /dev/null
-/*
- idealspacing.hh -- part of GNU LilyPond
-
- (c) 1996--2000 Han-Wen Nienhuys
-*/
-
-#ifndef IDEALSPACING_HH
-#define IDEALSPACING_HH
-#include "lily-proto.hh"
-#include "drul-array.hh"
-
-/// ideal spacing between two columns
-struct Idealspacing {
-
- /// the ideal distance
- Real space_f_;
-
- /// Hooke's constant: how strong are the "springs" attached to columns
- Real hooke_f_;
-
- /// the two columns
- Drul_array<int> cols_drul_;
-
- Idealspacing();
-};
-
-
-#endif // IDEALSPACING_HH
-
DECLARE_ID_CLASS(Translator_group);
DECLARE_ID_CLASS(Duration);
-DECLARE_ID_CLASS(General_script_def);
DECLARE_ID_CLASS(Music);
DECLARE_ID_CLASS(Score);
DECLARE_ID_CLASS(Request);
#include "string.hh"
#include "parray.hh"
-#include "flower-proto.hh"
-#include "proto.hh"
+#include "lily-proto.hh"
// GIGA urg!
typedef struct yy_buffer_state *YY_BUFFER_STATE;
#include "box.hh"
-#include "string.hh"
#include "score-element.hh"
#include "drul-array.hh"
#include "protected-scm.hh"
int tokcode;
};
+/*
+ junkme, use hash table.
+ */
struct Keyword_table
{
Keyword_ent *table;
#ifndef LILY_GUILE_HH
#define LILY_GUILE_HH
-#include "string.hh"
-
#include <guile/gh.h>
#include <libguile.h>
#include "direction.hh"
+#include "flower-proto.hh"
#ifndef SCM_PACK
#define SCM_PACK(x) ((SCM) x)
/*
- lily-proto.hh -- declare class names.
+ lily-proto.hh -- declare class names.
- source file of the GNU LilyPond music typesetter
+ source file of the GNU LilyPond music typesetter
- (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef LILY_PROTO_HH
#define LILY_PROTO_HH
-#include "proto.hh"
+#include "flower-proto.hh"
-struct Absolute_dynamic_req;
-struct Adobe_font_char_metric;
-struct Adobe_font_metric;
-struct Align_element;
-struct All_font_metrics;
-struct Articulation_req;
-struct Audio_column;
-struct Audio_dynamic;
-struct Audio_element;
-struct Audio_element_info;
-struct Audio_instrument;
-struct Audio_item;
-struct Audio_key;
-struct Audio_note;
-struct Audio_note_off;
-struct Audio_staff;
-struct Audio_tempo;
-struct Audio_text;
-struct Audio_tie;
-struct Audio_time_signature;
-struct Auto_beam_engraver;
-struct Axis_align_item;
-struct Bar;
-struct Bar_column;
-struct Bar_column_engraver;
-struct Bar_engraver;
-struct Bar_req;
-struct Barcheck_req;
-struct Bass_req;
-struct Beam;
-struct Beam_engraver;
-struct Beaming_info;
-struct Beaming_info_list;
-struct Bezier;
-struct Bezier_bow;
-struct Blank_req;
-struct Bow;
-struct Box;
-struct Bracket_req;
-struct Break_align_item;
-struct Break_req;
-struct CHyphen_req;
-struct Cadenza_req;
-struct Change_iterator;
-struct Change_translator;
-struct Chord;
-struct Chord_name;
-struct Chord_name_engraver;
-struct Chord_tremolo_engraver;
-struct Clef_change_req;
-struct Clef_engraver;
-struct Clef_item;
-struct Clef_performer;
-struct Collision;
-struct Collision_engraver;
-struct Column_info;
-struct Column_spring;
-struct Column_x_positions;
-struct Command_req;
-struct Command_script_req;
-struct Command_tie_engraver;
-struct Crescendo ;
-struct Dimension_cache;
-struct Dynamic_performer;
-struct Spanner;
-struct Dot_column;
-struct Dots;
-struct Durational_req;
-struct Dynamic;
-struct Dynamic_req;
-struct Element_group;
-struct Element_group_item;
-struct Engraver;
-struct Engraver_group_engraver;
-struct Extender;
-struct Extender_req;
-struct Folded_repeat_iterator;
-struct Font_metric;
-struct General_script_def;
-struct Global_translator;
-struct Grace_align_item;
-struct Hara_kiri_group_spanner;
-struct Hara_kiri_line_group_engraver;
-struct Head_column;
-struct Idealspacing;
-struct Identifier;
-struct Input_file;
-struct Inversion_req;
-struct Item;
-struct Key;
-struct Key_change_req;
-struct Key_engraver;
-struct Key_item;
-struct Key_performer;
-struct Keyword;
-struct Keyword_table;
-struct Left_edge_item;
-struct Lily_stream;
-struct Line_group_engraver;
-struct Line_of_score;
-struct Line_of_staff;
-struct Linestaff;
-struct Local_key;
-struct Local_key_engraver;
-struct Local_key_item;
-struct Lookup;
-struct Lyric_item;
-struct Lyric_req;
-struct Mark_req;
-struct Measure_grouping_req;
-struct Melodic_req;
-struct Midi_def;
-struct Midi_duration;
-struct Midi_dynamic;
-struct Midi_header;
-struct Midi_item;
-struct Midi_key;
-struct Midi_note;
-struct Midi_note_event;
-struct Midi_note_off;
-struct Midi_output;
-struct Midi_score;
-struct Midi_stream;
-struct Midi_tempo;
-struct Midi_time_signature;
-struct Midi_track;
-struct Midi_walker;
-struct Mixed_qp;
-struct Molecule;
-struct Multi_measure_rest;
-struct Multi_measure_rest_engraver;
-struct Multi_measure_rest_req;
-struct Music;
-struct Music_iterator;
-struct Music_list;
-struct Music_list_iterator;
-struct Music_output;
-struct Music_output_def;
-struct Music_sequence;
-struct Music_wrapper;
-struct Music_wrapper_iterator;
-struct Musical_pitch;
-struct Musical_req;
-struct Musical_script_req;
-struct Musical_span_req;
-struct My_lily_lexer;
-struct My_lily_parser;
-struct Note_column;
-struct Note_column_engraver;
-struct Note_head;
-struct Note_head_engraver;
-struct Note_performer;
-struct Note_req;
-struct Notename_table;
-struct Offset;
-struct Paper_column;
-struct Polynomial;
-struct Paper_def;
-struct Paper_outputter;
-struct Paper_score;
-struct Paper_stream;
-struct Partial_measure_req;
-struct Performance;
-struct Performer;
-struct Performer;
-struct Performer_group_performer;
-struct Piano_brace;
-struct Property_iterator;
-struct Rational;
-struct Re_rhythmed_music;
-struct Relative_octave_music;
-struct Repeat_engraver;
-struct Repeated_music;
-struct Repeated_music;
-struct Repeated_music_iterator;
-struct Request;
-struct Request_chord;
-struct Request_column;
-struct Rest;
-struct Rest_collision;
-struct Rest_collision_engraver;
-struct Rest_req;
-struct Rhythmic_grouping;
-struct Rhythmic_grouping_req;
-struct Rhythmic_head;
-struct Rhythmic_req;
-struct Scope;
-struct Score;
-struct Score_column;
-struct Score_element;
-struct Score_element_info;
-struct Score_performer;
-struct Script;
-struct Script_req;
-struct Separating_group_spanner;
-struct Sequential_music;
-struct Simple_music;
-struct Simple_spacer;
-struct Simultaneous_music;
-struct Single_malt_grouping_item;
-struct Skip_req;
-struct Slur;
-struct Slur_bezier_bow;
-struct Slur_engraver;
-struct Spacing_spanner;
-struct Span_bar;
-struct Span_req;
-struct Span_score_bar;
-struct Spanner;
-struct Spring;
-struct Spring_spacer;
-struct Staff_bracket;
-struct Staff_performer;
-struct Staff_side;
-struct Staff_side_item;
-struct Staff_symbol;
-struct Stem;
-struct Stem_beam_engraver;
-struct Stem_req;
-struct Stem_tremolo;
-struct String;
-struct Super_element;
-struct Symtable;
-struct Symtables;
-struct Tempo_req;
-struct Tex_font_char_metric;
-struct Tex_font_metric;
-struct Tex_font_metric_reader;
-struct Text_def;
-struct Text_engraver;
-struct Text_gob;
-struct Item ;
-struct Text_req;
-struct Text_spanner;
-struct Tie;
-struct Tie_engraver;
-struct Tie_req;
-struct Time_description;
-struct Time_scaled_music;
-struct Time_scaled_music_iterator;
-struct Time_signature;
-struct Time_signature_change_req;
-struct Time_signature_engraver;
-struct Time_signature_performer;
-struct Timing_engraver;
-struct Timing_req;
-struct Timing_translator;
-struct Tonic_req;
-struct Translation_property;
-struct Translator;
-struct Translator_group;
-struct Tremolo_req;
-struct Tuplet_spanner;
-struct Unfolded_repeat_iterator;
-struct Vertical_brace;
-struct Volta_spanner;
-struct Moment;
-
-#endif // LILY_PROTO_HH
+class Adobe_font_metric;
+class All_font_metrics;
+class Articulation_req;
+class Audio_column;
+class Audio_dynamic;
+class Audio_element;
+class Audio_instrument;
+class Audio_item;
+class Audio_key;
+class Audio_note;
+class Audio_piano_pedal;
+class Audio_staff;
+class Audio_tempo;
+class Audio_text;
+class Audio_tie;
+class Audio_time_signature;
+class Auto_change_iterator;
+class Auto_change_music;
+class Axis_group_engraver;
+class Bar_engraver;
+class Bar_req;
+class Bar_req_collect_engraver;
+class Barcheck_req;
+class Base_span_bar_engraver;
+class Bass_req;
+class Beaming_info_list;
+class Bezier;
+class Bezier_bow;
+class Break_algorithm;
+class Break_req;
+class Breathing_sign_req;
+class Busy_playing_req;
+class Change_iterator;
+class Change_translator;
+class Chord_tremolo_iterator;
+class Clef_change_req;
+class Column_x_positions;
+class Context_specced_music;
+class Engraver;
+class Engraver;
+class Engraver_group_engraver;
+class Extender_req;
+class Folded_repeat_iterator;
+class Font_metric;
+class Font_size_engraver;
+class Global_translator;
+class Gourlay_breaking;
+class Grace_engraver_group;
+class Grace_iterator;
+class Grace_music;
+class Grace_performer_group;
+class Hara_kiri_engraver;
+class Hara_kiri_line_group_engraver;
+class Hyphen_req;
+class Identifier;
+class Includable_lexer;
+class Input;
+class Inversion_req;
+class Item;
+class Key_change_req;
+class Key_performer;
+class Keyword_ent;
+class Keyword_table;
+class Line_group_engraver_group;
+class Line_of_score;
+class Local_key_item;
+class Lookup;
+class Lyric_combine_music;
+class Lyric_combine_music_iterator;
+class Lyric_engraver;
+class Lyric_performer;
+class Lyric_req;
+class Mark_req;
+class Melisma_playing_req;
+class Melisma_req;
+class Melodic_req;
+class Midi_chunk;
+class Midi_def;
+class Midi_duration;
+class Midi_dynamic;
+class Midi_header;
+class Midi_instrument;
+class Midi_item;
+class Midi_key;
+class Midi_note;
+class Midi_note_event;
+class Midi_note_off;
+class Midi_piano_pedal;
+class Midi_stream;
+class Midi_tempo;
+class Midi_text;
+class Midi_time_signature;
+class Midi_track;
+class Molecule;
+class Moment;
+class Music;
+class Music_iterator;
+class Music_list;
+class Music_output;
+class Music_output_def;
+class Music_sequence;
+class Music_wrapper;
+class Music_wrapper_iterator;
+class Musical_pitch;
+class Musical_req;
+class My_lily_lexer;
+class Note_performer;
+class Note_req;
+class Output_property;
+class Paper_column;
+class Paper_def;
+class Paper_outputter;
+class Paper_score;
+class Paper_stream;
+class Performance;
+class Performer;
+class Performer_group_performer;
+class Piano_bar_engraver;
+class Pitch_interrogate_req;
+class Pitch_squash_engraver;
+class Property_iterator;
+class Rational;
+class Relative_octave_music;
+class Repeated_music;
+class Request;
+class Request_chord;
+class Request_chord_iterator;
+class Rest_req;
+class Rhythmic_req;
+class Scaled_font_metric;
+class Scheme_hash_table;
+class Scope;
+class Score;
+class Score_element;
+class Score_engraver;
+class Score_performer;
+class Script_req;
+class Sequential_music;
+class Sequential_music_iterator;
+class Simple_music_iterator;
+class Simple_spacer;
+class Simultaneous_music;
+class Simultaneous_music_iterator;
+class Skip_req;
+class Slur_bezier_bow;
+class Span_req;
+class Span_score_bar_engraver;
+class Spanner;
+class Staff_group_bar_engraver;
+class Staff_performer;
+class Swallow_engraver;
+class Swallow_performer;
+class Tempo_performer;
+class Tempo_req;
+class Tex_font_metric;
+class Text_script_req;
+class Tie;
+class Tie_performer;
+class Tie_req;
+class Time_scaled_music;
+class Time_scaled_music_iterator;
+class Time_signature_change_req;
+class Time_signature_performer;
+class Timing_engraver;
+class Timing_req;
+class Timing_translator;
+class Tonic_req;
+class Translation_property;
+class Translator;
+class Translator_change;
+class Translator_group;
+class Transposed_music;
+class Tremolo_req;
+class Type_swallow_translator;
+class Unfolded_repeat_iterator;
+class yyFlexLexer;
+#endif // LILY_PROTO_HH;
#ifndef LOOKUP_HH
#define LOOKUP_HH
+#include "smobs.hh"
#include "lily-guile.hh"
+#include "string.hh"
#include "molecule.hh"
#include "flower-proto.hh"
#include "direction.hh"
*/
class Lookup
{
-public:
- String font_name_;
- Adobe_font_metric * afm_l_;
Lookup ();
Lookup (Lookup const&);
+ friend class Brutus; // kai su, teknon. (make GCC shut up.)
+
+public:
+ DECLARE_SMOBS;
+ static SCM make_lookup ();
+ String font_name_;
+ Adobe_font_metric * afm_l_;
+
Molecule afm_find (String, bool warn=true) const;
Molecule accordion (SCM arg, Real interline_f) const;
static Molecule filledbox (Box b) ;
static Molecule text (String style, String text, Paper_def*) ;
};
-
+Lookup* unsmob_lookup (SCM);
#endif // LOOKUP_HH
public:
VIRTUAL_COPY_CONS(Music_output_def);
- /// duration of whole note measured in seconds.
- Moment whole_in_seconds_mom_;
-
Midi_def();
~Midi_def();
- Real length_mom_to_seconds_f (Moment);
int get_tempo_i (Moment moment);
- void print() const;
void set_tempo (Moment moment, int count_per_minute_i);
virtual int get_next_default_count () const;
static void reset_default_count();
#include "cons.hh"
#include "string.hh"
#include "lily-proto.hh"
-#include "proto.hh"
#include "moment.hh"
#include "audio-item.hh"
#ifndef MIDI_WALKER_HH
#define MIDI_WALKER_HH
-#include "proto.hh"
#include "pqueue.hh"
#include "lily-proto.hh"
#include "moment.hh"
Music_sequence (Music_list *l_p);
VIRTUAL_COPY_CONS(Music);
+
Musical_pitch do_relative_octave (Musical_pitch p, bool b);
virtual void transpose (Musical_pitch );
virtual void compress (Moment);
#include "string.hh"
#include "lily-proto.hh"
#include "virtual-methods.hh"
-#include "dictionary.hh"
-#include "scm-hash.hh"
/**
Definition of how to output mudela.
Scope *translator_p_dict_p_;
public:
Scope *scope_p_;
-
- Array<String> filename_str_arr_;
-
+
+ VIRTUAL_COPY_CONS(Music_output_def);
Music_output_def (Music_output_def const&);
Music_output_def ();
virtual ~Music_output_def ();
-
- VIRTUAL_COPY_CONS(Music_output_def);
-
+ virtual int get_next_default_count () const;
virtual void print () const;
Global_translator *get_global_translator_p ();
String get_default_output () const;
void assign_translator (Translator_group*);
Translator * find_translator_l (String) const;
- virtual int get_next_default_count () const;
};
#endif // Music_output_DEF_HH
Input here_input () const;
void start_main_input ();
- void set_chordmodifier_table (Notename_table*tab_p);
- void set_notename_table (Notename_table*tab_p);
SCM lookup_identifier (String s);
void push_note_state();
#include "array.hh"
#include "interval.hh"
#include "music-output-def.hh"
+#include "protected-scm.hh"
/**
*/
class Paper_def : public Music_output_def
{
- map<int, Lookup *> *lookup_p_tab_p_;
- static int default_count_i_;
-
+ Protected_scm lookup_alist_;
protected:
VIRTUAL_COPY_CONS(Music_output_def);
public:
virtual ~Paper_def ();
-
+ static int default_count_i_;
/*
JUNKME
*/
Real get_realvar (SCM symbol) const;
Real get_var (String id) const;
-
SCM get_scmvar (String id)const;
void reinit ();
Paper_def ();
void set_lookup (int, Lookup*);
-
Paper_def (Paper_def const&);
/** The distance between beams of multiplicity_i
JUNKME
*/
Real interbeam_f (int multiplicity_i) const;
-
Interval line_dimensions_int (int) const;
-
void print () const;
-
Lookup const * lookup_l (int sz) const; // TODO naming
-
-
virtual int get_next_default_count () const;
static void reset_default_count();
-
void output_settings (Paper_outputter*) const;
-
Paper_stream* paper_stream_p () const;
String base_output_str () const;
#ifndef SCORE_HH
#define SCORE_HH
-#include "array.hh"
-#include "lily-proto.hh"
-#include "string.hh"
#include "input.hh"
#include "lily-proto.hh"
#include "parray.hh"
*/
+/*
+ TODO: aren't there standard libs? Ideally it is better to just link
+ to a C-library. */
+
#ifndef TFM_HH
#define TFM_HH
#include "translator.hh"
#include "cons.hh"
#include "parray.hh"
-#include "scm-hash.hh"
// egcs
typedef void (Translator::*Method_pointer)(void);
typedef void (Translator::*Const_method_pointer)(void) const;
-
+class Scheme_hash_table;
/** Make some kind of Elements from Requests. Elements are made by
hierarchically grouped Translators
*/
Array<String> consists_str_arr_;
Array<String> accepts_str_arr_;
Array<String> consists_end_str_arr_;
- Scheme_hash_table properties_dict_;
+ Scheme_hash_table *properties_dict_;
int iterator_count_;
friend class Interpretation_context_handle;
#ifndef TRANSLATOR_HH
#define TRANSLATOR_HH
-#include <typeinfo>
#include "global-ctor.hh"
#include "string.hh"
#include "lily-proto.hh"
#include "virtual-methods.hh"
#include "lily-guile.hh"
-#include "dictionary.hh"
#include "parray.hh"
#include "input.hh"
#include <ctype.h>
#include "lookup.hh"
-#include "debug.hh"
+#include "warn.hh"
#include "dimensions.hh"
#include "bezier.hh"
#include "paper-def.hh"
#include "scope.hh"
#include "molecule.hh"
-#include "lily-guile.hh"
+
+#include "ly-smobs.icc"
Lookup::Lookup ()
{
afm_l_ = 0;
+ self_scm_ = SCM_EOL;
+ smobify_self ();
}
Lookup::Lookup (Lookup const& s)
{
font_name_ = s.font_name_;
- afm_l_ = 0;
+ self_scm_ = SCM_EOL;
+ afm_l_ = 0;
+ smobify_self ();
+}
+
+SCM
+Lookup::mark_smob (SCM s)
+{
+ return s;
+}
+
+int
+Lookup::print_smob (SCM s, SCM p, scm_print_state*)
+{
+ scm_puts ("#<Lookup >#", p);
+ return 1;
}
+SCM
+Lookup::equal_p (SCM a , SCM b)
+{
+ return a == b ? SCM_BOOL_T : SCM_BOOL_F;
+}
+void
+Lookup::do_smobify_self ()
+{
+
+}
+
+IMPLEMENT_UNSMOB(Lookup, lookup);
+IMPLEMENT_SMOBS(Lookup);
+
+SCM
+Lookup::make_lookup ()
+{
+ Lookup * l = new Lookup;
+ SCM ls = l->self_scm_;
+ scm_unprotect_object (ls);
+ return ls;
+}
Molecule
#include "lily-version.hh"
#include "all-font-metrics.hh"
-#include "proto.hh"
#include "getopt-long.hh"
#include "misc.hh"
#include "string.hh"
#include <libintl.h>
#endif
+extern "C" {
+#include <kpathsea/kpathsea.h>
+}
bool verbose_global_b = false;
bool no_paper_global_b = false;
setenv ("GUILE_INIT_SEGMENT_SIZE_1", "4194304", 0);
setenv ("GUILE_MAX_SEGMENT_SIZE", "8388608", 0);
+ /*
+ initialize kpathsea
+ */
+ kpse_set_program_name(argv[0], NULL);
+ kpse_maketex_option("tfm", TRUE);
+
oparser_global_p = new Getopt_long(argc, argv,theopts);
while (Long_option_init const * opt = (*oparser_global_p)())
{
#include <math.h>
#include "misc.hh"
#include "midi-def.hh"
-#include "translator.hh"
#include "performance.hh"
-#include "score-performer.hh"
#include "debug.hh"
+#include "scope.hh"
Midi_def::Midi_def()
{
{
}
-Real
-Midi_def::length_mom_to_seconds_f (Moment mom)
-{
- if (!mom)
- return 0;
-
- return Moment (whole_in_seconds_mom_) * mom;
-}
int
Midi_def::get_tempo_i (Moment one_beat_mom)
{
- Moment wholes_per_min = Moment(60) /Moment(whole_in_seconds_mom_);
+ Moment w = *unsmob_moment (scope_p_->scm_elem ("whole-in-seconds"));
+ Moment wholes_per_min = Moment(60) /w;
int beats_per_min = wholes_per_min / one_beat_mom;
return int (beats_per_min);
}
Midi_def::set_tempo (Moment one_beat_mom, int beats_per_minute_i)
{
Moment beats_per_second = Moment (beats_per_minute_i) / Moment (60);
- whole_in_seconds_mom_ = Moment(1)/Moment(beats_per_second * one_beat_mom);
-}
-void
-Midi_def::print() const
-{
-#ifndef NPRINT
- DEBUG_OUT << "MIDI {\n";
- Music_output_def::print ();
- DEBUG_OUT << "4/min: " << Moment (60) / (whole_in_seconds_mom_ * Moment (4));
- DEBUG_OUT << "}\n";
-#endif
+ Moment *m = new Moment (Moment(1)/Moment(beats_per_second * one_beat_mom));
+ scope_p_->set ("whole-in-seconds", smobify (m));
}
+
int Midi_def::default_count_i_=0;
int
(c) 1997--2000 Jan Nieuwenhuizen <janneke@gnu.org>
*/
-#include "proto.hh"
#include "debug.hh"
#include "misc.hh"
#include "string.hh"
Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "proto.hh"
#include "musical-request.hh"
#include "multi-measure-rest.hh"
#include "paper-column.hh"
}
-Musical_pitch
-Music_sequence::do_relative_octave (Musical_pitch p, bool b)
-{
- return music_p_list_p_->do_relative_octave (p, b);
-}
Musical_pitch
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
+#include "dictionary.hh"
#include "scope.hh"
#include "debug.hh"
#include "music-output-def.hh"
return gh_string_p (s) ? ly_scm2string (s) : String ("");
}
+
{
return cons_list_size_i (music_p_list_p_->head_);
}
+
+Musical_pitch
+Music_sequence::do_relative_octave (Musical_pitch p, bool b)
+{
+ return music_p_list_p_->do_relative_octave (p, b);
+}
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
- #include <typeinfo>
-
#include "music.hh"
#include "music-list.hh"
#include "debug.hh"
}
void
-My_lily_parser::set_version_check (bool ig)
+My_lily_parser::set_version_check (bool )
{
}
Paper_def::Paper_def ()
{
- lookup_p_tab_p_ = new map<int, Lookup*>;
+ lookup_alist_ = SCM_EOL;
}
Paper_def::~Paper_def ()
{
- for (map<int,Lookup*>::const_iterator ai = lookup_p_tab_p_->begin();
- ai != lookup_p_tab_p_->end (); ai++)
- {
- delete (*ai).second;
- }
-
- delete lookup_p_tab_p_;
}
-Paper_def::Paper_def (Paper_def const&s)
- : Music_output_def (s)
+Paper_def::Paper_def (Paper_def const&src)
+ : Music_output_def (src)
{
- lookup_p_tab_p_ = new map<int, Lookup*>;
-
- for (map<int,Lookup*>::const_iterator ai = s.lookup_p_tab_p_->begin();
- ai != s.lookup_p_tab_p_->end (); ai++)
+ SCM n = SCM_EOL;
+ for (SCM s = src.lookup_alist_; gh_pair_p(s); s = gh_cdr (s))
{
- Lookup * l = new Lookup (* (*ai).second);
- set_lookup ((*ai).first, l);
+ n = scm_acons (gh_caar(s), gh_cdar (s), n);
}
+
+ lookup_alist_ = n;
}
void
Paper_def::set_lookup (int i, Lookup*l)
{
- map<int,Lookup*> :: const_iterator it (lookup_p_tab_p_->find (i));
- if (it != lookup_p_tab_p_->end ())
- {
- delete (*it).second;
- }
- (*lookup_p_tab_p_)[i] = l;
+ lookup_alist_ = scm_assq_set_x(lookup_alist_, gh_int2scm (i), l->self_scm_);
}
{
#ifndef NPRINT
Music_output_def::print ();
- DEBUG_OUT << "Paper {";
- for (map<int,Lookup*>::const_iterator ai = lookup_p_tab_p_->begin();
- ai != lookup_p_tab_p_->end (); ai++)
- {
- DEBUG_OUT << "Lookup: " << (*ai).first
- << " = " << (*ai).second->font_name_ << '\n';
- }
- DEBUG_OUT << "}\n";
+ if (flower_dstream)
+ gh_display (lookup_alist_);
#endif
}
Lookup const *
Paper_def::lookup_l (int i) const
{
- return (*lookup_p_tab_p_)[i];
+ SCM l = scm_assq (gh_int2scm(i), lookup_alist_);
+ return l == SCM_BOOL_F ? 0 : unsmob_lookup (gh_cdr (l));
}
-
-
int Paper_def::default_count_i_ = 0;
int
outname += String (".") + output_global_ch;
progress_indication (_f ("paper output to %s...",
outname == "-" ? String ("<stdout>") : outname));
-
target_str_global_array.push (outname);
return new Paper_stream (outname);
$$ = tg;
}
| translator_spec_body STRING '=' embedded_scm {
- Translator_group* tg = dynamic_cast<Translator_group*> ($$);
+ Translator_group* tg = $$;
tg->set_property (ly_scm2string ($2), $4);
}
| translator_spec_body STRING '=' identifier_init semicolon {
SCM v = gh_int2scm (0);
- if (gh_string_p ($4) || gh_number_p ($4))
+ if (gh_string_p ($4) || gh_number_p ($4) || gh_boolean_p ($4))
v = $4;
else
THIS->parser_error (_("Wrong type for property value"));
delete $2;
}
| music_output_def_body bare_int '=' FONT STRING { // ugh, what a syntax
- Lookup * l = new Lookup;
+ Lookup * l =unsmob_lookup (Lookup::make_lookup());
l->font_name_ = ly_scm2string ($5);
dynamic_cast<Paper_def*> ($$)->set_lookup ($2, l);
}
if (repeat_body_p_)
p = repeat_body_p_->to_relative_octave (p);
+ Musical_pitch last = p ;
if (alternatives_p_)
- p = alternatives_p_->do_relative_octave (p, false);
- return p;
+ for (Cons<Music> *i = alternatives_p_->music_p_list_p_->head_; i ; i = i->next_)
+ {
+ last = i->car_->to_relative_octave (p);
+ }
+
+ return last;
}
SCM
Score_element::get_elt_property (SCM sym) const
{
- SCM s = scm_assq(sym, mutable_property_alist_);
+ SCM s = scm_sloppy_assq(sym, mutable_property_alist_);
if (s != SCM_BOOL_F)
return gh_cdr (s);
- s = scm_assq (sym, immutable_property_alist_);
+ s = scm_sloppy_assq (sym, immutable_property_alist_);
return (s == SCM_BOOL_F) ? SCM_UNDEFINED : gh_cdr (s);
}
bool
Script::has_interface (Score_element*me)
{
- return me->has_interface ("script-interface");
+ return me->has_interface (ly_symbol2scm ("script-interface"));
}
void
Script::set_interface (Score_element*me)
{
- return me->set_interface ("script-interface");
+ return me->set_interface (ly_symbol2scm ("script-interface"));
}
}
else
{
+ programming_error ("No spring between adjacent columns");
desc.hooke_f_ = 1.0;
desc.ideal_f_ = default_space_f_;
}
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "proto.hh"
#include "musical-request.hh"
#include "slur-engraver.hh"
#include "slur.hh"
bool
Slur::has_interface (Score_element*me)
{
- return me->has_interface ("slur-interface");
+ return me->has_interface (ly_symbol2scm ("slur-interface"));
}
return me->get_elt_property ("minimum-distances");
}
+/*todo: merge code of spring & rod?
+ */
void
Spaceable_element::add_rod (Score_element *me , Score_element * p, Real d)
{
SCM mins = get_minimum_distances (me);
- SCM newdist= gh_double2scm (d);
- for (; gh_pair_p (mins); mins = gh_cdr (mins))
+ SCM newdist = gh_double2scm (d);
+ for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
{
- SCM dist = gh_car (mins);
+ SCM dist = gh_car (s);
if (gh_car (dist) == p->self_scm_)
{
gh_set_cdr_x (dist, scm_max (gh_cdr (dist),
me->set_elt_property ("minimum-distances", mins);
}
-SCM
-Spaceable_element::get_ideal_distances (Score_element*me)
-{
- return me->get_elt_property ("ideal-distances");
-}
-
void
-Spaceable_element::add_spring (Score_element*me, Score_element * p, Real d, Real s)
+Spaceable_element::add_spring (Score_element*me, Score_element * p, Real d, Real strength)
{
SCM mins = get_ideal_distances (me);
SCM newdist= gh_double2scm (d);
- for (; gh_pair_p (mins); mins = gh_cdr (mins))
+ for (SCM s = mins; gh_pair_p (s); s = gh_cdr (s))
{
- SCM dist = gh_car (mins);
+ SCM dist = gh_car (s);
if (gh_car (dist) == p->self_scm_)
{
programming_error("already have that spring");
- /* gh_set_car_x (gh_cdr (dist), scm_max (gh_cadr (dist),
- newdist));*/
return ;
}
}
- SCM newstrength= gh_double2scm (s);
+ SCM newstrength= gh_double2scm (strength);
mins = gh_cons (gh_cons (p->self_scm_, gh_cons (newdist, newstrength)), mins);
me->set_elt_property ("ideal-distances", mins);
}
+SCM
+Spaceable_element::get_ideal_distances (Score_element*me)
+{
+ return me->get_elt_property ("ideal-distances");
+}
+
void
Spaceable_element::remove_interface (Score_element*me)
#include "musical-request.hh"
#include "paper-column.hh"
-#include "spacing-engraver.hh"
+
#include "spacing-spanner.hh"
#include "engraver.hh"
#include "pqueue.hh"
if (d1 == d2)
return 0.0;
- bool err = false;
+
Real correction = 0.0;
Real ssc = me->paper_l ()->get_var("stemSpacingCorrection");
#include "score-element.hh"
#include "molecule.hh"
#include "lookup.hh"
+#include "string.hh"
// update comment --hwn
/*
#include "molecule.hh"
#include "lookup.hh"
#include "all-font-metrics.hh"
-#include "spanner.hh"
+#include "score-element.hh"
Molecule
System_start_delimiter::staff_bracket (Score_element*me,Real height)
*/
#include <limits.h>
-#include "proto.hh"
#include "string.hh"
#include "moment.hh"
#include "real.hh"
/*
- ctie-engraver.cc -- implement Tie_engraver
+ tie-engraver.cc -- implement Tie_engraver
source file of the GNU LilyPond music typesetter
class Tie_engraver : public Engraver
{
PQueue<CHead_melodic_tuple> past_notes_pq_;
+ Moment end_mom_;
+ Moment next_end_mom_;
+
Tie_req *req_l_;
Array<CHead_melodic_tuple> now_heads_;
Array<CHead_melodic_tuple> stopped_heads_;
{
if (Tie_req * c = dynamic_cast<Tie_req*> (m))
{
+ /* if (end_mom_ > now_mom ())
+ return false;
+ */
req_l_ = c;
SCM m = get_property ("automaticMelismata");
bool am = gh_boolean_p (m) &&gh_scm2bool (m);
if (req_l_)
{
Moment now = now_mom ();
- Link_array<Note_head> nharr;
-
stopped_heads_.clear ();
while (past_notes_pq_.size ()
&& past_notes_pq_.front ().end_ == now)
b.set_default_bezier (h_inf, r_0);
Bezier c = b.get_bezier ();
- /* should do me for slurs as well. */
+ /*
+ Avoid colliding of the horizontal part with stafflines.
+
+ should do me for slurs as well.
+
+ */
Array<Real> horizontal (c.solve_derivative (Offset (1,0)));
+
if (horizontal.size ())
{
/*
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "proto.hh"
#include "translator.hh"
#include "dictionary.hh"
#include "debug.hh"
#include "translator.hh"
#include "debug.hh"
#include "moment.hh"
-
+#include "scm-hash.hh"
#include "killing-cons.tcc"
Translator_group::Translator_group (Translator_group const&s)
consists_end_str_arr_ = s.consists_end_str_arr_;
accepts_str_arr_ = s.accepts_str_arr_;
iterator_count_ =0;
- properties_dict_ = s.properties_dict_;
+ properties_dict_ = new Scheme_hash_table (*s.properties_dict_);
}
Translator_group::~Translator_group ()
{
assert (removable_b());
trans_p_list_.junk ();
+ delete properties_dict_;
}
Translator_group::Translator_group()
{
iterator_count_ = 0;
+ properties_dict_ = new Scheme_hash_table ;
}
void
if (!flower_dstream)
return ;
- gh_display (properties_dict_.self_scm_);
+ gh_display (properties_dict_->self_scm_);
if (status == ORPHAN)
{
DEBUG_OUT << "consists of: ";
Translator_group*
Translator_group::where_defined (SCM sym) const
{
- if (properties_dict_.elem_b (sym))
+ if (properties_dict_->elem_b (sym))
{
return (Translator_group*)this;
}
SCM
Translator_group::get_property (SCM sym) const
{
- if (properties_dict_.elem_b (sym))
+ if (properties_dict_->elem_b (sym))
{
- return properties_dict_.get (sym);
+ return properties_dict_->get (sym);
}
if (daddy_trans_l_)
void
Translator_group::set_property (String id, SCM val)
{
- properties_dict_.set (ly_symbol2scm (id.ch_C()), val);
+ properties_dict_->set (ly_symbol2scm (id.ch_C()), val);
}
(c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "proto.hh"
#include "debug.hh"
#include "my-lily-lexer.hh"
#include "moment.hh"
(defconst lily-font-lock-keywords
(let* ((keywords '("spanrequest" "simultaneous" "sequential" "accepts"
- "alternative" "bar" "breathe"
+ "autochange" "alternative" "bar" "breathe"
"cadenza" "chordmodifiers" "chords" "clef" "cm" "consists"
"consistsend" "context"
"duration" "font" "grace" "header" "in" "lyrics"
Begin3
Title: LilyPond
-Version: 1.3.70
-Entered-date: 05JUL00
+Version: 1.3.71
+Entered-date: 06JUL00
Description:
Keywords: music notation typesetting midi fonts engraving
Author: hanwen@cs.uu.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 1000k lilypond-1.3.70.tar.gz
+ 1000k lilypond-1.3.71.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 1000k lilypond-1.3.70.tar.gz
+ 1000k lilypond-1.3.71.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.3.70
+Version: 1.3.71
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.70.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.71.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
# Icon: lilypond-icon.gif
#include <assert.h>
-#include "proto.hh"
+#include "flower-proto.hh"
#include "string.hh"
#include "source-file.hh"
#include "source.hh"
#endif
-#include "proto.hh"
+#include "flower-proto.hh"
#include "rational.hh"
#include "midi2ly-proto.hh"
#define MIDI_SCORE_PARSER_HH
#include "midi-parser.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "midi2ly-proto.hh"
#include "parray.hh"
#ifndef MIDI_TRACK_PARSER_HH
#define MIDI_TRACK_PARSER_HH
-#include "proto.hh"
+#include "flower-proto.hh"
#include "cons.hh"
#include "rational.hh"
#include "midi2ly-proto.hh"
//
-// midi2ly-global.hh -- declare global (sic) stuff for midi2ly
+// midi2ly-global.hh -- declare global stuff for midi2ly
//
// copyright 1997 Jan Nieuwenhuizen <janneke@gnu.org>
#include <iostream.h>
#include "string.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#define monitor_p_g &cout
enum Verbose { QUIET_ver, BRIEF_ver, NORMAL_ver, VERBOSE_ver, DEBUG_ver };
#ifndef MUDELA_COLUMN_HH
#define MUDELA_COLUMN_HH
-#include "proto.hh"
+#include "flower-proto.hh"
#include "midi2ly-proto.hh"
#include "rational.hh"
#include "cons.hh"
class Mudela_column
{
public:
- Mudela_column (Mudela_score* mudela_score_l, Rational mom);
+ Mudela_column (Mudela_score* mudela_score_l, Rational mom);
- void add_item (Mudela_item* mudela_item_l);
- Rational at_mom ();
+ void add_item (Mudela_item* mudela_item_l);
+ Rational at_mom ();
- Cons_list<Mudela_item> mudela_item_l_list_;
- Rational at_mom_;
- Mudela_score* mudela_score_l_;
+ Cons_list<Mudela_item> mudela_item_l_list_;
+ Rational at_mom_;
+ Mudela_score* mudela_score_l_;
};
#endif // MUDELA_COLUMN_HH
#define MUDELA_SCORE_HH
#include "midi2ly-proto.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "cons.hh"
#include "parray.hh"
#define MUDELA_STAFF_HH
#include "midi2ly-proto.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "cons.hh"
#include "string.hh"
-#include "proto.hh"
+#include "flower-proto.hh"
#include "string.hh"
const char * midi2ly_version_sz();