#include "engraver.hh"
-class Scheme_engraver : public Engraver
+struct Preinit_Scheme_engraver {
+ SCM initialize_function_;
+ SCM finalize_function_;
+ SCM precomputable_methods_ [TRANSLATOR_METHOD_PRECOMPUTE_COUNT];
+
+ // hashq table of interface-symbol -> scheme-function
+ Drul_array<SCM> interface_acknowledger_hash_;
+
+ // Alist of listened-symbol . scheme-function
+ SCM per_instance_listeners_;
+ Preinit_Scheme_engraver ();
+};
+
+class Scheme_engraver : Preinit_Scheme_engraver, public Engraver
{
- void init_from_scheme (SCM definition);
public:
TRANSLATOR_FAMILY_DECLARATIONS (Scheme_engraver);
- Scheme_engraver (SCM definition);
+ Scheme_engraver (SCM definition, Context *c);
protected:
~Scheme_engraver ();
}
SCM init_acknowledgers (SCM alist);
- // For now no description. In future, something derived from the
- // definition might make sense.
- SCM translator_description () const { return SCM_EOL; }
bool must_be_last_;
-
- SCM initialize_function_;
- SCM finalize_function_;
- SCM precomputable_methods_ [TRANSLATOR_METHOD_PRECOMPUTE_COUNT];
-
- // hashq table of interface-symbol -> scheme-function
- Drul_array<SCM> interface_acknowledger_hash_;
-
- // Alist of listened-symbol . scheme-function
- SCM per_instance_listeners_;
};
#endif /* SCHEME_ENGRAVER_HH */