// Ivy.h: interface for the Ivy class. // ////////////////////////////////////////////////////////////////////// #if !defined(__IVY_H) #define __IVY_H #ifdef USE_GLFW #include #endif namespace IvyC { #include #include #include } #include "IvyCallback.h" class IvyApplication; class Ivy { public: Ivy(); #ifdef USE_GLFW Ivy( const char *name, const char* ready, IvyApplicationCallback *callback, bool argaFrc, GLFWmutex _ivyCbmutex = NULL); #else Ivy( const char *name, const char* ready, IvyApplicationCallback *callback, bool argaFrc); #endif virtual ~Ivy(); static long BindMsg (const char *regexp, IvyMessageCallback *cb ); static long BindMsg (IvyMessageCallback *cb, const char *regexp, ... ); static void UnbindMsg( int id ); static void Classes( int argc, const char **argv ); static int SendMsg(const char * message, ... ); static void SendDirectMsg( IvyApplication *app, int id, const char *message); static void BindDirectMsg( IvyDirectMessageCallback *callback ); static void start(const char *domain); static void stop(); #ifndef USE_GLFW static void ivyMainLoop (); #endif protected: static void ApplicationCb( IvyC::IvyClientPtr app, void *user_data, IvyC::IvyApplicationEvent event ) ; static void DieCb( IvyC::IvyClientPtr app, void *user_data, int id ) ; static void MsgCb( IvyC::IvyClientPtr app, void *user_data, int argc, char **argv ) ; static void MsgDirectCb( IvyC::IvyClientPtr app, void *user_data, int id, char *msg ) ; #ifdef USE_GLFW static void GLFWCALL ivyMainLoopInSeparateThread (void *arg); private: static GLFWmutex ivyCbmutex; #endif }; #endif // !defined(__IVY_H)