]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.55
authorfred <fred>
Tue, 26 Mar 2002 23:22:13 +0000 (23:22 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:22:13 +0000 (23:22 +0000)
118 files changed:
lily/align-note-column-engraver.cc
lily/auto-beam-engraver.cc
lily/bar-engraver.cc
lily/bar-number-engraver.cc
lily/beam-engraver.cc
lily/break-align-item.cc
lily/breathing-sign-engraver.cc
lily/breathing-sign.cc
lily/chord-name-engraver.cc
lily/chord-name.cc
lily/chord-tremolo-engraver.cc
lily/clef-engraver.cc
lily/collision.cc
lily/crescendo.cc
lily/dot-column-engraver.cc
lily/dot-column.cc
lily/dots.cc
lily/dynamic-engraver.cc
lily/extender-engraver.cc
lily/extender-spanner.cc
lily/grace-align-item.cc
lily/hara-kiri-engraver.cc
lily/hara-kiri-vertical-group-spanner.cc
lily/hyphen-engraver.cc
lily/hyphen-spanner.cc
lily/include/bar.hh
lily/include/beam.hh
lily/include/break-align-item.hh
lily/include/breathing-sign.hh
lily/include/chord-name.hh
lily/include/clef-item.hh
lily/include/collision.hh
lily/include/crescendo.hh
lily/include/dot-column.hh
lily/include/dots.hh
lily/include/extender-spanner.hh
lily/include/grace-align-item.hh
lily/include/hara-kiri-vertical-group-spanner.hh
lily/include/hyphen-spanner.hh
lily/include/item.hh
lily/include/key-item.hh
lily/include/local-key-item.hh
lily/include/multi-measure-rest.hh
lily/include/note-column.hh
lily/include/note-head.hh
lily/include/rest-collision.hh
lily/include/rest.hh
lily/include/script-column.hh
lily/include/script.hh
lily/include/separating-group-spanner.hh
lily/include/single-malt-grouping-item.hh
lily/include/slur.hh
lily/include/spacing-spanner.hh
lily/include/span-bar.hh
lily/include/staff-bar.hh
lily/include/staff-symbol.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/include/sustain-pedal.hh
lily/include/system-start-delimiter.hh
lily/include/text-item.hh
lily/include/tie-column.hh
lily/include/tie.hh
lily/include/time-signature.hh
lily/include/tuplet-spanner.hh
lily/include/volta-spanner.hh
lily/instrument-name-engraver.cc
lily/key-item.cc
lily/line-group-group-engraver.cc
lily/line-number-engraver.cc
lily/line-of-score.cc
lily/local-key-engraver.cc
lily/local-key-item.cc
lily/lyric-engraver.cc
lily/mark-engraver.cc
lily/multi-measure-rest-engraver.cc
lily/multi-measure-rest.cc
lily/note-column.cc
lily/note-head.cc
lily/note-heads-engraver.cc
lily/note-name-engraver.cc
lily/paper-column.cc
lily/piano-pedal-engraver.cc
lily/repeat-engraver.cc
lily/rest-collision-engraver.cc
lily/rest-collision.cc
lily/rest-engraver.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/rhythmic-head.cc
lily/script-column-engraver.cc
lily/script-column.cc
lily/script-engraver.cc
lily/script.cc
lily/separating-group-spanner.cc
lily/slur-engraver.cc
lily/slur.cc
lily/spacing-engraver.cc
lily/spacing-spanner.cc
lily/span-bar-engraver.cc
lily/staff-bar.cc
lily/staff-symbol-engraver.cc
lily/staff-symbol.cc
lily/stem.cc
lily/sustain-pedal.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-delimiter.cc
lily/text-engraver.cc
lily/text-item.cc
lily/tie-column.cc
lily/tie-engraver.cc
lily/tie.cc
lily/time-signature-engraver.cc
lily/time-signature.cc
lily/tuplet-engraver.cc
lily/tuplet-spanner.cc
lily/vertical-align-engraver.cc
lily/volta-spanner.cc

index dff753effc34512b72a9f964108f28cf0da6ba4e..c034b0df9cd2411f1c97ab1d98fafe1d3bcdff2b 100644 (file)
@@ -45,9 +45,10 @@ Align_note_column_engraver::Align_note_column_engraver()
 void
 Align_note_column_engraver::do_creation_processing ()
 {
-  align_item_p_ = new Grace_align_item;
+  align_item_p_ = new Grace_align_item (SCM_EOL);
   Side_position_interface (align_item_p_).set_axis (X_AXIS);
-  Side_position_interface (align_item_p_).set_direction (LEFT);  
+  Side_position_interface (align_item_p_).set_direction (LEFT);
+  
   // needed  for setting font size.
   announce_element (Score_element_info (align_item_p_, 0));
 }
index 26ef80cf7eb688767ae9b753e53d9a360f17027b..5a8661ae9cb9d2fa1e87c7674e9ee9f7e18e28c5 100644 (file)
@@ -205,7 +205,7 @@ Auto_beam_engraver::begin_beam ()
 Beam*
 Auto_beam_engraver::create_beam_p ()
 {
-  Beam* beam_p = new Beam;
+  Beam* beam_p = new Beam (get_property ("basicBeamProperties"));
 
   for (int i = 0; i < stem_l_arr_p_->size (); i++)
     {
index 2a8c2ae66d306e42f1bca3f29fffed08d01714c7..075cd5612931060c8b237870a0aff52b9cdc6b2e 100644 (file)
@@ -28,9 +28,9 @@ Bar_engraver::create_bar ()
 {
   if (!bar_p_)
     {
-      bar_p_ = new Staff_bar;
-      bar_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Staff_bar"));
+      bar_p_ = new Staff_bar (get_property ("basicBarlineProperties"));
 
+      
       // urg: "" != empty...
       /*
        TODO: use symbol.
index 3aa50afbf22914da8eea7a5a42536f7d174f2eb6..f2961ee47f8a77c43b8193df71ad7ad8bb9823de 100644 (file)
@@ -21,7 +21,7 @@ class Bar_number_engraver : public Engraver
 {
 protected:
   Text_item* text_p_;
-  Protected_scm visibility_lambda_;
+
   Protected_scm staffs_;
 
 protected:
@@ -65,11 +65,6 @@ Bar_number_engraver::Bar_number_engraver ()
 void
 Bar_number_engraver::do_creation_processing ()
 {
-  String t = "barNumberVisibilityFunction";
-  SCM proc = get_property (t);
-
-  if (gh_procedure_p (proc))
-    visibility_lambda_ = proc;
 }
 
 
@@ -98,7 +93,7 @@ Bar_number_engraver::do_pre_move_processing ()
 {
   if (text_p_)
     {
-      text_p_->set_elt_property ("side-support", staffs_);
+      text_p_->set_elt_pointer ("side-support-elements", staffs_);
       typeset_element (text_p_);
       text_p_ =0;
     }
@@ -110,9 +105,9 @@ Bar_number_engraver::create_items ()
 {
   if (text_p_)
     return;
-  
-  text_p_ = new Text_item;
-  text_p_->set_elt_property ("breakable", SCM_BOOL_T); // ugh
+
+  SCM b = get_property ("basicBarNumberProperties");
+  text_p_ = new Text_item (b);
   Side_position_interface staffside(text_p_);
   staffside.set_axis (Y_AXIS);
 
@@ -135,9 +130,6 @@ Bar_number_engraver::create_items ()
                            gh_double2scm(paper_l ()->get_var ("interline")));
     }
 
-  if (gh_procedure_p (visibility_lambda_))
-      text_p_->set_elt_property ("visibility-lambda",
-                                visibility_lambda_);
 
   announce_element (Score_element_info (text_p_, 0));
 }
index 075af92ed92171efc7aceb0e7b60d3e435e65276..739b5579443fb96199910f40e843b69029436f35 100644 (file)
@@ -87,7 +87,7 @@ Beam_engraver::do_process_music ()
        }
 
       prev_start_req_ = reqs_drul_[START];
-      beam_p_ = new Beam;
+      beam_p_ = new Beam (get_property ("basicBeamProperties"));
 
       SCM smp = get_property ("measurePosition");
       Moment mp =  (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
index 74fc20e399882e4e12906a1fd1d1d9819e4ea7b6..c29a970cc5657e21d79116612a4de601ef5b2c08 100644 (file)
@@ -36,7 +36,7 @@ Break_align_item::before_line_breaking ()
   Real interline= paper_l ()->get_var ("interline");   
   Link_array<Score_element> elems;
   Link_array<Score_element> all_elems
-    = Group_interface__extract_elements (this, (Score_element*)0,
+    = Pointer_group_interface__extract_elements (this, (Score_element*)0,
                                         "elements");
   
   for (int i=0; i < all_elems.size(); i++) 
@@ -157,7 +157,8 @@ Break_align_item::before_line_breaking ()
                                 
 }
 
-Break_align_item::Break_align_item ()
+Break_align_item::Break_align_item (SCM s)
+  : Item (s)
 {
   set_elt_property ("stacking-dir" , gh_int2scm (RIGHT));
 
index 2508bb83902d5a4be99846f7459f6246a515b589..f72e5b2b9716a68f6d2c6e92c31296bea76a7011 100644 (file)
@@ -46,9 +46,8 @@ Breathing_sign_engraver::do_process_music()
 {
   if(breathing_sign_req_l_)
     {
-      breathing_sign_p_ = new Breathing_sign;
-      breathing_sign_p_->set_elt_property ("break-align-symbol",
-                                          ly_symbol2scm ("Breathing_sign"));
+      SCM b = get_property ("basicBreathingSignProperties");
+      breathing_sign_p_ = new Breathing_sign (b);
       Staff_symbol_referencer_interface st (breathing_sign_p_);
       st.set_interface ();
 
index 64e588f727149c9c427d58f1040349fedd001ea7..d1473eb2143d1da87358fc6b32cfb850f8c741c7 100644 (file)
@@ -21,9 +21,9 @@
 #include "direction.hh"
 
 
-Breathing_sign::Breathing_sign ()
+Breathing_sign::Breathing_sign (SCM  s)
+  : Item (s)
 {
-  set_elt_property ("breakable", SCM_BOOL_T);
 }
 
 Molecule 
index 32419e420c42693e55b80804f263cb42d6369222..b074cd8b753c7885aa7ba11188abafa5c07f6594 100644 (file)
@@ -73,7 +73,7 @@ Chord_name_engraver::do_process_music ()
   if (gh_boolean_p (chord_inversion))
     find_inversion_b = gh_scm2bool (chord_inversion);
 
-  chord_name_p_ = new Chord_name;
+  chord_name_p_ = new Chord_name (SCM_EOL);
   Chord chord = to_chord (pitch_arr_, tonic_req_, inversion_req_, bass_req_,
                          find_inversion_b);
 
index 0e8e1d094295bda6e27cc120283ccb73013aa861..e8500f9c6c8bc4fb8cb5aaab230a35de92c5635e 100644 (file)
@@ -162,3 +162,8 @@ Chord_name::do_brew_molecule () const
 
   return ly_text2molecule (text);
 }
+
+Chord_name::Chord_name (SCM s)
+  : Item (s)
+{
+}
index 291133c50e60aecb86bc4b87da793b646b1cc59d..4148b2bb6262982e3c5ae7af5105a4320c065235 100644 (file)
@@ -90,7 +90,7 @@ Chord_tremolo_engraver::do_process_music ()
 {
   if (repeat_ && !beam_p_)
     {
-      beam_p_ = new Beam;
+      beam_p_ = new Beam (SCM_EOL);
       beam_p_->set_elt_property ("chord-tremolo", SCM_BOOL_T);
 
 
index 7fff19244c95730c985489eba934ba9b844bedc0..cfc26a629cd78c7a8726a1c35fbe448edc9a6aa8 100644 (file)
@@ -49,11 +49,17 @@ public:
   SCM clef_glyph_;             // no need for protection. Always referenced somewhere else.
    
   Clef_engraver();
+
+  SCM basic_properties_;
+  Protected_scm current_settings_;
 };
 
 
 Clef_engraver::Clef_engraver()
 {
+  current_settings_ = SCM_EOL;
+  basic_properties_ = SCM_EOL;
+  
   clef_glyph_ = SCM_EOL;
   clef_p_ = 0;
   clef_req_l_ = 0;
@@ -101,6 +107,14 @@ Clef_engraver::set_type (String s)
     }
 
   c0_position_i_ -= (int) octave_dir_ * 7;
+
+
+  current_settings_ = gh_cons (gh_cons (ly_symbol2scm ("glyph"), clef_glyph_), basic_properties_);
+  current_settings_ =
+    gh_cons (gh_cons (ly_symbol2scm ("c0-position"),
+                     gh_int2scm (c0_position_i_)),
+            current_settings_);
+  
   return true;
 }
 
@@ -138,6 +152,8 @@ Clef_engraver::acknowledge_element (Score_element_info info)
 void
 Clef_engraver::do_creation_processing()
 {
+  basic_properties_ = get_property ("basicClefItemProperties");
+  
   SCM def = get_property ("defaultClef");
   if (gh_string_p (def))
     {
@@ -168,9 +184,7 @@ Clef_engraver::create_clef()
 {
   if (!clef_p_)
     {
-      Clef_item *c= new Clef_item;
-      c->set_elt_property ("breakable", SCM_BOOL_T);
-      c->set_elt_property ("break-align-symbol", ly_symbol2scm ("Clef_item"));
+      Clef_item *c= new Clef_item ( current_settings_);
       announce_element (Score_element_info (c, clef_req_l_));
 
       Staff_symbol_referencer_interface si(c);
@@ -183,16 +197,12 @@ Clef_engraver::create_clef()
   si.set_position (clef_position_i_);
   if (octave_dir_)
     {
-      Text_item * g = new Text_item;
+      Text_item * g = new Text_item (get_property ("basicOctavateEightProperties"));
       Side_position_interface spi (g);
       spi.set_axis (Y_AXIS);
       spi.add_support (clef_p_);
-      g->set_elt_property ("text", ly_str02scm ( "8"));
-      g->set_elt_property ("style", gh_str02scm ("italic"));
       g->set_parent (clef_p_, Y_AXIS);
       g->set_parent (clef_p_, X_AXIS);
-         
-      g->set_elt_property ("self-alignment-X", gh_int2scm (0));
       g->add_offset_callback (Side_position_interface::aligned_on_self, X_AXIS);
       g->add_offset_callback (Side_position_interface::centered_on_parent, X_AXIS);
       g->set_elt_property ("direction", gh_int2scm (octave_dir_));
@@ -217,20 +227,20 @@ Clef_engraver::do_pre_move_processing()
 {
   if (clef_p_)
     {
-      SCM vis;
-      if(to_boolean (clef_p_->remove_elt_property("non-default")))
+      SCM vis = 0; 
+      if(to_boolean (clef_p_->get_elt_property("non-default")))
        {
          vis = ly_symbol2scm ("all-visible");
+         vis = scm_eval (vis);
        }
-      else
-       vis = ly_symbol2scm ("begin-of-line-visible");
 
-      vis = scm_eval (vis);
+      if (vis)
+       {
+         clef_p_->set_elt_property("visibility-lambda", vis);
+         if (octavate_p_)
+           octavate_p_->set_elt_property("visibility-lambda", vis);
+       }
       
-      clef_p_->set_elt_property("visibility-lambda", vis);
-      if (octavate_p_)
-       octavate_p_->set_elt_property("visibility-lambda", vis);
-
       typeset_element (clef_p_);
       clef_p_ =0;
 
index e3eb69a4032a86700a18efc7adf3962f9cf1dc22..52498e533a5d0195230756152dfeceb3d81b3a3b 100644 (file)
@@ -13,7 +13,8 @@
 #include "axis-group-interface.hh"
 
 
-Collision::Collision()
+Collision::Collision(SCM s )
+  : Item (s)
 {
   Axis_group_interface (this).set_interface ();
   Axis_group_interface (this).set_axes (X_AXIS, Y_AXIS);
@@ -73,7 +74,7 @@ Collision::automatic_shift ()
   Drul_array<Array<int> > shifts;
   SCM  tups = SCM_EOL;
 
-  SCM s = get_elt_property ("elements");
+  SCM s = get_elt_pointer ("elements");
   for (; gh_pair_p (s); s = gh_cdr (s))
     {
       SCM car = gh_car (s);
@@ -95,7 +96,7 @@ Collision::automatic_shift ()
       for (int i=0; i < clashes.size (); i++)
        {
          SCM sh
-           = clashes[i]->remove_elt_property ("horizontal-shift");
+           = clashes[i]->get_elt_property ("horizontal-shift");
 
          if (gh_number_p (sh))
            shift.push (gh_scm2int (sh));
@@ -200,10 +201,10 @@ Collision::forced_shift ()
 {
   SCM tups = SCM_EOL;
   
-  SCM s = get_elt_property ("elements");
+  SCM s = get_elt_pointer ("elements");
   for (; gh_pair_p (s); s = gh_cdr (s))
     {
-      Score_element * se = unsmob_element ( gh_car (s));
+      Score_element * se = unsmob_element (gh_car (s));
 
       SCM force =  se->remove_elt_property ("force-hshift");
       if (gh_number_p (force))
index 236fbfb53c1f8db0514477757cee862c55f2669b..fd390e0826cbea3ebcfcb1dd9f82e00bbdd7db14 100644 (file)
@@ -15,7 +15,8 @@
 #include "paper-column.hh"
 
 
-Crescendo::Crescendo ()
+Crescendo::Crescendo (SCM s)
+  : Spanner (s)
 {
   set_elt_property ("dynamic-drul", gh_cons (SCM_BOOL_F, SCM_BOOL_F));
 }
index 5c2cfd49c4186f297fa87bde365cdf6c67fb347e..fdcc919bfd8813355ce90c7db5b3264a2402875f 100644 (file)
@@ -40,7 +40,7 @@ Dot_column_engraver::acknowledge_element (Score_element_info info)
 
   if (!dotcol_p_)
     {
-      dotcol_p_ = new Dot_column;
+      dotcol_p_ = new Dot_column( SCM_EOL);
       Side_position_interface (dotcol_p_).set_axis (X_AXIS);
       Side_position_interface (dotcol_p_).set_direction (RIGHT);      
       announce_element (Score_element_info (dotcol_p_, 0));
index 75f8391fe934b16092c5dd2b2aa4d2e9da6c8bb6..75b86cf65785a6b166e27ee89eb23204599ad78d 100644 (file)
@@ -20,7 +20,7 @@
 void
 Dot_column::add_dots (Dots *d)
 {
-  Group_interface gi (this, "dots");
+  Pointer_group_interface gi (this, "dots");
   gi.add_element (d);
 
   add_dependency (d);
@@ -48,9 +48,10 @@ Dot_column::compare (Dots * const &d1, Dots * const &d2)
 }
 
 
-Dot_column::Dot_column ()
+Dot_column::Dot_column (SCM s)
+  : Item (s)
 {
-  Group_interface gi (this, "dots");
+  Pointer_group_interface gi (this, "dots");
   gi.set_interface ();
   directional_element (this).set (RIGHT);
   
@@ -76,7 +77,7 @@ Dot_column::Dot_column ()
 void
 Dot_column::after_line_breaking ()
 {
-  Link_array<Dots> dots = Group_interface__extract_elements (this, (Dots*)0 , "dots"); 
+  Link_array<Dots> dots = Pointer_group_interface__extract_elements (this, (Dots*)0 , "dots"); 
   dots.sort (Dot_column::compare);
   
   if (dots.size () < 2)
index 2487268c2b532971e5c54ed037296d13d3e7f754..a658d838e72d986e9fab7ff073c8a0afa1262772 100644 (file)
@@ -13,7 +13,8 @@
 #include "staff-symbol-referencer.hh"
 #include "directional-element-interface.hh"
 
-Dots::Dots ()
+Dots::Dots (SCM s)
+  : Item (s)
 {
   set_elt_property ("dot-count", gh_int2scm (0));
 }
index 9a8675caee640890c33a7cca497da23124987e94..15592c6c786f74876b095574b6a1b74d17882bc1 100644 (file)
 class Dynamic_line_spanner : public Spanner
 {
 public:
-  Dynamic_line_spanner ();
+  Dynamic_line_spanner (SCM);
   VIRTUAL_COPY_CONS(Score_element);
   void add_column (Note_column*);
   void add_element (Score_element*);
 };
 
-Dynamic_line_spanner::Dynamic_line_spanner ()
+Dynamic_line_spanner::Dynamic_line_spanner (SCM s)
+  : Spanner (s)
 {
   set_elt_property ("transparent", SCM_BOOL_T);
   Side_position_interface (this).set_axis (Y_AXIS);
@@ -114,7 +115,7 @@ ADD_THIS_TRANSLATOR (Dynamic_engraver);
 void
 Dynamic_engraver::announce_element (Score_element_info i)
 {
-  group (i.elem_l_, "interfaces").add_thing (ly_symbol2scm ("dynamic"));
+  Group_interface (i.elem_l_, "interfaces").add_thing (ly_symbol2scm ("dynamic"));
   
   Engraver::announce_element (i);
 }
@@ -172,7 +173,7 @@ Dynamic_engraver::do_process_music ()
       && !line_spanner_
       && pending_element_arr_.size ())
     {
-      line_spanner_ = new Dynamic_line_spanner;
+      line_spanner_ = new Dynamic_line_spanner (get_property ("basicDynamicLineSpannerProperties"));
       for (int i = 0; i < pending_column_arr_.size (); i++)
        line_spanner_->add_column (pending_column_arr_[i]);
       pending_column_arr_.clear ();
@@ -262,16 +263,12 @@ Dynamic_engraver::do_process_music ()
     {
       String loud = text_req_l_->text_str_;
 
-      text_p_ = new Text_item;
-      text_p_->set_elt_property ("text",
-                                         ly_str02scm (loud.ch_C ()));
-      text_p_->set_elt_property ("style", gh_str02scm ("dynamic"));
-      text_p_->set_elt_property ("script-priority",
-                                         gh_int2scm (100));
+      text_p_ = new Text_item (get_property ("basicDynamicTextProperties"));
+      text_p_->set_elt_property ("text", ly_str02scm (loud.ch_C ()));
       if (Direction d=text_req_l_->get_direction ())
        directional_element (text_p_).set (d);
       pending_element_arr_.push (text_p_);
-      text_p_->set_elt_property ("self-alignment-Y", gh_int2scm (0));
+
       text_p_->add_offset_callback (Side_position_interface::aligned_on_self,
                                    Y_AXIS);
       announce_element (Score_element_info (text_p_, text_req_l_));
@@ -307,7 +304,7 @@ Dynamic_engraver::do_process_music ()
       else
        {
          span_start_req_l_ = span_req_l_drul_[START];
-         cresc_p_  = new Crescendo;
+         cresc_p_  = new Crescendo (SCM_EOL);
          cresc_p_->set_elt_property
            ("grow-direction",
             gh_int2scm ((span_req_l_drul_[START]->span_type_str_ == "crescendo")
index aba5025d69d2f069c9303c35e4426d5f907f6cab..9e869dc9c27318bd78aa675f84b3d91937d79ad6 100644 (file)
@@ -75,7 +75,7 @@ Extender_engraver::do_process_music ()
          return;
        }
       
-      extender_spanner_p_ = new Extender_spanner;
+      extender_spanner_p_ = new Extender_spanner (SCM_EOL);
       extender_spanner_p_->set_textitem  (LEFT, last_lyric_l_);
       announce_element (Score_element_info (extender_spanner_p_, req_l_));
     }
index 4c1dedbcd6d6d541eb482b5e7af4d57c28400825..8a987bad27c7526798ef78642d5a8dde4214a36e 100644 (file)
@@ -20,8 +20,9 @@
 #include "paper-def.hh"
 #include "extender-spanner.hh"
 
-Extender_spanner::Extender_spanner ()
-  : Spanner ()
+Extender_spanner::Extender_spanner (SCM s)
+  : Spanner (s)
+
 {
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
   set_extent_callback (Score_element::point_dimension_callback, Y_AXIS);
index 73ef013c07ff941277beb69c888f305ad2d33817..654f44139edaa4c3ed7c5235c88f11cd18775faa 100644 (file)
@@ -13,7 +13,8 @@
 #include "paper-column.hh"
 #include "paper-def.hh"
 
-Grace_align_item::Grace_align_item ()
+Grace_align_item::Grace_align_item (SCM s)
+  : Item (s)
 {
   set_elt_property ("stacking-dir", gh_int2scm (RIGHT));
   Align_interface (this).set_interface();
index 1d2e281c2125c30d914bbe8f4e08abc6eeea8acf..29211b6234afa56d09faaf3e04de38299eb24b21 100644 (file)
@@ -13,7 +13,7 @@
 Spanner*
 Hara_kiri_engraver::get_spanner_p () const
 {
-  return new Hara_kiri_group_spanner;
+  return new Hara_kiri_group_spanner (SCM_EOL);
 }
 
 void
index 12d5093c079185a83059eb16c3d325b3d9824071..d028ed5ef9cb7891e96d842192548cb7d6d442f5 100644 (file)
 #include "debug.hh"
 #include "item.hh"
 
-Hara_kiri_group_spanner::Hara_kiri_group_spanner()
+Hara_kiri_group_spanner::Hara_kiri_group_spanner(SCM s)
+  : Spanner (s)
 {
-  set_elt_property ("items-worth-living", SCM_EOL);
+  set_elt_pointer ("items-worth-living", SCM_EOL);
 }
 
 void 
 Hara_kiri_group_spanner::add_interesting_item (Item* n)
 {
   add_dependency (n);
-  set_elt_property ("items-worth-living",
-                   gh_cons (n->self_scm_,
-                            get_elt_property ("items-worth-living")));
+  Pointer_group_interface (this, "items-worth-living").add_element (n);
 }
 
 void 
 Hara_kiri_group_spanner::after_line_breaking ()
 {
-  SCM worth = get_elt_property ("items-worth-living");
+  SCM worth = get_elt_pointer ("items-worth-living");
   if (gh_pair_p (worth))
     return;
 
index 72eb2268fe7974bba01c2b0860a81d3780b797bf..071526f89a829444e42d126d874d421c68c4d829 100644 (file)
@@ -73,7 +73,7 @@ Hyphen_engraver::do_process_music ()
          return;
        }
       
-      hyphen_spanner_p_ = new Hyphen_spanner;
+      hyphen_spanner_p_ = new Hyphen_spanner (SCM_EOL);
       hyphen_spanner_p_->set_textitem  (LEFT, last_lyric_l_);
       announce_element (Score_element_info (hyphen_spanner_p_, req_l_));
     }
index acc40be05a9eab67910ce5da29622f1d5896cf9b..d0b58fc3bd81eba817dbe3c1d480115561990cf0 100644 (file)
@@ -22,8 +22,8 @@
 #include "hyphen-spanner.hh"
 #include "dimension-cache.hh"
 
-Hyphen_spanner::Hyphen_spanner ()
-  : Spanner ()
+Hyphen_spanner::Hyphen_spanner (SCM s)
+  : Spanner (s)
 {
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
 
index aa429c89bb0523cba6bd8dc82bbb6823f4750f55..f770c3aac29ff38d034a40861c462d405d7ad891 100644 (file)
@@ -14,7 +14,7 @@
 class Bar:public Item {
 public:
   VIRTUAL_COPY_CONS(Score_element);
-  Bar();
+  Bar(SCM);
 
   Molecule compound_barline (String, Real height) const;
   Molecule simple_barline (Real wid, Real height) const;      
index 768d07aaa75c311e71c229467b122fe6a115f417..27a19a1769e030c1a16b3a44bc2342eb9b940be9 100644 (file)
@@ -34,7 +34,7 @@ public:
   Stem* first_visible_stem () const;
   Stem* last_visible_stem () const;
 
-  Beam ();
+  Beam (SCM);
   void add_stem (Stem*);
   void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current);
   void set_beaming (Beaming_info_list *);
index 49057bde8d0ebf8dbe53f574abfa6d66274902af..6ba3cc1b7a8a4c90c10e63b24efb05039c7477f2 100644 (file)
@@ -29,7 +29,7 @@ class Break_align_item : public Item
 protected:
   virtual void before_line_breaking ();
 public:
-  Break_align_item ();
+  Break_align_item (SCM s);
   VIRTUAL_COPY_CONS(Score_element);
 };
 #endif // BREAK_ALIGN_ITEM_HH
index e0cda68c19b0f3e0b8bbaa1ca73a0bcece090818..fb212868b535e97e41409fd66458eab56441465b 100644 (file)
@@ -21,7 +21,7 @@ class Breathing_sign : public Item
 {
 public:
   VIRTUAL_COPY_CONS(Score_element);
-  Breathing_sign ();
+  Breathing_sign (SCM s);
 protected:
   virtual void after_line_breaking ();
   virtual Molecule do_brew_molecule () const;
index 3bdf747a0b96407f3bec863c73c2297bd8f2813c..2f77bb4b1d9ccc9ac6479b6b5e367a3f5160c6cd 100644 (file)
@@ -25,9 +25,10 @@ public:
   VIRTUAL_COPY_CONS (Score_element);
   Molecule ly_word2molecule (SCM scm) const;
   Molecule ly_text2molecule (SCM scm) const;
-
+  Chord_name(SCM s);
 protected:
   virtual Molecule do_brew_molecule () const;
+
 };
 
 #endif // CHORD_NAME_HH
index 111e41639375e75d6623d2a106b1c5f52e62f152..75aad9b0d83ea5036d3721ec25a87fdb80b8d8ce 100644 (file)
@@ -29,6 +29,7 @@ protected:
   virtual void before_line_breaking ();
 public:
   VIRTUAL_COPY_CONS(Score_element);
+  Clef_item (SCM);
 };
 
 #endif // CLEFITEM_HH
index 4cb7b615ec8d8cec906e466999c0f6260881055c..4cb199385686502cff424b420d957762860d50f8 100644 (file)
@@ -45,6 +45,6 @@ protected:
 public:
     
   void add_column (Note_column*ncol_l);
-  Collision();
+  Collision(SCM);
 };
 #endif // COLLISION_HH
index 115b98b9fd720c288ed40029ee44b607d09f83b5..b5a46c84336a4eddbbe5f65dbe56aabc2af820d5 100644 (file)
@@ -18,7 +18,7 @@
  */
 class Crescendo : public Spanner {
 public:
-  Crescendo();
+  Crescendo(SCM);
 protected:
   VIRTUAL_COPY_CONS(Score_element);
   virtual Molecule do_brew_molecule() const;
index 4c3a211557d197a175ac8f91959104308a99c1bc..9fd7150b82bc2abfcf9775f7a907b85791d029ab 100644 (file)
@@ -23,7 +23,7 @@ class Dot_column : public Item
 public:
   VIRTUAL_COPY_CONS (Score_element);
   void add_head (Rhythmic_head*);
-  Dot_column ();
+  Dot_column (SCM);
 
 protected:
   virtual void after_line_breaking ();
index 2446e1f906671f172116089da19f02c460aeda04..e1bf806390d2d00d481630777b1678d28185f04f 100644 (file)
@@ -30,7 +30,7 @@ protected:
   virtual void after_line_breaking ();
 public:
   
-  Dots ();
+  Dots (SCM);
 };
 
 #endif // DOTS_HH
index 261e758f4d9de022ba95aa6bd48ebaa572fcfb25..862318e7eadb92016e4ecbb41e3b8245b716e678 100644 (file)
@@ -30,7 +30,7 @@
 class Extender_spanner : public Spanner
 {
 public:
-  Extender_spanner ();
+  Extender_spanner (SCM);
   void set_textitem (Direction, Item*);
 
 protected:
index ed16719bcab9773fd7f91e899ea1f70ce574ac69..b4f9e94e99de3adebeff72287b445dbd30618061 100644 (file)
@@ -17,7 +17,7 @@ class Grace_align_item : public Item
 {
 public:
   VIRTUAL_COPY_CONS (Score_element);
-  Grace_align_item ();
+  Grace_align_item (SCM);
 protected:
   virtual void do_add_processing ();
   virtual void before_line_breaking ();
index 389223cf34f67a4a86dc6ec66063e63d82c14a10..1adc9480bf23d9a391d13e47419868d3b603ea24 100644 (file)
@@ -27,7 +27,7 @@
 class Hara_kiri_group_spanner : public Spanner
 {
 public:
-  Hara_kiri_group_spanner ();
+  Hara_kiri_group_spanner (SCM);
   virtual void after_line_breaking ();
   void add_interesting_item (Item* n);
 protected:
index ec60dee675302c50d6e7a9e879d73b23a126ebb2..24c1ab7299341db65e37a79142f07179858204fb 100644 (file)
@@ -21,7 +21,7 @@
 class Hyphen_spanner : public Spanner
 {
 public:
-Hyphen_spanner ();
+  Hyphen_spanner (SCM);
   void set_textitem (Direction, Item*);
 
 protected:
index 7d327628ed8dfe2ac76519333e91706e16fc858e..c036dd2e524cd19bb8eacd4c472bb961f6c419a7 100644 (file)
@@ -40,7 +40,7 @@ class Item : public Score_element
 
 public:
   VIRTUAL_COPY_CONS(Score_element);
-  Item();
+  Item (SCM);
   Item (Item const &);
 
   bool breakable_b () const;
index c003a3094d6fd4603093f5b211b39a00f2dcd117..b8430c427215794739abb7edb30569aeb29e9153 100644 (file)
@@ -28,7 +28,7 @@ class Key_item :public  Item
 
 public:
   VIRTUAL_COPY_CONS(Score_element);
-  Key_item ();
+  Key_item (SCM);
   void add (int pitch, int acc);
   void add_old (int pitch, int acc);
 
index 39ad2ccac252d838ddb5afb5f26653af67cebde6..db072f0dfe115eb0f6434453a5830eaa67c6692f 100644 (file)
@@ -40,11 +40,13 @@ class Local_key_item : public Item
 
   Molecule accidental (int,bool,bool) const;
 public:
-
+  Local_key_item (SCM );
   void add_pitch (Musical_pitch, bool cautionary, bool natural);
 protected:
   virtual void before_line_breaking ();
   virtual Molecule do_brew_molecule() const;
+
+
 };
 #endif // LOCALKEYITEM_HH
 
index 8dfbba2f5f7b2c4cd3c92f01785dc46dc96ea95c..0258c9a7ee12e409e4ac1d52d217976c0d2e622a 100644 (file)
@@ -16,7 +16,7 @@
 class Multi_measure_rest : public Spanner
 {
 public:
-  Multi_measure_rest ();
+  Multi_measure_rest (SCM);
 
   void add_column (Item*);
   Molecule compound_rest (int)const;
index 9ad0295ad70ae9bd1e9bb7b33b92f6597f5a2510..88c2c3601627add17fb4d1e24c5384407a9bddac 100644 (file)
@@ -35,7 +35,7 @@ public:
   void translate_rests(int dy);
   Note_head * first_head ()const;
   Interval rest_dim ()const ;
-  Note_column ();
+  Note_column (SCM);
   void set_stem (Stem*);
   void set_dotcol (Dot_column*);
   void add_head (Rhythmic_head*);
index 3354ecfb2495a2cc6b58775154f01dcfcca61388..85442c0b004ba7f984b12ed4a29e1684cc3e9e42 100644 (file)
@@ -25,8 +25,8 @@ public:
   static int compare (Note_head * const &a, Note_head *const &b) ;
 
   Molecule ledger_line (Interval) const;
+  Note_head (SCM);
 protected:
-  
   virtual void before_line_breaking ();
   virtual Molecule do_brew_molecule() const;
 };
index eac7a48a0ffe938e3636c073aa0e456812f1ddb4..d6f26fa718f32bc5ec803a784246b7512d7558bc 100644 (file)
@@ -18,7 +18,7 @@ public:
   void add_column (Note_column*);
   Interval rest_dim () const;
     
-  Rest_collision();
+  Rest_collision(SCM);
 protected:
   virtual void before_line_breaking ();
 };
index dcd6b81628d2999e4fec1c232e10f5bfddb33866..cb62ce38833653216825e53cf00b248e9a31378f 100644 (file)
@@ -24,5 +24,7 @@ class  Rest : public Rhythmic_head
 protected:
   virtual void after_line_breaking ();
   virtual Molecule do_brew_molecule () const;
+public:
+  Rest (SCM s);
 };
 #endif // REST_HH
index 0ba7cb1281a9f7ae5e4c0226fb5a97b574b7cbe0..d79e25f3f8071bfb2391d76e4855e09400307283 100644 (file)
@@ -15,7 +15,7 @@
 class Script_column : public Item
 {
 public:
-  Script_column();
+  Script_column(SCM);
   void add_staff_sided (Item*);
 protected:
   virtual void before_line_breaking ();
index 05149c7b93104214ea90386e7e69c2c339487bd7..4d8441584d809ec609625cacabcd5d692bb23506 100644 (file)
@@ -22,6 +22,7 @@ class Script : public Item
 {
   Molecule get_molecule (Direction d) const;
 public:
+  Script (SCM);
   
 protected:
   virtual void before_line_breaking ();
index 6deb0fba8ea835912414b572092999c11ab78abd..bfbe26506224c4fd7ecbb9da67a14010ebf029f3 100644 (file)
@@ -16,7 +16,7 @@ class Separating_group_spanner : public Spanner
 {
 public:
   void add_spacing_unit (Single_malt_grouping_item*);
-  Separating_group_spanner();
+  Separating_group_spanner(SCM);
 protected:
   VIRTUAL_COPY_CONS(Score_element);
   virtual Array<Rod> get_rods () const;
index 17280a2b82cb1169e19e07a1ae6d6547cb0792c5..082a37b517317f5867ae1b873937a391b2b9c50d 100644 (file)
@@ -31,7 +31,7 @@ class Single_malt_grouping_item : public Item
 {
   VIRTUAL_COPY_CONS(Score_element);
 public:
-  Single_malt_grouping_item ();
+  Single_malt_grouping_item (SCM);
   Interval my_width () const;
   void add_item (Item*);
 };
index cb202f1e93032f41214176105842a1f9da8af21d..3ab1dff6bd31f4a39c1fdd73128d0aa6a7153913 100644 (file)
@@ -16,7 +16,7 @@
 class Slur : public Spanner
 {
 public:
-  Slur ();
+  Slur (SCM);
   VIRTUAL_COPY_CONS(Score_element);
 
   void add_column (Note_column*);
index 46a7d6f025cdb6e76ff19fbf639b804c258c50cb..c6e4bdd7cdf628e757c06b62c6885558e33a4cf1 100644 (file)
@@ -15,7 +15,7 @@
 class Spacing_spanner : public Spanner
 {
 public:
-  Spacing_spanner ();
+  Spacing_spanner (SCM);
 
   VIRTUAL_COPY_CONS(Score_element);
   Array<Spring> do_measure (Link_array<Paper_column>) const;
index ff5c6b0700182606f5b92aeea5112523294f9ad2..17886676cdf2fb56bf0b5f55779fb2b8ee060f65 100644 (file)
@@ -25,7 +25,7 @@ class Span_bar : public Bar
 {
   Interval get_spanned_interval () const;
 public:
-  Span_bar();
+  Span_bar (SCM);
     
   VIRTUAL_COPY_CONS(Score_element);
   void add_bar (Score_element*);
index c8f5049293571403f032ed0331938a6a91352873..0932ef78a1337d1f8072857e13d04100a5a4480b 100644 (file)
@@ -22,6 +22,7 @@ class Staff_bar : public Bar
 public:
   VIRTUAL_COPY_CONS(Score_element);
   virtual Real get_bar_size () const;
+  Staff_bar (SCM);
 };
 
 #endif /* STAFF_BAR_HH */
index 88821052fe5cdc84afc14cff39b1b54876e09a37..676886c7ec0c81066a2984851d04c359c5032751 100644 (file)
@@ -21,8 +21,11 @@ public:
   Real staff_space () const;
   int steps_i() const;
   int line_count () const;
+  Staff_symbol (SCM s);
+  
 protected:
   VIRTUAL_COPY_CONS(Score_element);
   virtual Molecule do_brew_molecule() const;
+
 };
 #endif // STAFFSYM_HH
index 59ac84f3e1d3d6d1f4573efe6a9fd7381edde8d3..11c1c93af87f5011791f4baeb454de4e225d2a37 100644 (file)
@@ -20,7 +20,7 @@ protected:
 
   static Interval dim_callback (Score_element*, Axis);
 public:
-  Stem_tremolo ();
+  Stem_tremolo (SCM);
   void set_stem (Stem *);
 };
 
index d843a9846c85ffe51a19402ffed076d8a13d3bd1..8ae9771fca07820c7abc424c4edb80d8bfd43cc8 100644 (file)
@@ -57,7 +57,7 @@ public:
   Drul_array<Note_head*> extremal_heads () const;
 
   Score_element * support_head () const;
-  Stem ();
+  Stem (SCM);
 
   /// ensure that this Stem also encompasses the Notehead #n#
   void add_head (Rhythmic_head*n);
index b2ae20e9849d33e8b43161445ec70ed6092f3abf..9f17f20361a0f8c330688760108e035350e8e96d 100644 (file)
@@ -32,7 +32,7 @@ class Sustain_pedal : public Item
 {
 public:
   VIRTUAL_COPY_CONS (Score_element);
-
+  Sustain_pedal (SCM);
 protected:
   virtual Molecule do_brew_molecule () const;
   virtual void after_line_breaking ();
index d594c7ff876668de2f5f950e0340ce27b43d1fdd..d84acd97d0d0b5ae53a917e42fe4b73043e6575c 100644 (file)
@@ -18,7 +18,7 @@
 class System_start_delimiter : public Spanner
 {
 public:
-  System_start_delimiter ();
+  System_start_delimiter (SCM);
   VIRTUAL_COPY_CONS (Score_element);
 protected:
   virtual void after_line_breaking();
index f6aaa02928310b469ca24ae66b4e9712d0678b06..818a5a3139e77fd337b8532ca6a57979e4c982d7 100644 (file)
@@ -19,6 +19,7 @@ class Text_item : public Item
 {
 public:
   VIRTUAL_COPY_CONS (Score_element);
+  Text_item (SCM s);
 protected:
   virtual Molecule do_brew_molecule () const;
 };
index cdbe522201becfc5d0cb66c7bcb3a1dcffdba3f9..6dfe54d82b30e85c8f2af2d528d99da3027882de 100644 (file)
@@ -18,11 +18,10 @@ class Tie_column : public Spanner
 public:
   VIRTUAL_COPY_CONS (Score_element);
   void add_tie (Tie*);
-  Tie_column ();
+  Tie_column (SCM s);
 protected:
   virtual void after_line_breaking ();
   void set_directions ();
-  
 };
 
 #endif /* TIE_COLUMN_HH */
index 4240193247a4b2017158ebe33547c0bc4bf2ad9b..7de2697cfaf26d80b410c6e440588ffaa5ff2b56 100644 (file)
@@ -19,7 +19,7 @@
 class Tie : public Spanner
 {
 public:
-  Tie ();
+  Tie (SCM);
   void set_head (Direction, Item*head_l);
   VIRTUAL_COPY_CONS(Score_element);
 
index 3bdc1208e19a0eb318e5759268d98ab75d0dd0b0..6744bff15e525b15df5aea7ae0483cf207ee77ff 100644 (file)
@@ -26,7 +26,7 @@ class Time_signature: public Item
 protected:
   virtual Molecule do_brew_molecule() const;
 public:
-  Time_signature (;
+  Time_signature (SCM);
 
   /*
     TODO: make this SCM!
index b851d1f626c5787e9e6d9844561f347eb64e3a2c..51789988b6d7da57cc79c609460b000caec08bc9 100644 (file)
@@ -20,7 +20,7 @@
 class Tuplet_spanner : public Spanner
 {
 public:
-  Tuplet_spanner ();
+  Tuplet_spanner (SCM);
  
   void add_column (Note_column*);
   void add_beam (Beam*);
index e76d6e0537b8288188dd7fe12745ff9c4db2f012..a1f9b0ebfef62eab5422deb2ebf81c0dd6c9ca65 100644 (file)
@@ -16,7 +16,7 @@
 class Volta_spanner : public Spanner
 {
 public:
-  Volta_spanner ();
+  Volta_spanner (SCM);
  
   void add_column (Note_column*);
   void add_bar (Bar*);
index 584d0d9cd77aa13662fee2e9d98934f56299f328..1a9bd7da1f2a1cfe5053af60c01c9f41b7cd946e 100644 (file)
@@ -55,17 +55,12 @@ Instrument_name_engraver::create_text (SCM txt)
 {
   if(!text_)
     {
-      text_ = new Text_item;
+      text_ = new Text_item (get_property ("basicInstrumentNameProperties"));
       text_->set_elt_property ("text", txt);
-      text_->set_elt_property ("breakable", SCM_BOOL_T);
 
       /*
        TODO: use more lispish names for break-align-symbols
        */
-      text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name"));
-      text_->set_elt_property ("visibility-lambda",
-                              scm_eval (ly_symbol2scm ("begin-of-line-visible")));
-
       if (delim_)
        text_->set_parent (delim_, Y_AXIS);
 
index 143d7da10302ac7ba0c0e4eeb66e83e1d3874913..c9b74955b7cf6901fb61ae0b470ccd49413e1a01 100644 (file)
 const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */
 const int SHARP_TOP_PITCH=4; /*  ais and bis typeset in lower octave */
 
-Key_item::Key_item ()
+Key_item::Key_item (SCM s)
+  : Item (s)
 {
-  set_elt_property ("breakable", SCM_BOOL_T);
   set_elt_property ("c0-position", gh_int2scm (0));
-
-  set_elt_property ("old-accidentals", SCM_EOL);
-  set_elt_property ("new-accidentals", SCM_EOL);
 }
 
 void
index e08fae228911dc26434485cdc137ae0bfa4591cc..aa4b6e8c20c21a98bebe3efd754791d674af498d 100644 (file)
@@ -52,7 +52,7 @@ Line_group_engraver_group::do_creation_processing()
 void
 Line_group_engraver_group::create_line_spanner ()
 {
-  staffline_p_ = new Spanner ;
+  staffline_p_ = new Spanner (SCM_EOL);
   Axis_group_interface (staffline_p_).set_interface ();
   Axis_group_interface (staffline_p_).set_axes (Y_AXIS,Y_AXIS);
 }
index fc9f6393674990a03f940744b49ffa3f8fb2031d..afde3217cdd75e665b64ed64c6bc8cd2b46b352d 100644 (file)
@@ -36,7 +36,7 @@ Line_number_engraver::process_acknowledged ()
 {
   if (!text_item_p_ && interesting_.size ())
     {
-      text_item_p_ = new Text_item;
+      text_item_p_ = new Text_item (SCM_EOL);
       Side_position_interface si (text_item_p_);
       si.set_axis (Y_AXIS);
       text_item_p_->set_parent (interesting_[0].elem_l_, Y_AXIS);
index abc8b0a4558c7d0731e7130d1adfebfd7977e06d..2ca094bab979f352e4112d875523e229f0112438 100644 (file)
 #include "all-font-metrics.hh"
 
 Line_of_score::Line_of_score()
+  : Spanner (SCM_EOL)
 {
-  set_elt_property ("columns", SCM_EOL);
-  set_elt_property ("all-elements", SCM_EOL);
+  set_elt_pointer ("columns", SCM_EOL);
+  set_elt_pointer ("all-elements", SCM_EOL);
 
   Axis_group_interface (this).set_interface ();
   Axis_group_interface (this).set_axes (Y_AXIS,X_AXIS);
@@ -32,7 +33,7 @@ Line_of_score::Line_of_score()
 int
 Line_of_score::element_count () const
 {
-  return scm_ilength ( get_elt_property ("all-elements"));
+  return scm_ilength ( get_elt_pointer ("all-elements"));
 }
 
 
@@ -43,14 +44,14 @@ void
 Line_of_score::typeset_element (Score_element * elem_p)
 {
   elem_p->pscore_l_ = pscore_l_;
-  Group_interface (this, "all-elements").add_element (elem_p);
+  Pointer_group_interface (this, "all-elements").add_element (elem_p);
   scm_unprotect_object (elem_p->self_scm_);
 }
 
 void
 Line_of_score::output_lines ()
 {
-  for (SCM s = get_elt_property ("all-elements");
+  for (SCM s = get_elt_pointer ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
       unsmob_element (gh_car (s))->do_break_processing ();
@@ -62,7 +63,7 @@ Line_of_score::output_lines ()
   for (int i=0; i < broken_into_l_arr_.size (); i++)
     {
       Score_element *se = broken_into_l_arr_[i];
-      SCM all = se->get_elt_property ("all-elements");
+      SCM all = se->get_elt_pointer ("all-elements");
       for (SCM s = all; gh_pair_p (s); s = gh_cdr (s))
        {
          unsmob_element (gh_car (s))->fixup_refpoint ();
@@ -74,13 +75,13 @@ Line_of_score::output_lines ()
   /*
     needed for doing items.
    */
-  for (SCM s = get_elt_property ("all-elements");
+  for (SCM s = get_elt_pointer ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
       unsmob_element (gh_car (s))->fixup_refpoint ();
     }
   
-  for (SCM s = get_elt_property ("all-elements");
+  for (SCM s = get_elt_pointer ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
       unsmob_element (gh_car (s))->handle_broken_dependencies ();
@@ -167,12 +168,12 @@ Line_of_score::output_scheme (SCM s)
 void
 Line_of_score::add_column (Paper_column*p)
 {
-  SCM cs = get_elt_property ("columns");
+  SCM cs = get_elt_pointer ("columns");
   Score_element * prev =  gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0;
   int rank = prev ? dynamic_cast<Paper_column*> (prev)->rank_i () + 1 : 0; 
 
   p->set_rank (rank);
-  set_elt_property ("columns",  gh_cons (p->self_scm_, cs));
+  set_elt_pointer ("columns",  gh_cons (p->self_scm_, cs));
 
   Axis_group_interface (this).add_element (p);
   typeset_element (p);
@@ -182,7 +183,7 @@ Link_array<Paper_column>
 Line_of_score::column_l_arr ()const
 {
   Link_array<Paper_column> acs
-    = Group_interface__extract_elements (this, (Paper_column*) 0, "columns");
+    = Pointer_group_interface__extract_elements (this, (Paper_column*) 0, "columns");
   bool bfound = false;
   for (int i= acs.size (); i -- ; )
     {
@@ -194,9 +195,7 @@ Line_of_score::column_l_arr ()const
        seem empty. We need to retain breakable columns, in case
        someone forced a breakpoint.
       */
-      if (!bfound
-         || (acs[i]->get_elt_property ("elements") == SCM_EOL
-             && !brb))
+      if (!bfound || !acs[i]->used_b ())
        acs.del (i);
     }
   return acs;
@@ -223,32 +222,32 @@ fixup_refpoints (SCM s)
 void
 Line_of_score::pre_processing ()
 {
-  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     unsmob_element (gh_car (s))->discretionary_processing ();
 
   progress_indication ( _f("Element count %d ",  element_count ()));
 
   
-  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     unsmob_element (gh_car (s))->handle_prebroken_dependencies ();
   
-  fixup_refpoints (get_elt_property ("all-elements"));
+  fixup_refpoints (get_elt_pointer ("all-elements"));
   
-  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     {
       Score_element* sc = unsmob_element (gh_car (s));
       sc->calculate_dependencies (PRECALCED, PRECALCING, &Score_element::before_line_breaking);
     }
   
   progress_indication ("\n" + _ ("Calculating column positions...") + " " );
-  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     unsmob_element (gh_car (s))->do_space_processing ();
 }
 
 void
 Line_of_score::post_processing ()
 {
-  for (SCM s = get_elt_property ("all-elements");
+  for (SCM s = get_elt_pointer ("all-elements");
        gh_pair_p (s); s = gh_cdr (s))
     {
       Score_element* sc = unsmob_element (gh_car (s));
@@ -272,7 +271,7 @@ Line_of_score::post_processing ()
     generate all molecules  to trigger all font loads.
 
     (ugh. This is not very memory efficient.)  */
-  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     unsmob_element (gh_car (s))->get_molecule ();
   
   /*
@@ -295,7 +294,7 @@ Line_of_score::post_processing ()
   /*
     all elements.
    */ 
-  for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s))
     {
       Score_element * sc =  unsmob_element (gh_car (s));
       Molecule m = sc->get_molecule ();
@@ -323,7 +322,7 @@ Line_of_score::broken_col_range (Item const*l, Item const*r) const
 
   l = l->column_l ();
   r = r->column_l ();
-  SCM s = get_elt_property ("columns");
+  SCM s = get_elt_pointer ("columns");
 
   while (gh_car (s) != r->self_scm_)
     s = gh_cdr  (s);
index f917dc7e8ae0dacd3bcef95575e1a7f6adcc8679..8a5678fe1b9cae4b971881092b096d4b8bbbbd22 100644 (file)
@@ -124,7 +124,7 @@ Local_key_engraver::process_acknowledged ()
            {
              if (!key_item_p_) 
                {
-                 key_item_p_ = new Local_key_item;
+                 key_item_p_ = new Local_key_item (SCM_EOL);
                  Side_position_interface (key_item_p_).set_axis (X_AXIS);
                  Side_position_interface (key_item_p_).set_direction (LEFT);
                  staff_symbol_referencer(key_item_p_).set_interface ();
index 9166bb2fd0a93a17c54985eb7b21defdac191db9..e730ad4ea08321f1f3365dc36ab35ea9b606b47c 100644 (file)
@@ -136,3 +136,8 @@ Local_key_item::do_brew_molecule() const
   return mol;
 }
 
+Local_key_item::Local_key_item (SCM s)
+  : Item (s)
+{
+  
+}
index 61e12a1c5101c8a75746e4328cfa999ca7d989a0..fce604816314f532ffc1c1f5857ab3ebf802dbff 100644 (file)
@@ -40,11 +40,11 @@ Lyric_engraver::do_process_music()
 {
   if (req_l_)
     {
-      text_p_=  new Text_item;
+      text_p_=  new Text_item (get_property ("basicLyricTextProperties"));
       
       text_p_->set_elt_property ("text",
                                 ly_str02scm   ((req_l_->text_str_ + " ").ch_C ()));
-      text_p_->set_elt_property ("non-rhythmic", SCM_BOOL_T);
+
       announce_element (Score_element_info (text_p_, req_l_));
     }
 }
index 0aa80fc411b24713b8c872c13fc433dcdb0f19cb..88c15506066ca484f75b25f796f9596626d3a73c 100644 (file)
@@ -34,7 +34,6 @@ public:
   Mark_engraver ();
 protected:
   Text_item* text_p_;
-  Protected_scm visibility_lambda_;
   Protected_scm staffs_;
   
 protected:
@@ -63,15 +62,9 @@ Mark_engraver::Mark_engraver ()
 void
 Mark_engraver::do_creation_processing ()
 {
-  String t = "markVisibilityFunction";
-  SCM proc = get_property (t);
-
-  if (gh_procedure_p (proc))
-    visibility_lambda_ = proc;
 }
 
 
-
 void
 Mark_engraver::acknowledge_element (Score_element_info inf)
 {
@@ -95,7 +88,7 @@ Mark_engraver::do_pre_move_processing ()
 {
   if (text_p_)
     {
-      text_p_->set_elt_property ("side-support" , staffs_);
+      text_p_->set_elt_pointer("side-support-elements" , staffs_);
       typeset_element (text_p_);
       text_p_ =0;
     }
@@ -107,13 +100,17 @@ Mark_engraver::create_items (Request *rq)
 {
   if (text_p_)
     return;
-  
-  text_p_ = new Text_item;
-  text_p_->set_elt_property ("breakable", SCM_BOOL_T); // ugh
+
+  SCM s = get_property ("basicMarkProperties");
+  text_p_ = new Text_item (s);
+
   Group_interface (text_p_, "interfaces").add_thing (ly_symbol2scm ("Mark"));
   Side_position_interface staffside(text_p_);
   staffside.set_axis (Y_AXIS);
 
+  /*
+    -> Generic props.
+   */
   SCM prop = get_property ("markDirection");
   if (!isdir_b (prop))
     {
@@ -133,9 +130,6 @@ Mark_engraver::create_items (Request *rq)
                            gh_double2scm(paper_l ()->get_var ("interline")));
     }
 
-  if (gh_procedure_p (visibility_lambda_))
-      text_p_->set_elt_property ("visibility-lambda",
-                                visibility_lambda_);
   
   announce_element (Score_element_info (text_p_, rq));
 }
index 6a49f50a5413d7be7fdb332d3f7a5ca8be5e669e..5941e43ec82e5f479284ee7f6d5ca1fdb3120f70 100644 (file)
@@ -109,7 +109,7 @@ Multi_measure_rest_engraver::do_process_music ()
 
   if (busy_span_req_l_ && !mmrest_p_)
     {
-      mmrest_p_ = new Multi_measure_rest;
+      mmrest_p_ = new Multi_measure_rest (SCM_EOL);
       Staff_symbol_referencer_interface si (mmrest_p_);
       si.set_interface ();
 
@@ -127,7 +127,7 @@ Multi_measure_rest_engraver::do_pre_move_processing ()
 
   if (mmrest_p_ && (now_mom () >= start_moment_) 
     && !mp
-    && (scm_ilength (mmrest_p_->get_elt_property ("columns")) >= 2))
+    && (scm_ilength (mmrest_p_->get_elt_pointer ("columns")) >= 2))
     {
       typeset_element (mmrest_p_);
       /*
index 0d360c945b06029706bb9f1c0527e8cd3d17f38f..cd770d0d0418095cb021582e0c45d5c43dcc675b 100644 (file)
 #include "stem.hh"
 #include "staff-symbol-referencer.hh"
 
-Multi_measure_rest::Multi_measure_rest ()
+Multi_measure_rest::Multi_measure_rest (SCM s)
+  : Spanner (s)
 {
-  set_elt_property ("columns", SCM_EOL);
+  set_elt_pointer ("columns", SCM_EOL);
 }
 
 
@@ -139,9 +140,9 @@ Multi_measure_rest::do_brew_molecule () const
 void
 Multi_measure_rest::do_add_processing ()
 {
-  if (gh_pair_p (get_elt_property ("columns")))
+  if (gh_pair_p (get_elt_pointer ("columns")))
     {
-      Link_array<Item> column_arr (Group_interface__extract_elements (this, (Item*)0, "columns"));
+      Link_array<Item> column_arr (Pointer_group_interface__extract_elements (this, (Item*)0, "columns"));
                                    
       set_bound (LEFT, column_arr[0 >? column_arr.size () - 2]);
       set_bound (RIGHT, column_arr.top ());
@@ -153,7 +154,7 @@ Multi_measure_rest::do_add_processing ()
 void
 Multi_measure_rest::after_line_breaking ()
 {
-  if (!gh_pair_p (get_elt_property ("columns")))
+  if (!gh_pair_p (get_elt_pointer ("columns")))
     set_elt_property ("transparent", SCM_BOOL_T);
 }
 
@@ -162,7 +163,7 @@ Multi_measure_rest::after_line_breaking ()
 void
 Multi_measure_rest::add_column (Item* c)
 {
-  Group_interface gi (this, "columns");
+  Pointer_group_interface gi (this, "columns");
   gi.add_element (c);
 
   
index 1f424860feaaaab8a140d1625bd20a6a43f45549..7c1dd5ae9cf481c0079d358102a42535ab487eec 100644 (file)
@@ -22,7 +22,7 @@
 bool
 Note_column::rest_b () const
 {
-  SCM r = get_elt_property ("rests");
+  SCM r = get_elt_pointer ("rests");
 
   return gh_pair_p (r);
 }
@@ -38,10 +38,11 @@ Note_column::shift_compare (Note_column *const &p1, Note_column*const&p2)
   return h1 - h2;
 }
 
-Note_column::Note_column()
+Note_column::Note_column( SCM s)
+  : Item (s)
 {
-  set_elt_property ("rests", SCM_EOL);
-  set_elt_property ("note-heads", SCM_EOL);  
+  set_elt_pointer ("rests", SCM_EOL);
+  set_elt_pointer ("note-heads", SCM_EOL);  
   Axis_group_interface (this).set_interface ();
   Axis_group_interface (this).set_axes (X_AXIS, Y_AXIS);
   Group_interface (this, "interfaces").add_thing (ly_symbol2scm ("Note_column"));
@@ -50,7 +51,7 @@ Note_column::Note_column()
 Stem *
 Note_column::stem_l () const
 {
-  SCM s = get_elt_property ("stem");
+  SCM s = get_elt_pointer ("stem");
   return dynamic_cast<Stem*> (unsmob_element (s));
 
 }
@@ -63,7 +64,7 @@ Note_column::head_positions_interval() const
 
   iv.set_empty ();
 
-  SCM h = get_elt_property ("note-heads");
+  SCM h = get_elt_pointer ("note-heads");
   for (; gh_pair_p (h); h = gh_cdr (h))
     {
       Score_element *se = unsmob_element (gh_car (h));
@@ -80,7 +81,7 @@ Note_column::dir () const
 {
   if (stem_l ())
     return stem_l ()->get_direction ();
-  else if (gh_pair_p (get_elt_property ("note-heads")))
+  else if (gh_pair_p (get_elt_pointer ("note-heads")))
     return (Direction)sign (head_positions_interval().center ());
 
   programming_error ("Note column without heads and stem!");
@@ -91,7 +92,7 @@ Note_column::dir () const
 void
 Note_column::set_stem (Stem * stem_l)
 {
-  set_elt_property ("stem", stem_l->self_scm_);
+  set_elt_pointer ("stem", stem_l->self_scm_);
 
   add_dependency (stem_l);
   Axis_group_interface (this).add_element (stem_l);
@@ -104,12 +105,12 @@ Note_column::add_head (Rhythmic_head *h)
 {
   if (Rest*r=dynamic_cast<Rest *> (h))
     {
-      Group_interface gi (this, "rests");
+      Pointer_group_interface gi (this, "rests");
       gi.add_element (h);
     }
   if (Note_head *nh=dynamic_cast<Note_head *> (h))
     {
-      Group_interface gi (this, "note-heads");
+      Pointer_group_interface gi (this, "note-heads");
       gi.add_element (nh);
     }
   Axis_group_interface (this).add_element (h);
@@ -121,7 +122,7 @@ Note_column::add_head (Rhythmic_head *h)
 void
 Note_column::translate_rests (int dy_i)
 {
-  SCM s = get_elt_property ("rests");
+  SCM s = get_elt_pointer ("rests");
   for (; gh_pair_p (s); s = gh_cdr (s))
     {
       Score_element * se = unsmob_element (gh_car (s));
@@ -181,7 +182,7 @@ Note_column::after_line_breaking ()
   Direction d = stem_l ()->get_direction ();
   Real beamy = (stem_l ()->relative_coordinate (0, X_AXIS) - x0) * dydx + beam_y;
 
-  s = get_elt_property ("rests");
+  s = get_elt_pointer ("rests");
   Score_element * se = unsmob_element (gh_car (s));
   Staff_symbol_referencer_interface si (se);
 
@@ -210,7 +211,7 @@ Interval
 Note_column::rest_dim () const
 {
   Interval restdim;
-  SCM s = get_elt_property ("rests");
+  SCM s = get_elt_pointer ("rests");
   for (; gh_pair_p (s); s = gh_cdr (s))
     {
       Score_element * sc = unsmob_element ( gh_car (s));
index 027f736c54405a5fb2359b1da6cac0fdd2858f54..d5fa47e7ff3bda9dcd057dbde2319d9221ee72bb 100644 (file)
@@ -119,3 +119,9 @@ Note_head::do_brew_molecule() const
   return out;
 }
 
+
+Note_head::Note_head (SCM s)
+  : Rhythmic_head (s)
+{
+  
+}
index 780b6425007d9ab047777b46a80ef058ce58a957..3090a6d111d33f7df1e8d8256acf417e36e321b7 100644 (file)
@@ -60,7 +60,7 @@ Note_heads_engraver::do_process_music()
   
   for (int i=0; i < note_req_l_arr_.size (); i++)
     {
-      Note_head *note_p  = new Note_head;
+      Note_head *note_p  = new Note_head (SCM_EOL);
       
       Staff_symbol_referencer_interface si (note_p);
       si.set_interface ();
@@ -73,7 +73,7 @@ Note_heads_engraver::do_process_music()
 
       if (note_req_l->duration_.dots_i_)
        {
-         Dots * d = new Dots;
+         Dots * d = new Dots (SCM_EOL);
 
          Staff_symbol_referencer_interface sd (d);
          sd.set_interface ();
index 80e7651b6e2bb46e873bced56c3039df9e4d1bca..1f03a0ea1a3eeb9788f057d6d6f2716647a6dbf4 100644 (file)
@@ -46,7 +46,7 @@ Note_name_engraver::do_process_music ()
     }
   if (s.length_i())
     {
-      Text_item * t = new Text_item;
+      Text_item * t = new Text_item (SCM_EOL);
       t->set_elt_property ("text", ly_str02scm ( s.ch_C()));
       announce_element (Score_element_info (t, req_l_arr_[0]));
       texts_.push (t);
index d81fc89911109df902b462e0ec9c185e5a3a5cbf..f7db1474a2f5ac1bf1795b6c3def51dba66f4836 100644 (file)
@@ -95,6 +95,7 @@ Paper_column::column_l () const
 }
 
 Paper_column::Paper_column (Moment w)
+  : Item (SCM_EOL)
 {
   SCM when = (new Moment (w))->smobify_self ();
   scm_unprotect_object (when);
@@ -131,3 +132,8 @@ Paper_column::musical_b () const
   return s != Moment(0);
 }
 
+bool
+Paper_column::used_b ()const
+{
+  return gh_pair_p (get_elt_pointer ("elements")) ||  breakable_b ();
+}
index 216670ca3052192c5c2f5456f2d3411473fd0a0e..e51fff1c6eacfec6da71b43f38e32e4790e2c82a 100644 (file)
@@ -185,12 +185,12 @@ Piano_pedal_engraver::do_process_music ()
        {
          if (p->name_ == String ("Sustain"))
            {
-             p->item_p_ = new Sustain_pedal;
+             p->item_p_ = new Sustain_pedal (SCM_EOL);
              p->item_p_->set_elt_property ("text", s);
            }
          else
            {
-             p->item_p_ = new Text_item;
+             p->item_p_ = new Text_item (SCM_EOL);
              p->item_p_->set_elt_property ("text", s);
              // guh
              p->item_p_->set_elt_property ("style", ly_str02scm ("italic"));
@@ -199,6 +199,7 @@ Piano_pedal_engraver::do_process_music ()
          Side_position_interface si (p->item_p_);
          si.set_axis (Y_AXIS);
 
+         // todo: init with basic props.
          p->item_p_->set_elt_property ("no-spacing-rods"  , SCM_BOOL_T);
          p->item_p_->set_elt_property ("self-alignment-X", gh_int2scm (0));
          p->item_p_->add_offset_callback (Side_position_interface::aligned_on_self, X_AXIS);
index 67fa3e661e358670068c7ccb2a7bb7504b1d4f89..8c838c3474595393bdabdd03a7a056855d9c6b36 100644 (file)
@@ -180,7 +180,7 @@ Repeat_engraver::do_process_music ()
          else
            {
              assert (!volta_span_p_);
-             volta_span_p_ = new Volta_spanner;
+             volta_span_p_ = new Volta_spanner (SCM_EOL);
              announce_element (Score_element_info (volta_span_p_,0));
              volta_span_p_->set_elt_property ("text",
                                               ly_str02scm (t.ch_C()));
index c735a0320512bf5081034329491dd3aa40f043ad..606dfe30d6e81bf136e0c716e66783b1cb3221c8 100644 (file)
@@ -27,7 +27,7 @@ Rest_collision_engraver::process_acknowledged ()
   if (rest_collision_p_ || note_column_l_arr_.size () < 2)
     return;
 
-  rest_collision_p_ = new Rest_collision;
+  rest_collision_p_ = new Rest_collision (get_property ("basicRestCollisionProperties"));
   
   announce_element (Score_element_info (rest_collision_p_, 0));
   for (int i=0; i< note_column_l_arr_.size (); i++)
index df842f8f33cbdf5c273f687f9df7fd14adbd2617..34d39fbe3b49cac69308ea5efd4b7d5bd2c5ad9b 100644 (file)
@@ -24,7 +24,7 @@ void
 Rest_collision::add_column (Note_column *nc_l)
 {
   add_dependency (nc_l);
-  Group_interface gi (this);  
+  Pointer_group_interface gi (this);  
   if (nc_l->rest_b ())
     gi.name_ = "rests";
   else
@@ -51,7 +51,7 @@ rhythmic_head2mom (Rhythmic_head* r)
 static Rhythmic_head*
 col2rhythmic_head (Note_column* c)
 {
-  SCM s = c->get_elt_property ("rests");
+  SCM s = c->get_elt_pointer ("rests");
   assert (gh_pair_p (s));
   Score_element* e = unsmob_element (gh_car (s));
   return dynamic_cast<Rhythmic_head*> (e);
@@ -61,9 +61,9 @@ void
 Rest_collision::before_line_breaking ()
 {
   Link_array<Note_column> rest_l_arr =
-    Group_interface__extract_elements (this, (Note_column*) 0, "rests");
+    Pointer_group_interface__extract_elements (this, (Note_column*) 0, "rests");
   Link_array<Note_column> ncol_l_arr =
-    Group_interface__extract_elements (this, (Note_column*) 0, "notes");
+    Pointer_group_interface__extract_elements (this, (Note_column*) 0, "notes");
                                      
   
   /* 
@@ -188,11 +188,11 @@ Rest_collision::before_line_breaking ()
 }
 
 
-Rest_collision::Rest_collision()
+Rest_collision::Rest_collision(SCM s)
+  : Item (s)
 {
-  set_elt_property ("rests", SCM_EOL);
-  set_elt_property ("notes", SCM_EOL);
-  set_elt_property ("transparent", SCM_BOOL_T);
+  set_elt_pointer ("rests", SCM_EOL);
+  set_elt_pointer ("notes", SCM_EOL);
   set_extent_callback (0, X_AXIS);
   set_extent_callback (0, Y_AXIS);
 }
index fce8f71bbd4dde7bdb0bd8fa9c02aea88b0f408e..37b3e6ee1f9402cc795fb666f339a94d3a0d5b72 100644 (file)
@@ -46,7 +46,7 @@ Rest_engraver::do_process_music ()
 {
   if (rest_req_l_ && !rest_p_) 
     {
-      rest_p_ = new Rest;
+      rest_p_ = new Rest (SCM_EOL);
       Staff_symbol_referencer_interface si (rest_p_);
       si.set_interface ();
       
@@ -55,7 +55,7 @@ Rest_engraver::do_process_music ()
       
       if (rest_req_l_->duration_.dots_i_)
        {
-         dot_p_ = new Dots;
+         dot_p_ = new Dots (SCM_EOL);
 
          Staff_symbol_referencer_interface si (dot_p_);
          si.set_interface ();
index 89c2d1a9e0ad51c65007809668fffb08652bab00..b01d47896d9d1ae4779c6365c57ba9ba59878167 100644 (file)
@@ -62,3 +62,8 @@ Rest::do_brew_molecule () const
 
 
 
+Rest::Rest (SCM s)
+  : Rhythmic_head (s)
+{
+}
+
index a8bf90263afaf208c7c8dd7de66c495643ea7e0c..ad0c6acbdd92790e7d79b34d8f06684b022d03ca 100644 (file)
@@ -30,7 +30,7 @@ Rhythmic_column_engraver::process_acknowledged ()
     {
       if (!ncol_p_)
        {
-         ncol_p_ = new Note_column;
+         ncol_p_ = new Note_column (SCM_EOL);
          announce_element (Score_element_info (ncol_p_, 0));
        }
 
index 64d2bd4bdd6f716e4de9141be933f4038cf9c21b..1b735cd5eed77d679ee4976ba0cb7d4e948e17ee 100644 (file)
@@ -21,7 +21,7 @@
 Dots*
 Rhythmic_head::dots_l () const
 {
-  SCM s = get_elt_property ("dot");
+  SCM s = get_elt_pointer ("dot");
   return dynamic_cast<Dots*> (unsmob_element (s));
 }
 
@@ -36,7 +36,7 @@ Rhythmic_head::balltype_i () const
 Stem*
 Rhythmic_head::stem_l () const
 {
-  SCM s = get_elt_property ("stem");
+  SCM s = get_elt_pointer ("stem");
   return dynamic_cast<Stem*> (unsmob_element (s));
 }
 
@@ -62,8 +62,12 @@ Rhythmic_head::after_line_breaking ()
 void
 Rhythmic_head::add_dots (Dots *dot_l)
 {
-  set_elt_property ("dot", dot_l->self_scm_);
+  set_elt_pointer ("dot", dot_l->self_scm_);
   dot_l->add_dependency (this);  
 }
 
 
+Rhythmic_head::Rhythmic_head (SCM s)
+  : Item (s)
+{
+}
index 131bf4bb637401addc37da0f11ee7b273c67c6bb..9fbf4f567d61c8d34da0f808f11e413ed28e16d6 100644 (file)
@@ -73,7 +73,7 @@ Script_column_engraver::process_acknowledged ()
 {
   if (!scol_p_ && script_l_arr_.size () > 1)
     {
-      scol_p_ = new Script_column;
+      scol_p_ = new Script_column (SCM_EOL);
       announce_element (Score_element_info (scol_p_, 0));
     }
 
index 35d9d0260492782d30aa9654e7924327ebe82692..c4123815d435e7080fe78dbb32fb2d043920886e 100644 (file)
@@ -19,15 +19,16 @@ Script_column::add_staff_sided (Item *i)
     return;
   
 
-  Group_interface gi (this, "scripts");
+  Pointer_group_interface gi (this, "scripts");
   gi.add_element (i);
   
   add_dependency (i);
 }
 
-Script_column::Script_column ()
+Script_column::Script_column (SCM s)
+  : Item (s)
 {
-  set_elt_property ("scripts", SCM_EOL);  
+  set_elt_pointer ("scripts", SCM_EOL);  
 }
 
 static int
@@ -45,7 +46,7 @@ Script_column::before_line_breaking ()
 {
   Drul_array<Link_array<Item> > arrs;
   Link_array<Item> staff_sided 
-    = Group_interface__extract_elements (this, (Item*)0, "scripts");
+    = Pointer_group_interface__extract_elements (this, (Item*)0, "scripts");
                                     
                                     
   for (int i=0; i < staff_sided.size (); i++)
index 3ea13a879a8180d362581563f72870c464eb8c28..7136ba6841659969a4b35b69de1446793777f4de 100644 (file)
@@ -70,7 +70,8 @@ Script_engraver::do_process_music()
                        l->articulation_str_.ch_C ()));
          continue;
        }
-      Script *p =new Script;
+      // todo -> use result of articulation-to-scriptdef directly as basic prop list.
+      Script *p =new Script (SCM_EOL);
       Side_position_interface stafy (p);
       
       
index 3e78d6acd8a4d2ecd2fff26dfd522d3c61d22db7..20c799cd9649ea7e5ecd0a07339be390c0107bf9 100644 (file)
 #include "paper-def.hh"
 #include "dimension-cache.hh"
 
+Script ::Script (SCM s)
+  : Item (s)
+{
+}
 
 Molecule
 Script::get_molecule(Direction d) const
index 295bef4824fa866176c26ac6224b0a8dc1add831..9ce1156d171bccdf9b29d9287e68eed29592a568 100644 (file)
@@ -12,6 +12,7 @@
 #include "paper-column.hh"
 #include "paper-def.hh"
 #include "dimensions.hh"
+#include "group-interface.hh"
 
 static Rod
 make_rod (Single_malt_grouping_item *l, Single_malt_grouping_item *r)
@@ -39,7 +40,7 @@ Separating_group_spanner::get_rods () const
 {
   Array<Rod> a;
   
-  for (SCM s = get_elt_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s))
     {
       /*
        Order of elements is reversed!
@@ -81,7 +82,7 @@ Separating_group_spanner::get_rods () const
   /*
     We've done our job, so we get lost. 
    */
-  for (SCM s = get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("elements"); gh_pair_p (s); s = gh_cdr (s))
     {
       Item * it =dynamic_cast<Item*>(unsmob_element (gh_car (s)));
       if (it && it->broken_b ())
@@ -100,14 +101,13 @@ Separating_group_spanner::get_rods () const
 void
 Separating_group_spanner::add_spacing_unit (Single_malt_grouping_item*i)
 {
-  set_elt_property ("elements",
-                   gh_cons (i->self_scm_,
-                            get_elt_property ("elements")));
+  Pointer_group_interface (this, "elements").add_element (i);
   add_dependency (i);
 }
 
 
-Separating_group_spanner::Separating_group_spanner ()
+Separating_group_spanner::Separating_group_spanner (SCM s)
+  : Spanner (s)  
 {
-  set_elt_property ("elements", SCM_EOL);
+  set_elt_pointer ("elements", SCM_EOL);
 }
index d6115db93c489b181280db3eeb3b17aad9f2723e..89edf59ca959950c3668ea54b9432c1bbfa107ae 100644 (file)
 #include "debug.hh"
 #include "note-column.hh"
 #include "translator-group.hh"
+#include "engraver.hh"
+
+class Slur_engraver :public Engraver {
+  Link_array<Span_req> requests_arr_;
+  Link_array<Span_req> new_slur_req_l_arr_;
+  Link_array<Slur> slur_l_stack_;
+  Link_array<Slur> 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);
+  
+};
 
 bool
 Slur_engraver::do_try_music (Music *req_l)
@@ -85,7 +106,7 @@ Slur_engraver::do_process_music()
        {
          // push a new slur onto stack.
          //(use temp. array to wait for all slur STOPs)
-         Slur * s_p =new Slur;
+         Slur * s_p =new Slur (SCM_EOL);
          
          requests_arr_.push (slur_req_l);
          start_slur_l_arr_.push (s_p);
index 13b2c7b7c8e6e77736f6727bae02ebfd6e28984a..f15b9a3bb8ef6144fcee18bc1217df81087fcd3a 100644 (file)
@@ -215,24 +215,25 @@ Slur_bezier_bow::fit_factor () const
   Slur
 */
 
-Slur::Slur ()
+Slur::Slur (SCM s)
+  : Spanner (s)
 {
   // URG
   dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0;
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
 
-  set_elt_property ("note-columns", SCM_EOL);
+  set_elt_pointer ("note-columns", SCM_EOL);
   set_elt_property ("control-points", SCM_EOL);
 }
 
 void
 Slur::add_column (Note_column*n)
 {
-  if (!gh_pair_p (n->get_elt_property ("note-heads")))
+  if (!gh_pair_p (n->get_elt_pointer ("note-heads")))
     warning (_ ("Putting slur over rest.  Ignoring."));
   else
     {
-      Group_interface (this, "note-columns").add_element (n);
+      Pointer_group_interface (this, "note-columns").add_element (n);
       add_dependency (n);
     }
 }
@@ -271,7 +272,7 @@ Direction
 Slur::get_default_dir () const
 {
   Link_array<Note_column> encompass_arr =
-    Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns");
   
   Direction d = DOWN;
   for (int i=0; i < encompass_arr.size (); i ++) 
@@ -289,7 +290,7 @@ void
 Slur::do_add_processing ()
 {
   Link_array<Note_column> encompass_arr =
-    Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns");
 
   if (encompass_arr.size ())
     {
@@ -357,7 +358,7 @@ void
 Slur::set_extremities ()
 {
   Link_array<Note_column> encompass_arr =
-    Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns");
 
   if (!encompass_arr.size ())
     {
@@ -517,7 +518,7 @@ int
 Slur::cross_staff_count ()const
 {
   Link_array<Note_column> encompass_arr =
-    Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns");
 
   int k=0;
 
@@ -534,7 +535,7 @@ Array<Offset>
 Slur::get_encompass_offset_arr () const
 {
   Link_array<Note_column> encompass_arr =
-    Group_interface__extract_elements (this, (Note_column*)0, "note-columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns");
   
   Array<Offset> offset_arr;
 
index 83b3ab1337ab343124bdc2b1c46f839b06d0c745..5e05094bdb132104b7e0da51841b7037519b947a 100644 (file)
@@ -34,7 +34,7 @@ Spacing_engraver::Spacing_engraver()
 void
 Spacing_engraver::do_creation_processing ()
 {
-  spacing_p_  =new Spacing_spanner;
+  spacing_p_  =new Spacing_spanner (SCM_EOL);
   spacing_p_->set_bound (LEFT, get_staff_info ().command_pcol_l ());  
   announce_element (Score_element_info (spacing_p_, 0));
 }
index 4b413ec6a8cc61d06498e992ef88e0ff93e1dad3..d9de35e5f34e7edf87deb5009901cd4de2437109 100644 (file)
@@ -16,7 +16,8 @@
 #include "line-of-score.hh"
 #include "misc.hh"
 
-Spacing_spanner::Spacing_spanner ()
+Spacing_spanner::Spacing_spanner (SCM s)
+  : Spanner (s)
 {
   set_extent_callback (0, X_AXIS);
   set_extent_callback (0, Y_AXIS);  
index 6b9db20f74142704b2a4e07193a918dc28bdc475..f2659b09230e6ad55c1202e5e994e141c27c44f5 100644 (file)
@@ -31,7 +31,7 @@ public:
 protected:
   virtual void acknowledge_element (Score_element_info);
   virtual void do_pre_move_processing();
-  virtual Span_bar* get_span_bar_p() const;
+  virtual Span_bar* get_span_bar_p(SCM) const;
 };
 
 
@@ -41,9 +41,10 @@ Span_bar_engraver::Span_bar_engraver()
 }
 
 Span_bar*
-Span_bar_engraver::get_span_bar_p() const
+Span_bar_engraver::get_span_bar_p(SCM s) const
 {
-  return new Span_bar;
+  Span_bar * sp= new Span_bar (s);
+  return sp;
 }
 
 
@@ -58,23 +59,14 @@ Span_bar_engraver::acknowledge_element (Score_element_info i)
 
       if (bar_l_arr_.size() >= 2 && !spanbar_p_) 
        {
-         spanbar_p_ = get_span_bar_p();
+         spanbar_p_ = get_span_bar_p( bar_l_arr_[0]->property_alist_);
          spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS);
          spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
 
-         SCM v = bar_l_arr_[0]->get_elt_property ("visibility-lambda");
-         if (gh_procedure_p (v))
-           spanbar_p_->set_elt_property ("visibility-lambda",v);
-
-         spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS);
          announce_element (Score_element_info (spanbar_p_,0));
-         if (!gh_string_p (spanbar_p_->get_elt_property ("glyph")))
-           spanbar_p_-> set_elt_property ("glyph",
-                                          bar_l_arr_[0]->get_elt_property ("glyph"));
        }
     }
 }
-
 void
 Span_bar_engraver::do_pre_move_processing()
 {
index c1aba6ca96f8effbb13c929ce192dc440be28fee..c74c0bcfb7b8ec1a2778c05d80c4cf59cc6a2d07 100644 (file)
@@ -23,3 +23,9 @@ Staff_bar::get_bar_size () const
     }
 }
 
+
+Staff_bar::Staff_bar (SCM s)
+  : Bar (s)
+{
+
+}
index 4bed0bf75264e00da63edfe0fbd094aa1f2112c9..e5bc48cd622a82126bd16bcbd6be411fdcb2fe08 100644 (file)
@@ -1,5 +1,5 @@
 /*
-  staff-sym-reg.cc -- implement Staff_symbol_engraver
+  staff-symbol-engraver.cc -- implement Staff_symbol_engraver
 
   source file of the GNU LilyPond music typesetter
 
@@ -46,8 +46,9 @@ Staff_symbol_engraver::Staff_symbol_engraver()
 void
 Staff_symbol_engraver::do_creation_processing()
 {
-  span_p_ = new Staff_symbol;
+  span_p_ = new Staff_symbol (get_property ("staffSymbolBasicProperties"));
   span_p_->set_bound(LEFT,get_staff_info().command_pcol_l ());
+
   announce_element (Score_element_info (span_p_, 0));
 }
 
@@ -70,7 +71,7 @@ Staff_symbol_engraver::do_removal_processing()
 void
 Staff_symbol_engraver::acknowledge_element (Score_element_info s)
 {
-  s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm_);
+  s.elem_l_->set_elt_pointer ("staff-symbol", span_p_->self_scm_);
   s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH 
 }
 
index 4419d8dc126ea043d2a587eb71e1fd070f75c6bc..50399d33b5eeb7bd272e1fa6d3c60d6423e824b2 100644 (file)
@@ -60,5 +60,11 @@ Staff_symbol::line_count () const
 Real
 Staff_symbol::staff_space ()const
 {
-  return gh_scm2double (get_elt_property ("staff-space"));
+  return gh_scm2double (get_elt_property ("staff-space")) *
+    paper_l ()->get_var ("staffspace");
+}
+
+Staff_symbol::Staff_symbol( SCM s)
+  : Spanner (s)
+{
 }
index d883849bc664684c9fa4f941acb9226b82a679ca..583d777c5c9a16137821ffff5057620628d7a6d0 100644 (file)
@@ -132,7 +132,7 @@ Stem::type_i () const
 Score_element*
 Stem::support_head ()const
 {
-  SCM h = get_elt_property ("support-head");
+  SCM h = get_elt_pointer ("support-head");
   Score_element * nh = unsmob_element (h);
   if (nh)
     return nh;
@@ -142,7 +142,7 @@ Stem::support_head ()const
        UGH.
        */
       
-      return unsmob_element (gh_car (get_elt_property ("heads")));
+      return unsmob_element (gh_car (get_elt_pointer ("heads")));
     }
   else
     return first_head ();
@@ -152,7 +152,7 @@ Stem::support_head ()const
 int
 Stem::heads_i ()const
 {
-  Group_interface gi (this, "heads");
+  Pointer_group_interface gi (this, "heads");
   return gi.count ();
 }
 
@@ -179,7 +179,7 @@ Stem::extremal_heads () const
   Drul_array<Note_head *> exthead;
   exthead[LEFT] = exthead[RIGHT] =0;
   
-  for (SCM s = get_elt_property ("heads"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("heads"); gh_pair_p (s); s = gh_cdr (s))
     {
       Note_head * n = dynamic_cast<Note_head*> (unsmob_element (gh_car (s)));
       Staff_symbol_referencer_interface si (n);
@@ -202,10 +202,10 @@ Stem::extremal_heads () const
 void
 Stem::add_head (Rhythmic_head *n)
 {
-  n->set_elt_property ("stem", this->self_scm_);
+  n->set_elt_pointer ("stem", this->self_scm_);
   n->add_dependency (this);
 
-  Group_interface gi (this);
+  Pointer_group_interface gi (this);
   if (Note_head *nh = dynamic_cast<Note_head *> (n))
     gi.name_ = "heads";
   else
@@ -214,10 +214,11 @@ Stem::add_head (Rhythmic_head *n)
   gi.add_element (n);
 }
 
-Stem::Stem ()
+Stem::Stem (SCM s)
+  : Item (s)
 {
-  set_elt_property ("heads", SCM_EOL);
-  set_elt_property ("rests", SCM_EOL);
+  set_elt_pointer ("heads", SCM_EOL);
+  set_elt_pointer ("rests", SCM_EOL);
 
   add_offset_callback ( &Stem::off_callback, X_AXIS);
 }
@@ -338,7 +339,7 @@ Stem::position_noteheads ()
     return;
   
   Link_array<Score_element> heads =
-    Group_interface__extract_elements (this, (Score_element*)0, "heads");
+    Pointer_group_interface__extract_elements (this, (Score_element*)0, "heads");
 
   heads.sort (compare_position);
   Direction dir =get_direction ();
@@ -443,7 +444,7 @@ Stem::dim_callback (Score_element const *se, Axis )
   Stem * s = dynamic_cast<Stem*> ((Score_element*)se);
   
   Interval r (0, 0);
-  if (unsmob_element (s->get_elt_property ("beam")) || abs (s->flag_i ()) <= 2)
+  if (unsmob_element (s->get_elt_pointer ("beam")) || abs (s->flag_i ()) <= 2)
     ;  // TODO!
   else
     {
@@ -517,7 +518,7 @@ Stem::off_callback (Score_element const* se, Axis)
 Beam*
 Stem::beam_l ()const
 {
-  SCM b=  get_elt_property ("beam");
+  SCM b=  get_elt_pointer ("beam");
   return dynamic_cast<Beam*> (unsmob_element (b));
 }
 
index a6388d658ec4d6a0030fd4c4ae1edbe0c19cfbb7..f94867bbf41d070e0d4b525e9f485d80a6b5c316 100644 (file)
@@ -60,3 +60,7 @@ Sustain_pedal::do_brew_molecule () const
 }
 
 
+
+Sustain_pedal ::Sustain_pedal(SCM s )
+  : Item (s)
+{}
index caa138477d667fde98a0101abc5bed05171a62ee..4841e19a48c914951e11e4e90daacbb1101b1231 100644 (file)
@@ -39,7 +39,7 @@ System_start_delimiter_engraver::acknowledge_element (Score_element_info inf)
        don't add as Axis_group_interface (delim_).add_element (),
        because that would set the parent as well */
          
-      Group_interface (delim_).add_element (inf.elem_l_);
+      Pointer_group_interface (delim_).add_element (inf.elem_l_);
     }
   else if (System_start_delimiter * b = dynamic_cast<System_start_delimiter *> (inf.elem_l_))
     {
@@ -64,7 +64,7 @@ System_start_delimiter_engraver::System_start_delimiter_engraver()
 void
 System_start_delimiter_engraver::do_creation_processing()
 {
-  delim_ = new System_start_delimiter;
+  delim_ = new System_start_delimiter (get_property ("basicSystemStartDelimiterProperties"));
   delim_->set_bound (LEFT, get_staff_info ().command_pcol_l ());
 
   /*
@@ -87,8 +87,6 @@ System_start_delimiter_engraver::do_removal_processing ()
   SCM collapse = get_property ("bracketCollapseHeight");
   if (gh_number_p (collapse))
     delim_->set_elt_property ("collapse-height", collapse);
-  else
-    delim_->set_elt_property ("collapse-height", gh_double2scm (1));
       
   delim_->set_bound (RIGHT, get_staff_info ().command_pcol_l ());
   typeset_element (delim_);
index 928a1a99245c4f808b6b6ddb778984979d26d3cb..aeb2bfd9c18b547c79648b87566738848cd143aa 100644 (file)
@@ -38,10 +38,11 @@ System_start_delimiter::staff_bracket (Real height) const
   return mol;
 }
 
-System_start_delimiter::System_start_delimiter ()
+System_start_delimiter::System_start_delimiter (SCM s)
+  : Spanner (s)
 {
   set_extent_callback (0, Y_AXIS);
-  Group_interface (this).set_interface();
+  Pointer_group_interface (this).set_interface();
 }
 
 Molecule
@@ -56,7 +57,7 @@ System_start_delimiter::after_line_breaking ()
 {
   SCM   gl = get_elt_property ("glyph");
   
-  if (scm_ilength (get_elt_property ("elements")) <=  1 && gl == ly_symbol2scm ("bar-line"))
+  if (scm_ilength (get_elt_pointer ("elements")) <=  1 && gl == ly_symbol2scm ("bar-line"))
     {
       set_elt_property ("transparent", SCM_BOOL_T);
       set_extent_callback (0, X_AXIS);
index 7c1e15c829e5de555c6cd414139cdf3870407e5b..a3d72332f9f13b6ce1b623d8f9f6099d877cd14b 100644 (file)
@@ -78,7 +78,7 @@ Text_engraver::do_process_music ()
     {
       Text_script_req * r = reqs_[i];
 
-      Text_item *text = new Text_item;
+      Text_item *text = new Text_item (SCM_EOL);
       Side_position_interface stafy (text);
 
       SCM axisprop = get_property ("scriptHorizontal");
index 9eb30473566fe2bf33bb221055c4a691f58429a2..9e3be5ce81ac7d5bd9150d20eabc4e9e558c8e30 100644 (file)
 #include "lookup.hh"
 #include "staff-symbol-referencer.hh"
 
+Text_item::Text_item (SCM s)
+  : Item (s)
+{
+  
+}
+
 Molecule 
 Text_item::do_brew_molecule () const
 {
index 78f398d1e0c4d996fbbcc212aaef65c1c81e357b..146e94d3a107f66c795b2a48b5525684614e6ce3 100644 (file)
 #include "directional-element-interface.hh"
 #include "note-head.hh"
 
-Tie_column::Tie_column ()
+Tie_column::Tie_column (SCM s)
+  : Spanner (s)
 {
-  set_elt_property ("ties", SCM_EOL);
+  set_elt_pointer ("ties", SCM_EOL);
   set_extent_callback (0, X_AXIS);
   set_extent_callback (0, Y_AXIS);  
   set_elt_property ("transparent", SCM_BOOL_T);
@@ -24,14 +25,14 @@ Tie_column::Tie_column ()
 void
 Tie_column::add_tie (Tie *s)
 {
-  Group_interface g (this, "ties");
+  Pointer_group_interface g (this, "ties");
   if (!g.count ())
     {
       set_bound (LEFT, s->head (LEFT));
       set_bound (RIGHT, s->head (RIGHT));
     }
   
-  group (this, "ties").add_element (s);
+  Pointer_group_interface (this, "ties").add_element (s);
   s->add_dependency (this);
 }
 
@@ -56,7 +57,7 @@ void
 Tie_column::set_directions ()
 {
   Link_array<Tie> s =
-    Group_interface__extract_elements (this, (Tie*)0, "ties");
+    Pointer_group_interface__extract_elements (this, (Tie*)0, "ties");
 
 
   Direction d = directional_element (this).get ();
index 273d66843ea6aba0a14dbd5483300402a3d86f2a..b507048eed0e0b39e5b8cdb954887b730521f123 100644 (file)
@@ -173,7 +173,7 @@ Tie_engraver::process_acknowledged ()
          
          SCM pair = gh_list_ref (head_list, gh_int2scm (i/2));
          
-         Tie * p = new Tie;
+         Tie * p = new Tie (SCM_EOL);
          p->set_head (LEFT, dynamic_cast<Item*> (unsmob_element (gh_car (pair))));
          p->set_head (RIGHT, dynamic_cast<Item*> (unsmob_element (gh_cdr (pair))));
          
@@ -182,7 +182,7 @@ Tie_engraver::process_acknowledged ()
        }
       else for (SCM s = head_list; gh_pair_p (s); s = gh_cdr (s))
        {
-         Tie * p = new Tie;
+         Tie * p = new Tie (SCM_EOL);
          p->set_head (LEFT, dynamic_cast<Item*> (unsmob_element (gh_caar (s))));
          p->set_head (RIGHT, dynamic_cast<Item*> (unsmob_element (gh_cdar (s))));
          
@@ -196,7 +196,7 @@ Tie_engraver::process_acknowledged ()
        }
       else if (tie_p_arr_.size () > 1 && !tie_column_p_)
        {
-         tie_column_p_ = new Tie_column;
+         tie_column_p_ = new Tie_column (SCM_EOL);
          for (int i = tie_p_arr_.size (); i--; )
            tie_column_p_->add_tie (tie_p_arr_ [i]);
          announce_element (Score_element_info (tie_column_p_, 0));
index 2b0e032b7c835688d4df01b1657a31a3829841dd..daf09ecdab02b3edc1f04437dcf145fc96c30a92 100644 (file)
@@ -24,15 +24,16 @@ void
 Tie::set_head (Direction d, Item * head_l)
 {
   assert (!head (d));
-  index_set_cell (get_elt_property ("heads"), d, head_l->self_scm_);
+  index_set_cell (get_elt_pointer ("heads"), d, head_l->self_scm_);
   
   set_bound (d, head_l);
   add_dependency (head_l);
 }
 
-Tie::Tie()
+Tie::Tie(SCM s)
+  : Spanner (s)
 {
-  set_elt_property ("heads", gh_cons (SCM_EOL, SCM_EOL));
+  set_elt_pointer ("heads", gh_cons (SCM_EOL, SCM_EOL));
   dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0;
   dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
 
@@ -41,7 +42,7 @@ Tie::Tie()
 Note_head* 
 Tie::head (Direction d) const
 {
-  SCM c = get_elt_property ("heads");
+  SCM c = get_elt_pointer ("heads");
   c = index_cell (c, d);
 
   return dynamic_cast<Note_head*> (unsmob_element (c));  
@@ -87,8 +88,8 @@ Tie::do_add_processing()
       new_head_drul[d] = head((Direction)-d);
   } while (flip(&d) != LEFT);
 
-  index_set_cell (get_elt_property ("heads"), LEFT, new_head_drul[LEFT]->self_scm_ );
-  index_set_cell (get_elt_property ("heads"), RIGHT, new_head_drul[RIGHT]->self_scm_ );
+  index_set_cell (get_elt_pointer ("heads"), LEFT, new_head_drul[LEFT]->self_scm_ );
+  index_set_cell (get_elt_pointer ("heads"), RIGHT, new_head_drul[RIGHT]->self_scm_ );
 }
 
 void
index 6a4a1deed75fc85ea90c674c21db68529c493346..77f1e75e943d6abe7854924f32e809cb31cb7001 100644 (file)
@@ -35,11 +35,11 @@ Time_signature_engraver::do_process_music()
   Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
   if (req)
     {
-      time_signature_p_ = new Time_signature;
+      time_signature_p_ = new Time_signature (get_property ("basicTimeSignatureProperties"));
+
       time_signature_p_->set_elt_property ("fraction",
                                           gh_cons (gh_int2scm (req->beats_i_),
                                                    gh_int2scm (req->one_beat_i_))); 
-      time_signature_p_->set_elt_property ("break-align-symbol", ly_symbol2scm(  "Time_signature"));
     }
 
   
index 4a67538f35709194967b29e2136a6665a9905bae..15d419a94f5a8eb104e133c2ac1f66c5cbf3b8be 100644 (file)
 #include "paper-def.hh"
 #include "lookup.hh"
 
-Time_signature::Time_signature ()
+Time_signature::Time_signature (SCM s)
+  :  Item (s)
 {
-  set_elt_property ("breakable", SCM_BOOL_T);
+
 }
 
 // ugh.!
index 1dccd22122cff426a2287cdaa7ef5893d88b7420..04918610d339c1f3651c1d53a7752e0d1086404c 100644 (file)
@@ -73,7 +73,7 @@ Tuplet_engraver::do_process_music ()
       if (i < started_span_p_arr_.size () && started_span_p_arr_[i])
        continue;
 
-      Tuplet_spanner* glep = new Tuplet_spanner;
+      Tuplet_spanner* glep = new Tuplet_spanner (SCM_EOL);
       if (i >= started_span_p_arr_.size ())
        started_span_p_arr_.push (glep);
       else
index 3bafebeec82dc4bc32b8f4dac2e7407010cc0f45..70ad67dd4efa425d7af531451c3b696aed687a3b 100644 (file)
 #include "directional-element-interface.hh"
 
 
-Tuplet_spanner::Tuplet_spanner ()
+Tuplet_spanner::Tuplet_spanner (SCM s)
+  : Spanner (s)
 {
-  set_elt_property ("beams", SCM_EOL);
-  set_elt_property ("columns", SCM_EOL);
+  set_elt_pointer ("beams", SCM_EOL);
+  set_elt_pointer ("columns", SCM_EOL);
 
   // ugh.
   set_elt_property ("delta-y", gh_int2scm (0));
@@ -60,10 +61,10 @@ Tuplet_spanner::do_brew_molecule () const
   else if (bracket == ly_symbol2scm ("if-no-beam"))
     number_visibility = !par_beam;
   
-  if (gh_pair_p (get_elt_property ("columns")))
+  if (gh_pair_p (get_elt_pointer ("columns")))
     {
       Link_array<Note_column> column_arr=
-       Group_interface__extract_elements (this, (Note_column*)0, "columns");
+       Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns");
        
       Real ncw = column_arr.top ()->extent(X_AXIS).length ();
       Real w = spanner_length () + ncw;
@@ -114,10 +115,10 @@ Tuplet_spanner::do_brew_molecule () const
 void
 Tuplet_spanner::do_add_processing ()
 {
-  if (gh_pair_p (get_elt_property ("columns")))
+  if (gh_pair_p (get_elt_pointer ("columns")))
     {
       Link_array<Note_column> column_arr=
-       Group_interface__extract_elements (this, (Note_column*)0, "columns");
+       Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns");
       
       set_bound (LEFT, column_arr[0]);
       set_bound (RIGHT, column_arr.top ());  
@@ -133,10 +134,10 @@ void
 Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const
 {
   Link_array<Note_column> column_arr=
-    Group_interface__extract_elements (this, (Note_column*)0, "columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns");
 
 
-  Score_element * common = common_refpoint (get_elt_property ("columns"), Y_AXIS);
+  Score_element * common = common_refpoint (get_elt_pointer ("columns"), Y_AXIS);
   
   Direction d = directional_element (this).get ();
 
@@ -190,7 +191,7 @@ void
 Tuplet_spanner::calc_dy (Real * dy) const
 {
   Link_array<Note_column> column_arr=
-    Group_interface__extract_elements (this, (Note_column*)0, "columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns");
 
  
   Direction d = directional_element (this).get ();
@@ -202,7 +203,7 @@ void
 Tuplet_spanner::after_line_breaking ()
 {
   Link_array<Note_column> column_arr=
-    Group_interface__extract_elements (this, (Note_column*)0, "columns");
+    Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns");
 
   if (!column_arr.size ())
     {
@@ -226,9 +227,9 @@ Tuplet_spanner::after_line_breaking ()
 
   translate_axis (offset, Y_AXIS);
   
-  if (scm_ilength (get_elt_property ("beams")) == 1)
+  if (scm_ilength (get_elt_pointer ("beams")) == 1)
     {
-      SCM bs = get_elt_property ("beams");
+      SCM bs = get_elt_pointer ("beams");
       Score_element *b = unsmob_element (gh_car (bs));
       Beam * beam_l = dynamic_cast<Beam*> (b);
       if (!broken_b () 
@@ -252,7 +253,7 @@ Tuplet_spanner::get_default_dir () const
     }
 
   d = UP ;
-  for (SCM s = get_elt_property ("columns"); gh_pair_p (s); s = gh_cdr (s))
+  for (SCM s = get_elt_pointer ("columns"); gh_pair_p (s); s = gh_cdr (s))
     {
       Score_element * sc = unsmob_element (gh_car (s));
       Note_column * nc = dynamic_cast<Note_column*> (sc);
@@ -270,14 +271,14 @@ void
 Tuplet_spanner::add_beam (Beam *b)
 {
   add_dependency (b);
-  Group_interface gi (this, "beams");
+  Pointer_group_interface gi (this, "beams");
   gi.add_element (b);
 }
 
 void
 Tuplet_spanner::add_column (Note_column*n)
 {
-  Group_interface gi (this, "columns");
+  Pointer_group_interface gi (this, "columns");
   gi.add_element (n);
 
   add_dependency (n);
index 9718a8a53b51b7d4d3e825c90ad2310e7905e0e8..0a9c31929462fc8a5f3c3f92ad8e206e989a1c84 100644 (file)
@@ -37,7 +37,7 @@ Vertical_align_engraver::Vertical_align_engraver()
 void
 Vertical_align_engraver::do_creation_processing()
 {
-  valign_p_ =new Spanner; //Axis_align_spanner
+  valign_p_ =new Spanner (SCM_EOL); // todo -> basic props
   Align_interface (valign_p_).set_interface ();
   Align_interface (valign_p_).set_axis (Y_AXIS);
   valign_p_->set_elt_property ("stacking-dir",
index d4604f151a124d47ba85dfb1592da3c2918bd9a3..0ad6860ade0ee05dabe787e277f65e3c103e4277 100644 (file)
 #include "side-position-interface.hh"
 #include "directional-element-interface.hh"
 
-Volta_spanner::Volta_spanner ()
+Volta_spanner::Volta_spanner (SCM s)
+  : Spanner (s)
 {
-  set_elt_property ("bars", SCM_EOL);
+  set_elt_pointer ("bars", SCM_EOL);
   Side_position_interface (this).set_axis (Y_AXIS);
   directional_element (this).set (UP);
 }
@@ -46,7 +47,7 @@ Volta_spanner::do_brew_molecule () const
   Molecule  mol;
 
   Link_array<Bar> bar_arr
-    = Group_interface__extract_elements (this, (Bar*)0, "bars");
+    = Pointer_group_interface__extract_elements (this, (Bar*)0, "bars");
 
   if (!bar_arr.size ())
     return mol;
@@ -100,7 +101,7 @@ Volta_spanner::do_add_processing ()
 {
 
   Link_array<Bar> bar_arr
-    = Group_interface__extract_elements (this, (Bar*)0, "bars");
+    = Pointer_group_interface__extract_elements (this, (Bar*)0, "bars");
 
   if (bar_arr.size ())
     {
@@ -118,7 +119,7 @@ Volta_spanner::after_line_breaking ()
 void
 Volta_spanner::add_bar  (Bar* b)
 {
-  Group_interface gi(this, "bars");
+  Pointer_group_interface gi(this, "bars");
   gi.add_element (b);
 
   Side_position_interface (this).add_support (b);