-static void register_types(void) {
- gras_datadesc_type_t my_type,ref_my_type;
-
- gras_msgtype_declare("char",gras_datadesc_by_name("char"));
- gras_msgtype_declare("int",gras_datadesc_by_name("int"));
- gras_msgtype_declare("float",gras_datadesc_by_name("float"));
- gras_msgtype_declare("double",gras_datadesc_by_name("double"));
-
- my_type=gras_datadesc_array_fixed("fixed int array",
- gras_datadesc_by_name("int"),
- FIXED_ARRAY_SIZE);
- gras_msgtype_declare("fixed int array",my_type);
-
- my_type = gras_datadesc_dynar(gras_datadesc_by_name("int"),NULL);
- gras_msgtype_declare("xbt_dynar_of_int",my_type);
-
- my_type = gras_datadesc_ref("int*",gras_datadesc_by_name("int"));
- gras_msgtype_declare("int*",my_type);
-
- gras_msgtype_declare("string",gras_datadesc_by_name("string"));
-
- my_type=gras_datadesc_struct("homostruct");
- gras_datadesc_struct_append(my_type,"a",gras_datadesc_by_name("signed int"));
- gras_datadesc_struct_append(my_type,"b",gras_datadesc_by_name("int"));
- gras_datadesc_struct_append(my_type,"c",gras_datadesc_by_name("int"));
- gras_datadesc_struct_append(my_type,"d",gras_datadesc_by_name("int"));
- gras_datadesc_struct_close(my_type);
- my_type=gras_datadesc_ref("homostruct*",gras_datadesc_by_name("homostruct"));
- gras_msgtype_declare("homostruct*",my_type);
-
- my_type=gras_datadesc_struct("hetestruct");
- gras_datadesc_struct_append(my_type,"c1", gras_datadesc_by_name("unsigned char"));
- gras_datadesc_struct_append(my_type,"l1", gras_datadesc_by_name("unsigned long int"));
- gras_datadesc_struct_append(my_type,"c2", gras_datadesc_by_name("unsigned char"));
- gras_datadesc_struct_append(my_type,"l2", gras_datadesc_by_name("unsigned long int"));
- gras_datadesc_struct_close(my_type);
- my_type=gras_datadesc_ref("hetestruct*", gras_datadesc_by_name("hetestruct"));
- gras_msgtype_declare("hetestruct*",my_type);
-
- my_type=gras_datadesc_struct("nestedstruct");
- gras_datadesc_struct_append(my_type,"hete",gras_datadesc_by_name("hetestruct"));
- gras_datadesc_struct_append(my_type,"homo",gras_datadesc_by_name("homostruct"));
- gras_datadesc_struct_close(my_type);
- my_type=gras_datadesc_ref("nestedstruct*", gras_datadesc_by_name("nestedstruct"));
- gras_msgtype_declare("nestedstruct*",my_type);
-
- my_type=gras_datadesc_struct("chained_list_t");
- ref_my_type=gras_datadesc_ref("chained_list_t*",my_type);
- gras_datadesc_struct_append(my_type,"v", gras_datadesc_by_name("int"));
- gras_datadesc_struct_append(my_type,"l", ref_my_type);
- gras_datadesc_struct_close(my_type);
- gras_datadesc_cycle_set(gras_datadesc_by_name("chained_list_t*"));
- gras_msgtype_declare("chained_list_t",my_type);
- gras_msgtype_declare("chained_list_t*",ref_my_type);
-
- my_type = gras_datadesc_dynar(gras_datadesc_by_name("string"),&free_string);
- gras_msgtype_declare("xbt_dynar_of_string",my_type);
-
- my_type = gras_datadesc_by_symbol(s_pbio);
- gras_msgtype_declare("s_pbio",my_type);
-
- my_type = gras_datadesc_by_symbol(s_clause);
- my_type = gras_datadesc_ref("Clause*",my_type);
- gras_msgtype_declare("Clause*",my_type);
+static void test_clause_empty(xbt_socket_t sock, int direction)
+{
+ Clause *i, *j;
+
+ XBT_INFO
+ ("---- Test on struct containing dynamic array and its size when size=0 (cbps test) ----");
+
+ /* create and fill the struct */
+ i = xbt_new(Clause, 1);
+
+ i->num_lits = 0;
+ i->literals = NULL;
+ XBT_DEBUG("created data=%p (within %p @%p)", &(i->num_lits), i, &i);
+ XBT_DEBUG("created count=%d", i->num_lits);
+
+ write_read("Clause*", &i, &j, sock, direction);
+ if (direction == READ || direction == COPY) {
+ xbt_assert(i->num_lits == j->num_lits);
+
+ free(j->literals);
+ free(j);
+ }
+ free(i->literals);
+ free(i);
+}
+
+static void register_types(void)
+{
+ xbt_datadesc_type_t my_type, ref_my_type;
+
+ gras_msgtype_declare("char", xbt_datadesc_by_name("char"));
+ gras_msgtype_declare("int", xbt_datadesc_by_name("int"));
+ gras_msgtype_declare("float", xbt_datadesc_by_name("float"));
+ gras_msgtype_declare("double", xbt_datadesc_by_name("double"));
+
+ my_type = xbt_datadesc_array_fixed("fixed int array",
+ xbt_datadesc_by_name("int"),
+ FIXED_ARRAY_SIZE);
+ gras_msgtype_declare("fixed int array", my_type);
+
+ my_type = xbt_datadesc_dynar(xbt_datadesc_by_name("int"), NULL);
+ gras_msgtype_declare("xbt_dynar_of_int", my_type);
+
+ my_type = xbt_datadesc_ref("int*", xbt_datadesc_by_name("int"));
+ gras_msgtype_declare("int*", my_type);
+
+ gras_msgtype_declare("string", xbt_datadesc_by_name("string"));
+
+ my_type = xbt_datadesc_struct("homostruct");
+ xbt_datadesc_struct_append(my_type, "a",
+ xbt_datadesc_by_name("signed int"));
+ xbt_datadesc_struct_append(my_type, "b", xbt_datadesc_by_name("int"));
+ xbt_datadesc_struct_append(my_type, "c", xbt_datadesc_by_name("int"));
+ xbt_datadesc_struct_append(my_type, "d", xbt_datadesc_by_name("int"));
+ xbt_datadesc_struct_close(my_type);
+ my_type =
+ xbt_datadesc_ref("homostruct*",
+ xbt_datadesc_by_name("homostruct"));
+ gras_msgtype_declare("homostruct*", my_type);
+
+ my_type = xbt_datadesc_struct("hetestruct");
+ xbt_datadesc_struct_append(my_type, "c1",
+ xbt_datadesc_by_name("unsigned char"));
+ xbt_datadesc_struct_append(my_type, "l1",
+ xbt_datadesc_by_name("unsigned long int"));
+ xbt_datadesc_struct_append(my_type, "c2",
+ xbt_datadesc_by_name("unsigned char"));
+ xbt_datadesc_struct_append(my_type, "l2",
+ xbt_datadesc_by_name("unsigned long int"));
+ xbt_datadesc_struct_close(my_type);
+ my_type =
+ xbt_datadesc_ref("hetestruct*",
+ xbt_datadesc_by_name("hetestruct"));
+ gras_msgtype_declare("hetestruct*", my_type);
+
+ my_type =
+ xbt_datadesc_array_fixed("hetestruct[10]",
+ xbt_datadesc_by_name("hetestruct"), 10);
+ my_type = xbt_datadesc_ref("hetestruct[10]*", my_type);
+ gras_msgtype_declare("hetestruct[10]*", my_type);
+
+ my_type = xbt_datadesc_struct("nestedstruct");
+ xbt_datadesc_struct_append(my_type, "hete",
+ xbt_datadesc_by_name("hetestruct"));
+ xbt_datadesc_struct_append(my_type, "homo",
+ xbt_datadesc_by_name("homostruct"));
+ xbt_datadesc_struct_close(my_type);
+ my_type =
+ xbt_datadesc_ref("nestedstruct*",
+ xbt_datadesc_by_name("nestedstruct"));
+ gras_msgtype_declare("nestedstruct*", my_type);
+
+ my_type = xbt_datadesc_struct("chained_list_t");
+ ref_my_type = xbt_datadesc_ref("chained_list_t*", my_type);
+ xbt_datadesc_struct_append(my_type, "v", xbt_datadesc_by_name("int"));
+ xbt_datadesc_struct_append(my_type, "l", ref_my_type);
+ xbt_datadesc_struct_close(my_type);
+ xbt_datadesc_cycle_set(xbt_datadesc_by_name("chained_list_t*"));
+ gras_msgtype_declare("chained_list_t", my_type);
+ gras_msgtype_declare("chained_list_t*", ref_my_type);
+
+ my_type =
+ xbt_datadesc_dynar(xbt_datadesc_by_name("string"), &free_string);
+ gras_msgtype_declare("xbt_dynar_of_string", my_type);
+
+ my_type = xbt_datadesc_by_symbol(s_pbio);
+ gras_msgtype_declare("s_pbio", my_type);
+
+ my_type = xbt_datadesc_by_symbol(s_clause);
+ my_type = xbt_datadesc_ref("Clause*", my_type);
+ gras_msgtype_declare("Clause*", my_type);