1 |
#ifndef __MCL_INTERFACE_H__ |
2 |
#define __MCL_INTERFACE_H__ |
3 |
|
4 |
|
5 |
typedef enum { MOLECULE, ATOM, BOND, BEND, TORSION, COMPONENT, |
6 |
POSITION, ASSIGNMENT, MEMBER, CONSTRAINT, ORIENTATION, |
7 |
START_INDEX, BLOCK_END } event_enum; |
8 |
|
9 |
typedef struct{ |
10 |
double x; |
11 |
double y; |
12 |
double z; |
13 |
} position_event; |
14 |
|
15 |
typedef enum { STRING, INT, DOUBLE } interface_assign_type; |
16 |
|
17 |
typedef struct{ |
18 |
interface_assign_type asmt_type; |
19 |
char lhs[80]; |
20 |
union{ |
21 |
int ival; |
22 |
double dval; |
23 |
char sval[120]; |
24 |
}rhs; |
25 |
} assignment_event; |
26 |
|
27 |
typedef struct{ |
28 |
int a; |
29 |
int b; |
30 |
int c; |
31 |
int d; |
32 |
} member_event; |
33 |
|
34 |
typedef struct{ |
35 |
int* array; |
36 |
int n_elements; |
37 |
} start_index_event; |
38 |
|
39 |
typedef struct{ |
40 |
event_enum event_type; |
41 |
char* err_msg; |
42 |
|
43 |
union{ |
44 |
int blk_index; // block index |
45 |
position_event pos; |
46 |
position_event ornt; // use the same structure for orientation |
47 |
assignment_event asmt; |
48 |
member_event mbr; |
49 |
double cnstr; // the constraint value |
50 |
start_index_event si; |
51 |
} evt; |
52 |
} event; |
53 |
|
54 |
#ifdef __cplusplus |
55 |
extern "C" { |
56 |
#endif |
57 |
|
58 |
int event_handler( event* the_event ); |
59 |
|
60 |
#ifdef __cplusplus |
61 |
} |
62 |
#endif |
63 |
|
64 |
|
65 |
#endif // ifndef __MCL_INTERFACE_H__ |