COVISE Core
ApplInterface.h
Go to the documentation of this file.
1/* This file is part of COVISE.
2
3 You can use it under the terms of the GNU Lesser General Public License
4 version 2.1 or later, see lgpl-2.1.txt.
5
6 * License: LGPL 2+ */
7
8#ifndef _APPL_INTERFACE_H
9#define _APPL_INTERFACE_H
10
11/**************************************************************************\
12 ** (C)1994 RUS **
13 ** **
14 ** Description: Interface class for application modules to the COVISE **
15 ** software environment **
16 ** **
17 ** **
18 ** **
19 ** **
20 ** Author: **
21 ** **
22 ** Dirk Rantzau **
23 ** Computer Center University of Stuttgart **
24 ** Allmandring 30 **
25 ** 70550 Stuttgart **
26 ** **
27 ** Date: 18.05.94 V1.0 **
28 ** 25.6.97 V1.1 Harald Nebel, added GENERIC-stuff **
29\**************************************************************************/
30
31#include "CoviseBase.h"
32
33#include <covise/covise_msg.h>
34
35#define COMPAT452
36
37namespace covise
38{
39
40//=====================================================================
41// Covise callbacks
42//=====================================================================
43typedef void FeedbackCallback(void *userData, int len, const char *data);
44
45//=====================================================================
46//
47//=====================================================================
49{
50private:
51 // Communication Data
52 static CtlMessage *msg;
53 static char *reply_port_name;
54
55 static char *modkey;
56
57 static int renderMode_;
58
60
61 // private member funcs
62 static void doParam(Message *m);
63 static void doPortReply(Message *m);
64 static void doPipelineFinish();
65
66 static void generic(Message *applMsg);
67
68 static void doStartWithoutFinish(Message *m);
69 static void doStart(Message *m);
70 static void doAddObject();
71 static void doGeneric(Message *m);
72 static void doSync(Message *m);
73 static int doQuit();
74
75 //
76 // callback stuff
77 //
79 static void *feedbackUserData;
80
82 static void *startUserData;
83 static void *startCallbackData;
84
86 static void *addObjectUserData;
88
90 static void *genericUserData;
91 static void *genericCallbackData;
92 static char *genericMessageData;
93
95 static void *syncUserData;
96 static void *syncCallbackData;
97
99 static void *portReplyUserData;
107
108 static char *objNameToAdd_;
109 static char *objNameToDelete_;
110
111public:
113 static void set_module_description(const char *desc);
114 static const char *get_module_description();
115
117 static void add_port(enum appl_port_type type, const char *name,
118 const char *datatype, const char *description);
119
121 static void set_port_default(const char *name, const char *defVal);
122
124 static void set_port_dependency(const char *port, char *depPort);
125
127 static void set_port_required(const char *name, int isReqired);
128
129
131 static int is_port_connected(const char *name)
132 {
133 return msg ? msg->is_port_connected(name) : 0;
134 }
135
136 static char *getObjNameToAdd()
137 {
138 return objNameToAdd_;
139 };
140 static char *getObjNameToDelete()
141 {
142 return objNameToDelete_;
143 };
144
145/* old stuff: not supported any further
146 static void add_port(enum appl_port_type, char *,char *, char *);
147 static void set_port_description(char *, char *);
148 static void set_port_datatype(char *, char *);
149 static void set_port_required(char *, int);
150 static void add_port(enum appl_port_type type, const char *name);
151 */
152
153//
154// Callback and control
155//
156#ifdef COVISE_USE_X11
157 static void init(int argc, char *argv[], XtAppContext appContext);
158#else
159 static void init(int argc, char *argv[]);
160#endif
161 static void sendFinishedMsg(void *msg);
162 static int check_and_handle_event(float time = 0.0);
163 static void do_one_event();
164 static void ReceiveOneMsg();
165 static int deleteConnection();
166 static void main_loop();
167 static void progress_main_loop();
168 static void set_start_callback(CoviseCallback *f, void *userData);
169 static void set_add_object_callback(CoviseCallback *f, void *userData);
170
171 static void set_feedback_callback(FeedbackCallback *f, void *userData);
172
173 static void set_generic_callback(CoviseCallback *f, void *userData);
174 static void set_sync_callback(CoviseCallback *f, void *userData);
175
176 static void set_port_callback(CoviseCallback *f, void *userData);
177 static void set_after_finish_callback(CoviseCallback *f, void *userData);
178 static void set_pipeline_finish_callback(CoviseCallback *f, void *userData);
179 static void remove_start_callback();
180 static void remove_feedback_callback();
181
182 static void remove_generic_callback();
183 static void remove_sync_callback();
184
185 static void remove_after_finish_callback();
186 static void remove_pipeline_finish_callback();
187
188 static char *get_reply_port_name()
189 {
190 return reply_port_name;
191 }
192 //
193 // Object name handling
194 //
195 static char *get_object_name(const char *name)
196 {
197 return msg ? msg->get_object_name(name) : NULL;
198 }
199
200 static char *getObjectType(const char *name)
201 {
202 return msg ? msg->getObjectType(name) : NULL;
203 }
204
205 //
206 // Parameter setting, retrieving and updating
207 //
208 static int get_scalar_param(const char *name, long *val)
209 {
210 return msg ? msg->get_scalar_param(name, val) : 0;
211 }
212
213 static int get_scalar_param(const char *name, float *val)
214 {
215 return msg ? msg->get_scalar_param(name, val) : 0;
216 }
217
218 static int get_vector_param(const char *name, int pos, long *list)
219 {
220 return msg ? msg->get_vector_param(name, pos, list) : 0;
221 }
222
223 static int get_vector_param(const char *name, int pos, float *list)
224 {
225 return msg ? msg->get_vector_param(name, pos, list) : 0;
226 }
227
228 static int get_string_param(const char *name, char **string)
229 {
230 return msg ? msg->get_string_param(name, string) : 0;
231 }
232
233 static int get_browser_param(const char *name, char **file)
234 {
235 return msg ? msg->get_browser_param(name, file) : 0;
236 }
237
238 static int get_boolean_param(const char *name, int *b)
239 {
240 return msg ? msg->get_boolean_param(name, b) : 0;
241 }
242
243 static int get_slider_param(const char *name, long *min, long *max, long *val)
244 {
245 return msg ? msg->get_slider_param(name, min, max, val) : 0;
246 }
247
248 static int get_slider_param(const char *name, float *min, float *max, float *val)
249 {
250 return msg ? msg->get_slider_param(name, min, max, val) : 0;
251 }
252
253 static int get_text_param(const char *name, char ***text, int *linenum)
254 {
255 return msg ? msg->get_text_param(name, text, linenum) : 0;
256 }
257
258 static int get_timer_param(const char *name, long *start, long *delta, long *state)
259 {
260 return msg ? msg->get_timer_param(name, start, delta, state) : 0;
261 }
262
263 static int get_passwd_param(const char *name, char **host, char **user,
264 char **passwd)
265 {
266 return msg ? msg->get_passwd_param(name, host, user, passwd) : 0;
267 }
268
269 static int get_choice_param(const char *name, int *pos)
270 {
271 return msg ? msg->get_choice_param(name, pos) : 0;
272 }
273
274 static int get_choice_param(const char *name, char **string)
275 {
276 return msg ? msg->get_choice_param(name, string) : 0;
277 }
278
279 static int get_material_param(const char *name, char **string)
280 {
281 return msg ? msg->get_material_param(name, string) : 0;
282 }
283
284 static int get_colormapchoice_param(const char *name, int *pos)
285 {
286 return msg ? msg->get_colormapchoice_param(name, pos) : 0;
287 }
288
289 static int get_colormapchoice_param(const char *name, char **string)
290 {
291 return msg ? msg->get_colormapchoice_param(name, string) : 0;
292 }
293
294 static int get_colormap_param(const char *name, float *min, float *max, int *len, colormap_type *type)
295 {
296 return msg ? msg->get_colormap_param(name, min, max, len, type) : 0;
297 }
298
299 static int get_color_param(const char *name, float *r, float *g, float *b, float *a)
300 {
301 return msg ? msg->get_color_param(name, r, g, b, a) : 0;
302 }
303
304 static int set_scalar_param(const char *name, long val)
305 {
306 return msg ? msg->set_scalar_param(name, val) : 0;
307 }
308
309 static int set_scalar_param(const char *name, float val)
310 {
311 return msg ? msg->set_scalar_param(name, val) : 0;
312 }
313
314 static int set_vector_param(const char *name, int num, long *list)
315 {
316 return msg ? msg->set_vector_param(name, num, list) : 0;
317 }
318
319 static int set_vector_param(const char *name, int num, float *list)
320 {
321 return msg ? msg->set_vector_param(name, num, list) : 0;
322 }
323
324 static int set_string_param(const char *name, char *string)
325 {
326 return msg ? msg->set_string_param(name, string) : 0;
327 }
328
329 static int set_boolean_param(const char *name, int val)
330 {
331 return msg ? msg->set_boolean_param(name, val) : 0;
332 }
333
334 static int set_slider_param(const char *name, long min, long max, long val)
335 {
336 return msg ? msg->set_slider_param(name, min, max, val) : 0;
337 }
338
339 static int set_slider_param(const char *name, float min, float max, float val)
340 {
341 return msg ? msg->set_slider_param(name, min, max, val) : 0;
342 }
343
344 static int set_choice_param(const char *name, int len, char **list, int pos)
345 {
346 return msg ? msg->set_choice_param(name, len, list, pos) : 0;
347 }
348
349 static int set_browser_param(const char *name, char *file, char *wildcard)
350 {
351 return msg ? msg->set_browser_param(name, file, wildcard) : 0;
352 }
353
354 static int set_text_param(const char *name, char *text, int linenum)
355 {
356 return msg ? msg->set_text_param(name, text, linenum) : 0;
357 }
358
359 static int set_timer_param(const char *name, int start, int delta, int state)
360 {
361 return msg ? msg->set_timer_param(name, start, delta, state) : 0;
362 }
363
364 static int set_passwd_param(const char *name, char *host, char *user, char *passwd)
365 {
366 return msg ? msg->set_passwd_param(name, host, user, passwd) : 0;
367 }
368
369 static int set_save_object(char *name)
370 {
371 return msg ? msg->set_save_object(name) : 0;
372 }
373
374 static int set_release_object(char *name)
375 {
376 return msg ? msg->set_release_object(name) : 0;
377 }
378
379 static void cancel_param(const char *name);
380 static void reopen_param(const char *name);
381
382 //
383 // Messages to COVISE environment
384 //
385 static int send_generic_message(const char *keyword, const char *string);
386 static int send_genericinit_message(const char *mkey, const char *keyword, const char *string);
387 static char *get_generic_message();
388
389 static void send_stop_pipeline();
390 static int send_ctl_message(covise_msg_type type, char *msg_string);
391 static void sendFinishedMsg();
392
393 //
394 // The callback functions called in callXXX has to be
395 // implemented by the user
396 //
397 static void callFeedbackCallback(Message *);
398 static void callStartCallback(void);
399
400 static void callAddObjectCallback(void);
401
402 static void callGenericCallback(void);
403 static void callSyncCallback(void);
404
405 static void callPortReplyCallback(void);
406 static void callAfterFinishCallback(void);
407 static void callPipelineFinishCallback(void);
408 //
409 // Partitioned object support
410 //
411 static void partobjects_initialized(void);
412
413 // Add Interactor for feedback
414 static void addInteractor(coDistributedObject *obj, const char *name, const char *value);
415};
416}
417#endif
#define APPLEXPORT
Definition: coExport.h:57
#define NULL
Definition: covise_list.h:22
GLsizei GLsizei GLuint * obj
Definition: khronos-glext.h:6733
GLuint start
Definition: khronos-glext.h:6343
GLsizei const GLfloat * value
Definition: khronos-glext.h:6760
GLfloat f
Definition: khronos-glext.h:8258
GLboolean GLboolean GLboolean b
Definition: khronos-glext.h:6895
GLboolean GLboolean g
Definition: khronos-glext.h:6895
GLuint GLfloat * val
Definition: khronos-glext.h:7898
GLuint const GLchar * name
Definition: khronos-glext.h:6722
GLuint GLuint num
Definition: khronos-glext.h:10593
GLdouble GLdouble GLdouble r
Definition: khronos-glext.h:6457
GLenum GLsizei len
Definition: khronos-glext.h:7440
GLboolean GLboolean GLboolean GLboolean a
Definition: khronos-glext.h:6895
GLsizei GLsizei GLenum GLenum const GLvoid * data
Definition: khronos-glext.h:6354
const GLfloat * m
Definition: khronos-glext.h:12117
GLenum type
Definition: khronos-glext.h:6279
int min(int a, int b)
Definition: cutil_math.h:60
int max(int a, int b)
Definition: cutil_math.h:55
list of all chemical elements
Definition: coConfig.h:27
colormap_type
Definition: covise_msg.h:80
void CoviseCallback(void *userData, void *callbackData)
Definition: CoviseBase.h:61
void FeedbackCallback(void *userData, int len, const char *data)
Definition: ApplInterface.h:43
covise_msg_type
Definition: message_types.h:65
appl_port_type
Definition: CoviseBase.h:44
Definition: message.h:76
Definition: covise_msg.h:388
int get_browser_param(const char *, char **)
Definition: covise_msg.cpp:670
int set_slider_param(const char *, long min, long max, long value)
Definition: covise_msg.cpp:1111
int get_colormap_param(const char *, float *min, float *max, int *len, colormap_type *type)
Definition: covise_msg.cpp:897
int set_vector_param(const char *, int num, long *)
Definition: covise_msg.cpp:958
int set_choice_param(const char *, int, char **, int)
Definition: covise_msg.cpp:1028
int get_slider_param(const char *, long *min, long *max, long *value)
Definition: covise_msg.cpp:748
int get_choice_param(const char *, int *)
Definition: covise_msg.cpp:829
int set_text_param(const char *, char *, int)
Definition: covise_msg.cpp:1071
int set_boolean_param(const char *, int)
Definition: covise_msg.cpp:986
int set_release_object(const char *name)
Definition: covise_msg.cpp:1173
int set_browser_param(const char *, char *, char *)
Definition: covise_msg.cpp:1056
int is_port_connected(const char *name)
Definition: covise_msg.cpp:570
int set_passwd_param(const char *, char *host, char *user, char *passwd)
Definition: covise_msg.cpp:1139
int get_boolean_param(const char *, int *)
Definition: covise_msg.cpp:705
int get_passwd_param(const char *, char **host, char **user, char **passwd)
Definition: covise_msg.cpp:792
int get_scalar_param(const char *, long *)
Definition: covise_msg.cpp:585
char * get_object_name(const char *name)
Definition: covise_msg.cpp:545
int get_vector_param(const char *, int, long *)
Definition: covise_msg.cpp:619
int get_material_param(const char *, char **)
Definition: covise_msg.cpp:863
int get_colormapchoice_param(const char *, int *)
Definition: covise_msg.cpp:880
char * getObjectType(const char *name)
Definition: covise_msg.cpp:557
int set_scalar_param(const char *, long)
Definition: covise_msg.cpp:1000
int set_save_object(const char *name)
Definition: covise_msg.cpp:1153
int set_timer_param(const char *, long start, long delta, long state)
Definition: covise_msg.cpp:1125
int get_text_param(const char *, char ***, int *line_num)
Definition: covise_msg.cpp:687
int get_timer_param(const char *, long *start, long *delta, long *state)
Definition: covise_msg.cpp:770
int set_string_param(const char *, char *)
Definition: covise_msg.cpp:1042
int get_color_param(const char *, float *r, float *g, float *b, float *a)
Definition: covise_msg.cpp:934
int get_string_param(const char *, char **)
Definition: covise_msg.cpp:653
Definition: ApplInterface.h:49
static void * afterFinishCallbackData
Definition: ApplInterface.h:103
static void * addObjectUserData
Definition: ApplInterface.h:86
static int get_color_param(const char *name, float *r, float *g, float *b, float *a)
Definition: ApplInterface.h:299
static int set_vector_param(const char *name, int num, float *list)
Definition: ApplInterface.h:319
static void * genericCallbackData
Definition: ApplInterface.h:91
static int get_passwd_param(const char *name, char **host, char **user, char **passwd)
Definition: ApplInterface.h:263
static void * genericUserData
Definition: ApplInterface.h:90
static char * getObjNameToAdd()
Definition: ApplInterface.h:136
static char * getObjNameToDelete()
Definition: ApplInterface.h:140
static CtlMessage * msg
Definition: ApplInterface.h:52
static int set_scalar_param(const char *name, long val)
Definition: ApplInterface.h:304
static int set_slider_param(const char *name, long min, long max, long val)
Definition: ApplInterface.h:334
static char * modkey
Definition: ApplInterface.h:55
static int set_text_param(const char *name, char *text, int linenum)
Definition: ApplInterface.h:354
static CoviseCallback * startCallbackFunc
Definition: ApplInterface.h:81
static int get_boolean_param(const char *name, int *b)
Definition: ApplInterface.h:238
static void * startCallbackData
Definition: ApplInterface.h:83
static int get_material_param(const char *name, char **string)
Definition: ApplInterface.h:279
static int set_vector_param(const char *name, int num, long *list)
Definition: ApplInterface.h:314
static int get_timer_param(const char *name, long *start, long *delta, long *state)
Definition: ApplInterface.h:258
static int get_string_param(const char *name, char **string)
Definition: ApplInterface.h:228
static CoviseCallback * afterFinishCallbackFunc
Definition: ApplInterface.h:101
static int get_scalar_param(const char *name, long *val)
Definition: ApplInterface.h:208
static int get_colormapchoice_param(const char *name, char **string)
Definition: ApplInterface.h:289
static void * portReplyUserData
Definition: ApplInterface.h:99
static int set_slider_param(const char *name, float min, float max, float val)
Definition: ApplInterface.h:339
static int get_slider_param(const char *name, long *min, long *max, long *val)
Definition: ApplInterface.h:243
static int set_browser_param(const char *name, char *file, char *wildcard)
Definition: ApplInterface.h:349
static int set_save_object(char *name)
Definition: ApplInterface.h:369
static int get_vector_param(const char *name, int pos, float *list)
Definition: ApplInterface.h:223
static int pipeline_state_once
Definition: ApplInterface.h:59
static int is_port_connected(const char *name)
check whether port is connected - use in compute() CB only
Definition: ApplInterface.h:131
static int set_release_object(char *name)
Definition: ApplInterface.h:374
static int set_string_param(const char *name, char *string)
Definition: ApplInterface.h:324
static int set_timer_param(const char *name, int start, int delta, int state)
Definition: ApplInterface.h:359
static int get_slider_param(const char *name, float *min, float *max, float *val)
Definition: ApplInterface.h:248
static char * objNameToDelete_
Definition: ApplInterface.h:109
static void * feedbackUserData
Definition: ApplInterface.h:79
static int get_scalar_param(const char *name, float *val)
Definition: ApplInterface.h:213
static int set_passwd_param(const char *name, char *host, char *user, char *passwd)
Definition: ApplInterface.h:364
static void * pipelineFinishCallbackData
Definition: ApplInterface.h:106
static int get_colormapchoice_param(const char *name, int *pos)
Definition: ApplInterface.h:284
static int get_colormap_param(const char *name, float *min, float *max, int *len, colormap_type *type)
Definition: ApplInterface.h:294
static CoviseCallback * syncCallbackFunc
Definition: ApplInterface.h:94
static char * genericMessageData
Definition: ApplInterface.h:92
static char * get_reply_port_name()
Definition: ApplInterface.h:188
static int set_scalar_param(const char *name, float val)
Definition: ApplInterface.h:309
static int set_choice_param(const char *name, int len, char **list, int pos)
Definition: ApplInterface.h:344
static int get_vector_param(const char *name, int pos, long *list)
Definition: ApplInterface.h:218
static FeedbackCallback * feedbackCallbackFunc
Definition: ApplInterface.h:78
static int get_choice_param(const char *name, int *pos)
Definition: ApplInterface.h:269
static void * syncUserData
Definition: ApplInterface.h:95
static void * portReplyCallbackData
Definition: ApplInterface.h:100
static void * startUserData
Definition: ApplInterface.h:82
static char * getObjectType(const char *name)
Definition: ApplInterface.h:200
static void * afterFinishUserData
Definition: ApplInterface.h:102
static char * reply_port_name
Definition: ApplInterface.h:53
static CoviseCallback * portReplyCallbackFunc
Definition: ApplInterface.h:98
static CoviseCallback * pipelineFinishCallbackFunc
Definition: ApplInterface.h:104
static void * syncCallbackData
Definition: ApplInterface.h:96
static int get_text_param(const char *name, char ***text, int *linenum)
Definition: ApplInterface.h:253
static int get_browser_param(const char *name, char **file)
Definition: ApplInterface.h:233
static int get_choice_param(const char *name, char **string)
Definition: ApplInterface.h:274
static void * pipelineFinishUserData
Definition: ApplInterface.h:105
static CoviseCallback * addObjectCallbackFunc
Definition: ApplInterface.h:85
static char * objNameToAdd_
Definition: ApplInterface.h:108
static int renderMode_
Definition: ApplInterface.h:57
static int set_boolean_param(const char *name, int val)
Definition: ApplInterface.h:329
static CoviseCallback * genericCallbackFunc
Definition: ApplInterface.h:89
static void * addObjectCallbackData
Definition: ApplInterface.h:87
static char * get_object_name(const char *name)
Definition: ApplInterface.h:195
Definition: CoviseBase.h:66
Definition: coDistributedObject.h:296