]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/spanner.hh
Issue 5024: Rework the Preinit framework into something simpler
[lilypond.git] / lily / include / spanner.hh
index b67dde0843108730489a6f33078a9555ceb83314..a5ecd3dae92c451a259a45b2fa92f2702d63c651 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1996--2011 Han-Wen Nienhuys
+  Copyright (C) 1996--2015 Han-Wen Nienhuys
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
     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);
@@ -76,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 ();