X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fspanner.hh;h=a5ecd3dae92c451a259a45b2fa92f2702d63c651;hb=6233e12249f74e19aff5ee5afa66e81c0f8b7259;hp=788b0e46ee46e1ef4889862b58d8c1bd4ed5a04e;hpb=d2762a4f1add2bb04d6fc34d3c7ae03eeb7d500f;p=lilypond.git diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 788b0e46ee..a5ecd3dae9 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -39,9 +39,16 @@ 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 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 (Grob::unsmob (s)); - } - static bool is_smob (SCM s) { - return Grob::is_smob (s) && unsmob (s); - } - vector 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 ();