]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/spanner.hh
lilypond-manuals.css: edit color scheme and some spacing
[lilypond.git] / lily / include / spanner.hh
index 788b0e46ee46e1ef4889862b58d8c1bd4ed5a04e..a5ecd3dae92c451a259a45b2fa92f2702d63c651 100644 (file)
     is absolutely necessary for beams, since they have to adjust the
     length of stems of notes they encompass.
 */
-class Spanner : public Grob
+
+struct Preinit_Spanner
 {
   Drul_array<Item *> spanned_drul_;
+  SCM pure_property_cache_;
+  Preinit_Spanner ();
+};
+
+class Spanner : Preinit_Spanner, public Grob
+{
   vsize break_index_;
 
   DECLARE_CLASSNAME (Spanner);
@@ -52,13 +59,6 @@ public:
   DECLARE_SCHEME_CALLBACK (bounds_width, (SCM));
   DECLARE_SCHEME_CALLBACK (kill_zero_spanned_time, (SCM));
 
-  static Spanner *unsmob (SCM s) {
-    return dynamic_cast <Spanner *> (Grob::unsmob (s));
-  }
-  static bool is_smob (SCM s) {
-    return Grob::is_smob (s) && unsmob (s);
-  }
-
   vector<Spanner *> broken_intos_;
 
   vsize get_break_index () const;
@@ -83,15 +83,12 @@ public:
   static bool less (Spanner *const &, Spanner *const &);
   virtual Grob *find_broken_piece (System *) const;
   virtual void derived_mark () const;
-  DECLARE_GROB_INTERFACE ();
   virtual System *get_system () const;
 
   SCM get_cached_pure_property (SCM sym, int start, int end);
   void cache_pure_property (SCM sym, int start, int end, SCM value);
 
 protected:
-  SCM pure_property_cache_;
-
   void set_my_columns ();
   virtual Grob *clone () const;
   virtual void do_break_processing ();