// IvyCallback.h : Interface for the IvyMessageCallback Class // : Interface for the IvyDirectMessageCallback Class // : Interface for the IvyApplicationCallback Class // #pragma once class IvyApplication; /* Callback for the normal bus Message */ class IvyMessageCallback { public: virtual void OnMessage (IvyApplication *app, int argc, const char **argv )=0; virtual ~IvyMessageCallback() { } }; class IvyMessageCallbackFunction: public IvyMessageCallback { public: typedef void ( *IvyMessageCallback_fun )( IvyApplication *app, int argc, const char **argv ); IvyMessageCallback_fun MessageCb; public: IvyMessageCallbackFunction ( IvyMessageCallback_fun m_cb ) : MessageCb( m_cb ) { } ~IvyMessageCallbackFunction () { } void OnMessage (IvyApplication *app, int argc, const char **argv) { (*MessageCb) (app, argc, argv); } /* raccourci d'ecriture */ #define BUS_CALLBACK( m ) new IvyMessageCallbackFunction( m ) }; /* template Class Callback for the normal bus Message */ template class IvyMessageCallbackOf : public IvyMessageCallback { protected: T* Object; typedef void ( T::*IvyMessageCallback_fun )( IvyApplication *app, int argc, const char **argv ); IvyMessageCallback_fun MessageCb; public: IvyMessageCallbackOf ( T* o, IvyMessageCallback_fun m_cb ) : Object (o), MessageCb( m_cb ) { } ~IvyMessageCallbackOf () { } void OnMessage (IvyApplication *app, int argc, const char **argv) { (Object->*MessageCb) (app, argc, argv); } /* raccourci d'ecriture */ #define BUS_CALLBACK_OF( cl, m ) new IvyMessageCallbackOf( this, m ) }; /* Callback for the direct Message */ class IvyDirectMessageCallback { public: virtual void OnDirectMessage (IvyApplication *app, int id, const char *arg ) = 0; }; /* Application Callback */ class IvyApplicationCallback { public: virtual void OnApplicationConnected (IvyApplication *app) = 0; virtual void OnApplicationDisconnected (IvyApplication *app) = 0; virtual ~IvyApplicationCallback() { } }; class IvyApplicationNullCallback : public IvyApplicationCallback { public: virtual void OnApplicationConnected (IvyApplication *app) {}; virtual void OnApplicationDisconnected (IvyApplication *app) {}; virtual ~IvyApplicationNullCallback() { } }; /* Callback for the die Message */ class IvyDieCallback { public: virtual bool OnDie (IvyApplication *app, int id, const char *arg ) = 0; virtual ~IvyDieCallback() { } };