3 /* datadesc - data description in order to send/recv it in GRAS */
5 /* Authors: Olivier Aumage, Martin Quinson */
6 /* Copyright (C) 2003, 2004 the GRAS posse. */
8 /* This program is free software; you can redistribute it and/or modify it
9 under the terms of the license (GNU LGPL) which comes with this package. */
11 #include "DataDesc/datadesc_private.h"
13 GRAS_LOG_NEW_DEFAULT_SUBCATEGORY(DataDesc,GRAS);
14 /* FIXME: make this host-dependent using a trick such as UserData*/
15 gras_set_t *gras_datadesc_set_local=NULL;
18 /* callback for array size when sending strings */
20 _strlen_cb(void *vars,
21 gras_datadesc_type_t *type,
24 return 1+(long int)strlen(data);
31 * Initialize the datadesc module.
32 * FIXME: We assume that when neither signed nor unsigned is given,
33 * that means signed. To be checked by configure.
36 gras_datadesc_init(void) {
38 gras_datadesc_type_t *ddt; /* What to add */
39 gras_datadesc_type_t *elm; /* element of ddt when needed */
41 /* only initialize once */
42 if (gras_datadesc_set_local != NULL)
45 VERB0("Initializing DataDesc");
47 TRYFAIL(gras_set_new(&gras_datadesc_set_local));
49 TRYFAIL(gras_datadesc_declare_scalar("signed char",
51 e_gras_dd_scalar_encoding_sint,
53 TRYFAIL(gras_datadesc_declare_scalar("char",
55 e_gras_dd_scalar_encoding_sint,
57 TRYFAIL(gras_datadesc_declare_scalar("unsigned char",
59 e_gras_dd_scalar_encoding_uint,
62 TRYFAIL(gras_datadesc_declare_scalar("signed short int",
63 gras_ddt_scalar_short,
64 e_gras_dd_scalar_encoding_sint,
66 TRYFAIL(gras_datadesc_declare_scalar("short int",
67 gras_ddt_scalar_short,
68 e_gras_dd_scalar_encoding_sint,
70 TRYFAIL(gras_datadesc_declare_scalar("unsigned short int",
71 gras_ddt_scalar_short,
72 e_gras_dd_scalar_encoding_uint,
75 TRYFAIL(gras_datadesc_declare_scalar("signed int",
77 e_gras_dd_scalar_encoding_sint,
79 TRYFAIL(gras_datadesc_declare_scalar("int",
81 e_gras_dd_scalar_encoding_sint,
83 TRYFAIL(gras_datadesc_declare_scalar("unsigned int",
85 e_gras_dd_scalar_encoding_uint,
88 TRYFAIL(gras_datadesc_declare_scalar("signed long int",
90 e_gras_dd_scalar_encoding_sint,
92 TRYFAIL(gras_datadesc_declare_scalar("long int",
94 e_gras_dd_scalar_encoding_sint,
96 TRYFAIL(gras_datadesc_declare_scalar("unsigned long int",
98 e_gras_dd_scalar_encoding_uint,
101 TRYFAIL(gras_datadesc_declare_scalar("signed long long int",
102 gras_ddt_scalar_long_long,
103 e_gras_dd_scalar_encoding_sint,
105 TRYFAIL(gras_datadesc_declare_scalar("long long int",
106 gras_ddt_scalar_long_long,
107 e_gras_dd_scalar_encoding_sint,
109 TRYFAIL(gras_datadesc_declare_scalar("unsigned long long int",
110 gras_ddt_scalar_long_long,
111 e_gras_dd_scalar_encoding_uint,
114 TRYFAIL(gras_datadesc_declare_scalar("data pointer",
115 gras_ddt_scalar_pdata,
116 e_gras_dd_scalar_encoding_uint,
118 TRYFAIL(gras_datadesc_declare_scalar("function pointer",
119 gras_ddt_scalar_pfunc,
120 e_gras_dd_scalar_encoding_uint,
123 TRYFAIL(gras_datadesc_declare_scalar("float",
124 gras_ddt_scalar_float,
125 e_gras_dd_scalar_encoding_float,
127 TRYFAIL(gras_datadesc_declare_scalar("double",
128 gras_ddt_scalar_float,
129 e_gras_dd_scalar_encoding_float,
132 TRYFAIL(gras_datadesc_declare_array_dyn("string",
133 gras_datadesc_by_name("char"),
137 // TRYFAIL(gras_datadesc_declare_ref("string", elm, &ddt));
141 * gras_datadesc_exit:
143 * Finalize the datadesc module
146 gras_datadesc_exit(void) {
147 VERB0("Exiting DataDesc");
148 gras_set_free(&gras_datadesc_set_local);
149 gras_datadesc_set_local = NULL;