#define DIRSEP '@DIRSEP@'
#define PATHSEP '@PATHSEP@'
-/* define GUILE-ification */
-#undef HAVE_LIBGUILE
+/* define if no assert */
+#define HAVE_ASSERT_H 1
# 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"
--- /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
/*
[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"
(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;
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 <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;
}
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"));
}
(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"));
}
#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"
#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();