5 /* Mask internal structures to users */
6 typedef struct s_gs_type_bag gras_type_bag_t;
7 typedef struct s_gs_connection gras_connection_t;
8 typedef struct s_gs_type gras_type_t;
9 typedef struct s_gs_message gras_message_t;
10 typedef struct s_gs_net_driver gras_net_driver_t;
11 typedef struct s_gs_message_instance gras_message_instance_t;
12 typedef struct s_gs_type_driver gras_type_driver_t;
15 /* public functions */
21 gs_purge_cmd_line(int *argc,
30 gs_type_new_unsigned_integer_elemental(gras_type_bag_t *p_bag,
31 gras_connection_t *p_connection,
36 gs_type_new_signed_integer_elemental(gras_type_bag_t *p_bag,
37 gras_connection_t *p_connection,
42 gs_type_new_floating_point_elemental(gras_type_bag_t *p_bag,
43 gras_connection_t *p_connection,
48 gs_type_new_struct(gras_type_bag_t *p_bag,
49 gras_connection_t *p_connection,
53 gs_type_struct_append_field(gras_type_t *p_struct_type,
55 gras_type_t *p_field_type);
58 gs_type_new_union(gras_type_bag_t *p_bag,
59 gras_connection_t *p_connection,
62 int (*field_callback)(void *vars,
67 gs_type_union_append_field(gras_type_t *p_union_type,
69 gras_type_t *p_field_type);
72 gs_type_new_ref(gras_type_bag_t *p_bag,
73 gras_connection_t *p_connection,
75 gras_type_t *p_referenced_type);
78 gs_type_new_array(gras_type_bag_t *p_bag,
79 gras_connection_t *p_connection,
82 gras_type_t *p_array_element_type);
85 gs_type_new_ignored(gras_type_bag_t *p_bag,
86 gras_connection_t *p_connection,
95 gs_type_new_unsigned_integer_elemental_with_callback(gras_type_bag_t *p_bag,
96 gras_connection_t *p_connection,
100 void (*callback)(void *vars,
105 gs_type_new_signed_integer_elemental_with_callback(gras_type_bag_t *p_bag,
106 gras_connection_t *p_connection,
110 void (*callback)(void *vars,
115 gs_type_new_floating_point_elemental_with_callback(gras_type_bag_t *p_bag,
116 gras_connection_t *p_connection,
120 void (*callback)(void *vars,
125 gs_type_new_struct_with_callback(gras_type_bag_t *p_bag,
126 gras_connection_t *p_connection,
129 void (*before_callback)(void *vars,
133 void (*after_callback)(void *vars,
138 gs_type_struct_append_field_with_callback(gras_type_t *p_struct_type,
140 gras_type_t *p_field_type,
142 void (*before_callback)(void *vars,
146 void (*after_callback)(void *vars,
152 gs_type_new_union_with_callback(gras_type_bag_t *p_bag,
153 gras_connection_t *p_connection,
156 int (*field_callback)(void *vars,
160 void (*after_callback)(void *vars,
165 gs_type_union_append_field_with_callback(gras_type_t *p_union_type,
167 gras_type_t *p_field_type,
169 void (*before_callback)(void *vars,
173 void (*after_callback)(void *vars,
178 gs_type_new_ref_with_callback(gras_type_bag_t *p_bag,
179 gras_connection_t *p_connection,
181 gras_type_t *p_referenced_type,
183 int (*type_callback)(void *vars,
187 void (*after_callback)(void *vars,
192 gs_type_new_array_with_callback(gras_type_bag_t *p_bag,
193 gras_connection_t *p_connection,
196 gras_type_t *p_array_element_type,
198 long int (*size_callback)(void *vars,
202 void (*after_callback)(void *vars,
207 gs_type_new_ignored_with_callback(gras_type_bag_t *p_bag,
208 gras_connection_t *p_connection,
213 void (*callback)(void *vars,
217 /* Automatic parsing of datatypes */
219 _gs_type_parse(gras_type_bag_t *p_bag,
220 const char *definition);
222 #define GRAS_DEFINE_TYPE(name,def) \
223 static const char * _gs_this_type_symbol_does_not_exist__##name=#def; def
225 #define gras_type_symbol_parse(bag,name) \
226 _gs_type_parse(bag, _gs_this_type_symbol_does_not_exist__##name)
228 #define gs_type_get_by_symbol(bag,name) \
229 (bag->bag_ops->get_type_by_name(bag, NULL, #name) ? \
230 bag->bag_ops->get_type_by_name(bag, NULL, #name) : \
231 gras_type_symbol_parse(bag, name) \
237 gs_bootstrap_incoming_connection(gras_type_bag_t *p_bag,
238 gras_connection_t *p_cnx);
241 gs_bootstrap_type_bag(gras_type_bag_t *p_bag);
245 gs_bootstrap_outgoing_connection(gras_type_bag_t *p_bag,
246 gras_connection_t *p_cnx);
251 gs_message_new(gras_type_bag_t *p_bag,
252 gras_connection_t *p_connection,
257 gs_message_append_new_sequence(gras_message_t *p_message,
258 gras_type_t *p_type);
260 gras_message_instance_t *
261 gs_message_init_send_by_ref(gras_type_bag_t *p_bag,
262 gras_connection_t *p_connection,
263 gras_message_t *p_message);
265 gras_message_instance_t *
266 gs_message_init_send_by_name(gras_type_bag_t *p_bag,
267 gras_connection_t *p_connection,
270 gras_message_instance_t *
271 gs_message_init_send_by_code(gras_type_bag_t *p_bag,
272 gras_connection_t *p_connection,
277 gs_message_send_next_sequence_ext(void *vars,
278 gras_message_instance_t *p_message_instance,
282 gs_message_send_next_sequence(gras_message_instance_t *p_message_instance,
286 gs_message_receive_next_sequence(gras_message_instance_t *p_message_instance);
288 gras_message_instance_t *
289 gs_message_init_receive(gras_type_bag_t *p_bag,
290 gras_connection_t *p_cnx);
298 gs_vars_free(void *p_vars);
301 gs_vars_enter(void *p_vars);
304 gs_vars_leave(void *p_vars);
307 gs_vars_push(void *p_vars,
313 gs_vars_get(void *p_vars,
315 gras_type_t **pp_type);
318 gs_vars_set(void *p_vars,
324 gs_vars_pop(void *p_vars,
326 gras_type_t **pp_type);
331 gs_net_drivers_init(void);
334 gs_net_driver_init(const char *name);
337 gs_net_driver_exit(gras_net_driver_t *p_net_driver);
340 gs_net_connection_connect(gras_net_driver_t *p_net_driver,
344 gs_net_connection_accept(gras_net_driver_t *p_net_driver,
348 gs_net_connection_close(gras_connection_t *p_connection);
353 gs_type_drivers_init(void);
356 gs_type_driver_init(const char *name);
359 gs_type_driver_exit(gras_type_driver_t *p_type_driver);
363 gs_type_bag_alloc(gras_type_driver_t *p_driver);
366 gs_type_bag_free(gras_type_bag_t *p_bag);
371 gs_memdup(const void * const ptr,
372 const size_t length);
375 #endif /* GS_INTERFACE_H */