return 1;
}
+void
+Context::derived_mark () const
+{
+}
+
SCM
Context::mark_smob () const
{
if (events_below_)
scm_gc_mark (events_below_->self_scm ());
+ derived_mark ();
+
return properties_scm_;
}
#include "output-def.hh"
#include "warn.hh"
+void
+Global_context::pre_init ()
+{
+ output_def_ = 0;
+}
+
Global_context::Global_context (Output_def *o)
: Context ()
{
accepts_list_ = scm_list_1 (default_child_);
}
+void
+Global_context::derived_mark () const
+{
+ if (output_def_)
+ scm_gc_mark (output_def_->self_scm ());
+}
+
Output_def *
Global_context::get_output_def () const
{
Stream_event *infant_event_;
protected:
+ virtual void derived_mark () const;
Context *daddy_context_;
/* The used Context_def */
SCM definition_;
#include "context.hh"
#include "pqueue.hh"
-class Global_context : public Context
+class Global_context : public Preinit<Global_context>, public Context
{
PQueue<Moment> extra_mom_pq_;
Output_def *output_def_;
+ virtual void derived_mark () const;
DECLARE_CLASSNAME (Global_context);
friend class Output_def;
public:
+ void pre_init ();
Global_context (Output_def *);
int get_moments_left () const;
Moment sneaky_insert_extra_moment (Moment);