+#include "item.hh"
+#include "international.hh"
+#include "misc.hh"
+#include "moment.hh"
+#include "stream-event.hh"
+#include "warn.hh"
+
+#include "translator.icc"
+
+/**
+ generate time_signatures.
+*/
+class Time_signature_engraver : public Engraver
+{
+ Item *time_signature_;
+ SCM last_time_fraction_;
+ SCM time_cause_;
+
+protected:
+ virtual void derived_mark () const;
+ void stop_translation_timestep ();
+ void process_music ();
+public:
+ TRANSLATOR_DECLARATIONS (Time_signature_engraver);
+ void listen_time_signature (Stream_event *);
+};
+
+void
+Time_signature_engraver::derived_mark () const
+{
+ scm_gc_mark (last_time_fraction_);
+ scm_gc_mark (time_cause_);
+}
+
+Time_signature_engraver::Time_signature_engraver (Context *c)
+ : Engraver (c)
+{
+ time_signature_ = 0;
+ time_cause_ = SCM_EOL;
+ last_time_fraction_ = SCM_BOOL_F;