From 2da17bb3dcca4211b12f210e46fc83d044ec487e Mon Sep 17 00:00:00 2001
From: fred <fred>
Date: Tue, 26 Mar 2002 23:22:12 +0000
Subject: [PATCH] lilypond-1.3.55

---
 lily/align-interface.cc         |  6 +++---
 lily/axis-group-engraver.cc     |  2 +-
 lily/engraver.cc                |  2 +-
 lily/grace-engraver-group.cc    |  4 ++--
 lily/group-interface.cc         | 21 ---------------------
 lily/include/group-interface.hh | 19 +++++++++++++------
 lily/include/paper-column.hh    |  2 +-
 lily/include/rhythmic-head.hh   |  1 +
 lily/include/slur-engraver.hh   | 20 --------------------
 lily/include/spanner.hh         |  2 +-
 lily/item.cc                    | 10 ++++++----
 lily/property-engraver.cc       |  2 +-
 lily/scm-hash.cc                |  2 +-
 lily/side-position-interface.cc | 17 ++++++++---------
 lily/staff-symbol-referencer.cc |  9 ++++++---
 15 files changed, 45 insertions(+), 74 deletions(-)

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<Score_element> elems;
   Link_array<Score_element> 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 <hanwen@cs.uu.nl>
   
  */
+
 #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<class T>
 Link_array<T>
-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<T> 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<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);
-  
-};
 
 #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, "#<Scheme_hash_table 0x%0x ", s);
   scm_puts (str, p);      
   Scheme_hash_table *me = SMOB_TO_TYPE(Scheme_hash_table,s);
-  for (Scm_stl_map ::const_iterator i = me->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<Staff_symbol* > (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;
 }
-- 
2.39.5