#define TRANSLATOR_FAMILY_DECLARATIONS(NAME) \
public: \
VIRTUAL_COPY_CONSTRUCTOR (Translator, NAME); \
- static Drul_array<Protected_scm> acknowledge_static_array_drul_; \
virtual void fetch_precomputable_methods (SCM methods[]); \
DECLARE_TRANSLATOR_CALLBACKS (NAME); \
TRANSLATOR_INHERIT (Translator) \
- static SCM static_get_acknowledger (SCM sym); \
- static SCM static_get_end_acknowledger(SCM); \
- virtual SCM get_acknowledger (SCM sym) \
- { \
- return static_get_acknowledger (sym); \
- } \
- virtual SCM get_end_acknowledger (SCM sym) \
- { \
- return static_get_end_acknowledger (sym); \
- } \
/* end #define */
#define TRANSLATOR_INHERIT(BASE) \
#define TRANSLATOR_DECLARATIONS(NAME) \
public: \
TRANSLATOR_FAMILY_DECLARATIONS (NAME); \
+ static Drul_array<Protected_scm> acknowledge_static_array_drul_; \
static SCM static_description_; \
static Protected_scm listener_list_; \
+ static SCM static_get_acknowledger (SCM sym, Direction start_end); \
+ virtual SCM get_acknowledger (SCM sym, Direction start_end) \
+ { \
+ return static_get_acknowledger (sym, start_end); \
+ } \
public: \
NAME (); \
+ static void boot (); \
virtual SCM static_translator_description () const; \
virtual SCM translator_description () const; \
virtual SCM get_listener_list () const \
} \
/* end #define */
-#define DECLARE_TRANSLATOR_LISTENER(m) \
-public: \
-inline void listen_ ## m (Stream_event *); \
-/* Should be private */ \
-static void _internal_declare_ ## m ();
-
-#define DECLARE_ACKNOWLEDGER(x) public : void acknowledge_ ## x (Grob_info); protected:
-#define DECLARE_END_ACKNOWLEDGER(x) public : void acknowledge_end_ ## x (Grob_info); protected:
-
enum Translator_precompute_index
{
START_TRANSLATION_TIMESTEP,
virtual void fetch_precomputable_methods (SCM methods[]) = 0;
virtual SCM get_listener_list () const = 0;
virtual SCM translator_description () const = 0;
- virtual SCM get_acknowledger (SCM sym) = 0;
- virtual SCM get_end_acknowledger (SCM sym) = 0;
+ virtual SCM get_acknowledger (SCM sym, Direction start_end) = 0;
protected: // should be private.
Context *daddy_context_;
void add_translator (Translator *trans);
Translator *get_translator (SCM s);
+
+SCM
+generic_get_acknowledger (SCM sym, SCM ack_hash);
+
Moment get_event_length (Stream_event *s, Moment now);
Moment get_event_length (Stream_event *s);