]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/global-context.hh
Issue 5024: Rework the Preinit framework into something simpler
[lilypond.git] / lily / include / global-context.hh
index 49436bcf87b04277b1bf8afa52d86d24c0bf4f44..e0aca0a7d6cc35aeea203bb3c524e985eedd80ba 100644 (file)
 #include "context.hh"
 #include "pqueue.hh"
 
-class Global_context : public Context
+struct Preinit_Global_context
 {
-  PQueue<Moment> extra_mom_pq_;
   Output_def *output_def_;
+  Preinit_Global_context ();
+};
+
+class Global_context : Preinit_Global_context, public Context
+{
+  PQueue<Moment> extra_mom_pq_;
+  virtual void derived_mark () const;
 
   DECLARE_CLASSNAME (Global_context);
 
@@ -42,19 +48,12 @@ public:
   void apply_finalizations ();
   void add_finalization (SCM);
 
-  DECLARE_LISTENER (prepare);
+  void prepare (SCM);
   virtual SCM get_output ();
   virtual Output_def *get_output_def () const;
   virtual Moment now_mom () const;
   virtual Context *get_default_interpreter (const string &context_id = "");
 
-  static Global_context *unsmob (SCM x) {
-    return dynamic_cast<Global_context *> (Context::unsmob (x));
-  }
-  static bool is_smob (SCM x) {
-    return Context::is_smob (x) && unsmob (x);
-  }
-
   Moment previous_moment () const;
 protected:
   Moment prev_mom_;