From: fred Date: Tue, 26 Mar 2002 23:22:12 +0000 (+0000) Subject: lilypond-1.3.55 X-Git-Tag: release/1.5.59~1620 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=2da17bb3dcca4211b12f210e46fc83d044ec487e;p=lilypond.git lilypond-1.3.55 --- diff --git a/lily/align-interface.cc b/lily/align-interface.cc index af9089b0eb..c377935871 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -32,7 +32,7 @@ Align_interface::alignment_callback (Score_element const *sc, Axis ax) Real Align_interface::center_on_element (Score_element const *me, Axis a) { - Score_element *cent = unsmob_element (me->get_elt_property ("group-center-element")); + Score_element *cent = unsmob_element (me->get_elt_pointer ("group-center-element")); if (cent) { @@ -61,7 +61,7 @@ Align_interface::do_side_processing (Axis a) Link_array elems; Link_array all_elts - = Group_interface__extract_elements ( elt_l_, (Score_element*) 0, "elements"); + = Pointer_group_interface__extract_elements ( elt_l_, (Score_element*) 0, "elements"); for (int i=0; i < all_elts.size(); i++) { Interval y = all_elts[i]->extent(a) + all_elts[i]->relative_coordinate (elt_l_, a); @@ -134,7 +134,7 @@ Align_interface::axis ()const int Align_interface::get_count (Score_element*s)const { - SCM e = elt_l_->get_elt_property ("elements"); + SCM e = elt_l_->get_elt_pointer ("elements"); int c =0; while (gh_pair_p (e)) { diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 4639b176a9..2038f51e8a 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -31,7 +31,7 @@ Axis_group_engraver::do_creation_processing () Spanner* Axis_group_engraver::get_spanner_p () const { - return new Spanner; + return new Spanner (SCM_EOL); } void diff --git a/lily/engraver.cc b/lily/engraver.cc index 2211e8ac32..8ae01f77b6 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -27,7 +27,7 @@ Engraver::announce_element (Score_element_info i) Score_element * e = i.elem_l_; if (e->get_elt_property ("interfaces") == SCM_EOL) - group (e, "interfaces").add_thing (ly_symbol2scm (e->name())); + Group_interface (e, "interfaces").add_thing (ly_symbol2scm (e->name())); if (!i.origin_trans_l_) i.origin_trans_l_ = this; diff --git a/lily/grace-engraver-group.cc b/lily/grace-engraver-group.cc index 91744ff657..f7b66a62c3 100644 --- a/lily/grace-engraver-group.cc +++ b/lily/grace-engraver-group.cc @@ -6,9 +6,9 @@ (c) 1999--2000 Han-Wen Nienhuys */ + #include "grace-engraver-group.hh" #include "lily-guile.hh" - #include "score-element.hh" #include "musical-request.hh" @@ -23,7 +23,7 @@ void Grace_engraver_group::finish () { calling_self_b_ = true; - removal_processing (); // ugr. We'd want to have this done by our parents.g + removal_processing (); // ugr. We'd want to have this done by our parents. for (int i=0; i < announce_to_top_.size (); i++) { Engraver::announce_element (announce_to_top_[i]); diff --git a/lily/group-interface.cc b/lily/group-interface.cc index a24e883da6..b78783c192 100644 --- a/lily/group-interface.cc +++ b/lily/group-interface.cc @@ -30,14 +30,6 @@ Group_interface::has_interface_b () } -void -Group_interface::add_element (Score_element*p) -{ - p->used_b_ = true; - elt_l_->used_b_ = true; - - add_thing (p->self_scm_); -} void Group_interface::add_thing (SCM s) @@ -63,16 +55,3 @@ Group_interface::set_interface () } } -Group_interface -group (Score_element*s,String n) -{ - Group_interface gi (s,n); - return gi; -} - -Group_interface -group (Score_element*s) -{ - Group_interface gi (s); - return gi; -} diff --git a/lily/include/group-interface.hh b/lily/include/group-interface.hh index 72bc892258..e2eafc6de4 100644 --- a/lily/include/group-interface.hh +++ b/lily/include/group-interface.hh @@ -34,22 +34,29 @@ public: void add_thing (SCM); bool has_interface_b (); void set_interface (); - void add_element (Score_element*); }; -Group_interface group (Score_element*); -Group_interface group (Score_element*, String); - +struct Pointer_group_interface { + Score_element * elt_l_; + String name_; +public: + Pointer_group_interface (Score_element const*); + Pointer_group_interface (Score_element const*, String); + int count (); + void set_interface (); + bool has_interface_b (); + void add_element (Score_element*); +}; /** Put all score elements of ELT's property called NAME into an array, and return it. */ template Link_array -Group_interface__extract_elements (Score_element const *elt, T *, String name) +Pointer_group_interface__extract_elements (Score_element const *elt, T *, const char* name) { Link_array arr; - for (SCM s = elt->get_elt_property (name); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = elt->get_elt_pointer (name); gh_pair_p (s); s = gh_cdr (s)) { SCM e = gh_car (s); assert (SMOB_IS_TYPE_B(Score_element,e)); diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh index 8bf231d3f4..5ef166a3ba 100644 --- a/lily/include/paper-column.hh +++ b/lily/include/paper-column.hh @@ -62,7 +62,7 @@ public: Moment when_mom ()const; bool musical_b () const; - + bool used_b () const; void set_rank (int); private: diff --git a/lily/include/rhythmic-head.hh b/lily/include/rhythmic-head.hh index 5d3ca3d56c..b9fc4415b6 100644 --- a/lily/include/rhythmic-head.hh +++ b/lily/include/rhythmic-head.hh @@ -36,6 +36,7 @@ public: int dot_count () const; protected: virtual void after_line_breaking (); + Rhythmic_head (SCM s); }; #endif // RHYTHMIC_HEAD_HH diff --git a/lily/include/slur-engraver.hh b/lily/include/slur-engraver.hh index f639783421..71a84a21bc 100644 --- a/lily/include/slur-engraver.hh +++ b/lily/include/slur-engraver.hh @@ -8,26 +8,6 @@ #ifndef SLURGRAV_HH #define SLURGRAV_HH -#include "engraver.hh" -class Slur_engraver :public Engraver { - Link_array requests_arr_; - Link_array new_slur_req_l_arr_; - Link_array slur_l_stack_; - Link_array end_slur_l_arr_; - - void set_melisma (bool); -protected: - virtual bool do_try_music (Music*); - virtual void do_process_music(); - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); - virtual void do_removal_processing (); - -public: - VIRTUAL_COPY_CONS(Translator); - -}; #endif // SLURGRAV_HH diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 2a50a826b2..b3e894804d 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -40,7 +40,7 @@ public: void set_bound (Direction d, Item*); Item *get_bound (Direction d) const; - Spanner (); + Spanner (SCM); Spanner (Spanner const &); bool broken_b () const; void do_break (); diff --git a/lily/item.cc b/lily/item.cc index ed98073452..ea8fde5d84 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -15,7 +15,9 @@ #include "lily-guile.hh" #include "line-of-score.hh" -Item::Item () +Item::Item (SCM s) + : Score_element (s) + { broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0; } @@ -137,8 +139,8 @@ Item::handle_prebroken_dependencies () { if (original_l_) { - element_property_alist_ - = handle_broken_smobs (original_l_->element_property_alist_, + pointer_alist_ + = handle_broken_smobs (original_l_->pointer_alist_, gh_int2scm (break_status_dir ())); } @@ -146,7 +148,7 @@ Item::handle_prebroken_dependencies () Can't do this earlier, because try_visibility_lambda () might set the elt property transparent, which would then be copied. */ - SCM vis = remove_elt_property ("visibility-lambda"); + SCM vis = get_elt_property ("visibility-lambda"); if (gh_procedure_p (vis)) { SCM args = scm_listify (gh_int2scm (break_status_dir ()), SCM_UNDEFINED); diff --git a/lily/property-engraver.cc b/lily/property-engraver.cc index b60416ef42..a509bd1adb 100644 --- a/lily/property-engraver.cc +++ b/lily/property-engraver.cc @@ -76,7 +76,7 @@ Property_engraver::apply_properties (SCM p, Score_element *e) SCM type_p = gh_cadr (entry); SCM elt_prop_sym = gh_caddr (entry); - SCM preset = scm_assq(elt_prop_sym, e->element_property_alist_); + SCM preset = scm_assq(elt_prop_sym, e->property_alist_); if (preset != SCM_BOOL_F) continue; diff --git a/lily/scm-hash.cc b/lily/scm-hash.cc index 551a050a2a..8a2094b86e 100644 --- a/lily/scm-hash.cc +++ b/lily/scm-hash.cc @@ -65,7 +65,7 @@ Scheme_hash_table::print_smob (SCM s, SCM p, scm_print_state*) sprintf (str, "#begin (); i != me->end(); i++) + for (Scm_stl_map::const_iterator i = me->begin (); i != me->end(); i++) { scm_display ((*i).first, p); scm_puts (" = ",p); diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 6e018180fd..21f8d227dc 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -15,6 +15,7 @@ #include "dimensions.hh" #include "dimension-cache.hh" #include "staff-symbol-referencer.hh" +#include "group-interface.hh" Side_position_interface::Side_position_interface (Score_element const *e) { @@ -24,9 +25,7 @@ Side_position_interface::Side_position_interface (Score_element const *e) void Side_position_interface::add_support (Score_element*e) { - SCM sup = elt_l_->get_elt_property ("side-support"); - elt_l_->set_elt_property ("side-support", - gh_cons (e->self_scm_,sup)); + Pointer_group_interface (elt_l_, "side-support-elements").add_element (e); } @@ -45,7 +44,7 @@ Side_position_interface::get_direction () const relative_dir = to_dir (reldir); } - SCM other_elt = elt_l_->get_elt_property ("direction-source"); + SCM other_elt = elt_l_->get_elt_pointer ("direction-source"); Score_element * e = unsmob_element(other_elt); if (e) { @@ -64,7 +63,7 @@ Side_position_interface::side_position (Score_element const *cme, Axis axis) { Score_element* me = (Score_element*)cme; Score_element *common = me->parent_l (axis); - SCM support = me->get_elt_property ("side-support"); + SCM support = me->get_elt_pointer ("side-support-elements"); for (SCM s = support; s != SCM_EOL; s = gh_cdr (s)) { Score_element * e = unsmob_element (gh_car (s)); @@ -229,8 +228,8 @@ void Side_position_interface::set_axis (Axis a) { // prop transparent ? - if (elt_l_->get_elt_property ("side-support") == SCM_UNDEFINED) - elt_l_->set_elt_property ("side-support" ,SCM_EOL); + if (elt_l_->get_elt_pointer ("side-support-elements") == SCM_UNDEFINED) + elt_l_->set_elt_pointer ("side-support-elements" ,SCM_EOL); if (!elt_l_->has_offset_callback_b (aligned_side, a)) elt_l_->add_offset_callback (aligned_side, a); @@ -275,13 +274,13 @@ Side_position_interface::set_padding (Real p) bool Side_position_interface::has_interface_b () const { - return elt_l_->get_elt_property ("side-support") != SCM_UNDEFINED; + return elt_l_->get_elt_pointer ("side-support-elements") != SCM_UNDEFINED; } bool Side_position_interface::supported_b () const { - SCM s =elt_l_->get_elt_property ("side-support"); + SCM s =elt_l_->get_elt_pointer ("side-support-elements"); return s != SCM_UNDEFINED && s != SCM_EOL; } diff --git a/lily/staff-symbol-referencer.cc b/lily/staff-symbol-referencer.cc index ed53435809..9c52f04256 100644 --- a/lily/staff-symbol-referencer.cc +++ b/lily/staff-symbol-referencer.cc @@ -28,7 +28,7 @@ Staff_symbol_referencer_interface::set_interface () bool Staff_symbol_referencer_interface::has_interface_b () { - return unsmob_element (elt_l_->get_elt_property ("staff-symbol")) + return unsmob_element (elt_l_->get_elt_pointer ("staff-symbol")) || gh_number_p (elt_l_->get_elt_property ("staff-position")); } @@ -43,7 +43,7 @@ Staff_symbol_referencer_interface::line_count () const Staff_symbol* Staff_symbol_referencer_interface::staff_symbol_l () const { - SCM st = elt_l_->get_elt_property ("staff-symbol"); + SCM st = elt_l_->get_elt_pointer ("staff-symbol"); return dynamic_cast (unsmob_element(st)); } @@ -91,6 +91,8 @@ Staff_symbol_referencer_interface::position_f () const Real Staff_symbol_referencer_interface::callback (Score_element const* sc,Axis ) { + Score_element* me = (Score_element*)sc; // UGH. + SCM pos = sc->get_elt_property ("staff-position"); Real off =0.0; if (gh_number_p (pos)) @@ -98,7 +100,8 @@ Staff_symbol_referencer_interface::callback (Score_element const* sc,Axis ) Real space = staff_symbol_referencer (sc).staff_space (); off = gh_scm2double (pos) * space/2.0; } - sc->set_elt_property ("staff-position", gh_double2scm (0.0)); + + me->set_elt_property ("staff-position", gh_double2scm (0.0)); return off; }