diff options
author | bustico | 2006-06-01 12:08:21 +0000 |
---|---|---|
committer | bustico | 2006-06-01 12:08:21 +0000 |
commit | 0af51dbec459d2555a5597dc092c7d012f3df250 (patch) | |
tree | 5a4a4c69c439dc9508bac72bb3f1c533389482f1 | |
parent | 9ac55df54fbcf5b17f53e38a18d538e9af074488 (diff) | |
download | ivy-cplusplus-0af51dbec459d2555a5597dc092c7d012f3df250.zip ivy-cplusplus-0af51dbec459d2555a5597dc092c7d012f3df250.tar.gz ivy-cplusplus-0af51dbec459d2555a5597dc092c7d012f3df250.tar.bz2 ivy-cplusplus-0af51dbec459d2555a5597dc092c7d012f3df250.tar.xz |
ajout du filtrage statique des classes de message
-rw-r--r-- | Ivy.cxx | 30 | ||||
-rw-r--r-- | IvyApplication.h | 1 | ||||
-rw-r--r-- | IvyCallback.h | 60 | ||||
-rw-r--r-- | Ivycpp.h | 7 | ||||
-rw-r--r-- | Makefile | 15 |
5 files changed, 103 insertions, 10 deletions
@@ -251,7 +251,7 @@ void Ivy::SendDirectMsg(IvyApplication * app, int id, const char *message) # | |____ | | | (_| | \__ \ \__ \ | __/ \__ \ # \_____| |_| \__,_| |___/ |___/ \___| |___/ */ -void Ivy::Classes(int argc, const char **argv ) +void Ivy::SetFilter(int argc, const char **argv ) { IvyC::IvySetFilter( argc, argv); } @@ -355,3 +355,31 @@ void Ivy::MsgCb( IvyC::IvyClientPtr app, void *user_data, int argc, char **argv glfwUnlockMutex (ivyCbmutex); #endif } + + +void Ivy::BindCallbackCb( IvyC::IvyClientPtr app, void *user_data, int id, char *msg, + IvyC::IvyBindEvent event) +{ + IvyBindingCallback *cb = (IvyBindingCallback *)user_data; + IvyApplication *appObj = new IvyApplication( app ); + + switch ( event ) + { + case IvyC::IvyAddBind : + cb->OnAddBind ( appObj, id, msg); + break; + case IvyC::IvyRemoveBind : + cb->OnRemoveBind( appObj, id, msg ); + break; + case IvyC::IvyFilterBind : + cb->OnFilterBind( appObj, id, msg ); + break; + } + delete appObj; +} + + +void Ivy::SetBindCallback(IvyBindingCallback* bind_callback ) +{ + IvySetBindCallback (BindCallbackCb, bind_callback); +} diff --git a/IvyApplication.h b/IvyApplication.h index 0a66763..e8ced00 100644 --- a/IvyApplication.h +++ b/IvyApplication.h @@ -39,3 +39,4 @@ public: + diff --git a/IvyCallback.h b/IvyCallback.h index 1d47dc4..aa866b8 100644 --- a/IvyCallback.h +++ b/IvyCallback.h @@ -120,6 +120,65 @@ public: /* raccourci d'ecriture */ #define BUS_APPLICATION_CALLBACK( conn, disconn ) new IvyApplicationCallbackFunction( conn, disconn ) }; + +/* Binding Callback */ + +class IvyBindingCallback { +public: + virtual void OnAddBind (IvyApplication *app, int id, const char * regexp) = 0; + virtual void OnRemoveBind (IvyApplication *app, int id, const char * regexp) = 0; + virtual void OnFilterBind (IvyApplication *app, int id, const char * regexp) = 0; + virtual ~IvyBindingCallback() + { + } +}; + +class IvyBindingNullCallback : public IvyBindingCallback { +public: + virtual void OnAddBind (IvyApplication *app, int id, const char * regexp) + {}; + virtual void OnRemoveBind (IvyApplication *app, int id, const char * regexp) + {}; + virtual void OnFilterBind (IvyApplication *app, int id, const char * regexp) + {}; + virtual ~IvyBindingNullCallback() + { + } +}; +// Static function CB +class IvyBindingCallbackFunction: public IvyBindingCallback { +public: + typedef void ( *IvyBindingCallback_fun )( IvyApplication *app, int id, const char * regexp ); + IvyBindingCallback_fun BindingAddCb; + IvyBindingCallback_fun BindingRemoveCb; + IvyBindingCallback_fun BindingFilterCb; + +public: + IvyBindingCallbackFunction ( IvyBindingCallback_fun add_cb, IvyBindingCallback_fun remove_cb, IvyBindingCallback_fun filter_cb ) + : BindingAddCb( add_cb ), BindingRemoveCb( remove_cb ), BindingFilterCb( filter_cb ) + { + } + ~IvyBindingCallbackFunction () + { + } + virtual void OnAddBind (IvyApplication *app, int id, const char * regexp) + { + if(BindingAddCb) (*BindingAddCb) (app, id, regexp); + }; + virtual void OnRemoveBind (IvyApplication *app, int id, const char * regexp) + { + if (BindingRemoveCb) (*BindingRemoveCb) (app, id, regexp); + }; + virtual void OnFilterBind (IvyApplication *app, int id, const char * regexp) + { + if(BindingFilterCb ) (*BindingFilterCb) (app, id, regexp); + }; + +/* raccourci d'ecriture */ +#define BUS_BINDING_CALLBACK( add, remove, filter ) new IvyBindingCallbackFunction( add, remove, filter ) +}; + + /* Callback for the die Message */ class IvyDieCallback { public: @@ -130,3 +189,4 @@ public: }; #endif // __IVYXTLOOP_H__ + @@ -37,7 +37,6 @@ public: 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, @@ -45,7 +44,8 @@ public: static void BindDirectMsg( IvyDirectMessageCallback *callback ); - + static void SetBindCallback(IvyBindingCallback* bind_callback ); + static void SetFilter( int argc, const char **argv ); static void start(const char *domain); static void stop(); #ifndef USE_GLFW @@ -59,6 +59,8 @@ protected: 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 ) ; + static void BindCallbackCb( IvyC::IvyClientPtr app, void *user_data, int id, char *msg, + IvyC::IvyBindEvent event) ; #ifdef USE_GLFW static void GLFWCALL ivyMainLoopInSeparateThread (void *arg); @@ -69,3 +71,4 @@ private: }; #endif // !defined(__IVY_H) + @@ -10,6 +10,9 @@ ifeq ($(os),Darwin) LD = g++ -dynamiclib -single_module LDFLAGS = -L$(IVY_PATH) -L/sw/lib -framework OpenGL -framework AGL -framework Carbon else + PERHAPS64 := $(shell uname --machine | perl -ne "print /64/ ? '64' : '';") + LIB:= lib$(PERHAPS64) + XTLIB = -L/usr/X11R6/$(LIB) CPPFLAGS = -MMD -I/usr/X11R6/include DSO_EXT = .so LD = g++ -shared -fPIC @@ -17,6 +20,7 @@ else ifndef PREFIX PREFIX=/usr endif + LDFLAGS = -L$(PREFIX)/$(LIB) $(XTLIB) endif @@ -44,9 +48,6 @@ LIBIVY_DEPLIBS = -livy LIBIVY_GLFW_SHARED = $(LIBIVY_GLFW)$(DSO_EXT) LIBIVY_GLFW_DEPLIBS = -lglfw -livy -lX11 -lXext -lXxf86vm -lGL -lpthread -PERHAPS64 := $(shell uname --machine | perl -ne "print /64/ ? '64' : '';") -LIB:= lib$(PERHAPS64) -XTLIB = -L/usr/X11R6/$(LIB)/ #a mettre dans les makefiles generant les executables #LLDLIBS= -rpath. -L. -lTextureLabel -lInventor -lInventorXt -lXm -lXt -lttf -lGL -lGLU -lm @@ -83,10 +84,10 @@ install: install -m 0644 Ivy*.h $(DESTDIR)$(PREFIX)/include/Ivy # libs mkdir -p $(DESTDIR)$(PREFIX)/$(LIB) - install -m 0644 $(LIBIVY_STATIC) $(DESTDIR)$(PREFIX)/$(LIB) - install -m 0644 $(LIBIVY_GLFW_STATIC) $(DESTDIR)$(PREFIX)/$(LIB) - install -m 0644 $(LIBIVY_SHARED) $(DESTDIR)$(PREFIX)/$(LIB) - install -m 0644 $(LIBIVY_GLFW_SHARED) $(DESTDIR)$(PREFIX)/$(LIB) + install -m 0644 $(LIBIVY_STATIC) $(DESTDIR)$(PREFIX)/$(LIB)/$(DEBUG) + install -m 0644 $(LIBIVY_GLFW_STATIC) $(DESTDIR)$(PREFIX)/$(LIB)/$(DEBUG) + install -m 0644 $(LIBIVY_SHARED) $(DESTDIR)$(PREFIX)/$(LIB)/$(DEBUG) + install -m 0644 $(LIBIVY_GLFW_SHARED) $(DESTDIR)$(PREFIX)/$(LIB)/$(DEBUG) LLDLIBS = -L $(XTLIB) -Wl,-rpath,$(XTLIB) -L. -Wl,-rpath,. -L$(IVY_PATH)/src |