1 typedef struct _newer_rec {
2     int ganzzahl;
3     double gleitkommazahl;
4     char zeichen;
5 } newer_rec, *newer_rec_ptr;
6 
7 typedef struct _first_rec {
8     int integer_field;
9     double double_field;
10     char char_field;
11 } first_rec, *first_rec_ptr;
12 
13 typedef struct _second_rec {
14     int integer_field;
15     short short_field;
16     long long_field;
17     char *string;
18     double double_field;
19     char char_field;
20 } second_rec, *second_rec_ptr;
21 
22 typedef enum {Red_Stripe, Paulaner, Pilsner} enum_type;
23 
24 typedef struct _third_rec {
25     int integer_field;
26     long long_field;
27     unsigned int uint_field;
28     unsigned long ulong_field;
29     char *string;
30     double double_field;
31     char *string2;
32     char char_field;
33     enum_type enum_field;
34 } third_rec, *third_rec_ptr;
35 
36 #define ARRAY_SIZE 14
37 
38 typedef struct _fourth_rec {
39     long	ifield;
40     int		int_array[ARRAY_SIZE];
41     double double_array[2][2];
42 } fourth_rec, *fourth_rec_ptr;
43 
44 typedef struct _embedded_rec {
45     short	ifield;
46     char	*string;
47     double	dfield;
48 } embedded_rec, *embedded_rec_ptr;
49 
50 typedef struct _fifth_rec {
51     embedded_rec earray[4];
52 } fifth_rec, *fifth_rec_ptr;
53 
54 typedef struct _later_rec {
55 #if SIZEOF_LONG_LONG > SIZEOF_LONG
56     long long integer_field;
57 #else
58     long integer_field;
59 #endif
60     char *string;
61     double double_field;
62 } later_rec, *later_rec_ptr;
63 
64 typedef struct _later_rec2 {
65 #if SIZEOF_LONG_LONG > SIZEOF_LONG
66     long long integer_field;
67 #else
68     long integer_field;
69 #endif
70     double double_field;
71     char *string;
72 } later_rec2, *later_rec2_ptr;
73 
74 typedef struct _nested_rec {
75     int integer_field;
76     second_rec  nested_rec;
77     char *string;
78 } nested_rec, *nested_rec_ptr;
79 
80 typedef struct _sixth_rec {
81     char	*string;
82     long	icount;
83 #if SIZEOF_LONG_LONG > SIZEOF_LONG
84     long long	*var_int_array;
85 #else
86     long	*var_int_array;
87 #endif
88     second_rec	*var_string_array;
89     double	dfield;
90     double	*var_double_array;
91 } sixth_rec, *sixth_rec_ptr;
92 
93 typedef struct _io_encode_vec {
94      void *iov_base;
95      long  iov_len;
96 } *IOEncodeVector;
97 
98 typedef struct _nested_variants {
99     int vec_length;
100     IOEncodeVector eventv;
101 } ninth_rec, *ninth_rec_ptr;
102 
103 typedef struct _string_array {
104     int array_len;
105     char *base_string;
106     char **array;
107 } string_array_rec, *string_array_rec_ptr;
108 
109 typedef struct _ptr_rec {
110     int integer_field;
111     second_rec  *nested_rec;
112     char *string;
113 } ptr_rec, *ptr_rec_ptr;
114 
115 typedef struct _FormatListElement {
116     char *format_name;
117     int field_list_len;
118     FMFieldList field_list;
119 } format_list_element;
120 
121 typedef struct {
122     int  len;
123     char *channel;
124 } channel_ID_struct;
125 
126 typedef struct _DeriveMsg
127 {
128     char *chan_str;
129     int cond;
130     channel_ID_struct client_channel_id;
131     char *client_contact_str;
132     char *filter;
133     int field_list_len;
134     FMFieldList field_list;
135     int format_list_len;
136     format_list_element *format_list;
137 
138     char *init_data_block;
139     int init_data_len;
140 } DeriveMsg, *DeriveMsgPtr;
141 
142 typedef struct _multi_array_rec {
143     long	ifield;
144     double	double_array[2][2][2][2];
145     int		(*int_array)[2];
146     int		(*int_array2)[4];
147     int		(*int_array3)[4][4];
148 } multi_array_rec, *multi_array_rec_ptr;
149 
150 typedef struct _multi_array_rec2 {
151     long	ifield;
152     double	double_array[2][2][2][2];
153     int		(*int_array)[2][4];
154     int		(*int_array2)[4][2];
155     int		(*int_array3)[4][4][4];
156 } multi_array_rec2, *multi_array_rec2_ptr;
157 
158 
159 typedef struct
160 {
161   int id;
162   int data_size;
163     int old_data_size;
164   int compressed_size;
165   int * compressed_data;
166 
167   int corner1x;
168   int corner1y;
169   int corner1z;
170   int corner2x;
171   int corner2y;
172   int corner2z;
173 
174   int atom_type;
175 } compressed_mesh_param, *compressed_mesh_param_ptr;
176 
177 /* form pipelined server to pipelined client */
178 typedef struct
179 {
180   int corner1x;
181   int corner1y;
182   int corner1z;
183   int corner2x;
184   int corner2y;
185   int corner2z;
186 
187   int compression_type;
188 
189   int codebook_size;
190   int* codebook_data;
191 
192   int timestamp;
193   int nonce;
194   int num_meshes;
195   compressed_mesh_param* mesh_data;
196 } triangle_param, *triangle_param_ptr;
197 
198 
199 typedef struct _XMLFormatListElement {
200     char *format_name;
201     int field_list_len;
202     FMFieldList field_list;
203     char *xml_markup;
204 } msg_format_list_element;
205 
206 typedef struct {
207     int action;
208     char *in_format_name;
209     char *func_str;
210     int format_count;
211     msg_format_list_element *out_formats;
212 } add_rec, *add_rec_ptr;
213 
214 typedef struct node {
215     int node_num;
216     struct node *link1;
217     struct node *link2;
218 } *node_ptr;
219 
220 typedef struct visit_table {
221     int node_count;
222     void *nodes[100];
223 } *visit_table;
224 
225 extern int calc_signature(node_ptr n, visit_table v);
226 
227 extern FMField field_list[];
228 extern FMField newer_field_list[];
229 extern FMField field_list2[];
230 extern FMField field_list3[];
231 extern FMField field_list4[];
232 extern FMField embedded_field_list[];
233 extern FMField field_list5[];
234 extern FMField later_field_list[];
235 extern FMField later_field_list2[];
236 extern FMField nested_field_list[];
237 extern FMField field_list6[];
238 extern FMField event_vec_elem_fields[];
239 extern FMField field_list9[];
240 extern FMField string_array_field_list[];
241 extern FMField derive_msg_field_list[];
242 extern FMField format_list_field_list[];
243 extern FMField field_list_flds[];
244 extern FMField channel_id_flds[];
245 extern FMField multi_array_flds[];
246 extern FMField compressed_mesh[];
247 extern FMField triangle_field[];
248 extern FMField xml_format_list_flds[];
249 extern FMField add_field_list[];
250 extern FMField node_field_list[];
251 
252 extern FMStructDescRec first_format_list[];
253 extern FMStructDescRec string_format_list[];
254 extern FMStructDescRec structured_format_list[];
255 extern FMStructDescRec two_string_format_list[];
256 extern FMStructDescRec fourth_format_list[];
257 extern FMStructDescRec later_format_list[];
258 extern FMStructDescRec nested_format_list[];
259 extern FMStructDescRec embedded_format_list[];
260 extern FMStructDescRec variant_format_list[];
261 extern FMStructDescRec ninth_format_list[];
262 extern FMStructDescRec string_array_format_list[];
263 extern FMStructDescRec derive_format_list[];
264 extern FMStructDescRec multi_array_format_list[];
265 extern FMStructDescRec triangle_format_list[];
266 extern FMStructDescRec add_action_format_list[];
267 extern FMStructDescRec node_format_list [];
268 
269 extern void init_written_data();
270 extern void free_written_data();
271 
272 extern char *comment_array[];
273 
274 extern first_rec rec1_array[13];
275 
276 extern second_rec rec2_array[4];
277 
278 extern third_rec rec3_array[5];
279 
280 extern fourth_rec rec4;
281 
282 extern fifth_rec rec5;
283 
284 extern sixth_rec rec6_array[4];
285 
286 extern nested_rec rec7_array[1];
287 
288 extern later_rec rec8_array[3];
289 
290 extern ninth_rec rec9_array[6];
291 
292 extern string_array_rec string_array_array[6];
293 
294 extern DeriveMsg derive;
295 
296 extern multi_array_rec multi_array;
297 
298 extern multi_array_rec2 multi_array2;
299 
300 extern multi_array_rec fortran_array;
301 
302 extern triangle_param triangle;
303 
304 extern add_rec add_action_record;
305 
306 extern int first_rec_eq(first_rec *r1, first_rec *r2);
307 extern int second_rec_eq(second_rec *r1, second_rec *r2);
308 extern int third_rec_eq(third_rec *r1, third_rec *r2);
309 extern int fourth_rec_eq(fourth_rec *r1, fourth_rec *r2);
310 extern int emb_rec_eq(embedded_rec *r1, embedded_rec *r2);
311 extern int fifth_rec_eq(fifth_rec *r1, fifth_rec *r2);
312 extern int sixth_rec_eq(sixth_rec *r1, sixth_rec *r2);
313 extern int nested_rec_eq(nested_rec *r1, nested_rec *r2);
314 extern int later_rec_eq(later_rec *r1, later_rec *r2);
315 extern int ninth_rec_eq(ninth_rec *r1, ninth_rec *r2);
316 extern int string_array_eq(string_array_rec *r1, string_array_rec *r2);
317 extern int derive_eq(DeriveMsgPtr d1, DeriveMsgPtr d2);
318 extern int multi_array_eq(multi_array_rec *r1, multi_array_rec *r2);
319 extern int triangle_param_eq(triangle_param *r1, triangle_param *r2);
320 extern int add_rec_eq(add_rec_ptr r1, add_rec_ptr r2);
321 
322 extern char *first_xml;
323 extern char *string_xml;
324 extern char *third_xml;
325 extern char *fourth_xml;
326 extern char *embedded_xml;
327 extern char *struct_array_xml;
328 extern char *var_array_xml;
329 extern char *later_xml;
330 extern char *later2_xml;
331 extern char *nested_xml;
332 extern char *event_xml;
333 extern char *event_vec_xml;
334 extern char *multi_array_xml;
335