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 typedef struct pointer_to_static_array {
226     int (*int_array)[4][4];
227 } *pointer_to_static_array_ptr;
228 
229 extern int calc_signature(node_ptr n, visit_table v);
230 
231 typedef struct _cp_init_info {
232     char *contact_info;
233     int target_stone;
234     void *reader_ID;
235 } *cp_init_info;
236 
237 struct _reader_register_msg {
238     void *writer_file;
239     int writer_response_condition;
240     int reader_cohort_size;
241     cp_init_info *CP_reader_info;
242 };
243 
244 extern FMField cp_reader_init_list[];
245 extern FMField cp_reader_register_list[];
246 extern FMStructDescRec reader_register_format_list[];
247 
248 extern FMField field_list[];
249 extern FMField newer_field_list[];
250 extern FMField field_list2[];
251 extern FMField field_list3[];
252 extern FMField field_list4[];
253 extern FMField embedded_field_list[];
254 extern FMField field_list5[];
255 extern FMField later_field_list[];
256 extern FMField later_field_list2[];
257 extern FMField nested_field_list[];
258 extern FMField field_list6[];
259 extern FMField event_vec_elem_fields[];
260 extern FMField field_list9[];
261 extern FMField string_array_field_list[];
262 extern FMField derive_msg_field_list[];
263 extern FMField format_list_field_list[];
264 extern FMField field_list_flds[];
265 extern FMField channel_id_flds[];
266 extern FMField multi_array_flds[];
267 extern FMField compressed_mesh[];
268 extern FMField triangle_field[];
269 extern FMField xml_format_list_flds[];
270 extern FMField add_field_list[];
271 extern FMField node_field_list[];
272 extern FMField pointer_to_static_field_list[];
273 
274 extern FMStructDescRec first_format_list[];
275 extern FMStructDescRec string_format_list[];
276 extern FMStructDescRec structured_format_list[];
277 extern FMStructDescRec two_string_format_list[];
278 extern FMStructDescRec fourth_format_list[];
279 extern FMStructDescRec later_format_list[];
280 extern FMStructDescRec nested_format_list[];
281 extern FMStructDescRec embedded_format_list[];
282 extern FMStructDescRec variant_format_list[];
283 extern FMStructDescRec ninth_format_list[];
284 extern FMStructDescRec string_array_format_list[];
285 extern FMStructDescRec derive_format_list[];
286 extern FMStructDescRec multi_array_format_list[];
287 extern FMStructDescRec triangle_format_list[];
288 extern FMStructDescRec add_action_format_list[];
289 extern FMStructDescRec node_format_list [];
290 extern FMStructDescRec pointer_to_static_format_list [];
291 
292 extern void init_written_data();
293 extern void free_written_data();
294 
295 extern char *comment_array[];
296 
297 extern first_rec rec1_array[13];
298 extern int rec1_attr_val[13];
299 
300 extern second_rec rec2_array[4];
301 extern int rec2_attr_val[4];
302 
303 extern third_rec rec3_array[5];
304 extern int rec3_attr_val[5];
305 
306 extern fourth_rec rec4;
307 
308 extern fifth_rec rec5;
309 extern int rec5_attr_val;
310 
311 extern sixth_rec rec6_array[4];
312 
313 extern nested_rec rec7_array[1];
314 
315 extern later_rec rec8_array[3];
316 
317 extern ninth_rec rec9_array[6];
318 
319 extern string_array_rec string_array_array[6];
320 
321 extern DeriveMsg derive;
322 
323 extern multi_array_rec multi_array;
324 
325 extern multi_array_rec2 multi_array2;
326 
327 extern multi_array_rec fortran_array;
328 
329 extern triangle_param triangle;
330 
331 extern add_rec add_action_record;
332 
333 extern struct pointer_to_static_array psa;
334 
335 extern struct _reader_register_msg reader_register;
336 
337 extern int first_rec_eq(first_rec *r1, first_rec *r2);
338 extern int second_rec_eq(second_rec *r1, second_rec *r2);
339 extern int third_rec_eq(third_rec *r1, third_rec *r2);
340 extern int fourth_rec_eq(fourth_rec *r1, fourth_rec *r2);
341 extern int emb_rec_eq(embedded_rec *r1, embedded_rec *r2);
342 extern int fifth_rec_eq(fifth_rec *r1, fifth_rec *r2);
343 extern int sixth_rec_eq(sixth_rec *r1, sixth_rec *r2);
344 extern int nested_rec_eq(nested_rec *r1, nested_rec *r2);
345 extern int later_rec_eq(later_rec *r1, later_rec *r2);
346 extern int ninth_rec_eq(ninth_rec *r1, ninth_rec *r2);
347 extern int string_array_eq(string_array_rec *r1, string_array_rec *r2);
348 extern int derive_eq(DeriveMsgPtr d1, DeriveMsgPtr d2);
349 extern int multi_array_eq(multi_array_rec *r1, multi_array_rec *r2);
350 extern int triangle_param_eq(triangle_param *r1, triangle_param *r2);
351 extern int add_rec_eq(add_rec_ptr r1, add_rec_ptr r2);
352 extern int
353 pointer_to_static_rec_eq(pointer_to_static_array_ptr r1, pointer_to_static_array_ptr r2);
354 extern int
355 reader_register_rec_eq(struct _reader_register_msg *r1, struct _reader_register_msg *r2);
356 
357 extern const char *first_xml;
358 extern char *string_xml;
359 extern char *third_xml;
360 extern char *fourth_xml;
361 extern char *embedded_xml;
362 extern char *struct_array_xml;
363 extern char *var_array_xml;
364 extern char *later_xml;
365 extern char *later2_xml;
366 extern char *nested_xml;
367 extern char *event_xml;
368 extern char *event_vec_xml;
369 extern char *multi_array_xml;
370