From dc8cdba0b61bdacbcd45f09c357687025cc801dc Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 23:55:28 +0000 Subject: [PATCH] lilypond-1.3.85 --- lily/include/ly-smobs.icc | 8 +- lily/include/music-output-def.hh | 5 +- lily/include/smobs.hh | 1 + lily/include/translator-def.hh | 56 ++++++++++++++ lily/include/translator-group.hh | 15 ---- lily/include/translator.hh | 7 +- lily/lexer.ll | 5 +- lily/music-output-def.cc | 48 +++++------- lily/parser.yy | 87 ++++++++++++---------- lily/property-iterator.cc | 5 +- lily/staff-symbol-engraver.cc | 2 +- lily/translator-ctors.cc | 1 - lily/translator-group.cc | 121 +++++-------------------------- lily/translator.cc | 18 +---- ly/engraver.ly | 24 +++--- ly/performer.ly | 5 -- 16 files changed, 180 insertions(+), 228 deletions(-) create mode 100644 lily/include/translator-def.hh diff --git a/lily/include/ly-smobs.icc b/lily/include/ly-smobs.icc index b17bd314f1..0bcb9d2e8d 100644 --- a/lily/include/ly-smobs.icc +++ b/lily/include/ly-smobs.icc @@ -67,6 +67,13 @@ ADD_SCM_INIT_FUNC(CL, CL::init_smobs) IMPLEMENT_SIMPLE_SMOBS(CL) \ SCM \ CL::smobify_self () \ +{ \ + SCM s = unprotected_smobify_self ();\ + scm_protect_object (s);\ + return s;\ +}\ +SCM \ +CL::unprotected_smobify_self () \ { \ /* \ This is local. We don't assign to self_scm_ directly, to assure \ @@ -82,7 +89,6 @@ CL::smobify_self () \ SCM_SETCDR (s, SCM_PACK(this)); \ self_scm_ = s; \ scm_done_malloc(sizeof(CL)); \ - scm_protect_object (s); \ return s; \ } diff --git a/lily/include/music-output-def.hh b/lily/include/music-output-def.hh index eb20e22d11..a5c5c8d152 100644 --- a/lily/include/music-output-def.hh +++ b/lily/include/music-output-def.hh @@ -12,6 +12,7 @@ #include "string.hh" #include "lily-proto.hh" +#include "lily-guile.hh" #include "virtual-methods.hh" /** @@ -33,8 +34,8 @@ public: Global_translator *get_global_translator_p (); Translator_group *get_group_translator_p (String type) const; String get_default_output () const; - void assign_translator (Translator_group*); - Translator * find_translator_l (String) const; + void assign_translator (SCM transdef); + SCM find_translator_l (SCM name) const; }; #endif // Music_output_DEF_HH diff --git a/lily/include/smobs.hh b/lily/include/smobs.hh index edd1f2e60c..c881c05ad6 100644 --- a/lily/include/smobs.hh +++ b/lily/include/smobs.hh @@ -119,6 +119,7 @@ private: DECLARE_SIMPLE_SMOBS(CL,dammy) \ protected:\ virtual ~CL();\ + SCM unprotected_smobify_self ();\ private: \ SCM smobify_self (); \ SCM self_scm_; \ diff --git a/lily/include/translator-def.hh b/lily/include/translator-def.hh new file mode 100644 index 0000000000..c985222a40 --- /dev/null +++ b/lily/include/translator-def.hh @@ -0,0 +1,56 @@ +/* + translator-def.hh -- declare Translator_def + + source file of the GNU LilyPond music typesetter + + (c) 2000 Han-Wen Nienhuys + + */ + +#ifndef TRANSLATOR_DEF_HH +#define TRANSLATOR_DEF_HH + +#include "lily-proto.hh" +#include "smobs.hh" +#include "input.hh" + +struct Translator_def : public Input +{ + SCM consists_name_list_; + SCM end_consists_name_list_; + SCM accepts_name_list_; + SCM property_ops_; + SCM type_name_; + SCM translator_group_type_; + + SCM modify_definition (SCM, SCM, bool); + + void set_acceptor (SCM accepts, bool add); + void add_element (SCM name); + void remove_element (SCM name); + void add_last_element (SCM name); + + void add_push_property (SCM,SCM,SCM); + void add_pop_property (SCM,SCM); + void add_property_assign (SCM, SCM); + Link_array path_to_acceptable_translator (SCM type_str, Music_output_def* odef) const; + Translator_group * instantiate (Music_output_def*); + + static SCM make_scm () ; + static void apply_pushpop_property (Translator_group*, SCM syms, SCM eprop, SCM val); + + SCM clone_scm ()const; + DECLARE_SMOBS(Translator_def,foo); +private: + + Translator_def (); + Translator_def (Translator_def const&); + + +}; + +Translator_def* unsmob_translator_def (SCM); + + +#endif /* TRANSLATOR_DEF_HH */ + diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index 4701c48bbb..507ff124b4 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -22,21 +22,6 @@ typedef void (Translator::*Method_pointer)(void); class Scheme_hash_table; -/* - should make a struct out of this, and move SCM list stuff in here. - */ -struct Translator_group_initializer { - static SCM modify_definition (SCM, SCM, bool); - - static void set_acceptor (Translator*,SCM accepts, bool add); - static void add_element (Translator*,SCM name); - static void remove_element (Translator*,SCM name); - static void add_last_element (Translator*,SCM name); - static void apply_pushpop_property (Translator*trans, SCM syms, SCM eprop, SCM val); - static void add_push_property (Translator*, SCM,SCM,SCM); - static void add_pop_property (Translator*, SCM,SCM); - -}; /** Make some kind of Elements from Requests. Elements are made by hierarchically grouped Translators diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 2cca991105..74a46a1fd2 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -68,15 +68,12 @@ public: /* ugh: bubbled up from Translator_group. */ - SCM consists_name_list_; - SCM end_consists_name_list_; - SCM accepts_name_list_; SCM simple_trans_list_; SCM trans_group_list_; + SCM definition_; + SCM properties_scm_; - SCM property_pushes_; DECLARE_SMOBS(Translator, dummy); - public: /* UGH. Clean this up. diff --git a/lily/lexer.ll b/lily/lexer.ll index 09378ba961..dfbdfd9a36 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -39,7 +39,8 @@ #include "identifier.hh" #include "version.hh" #include "mudela-version.hh" -#include "translator-group.hh" +#include "translator-def.hh" + void strip_trailing_white (String&); void strip_leading_white (String&); @@ -477,7 +478,7 @@ My_lily_lexer::scan_escaped_word (String str) } else if (gh_number_p (sid)) { yylval.scm = sid; return NUMBER_IDENTIFIER; - } else if (Translator* tr = unsmob_translator (sid)) { + } else if (Translator_def* tr = unsmob_translator_def (sid)) { yylval.scm = sid; return TRANSLATOR_IDENTIFIER; } else if (Music * mus =unsmob_music (sid)) { diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc index a0107291a5..438ea4cca6 100644 --- a/lily/music-output-def.cc +++ b/lily/music-output-def.cc @@ -11,7 +11,7 @@ #include "debug.hh" #include "music-output-def.hh" #include "global-translator.hh" - +#include "translator-def.hh" #include "identifier.hh" #include "main.hh" #include "lily-guile.hh" @@ -43,48 +43,38 @@ Music_output_def::Music_output_def (Music_output_def const &s) } void -Music_output_def::assign_translator (Translator_group*tp) +Music_output_def::assign_translator (SCM transdef) { - String s =tp->type_str_; - if (s.empty_b ()) - { - tp->warning (_("Interpretation context with empty type")); - } - - SCM tr = tp->self_scm (); - scm_unprotect_object (tr); - translator_p_dict_p_->set (s, tr); + Translator_def *tp = unsmob_translator_def (transdef); + assert (tp); + + String s = ly_scm2string (tp->type_name_); + translator_p_dict_p_->set (s, transdef); } -Translator* -Music_output_def::find_translator_l (String name) const +SCM +Music_output_def::find_translator_l (SCM name) const { - if (translator_p_dict_p_->elem_b (name)) - return unsmob_translator (translator_p_dict_p_->scm_elem (name)); - - map::const_iterator ki - =global_translator_dict_p->find (name); - - if (ki != global_translator_dict_p->end ()) - return (*ki).second ; + String s = ly_scm2string (name); + if (translator_p_dict_p_->elem_b (s)) + return translator_p_dict_p_->scm_elem (s); - return 0; + return SCM_EOL; } Global_translator * Music_output_def::get_global_translator_p () { - Translator * t = find_translator_l ("Score"); + Translator_def * t = unsmob_translator_def (find_translator_l (gh_str02scm ("Score"))); if (!t) error (_f ("can't find `%s' context", "Score")); - t = t->clone (); - t->output_def_l_ = this; - Global_translator *g = dynamic_cast (t); - t->add_processing (); + Translator_group * tg = t->instantiate (this); + + tg->add_processing (); - return g; + return dynamic_cast (tg); } void @@ -98,8 +88,6 @@ Music_output_def::get_default_output () const if (safe_global_b || !scope_p_->elem_b ("output")) return ""; SCM s = scope_p_->scm_elem ("output"); - - return gh_string_p (s) ? ly_scm2string (s) : String (""); } diff --git a/lily/parser.yy b/lily/parser.yy index 8db7014cdf..13fd818479 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -10,6 +10,7 @@ */ #include +#include "translator-def.hh" #include "lily-guile.hh" #include "translation-property.hh" #include "lookup.hh" @@ -26,7 +27,6 @@ #include "musical-request.hh" #include "my-lily-parser.hh" #include "context-specced-music.hh" -#include "translator-group.hh" #include "score.hh" #include "music-list.hh" #include "change-translator.hh" @@ -106,7 +106,6 @@ of the parse stack onto the heap. */ SCM scm; Tempo_req *tempo; - Translator_group* trans; int i; } %{ @@ -166,6 +165,7 @@ yylex (YYSTYPE *s, void * v_l) %token PENALTY %token PROPERTY %token PUSHPROPERTY POPPROPERTY +%token PUSH POP %token PT_T %token RELATIVE %token REMOVE @@ -253,7 +253,7 @@ yylex (YYSTYPE *s, void * v_l) %type string bare_number number_expression %type score_block score_body -%type translator_spec_block translator_spec_body +%type translator_spec_block translator_spec_body %type tempo_request %type notenames_body notenames_block chordmodifiers_block %type script_abbreviation @@ -386,8 +386,7 @@ identifier_init: $$ = (new Music_output_def_identifier ($1, MUSIC_OUTPUT_DEF_IDENTIFIER))->self_scm(); } | translator_spec_block { - $$ = $1->self_scm (); - scm_unprotect_object ($$); + $$ = $1; } | Music { $$ = $1->self_scm (); @@ -420,25 +419,25 @@ translator_spec_block: translator_spec_body: TRANSLATOR_IDENTIFIER { - SCM trs = $1; - Translator*tr = unsmob_translator (trs); - $$ = dynamic_cast (tr->clone ()); - $$-> set_spot (THIS->here_input ()); + $$ = unsmob_translator_def ($1)->clone_scm (); + unsmob_translator_def ($$)-> set_spot (THIS->here_input ()); } | TYPE STRING semicolon { - Translator* t = get_translator_l (ly_scm2string ($2)); - Translator_group * tg = dynamic_cast (t); - - if (!tg) - THIS->parser_error (_("Need a translator group for a context")); - - tg = dynamic_cast (t->clone ()); - tg->set_spot (THIS->here_input ()); - $$ = tg; + $$ = Translator_def::make_scm (); + Translator_def*td = unsmob_translator_def ($$); + td->translator_group_type_ = $2; + td->set_spot (THIS->here_input ()); } | translator_spec_body STRING '=' embedded_scm { - Translator_group* tg = $$; - tg->set_property (ly_scm2string ($2), $4); + unsmob_translator_def ($$)->add_property_assign ($2, $4); + } + | translator_spec_body STRING PUSH embedded_scm '=' embedded_scm { + unsmob_translator_def ($$) + ->add_push_property (scm_string_to_symbol ($2), $4, $6); + } + | translator_spec_body STRING POP embedded_scm { + unsmob_translator_def($$)->add_pop_property ( + scm_string_to_symbol ($2), $4); } | translator_spec_body STRING '=' identifier_init semicolon { SCM v = gh_int2scm (0); @@ -448,35 +447,25 @@ translator_spec_body: THIS->parser_error (_("Wrong type for property value")); /* ugh*/ - Translator_group* tg = dynamic_cast ($$); - - tg->set_property (ly_scm2string ($2), v); - } - | translator_spec_body PUSHPROPERTY - embedded_scm embedded_scm embedded_scm { - Translator_group_initializer::add_push_property ($$, $3, $4, $5); - } - | translator_spec_body POPPROPERTY - embedded_scm embedded_scm { - Translator_group_initializer::add_pop_property ($$, $3, $4); + unsmob_translator_def($$)->add_property_assign ($2, v); } | translator_spec_body NAME STRING semicolon { - $$->type_str_ = ly_scm2string ($3); + unsmob_translator_def ($$)->type_name_ = $3; } | translator_spec_body CONSISTS STRING semicolon { - Translator_group_initializer::add_element ($$, $3); + unsmob_translator_def ($$)->add_element ($3); } | translator_spec_body CONSISTSEND STRING semicolon { - Translator_group_initializer::add_last_element ($$, $3); + unsmob_translator_def ($$)->add_last_element ( $3); } | translator_spec_body ACCEPTS STRING semicolon { - Translator_group_initializer::set_acceptor ($$, $3,true); + unsmob_translator_def ($$)->set_acceptor ($3,true); } | translator_spec_body DENIES STRING semicolon { - Translator_group_initializer::set_acceptor ($$, $3,false); + unsmob_translator_def ($$)->set_acceptor ($3,false); } | translator_spec_body REMOVE STRING semicolon { - Translator_group_initializer::remove_element ($$, $3); + unsmob_translator_def ($$)->remove_element ($3); } ; @@ -569,7 +558,7 @@ music_output_def_body: } | music_output_def_body translator_spec_block { - $$-> assign_translator ($2); + $$->assign_translator ($2); } | music_output_def_body tempo_request semicolon { /* @@ -693,17 +682,18 @@ Simple_music: } | MUSIC_IDENTIFIER { $$ = unsmob_music ($1)->clone (); } | property_def - | PUSHPROPERTY embedded_scm embedded_scm embedded_scm { +/* | PUSHPROPERTY embedded_scm embedded_scm embedded_scm { $$ = new Push_translation_property; $$->set_mus_property ("symbols", $2); $$->set_mus_property ("element-property", $3); $$->set_mus_property ("element-value", $4); } - | POPPROPERTY embedded_scm embedded_scm { + | POPPROPERTY embedded_scm embedded_scm { $$ = new Pop_translation_property; $$->set_mus_property ("symbols", $2); $$->set_mus_property ("element-property", $3); } +*/ | translator_change | Simple_music '*' bare_unsigned '/' bare_unsigned { $$ = $1; @@ -834,6 +824,23 @@ property_def: csm-> translator_type_str_ = ly_scm2string ($2); } + | PROPERTY STRING '.' STRING PUSH embedded_scm '=' embedded_scm { + Push_translation_property *t = new Push_translation_property; + + t->set_mus_property ("symbols", scm_string_to_symbol ($4)); + t->set_mus_property ("element-property", $6); + t->set_mus_property ("element-value", $8); + Context_specced_music *csm = new Context_specced_music (t); + $$ = csm; + $$->set_spot (THIS->here_input ()); + + csm-> translator_type_str_ = ly_scm2string ($2); + } + | PROPERTY STRING POP embedded_scm { + $$ = new Pop_translation_property; + $$->set_mus_property ("symbols", scm_string_to_symbol ($2)); + $$->set_mus_property ("element-property", $4); + } ; scalar: diff --git a/lily/property-iterator.cc b/lily/property-iterator.cc index 41b0ed5406..2f44683094 100644 --- a/lily/property-iterator.cc +++ b/lily/property-iterator.cc @@ -8,6 +8,7 @@ #include "property-iterator.hh" #include "translation-property.hh" +#include "translator-def.hh" #include "translator-group.hh" /** @@ -31,7 +32,7 @@ Push_property_iterator::do_process_and_next (Moment m) SCM eprop = music_l_->get_mus_property ("element-property"); SCM val = music_l_->get_mus_property ("element-value"); - Translator_group_initializer::apply_pushpop_property (report_to_l (), syms,eprop, val); + Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, val); Music_iterator::do_process_and_next (m); } @@ -41,7 +42,7 @@ Pop_property_iterator::do_process_and_next (Moment m) { SCM syms = music_l_->get_mus_property ("symbols"); SCM eprop = music_l_->get_mus_property ("element-property"); - Translator_group_initializer::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED); + Translator_def::apply_pushpop_property (report_to_l (), syms, eprop, SCM_UNDEFINED); Music_iterator::do_process_and_next (m); } diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 410cbac927..2917e16a45 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -44,7 +44,7 @@ Staff_symbol_engraver::Staff_symbol_engraver() void Staff_symbol_engraver::do_creation_processing() { - span_p_ = new Spanner (get_property ("staffSymbolBasicProperties")); + span_p_ = new Spanner (get_property ("basicStaffSymbolProperties")); span_p_->set_bound(LEFT, unsmob_element (get_property ("currentCommandColumn"))); diff --git a/lily/translator-ctors.cc b/lily/translator-ctors.cc index ca1e6d516f..4418310186 100644 --- a/lily/translator-ctors.cc +++ b/lily/translator-ctors.cc @@ -33,7 +33,6 @@ get_translator_l (String s) { if (global_translator_dict_p->elem_b (s)) { -// return (*global_translator_dict_p)[s]; Translator* t = (*global_translator_dict_p)[s]; return t; } diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 74cee77b61..02eb4c7fb9 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -13,6 +13,7 @@ #include "moment.hh" #include "scm-hash.hh" #include "killing-cons.tcc" +#include "translator-def.hh" Translator_group::Translator_group (Translator_group const&s) : Translator(s) @@ -103,45 +104,8 @@ Translator_group::find_existing_translator_l (String n, String id) return r; } -Link_array -Translator_group::path_to_acceptable_translator (String type, Music_output_def* odef) const -{ - Link_array accepted_arr; - for (SCM s = accepts_name_list_; gh_pair_p (s); s = gh_cdr (s)) - { - - Translator *t = odef->find_translator_l (ly_scm2string (gh_car (s))); - if (!t || !dynamic_cast (t)) - continue; - accepted_arr.push (dynamic_cast (t)); - } - for (int i=0; i < accepted_arr.size (); i++) - if (accepted_arr[i]->type_str_ == type) - { - Link_array retval; - retval.push (accepted_arr[i]); - return retval; - } - - Link_array best_result; - int best_depth= INT_MAX; - for (int i=0; i < accepted_arr.size (); i++) - { - Translator_group * g = accepted_arr[i]; - - Link_array result - = g->path_to_acceptable_translator (type, odef); - if (result.size () && result.size () < best_depth) - { - result.insert (g,0); - best_result = result; - } - } - - return best_result; -} Translator_group* Translator_group::find_create_translator_l (String n, String id) @@ -150,8 +114,8 @@ Translator_group::find_create_translator_l (String n, String id) if (existing) return existing; - Link_array path - = path_to_acceptable_translator (n, output_def_l ()); + Link_array path + = unsmob_translator_def (definition_)->path_to_acceptable_translator (gh_str02scm (n.ch_C()), output_def_l ()); if (path.size ()) { @@ -160,7 +124,7 @@ Translator_group::find_create_translator_l (String n, String id) // start at 1. The first one (index 0) will be us. for (int i=0; i < path.size (); i++) { - Translator_group * new_group = dynamic_cast(path[i]->clone ()); + Translator_group * new_group = path[i]->instantiate (output_def_l_); current->add_group_translator (new_group); current = new_group; @@ -222,10 +186,10 @@ void Translator_group::terminate_translator (Translator*r_l) { r_l->removal_processing(); - Translator * trans_p =remove_translator_p (r_l); /* - forget trans_p, GC does the rest. + Return value ignored. GC does the rest. */ + remove_translator_p (r_l); } @@ -263,30 +227,30 @@ Translator_group::get_simple_translator (String type) const bool Translator_group::is_bottom_translator_b () const { - return accepts_name_list_ == SCM_EOL; + return unsmob_translator_def (definition_)->accepts_name_list_ == SCM_EOL; } - - Translator_group* Translator_group::get_default_interpreter() { - if (gh_pair_p (accepts_name_list_)) + if (!is_bottom_translator_b ()) { - String str = ly_scm2string (gh_car (accepts_name_list_)); - Translator*t = output_def_l ()->find_translator_l (str); + SCM nm = unsmob_translator_def (definition_)->accepts_name_list_; + SCM st = output_def_l ()->find_translator_l (gh_car (nm)); + + Translator_def *t = unsmob_translator_def (st); if (!t) { - warning (_f ("can't find or create: `%s'", str)); - t = this; + warning (_f ("can't find or create: `%s'", ly_scm2string (nm).ch_C())); + t = unsmob_translator_def (this->definition_); } - Translator_group * g= dynamic_cast (t->clone ()); - add_group_translator (g); + Translator_group *tg = t->instantiate (output_def_l_); + add_group_translator (tg); - if (!g->is_bottom_translator_b ()) - return g->get_default_interpreter (); + if (!tg->is_bottom_translator_b ()) + return tg->get_default_interpreter (); else - return g; + return tg; } return this; } @@ -313,59 +277,14 @@ Translator_group::do_print() const #endif } -static SCM -trans_list (SCM namelist, Music_output_def *mdef) -{ - SCM l = SCM_EOL; - for (SCM s = namelist; gh_pair_p (s) ; s = gh_cdr (s)) - { - Translator * t = mdef->find_translator_l (ly_scm2string (gh_car (s))); - if (!t) - warning (_f ("can't find: `%s'", s)); - else - { - Translator * tr = t->clone (); - SCM str = tr->self_scm (); - l = gh_cons (str, l); - scm_unprotect_object (str); - } - } - return l; -} - - void Translator_group::do_add_processing () { - assert (simple_trans_list_== SCM_EOL); - - SCM correct_order = scm_reverse (property_pushes_); // pity of the mem. - for (SCM s = correct_order; gh_pair_p (s); s = gh_cdr (s)) - { - SCM entry = gh_car (s); - SCM val = gh_cddr (entry); - val = gh_pair_p (val) ? gh_car (val) : SCM_UNDEFINED; - - Translator_group_initializer::apply_pushpop_property (this, gh_car (entry), - gh_cadr (entry), - val); - } - - SCM l1 = trans_list (consists_name_list_, output_def_l ()); - SCM l2 =trans_list (end_consists_name_list_, output_def_l ()); - l1 = scm_reverse_x (l1, l2); - - simple_trans_list_ = l1; - for (SCM s = l1; gh_pair_p (s) ; s = gh_cdr (s)) + for (SCM s = simple_trans_list_; gh_pair_p (s) ; s = gh_cdr (s)) { Translator * t = unsmob_translator (gh_car (s)); - - t->daddy_trans_l_ = this; - t->output_def_l_ = output_def_l_; t->add_processing (); } - - } /* diff --git a/lily/translator.cc b/lily/translator.cc index 6605eaae0c..90edc46fbb 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -31,10 +31,7 @@ Translator::init () simple_trans_list_ = SCM_EOL; trans_group_list_ = SCM_EOL; properties_scm_ = SCM_EOL; - accepts_name_list_ = SCM_EOL; - consists_name_list_ = SCM_EOL; - end_consists_name_list_ = SCM_EOL; - property_pushes_ = SCM_EOL; + definition_ = SCM_EOL; daddy_trans_l_ =0; } @@ -50,12 +47,6 @@ Translator::Translator (Translator const &s) : Input (s) { init (); - - consists_name_list_ = scm_list_copy (s.consists_name_list_); - end_consists_name_list_ = scm_list_copy (s.end_consists_name_list_); - accepts_name_list_ = scm_list_copy (s.accepts_name_list_); - property_pushes_ = scm_list_copy (s.property_pushes_); - output_def_l_ = s.output_def_l_; type_str_ = s.type_str_; @@ -233,12 +224,11 @@ SCM Translator::mark_smob (SCM sm) { Translator * me = (Translator*) SCM_CELL_WORD_1(sm); - scm_gc_mark (me->consists_name_list_); - scm_gc_mark (me->accepts_name_list_); - scm_gc_mark (me->end_consists_name_list_); scm_gc_mark (me->simple_trans_list_); scm_gc_mark (me->trans_group_list_); - scm_gc_mark (me->property_pushes_); + scm_gc_mark (me->definition_); + scm_gc_mark (me->properties_scm_); + return me->properties_scm_; } diff --git a/ly/engraver.ly b/ly/engraver.ly index 8b6a2f63eb..c34e936bcb 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -76,8 +76,8 @@ RhythmicStaffContext=\translator{ \consists "Separating_line_group_engraver"; \name RhythmicStaff; - \pushproperty #'basicVoltaSpannerProperties #'minimum-space #15 % urg, in \pt - \pushproperty #'basicVoltaSpannerProperties #'padding #5 % urg, in \pt + basicVoltaSpannerProperties \push #'minimum-space = #15 % urg, in \pt + basicVoltaSpannerProperties \push #'padding = #5 % urg, in \pt @@ -160,12 +160,18 @@ GraceContext=\translator { \consists "Property_engraver"; - \pushproperty #'basicStemProperties #'style #"grace" - \pushproperty #'basicStemProperties #'flag-style #"grace" - \pushproperty #'basicStemProperties #'stem-length #6.0 - \pushproperty #'basicStemProperties #'direction #1 - \pushproperty #'(basicNoteHeadProperties basicStemProperties basicBeamProperties basicTextScriptProperties basicSlurProperties basicLocalKeyProperties) #'font-size #-1 - + basicStemProperties \push #'style = #"grace" + basicStemProperties \push #'flag-style = #"grace" + basicStemProperties \push #'stem-length = #6.0 + basicStemProperties \push #'direction = #1 + + basicNoteHeadProperties \push #'font-size = #-1 + basicStemProperties \push #'font-size = #-1 + basicBeamProperties \push #'font-size = #-1 + basicTextScriptProperties \push #'font-size = #-1 + basicSlurProperties \push #'font-size = #-1 + basicLocalKeyProperties \push #'font-size = #-1 + weAreGraceContext = ##t graceAccidentalSpace= 1.5 * \staffspace; }; @@ -705,7 +711,7 @@ ScoreContext = \translator { (visibility-lambda . ,begin-of-line-visible) (name . "stanza number") ) - staffSymbolBasicProperties = #`( + basicStaffSymbolProperties = #`( (interfaces . (staff-symbol-interface )) (molecule-callback . ,Staff_symbol::brew_molecule) (staff-space . 1.0) diff --git a/ly/performer.ly b/ly/performer.ly index 4529859e7c..0ad41e658f 100644 --- a/ly/performer.ly +++ b/ly/performer.ly @@ -6,11 +6,6 @@ StaffContext = \translator { \name Staff; \accepts Voice; - \accepts VoiceOne; % ugh. - \accepts VoiceTwo; - \accepts VoiceThree; - \accepts VoiceFour; - \consists "Key_performer"; \consists "Time_signature_performer"; \consists "Tempo_performer"; -- 2.39.5