1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/*
* Ivy, C interface
*
* Copyright (C) 1997-2000
* Centre d'Études de la Navigation Aérienne
*
* Main functions
*
* Authors: François-Régis Colin <fcolin@cena.dgac.fr>
* Stéphane Chatty <chatty@cena.dgac.fr>
*
* $Id: ivy.h,v 1.8 2000/08/07 11:29:29 sc Exp $
*
* Please refer to file version.h for the
* copyright notice regarding this software
*/
#ifndef IVY_C_BINDINGS_H
#define IVY_C_BINDINGS_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef WIN32
#ifdef IVY_EXPORTS
#define DLL_EXPORT _declspec(dllexport)
#else
#pragma comment(lib,"Ivy.LIB" )
#define DLL_EXPORT /*_declspec(dllimport)*/
#endif
#endif
/* numero par default du bus */
#define DEFAULT_BUS 2010
typedef void * Channel ;
typedef int TimerId;
typedef void * IvyClientPtr;
typedef enum { IvyApplicationConnected, IvyApplicationDisconnected } IvyApplicationEvent;
extern void IvyDefaultApplicationCallback( IvyClientPtr app, void *user_data, IvyApplicationEvent evt ) ;
/* callback callback appele sur connexion deconnexion d'une appli */
typedef void (*IvyCApplicationCallback)( IvyClientPtr app, void *user_data, IvyApplicationEvent evt ) ;
/* callback appele sur reception de die */
typedef void (*IvyCDieCallback)( IvyClientPtr app, void *user_data, int id ) ;
/* callback appele sur reception de messages normaux */
typedef void (*IvyCMsgCallback)( IvyClientPtr app, void *user_data, int argc, const char **argv ) ;
/* callback appele sur reception de messages directs */
typedef void (*IvyCMsgDirectCallback)( IvyClientPtr app, void *user_data, int id, char *msg ) ;
/* identifiant d'une expression reguliere ( Bind/Unbind ) */
typedef int MsgRcvPtr;
/* filtrage des regexps */
DLL_EXPORT void IvyClasses( int argc, const char **argv);
DLL_EXPORT void IvyInit(
const char *AppName, /* nom de l'application */
const char *ready, /* ready Message peut etre NULL */
IvyCApplicationCallback callback, /* callback appele sur connection deconnection d'une appli */
void *data, /* user data passe au callback */
IvyCDieCallback die_callback, /* last change callback before die */
void *die_data ); /* user data */
DLL_EXPORT void IvyStart (const char*);
DLL_EXPORT void IvyStop ();
/* query sur les applications connectees */
DLL_EXPORT const char *IvyGetApplicationName( IvyClientPtr app );
DLL_EXPORT const char *IvyGetApplicationHost( IvyClientPtr app );
DLL_EXPORT IvyClientPtr IvyGetApplication( char *name );
DLL_EXPORT const char *IvyGetApplicationList();
DLL_EXPORT const char **IvyGetApplicationMessages( IvyClientPtr app); /* demande de reception d'un message */
DLL_EXPORT MsgRcvPtr IvyBindMsg( IvyCMsgCallback callback, void *user_data, const char *fmt_regexp, ... ); /* avec sprintf prealable */
DLL_EXPORT void IvyUnbindMsg( MsgRcvPtr id );
/* emission d'un message d'erreur */
DLL_EXPORT void IvySendError( IvyClientPtr app, int id, const char *fmt, ... );
/* emmission d'un message die pour terminer l'application */
DLL_EXPORT void IvySendDieMsg( IvyClientPtr app );
/* emission d'un message retourne le nb effectivement emis */
DLL_EXPORT int IvySendMsg( const char *fmt_message, ... ); /* avec sprintf prealable */
/* Message Direct Inter-application */
DLL_EXPORT void IvyBindDirectMsg( IvyCMsgDirectCallback callback, void *user_data);
DLL_EXPORT void IvySendDirectMsg( IvyClientPtr app, int id, char *msg );
DLL_EXPORT void IvyMainLoop( void(*hook)(void) );
#ifdef __cplusplus
}
#endif
#endif
|