It does not make sense for them to be instantiable.
{
return unsmob<Grob> (obj) || unsmob<Stream_event> (obj) || scm_is_null (obj);
}
-
-#include "translator.icc"
-
-ADD_TRANSLATOR (Engraver,
- /* doc */
- "Base class for engravers. Does nothing, so it is not used.",
-
- /* create */
- "",
-
- /* read */
- "",
-
- /* write */
- ""
- );
-
/**
override other ctor
*/
- TRANSLATOR_DECLARATIONS (Engraver);
+ DECLARE_CLASSNAME (Engraver);
+ Engraver ();
};
#define make_item(x, cause) internal_make_item (ly_symbol2scm (x), cause, x, __FILE__, __LINE__, __FUNCTION__)
class Performer : public Translator
{
public:
- VIRTUAL_COPY_CONSTRUCTOR (Translator, Performer);
+ DECLARE_CLASSNAME (Performer);
friend class Performer_group;
Performer_group *get_daddy_performer () const;
private:
void acknowledge_grob_by_hash (Grob_info info, SCM iface_function_hash);
void init_acknowledgers (SCM alist, SCM *hash);
+ // For now no description. In future, something derived from the
+ // definition might make sense.
+ SCM translator_description () const { return SCM_EOL; }
DECLARE_ACKNOWLEDGER (grob);
DECLARE_END_ACKNOWLEDGER (grob);
public:
Context *context () const { return daddy_context_; }
+ Translator ();
Translator (Translator const &);
SCM internal_get_property (SCM symbol) const;
Context *get_score_context () const;
Global_context *get_global_context () const;
- TRANSLATOR_DECLARATIONS (Translator);
+ DECLARE_CLASSNAME (Translator);
+ virtual Translator *clone () const = 0;
+ virtual void fetch_precomputable_methods (Callback methods[]) = 0;
+ virtual SCM get_listener_list () const = 0;
+ virtual SCM translator_description () const = 0;
+ virtual Grob_info_callback get_acknowledger (SCM sym) = 0;
+ virtual Grob_info_callback get_end_acknowledger (SCM sym) = 0;
protected: // should be private.
Context *daddy_context_;
DEFINE_ACKNOWLEDGERS(classname) \
#define ADD_TRANSLATOR(classname, desc, grobs, read, write) \
- ADD_TRANSLATOR_FAMILY (classname) \
+ ADD_TRANSLATOR_FAMILY (classname); \
ADD_THIS_TRANSLATOR (classname); \
DEFINE_TRANSLATOR_DOC(classname, desc, grobs, read, write) \
DEFINE_TRANSLATOR_LISTENER_LIST(classname) \
}
}
-ADD_TRANSLATOR (Translator,
- /* doc */
- "Base class. Not instantiated.",
-
- /* create */
- "",
-
- /* read */
- "",
-
- /* write */
- ""
- );
+// Base class. Not instantiated. No ADD_TRANSLATOR call.