From e2577d0360f31128b87c748dc9a3253b2ed87727 Mon Sep 17 00:00:00 2001 From: mquinson Date: Fri, 11 Jun 2004 19:39:22 +0000 Subject: [PATCH 1/1] [Data description] - Interface cleanup. . gras_datadesc_by_name returns the searched type or NULL. That way, no variable is needed to use a type desc once, which makes the code clearer. . gras_datadesc_declare_[struct|union]_append_name is removed. The last two parameters were strings (field name, type name), leading to common errors. git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@97 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- examples/ping/ping.c | 4 +-- include/datadesc.h | 11 +----- src/gras/DataDesc/datadesc.c | 5 +-- src/gras/DataDesc/ddt_create.c | 37 ++++++++------------- src/gras/DataDesc/ddt_exchange.c | 28 ++++++++++------ src/gras/Msg/msg.c | 12 ++++--- testsuite/gras/datadesc_usage.c | 57 +++++++++++++++++--------------- 7 files changed, 76 insertions(+), 78 deletions(-) diff --git a/examples/ping/ping.c b/examples/ping/ping.c index c9d87ece9f..286b074931 100644 --- a/examples/ping/ping.c +++ b/examples/ping/ping.c @@ -34,8 +34,8 @@ gras_error_t register_messages(void) { gras_msgtype_t *msg_t; TRY(gras_datadesc_declare_struct("msg_ping_t",&payload_t)); - TRY(gras_datadesc_declare_struct_append_name(payload_t, - "dummy","msg_ping_t")); + TRY(gras_datadesc_declare_struct_append(payload_t,"dummy", + gras_datadesc_by_name("int"))); TRY(gras_msgtype_declare("ping", payload_t, &msg_t)); msg_t=NULL; TRY(gras_msgtype_declare("pong", payload_t, &msg_t)); diff --git a/include/datadesc.h b/include/datadesc.h index 3a904bee1d..4d78dfc2e7 100644 --- a/include/datadesc.h +++ b/include/datadesc.h @@ -52,8 +52,7 @@ typedef int (*gras_datadesc_type_cb_int_t)(void *vars, /*********************************************** **** Search and retrieve declared datatype **** ***********************************************/ -gras_error_t gras_datadesc_by_name(const char *name, - gras_datadesc_type_t **type); +gras_datadesc_type_t *gras_datadesc_by_name(const char *name); /****************************************** **** Declare datadescription yourself **** @@ -67,10 +66,6 @@ gras_datadesc_declare_struct_append(gras_datadesc_type_t *struct_type, const char *name, gras_datadesc_type_t *field_type); gras_error_t -gras_datadesc_declare_struct_append_name(gras_datadesc_type_t *struct_type, - const char *name, - const char *field_type_name); -gras_error_t gras_datadesc_declare_union(const char *name, gras_datadesc_type_cb_int_t selector, gras_datadesc_type_t **dst); @@ -79,10 +74,6 @@ gras_datadesc_declare_union_append(gras_datadesc_type_t *union_type, const char *name, gras_datadesc_type_t *field_type); gras_error_t -gras_datadesc_declare_union_append_name(gras_datadesc_type_t *union_type, - const char *name, - const char *field_type_name); -gras_error_t gras_datadesc_declare_ref(const char *name, gras_datadesc_type_t *referenced_type, gras_datadesc_type_t **dst); diff --git a/src/gras/DataDesc/datadesc.c b/src/gras/DataDesc/datadesc.c index 82a0391275..be75c3b7b6 100644 --- a/src/gras/DataDesc/datadesc.c +++ b/src/gras/DataDesc/datadesc.c @@ -129,8 +129,9 @@ gras_datadesc_init(void) { e_gras_dd_scalar_encoding_float, NULL,&ddt)); - TRYFAIL(gras_datadesc_by_name("char",&elm)); - TRYFAIL(gras_datadesc_declare_array_dyn("string", elm, _strlen_cb,&ddt)); + TRYFAIL(gras_datadesc_declare_array_dyn("string", + gras_datadesc_by_name("char"), + _strlen_cb,&ddt)); // elm=ddt; // TRYFAIL(gras_datadesc_declare_ref("string", elm, &ddt)); diff --git a/src/gras/DataDesc/ddt_create.c b/src/gras/DataDesc/ddt_create.c index 61b371b40c..d8a4e76f33 100644 --- a/src/gras/DataDesc/ddt_create.c +++ b/src/gras/DataDesc/ddt_create.c @@ -50,10 +50,16 @@ gras_ddt_new(const char *name, * * Retrieve a type from its name */ -gras_error_t gras_datadesc_by_name(const char *name, - gras_datadesc_type_t **type) { - return gras_set_get_by_name(gras_datadesc_set_local, - name,(gras_set_elm_t**)type); +gras_datadesc_type_t *gras_datadesc_by_name(const char *name) { + + gras_datadesc_type_t *type; + + if (gras_set_get_by_name(gras_datadesc_set_local, + name,(gras_set_elm_t**)&type) == no_error) { + return type; + } else { + return NULL; + } } /** @@ -179,21 +185,6 @@ gras_datadesc_declare_struct(const char *name, return no_error; } -gras_error_t -gras_datadesc_declare_struct_append_name(gras_datadesc_type_t *struct_type, - const char *name, - const char *field_type_name){ - gras_error_t errcode; - gras_datadesc_type_t *field_type; - - errcode = gras_datadesc_by_name(field_type_name, &field_type); - if (errcode != no_error) { - WARN2("Got error '%s' while looking for '%s'", - gras_error_name(errcode), field_type_name); - return errcode; - } - return gras_datadesc_declare_struct_append(struct_type,name,field_type); -} /** * gras_datadesc_declare_struct_append: * @@ -321,13 +312,13 @@ gras_datadesc_declare_ref(const char *name, gras_error_t errcode; gras_datadesc_type_t *res; - gras_datadesc_type_t *pointer_type; + gras_datadesc_type_t *pointer_type = gras_datadesc_by_name("data pointer"); int arch; TRY(gras_ddt_new(name,dst)); res=*dst; - TRY(gras_datadesc_by_name("data pointer", &pointer_type)); + gras_assert0(pointer_type, "Cannot get the description of data pointer"); for (arch=0; archsize[arch] = pointer_type->size[arch]; @@ -354,13 +345,13 @@ gras_datadesc_declare_ref_generic(const char *name, gras_error_t errcode; gras_datadesc_type_t *res; - gras_datadesc_type_t *pointer_type; + gras_datadesc_type_t *pointer_type = gras_datadesc_by_name("data pointer"); int arch; TRY(gras_ddt_new(name,dst)); res=*dst; - TRY(gras_datadesc_by_name("data pointer", &pointer_type)); + gras_assert0(pointer_type, "Cannot get the description of data pointer"); for (arch=0; archsize[arch] = pointer_type->size[arch]; diff --git a/src/gras/DataDesc/ddt_exchange.c b/src/gras/DataDesc/ddt_exchange.c index 579f2ea738..f9304d6dde 100644 --- a/src/gras/DataDesc/ddt_exchange.c +++ b/src/gras/DataDesc/ddt_exchange.c @@ -48,11 +48,12 @@ gras_datadesc_recv_rec(gras_socket_t *sock, static gras_error_t gras_dd_send_int(gras_socket_t *sock,int i) { - gras_error_t errcode; - if (!int_type) - TRY(gras_datadesc_by_name("int", &int_type)); - + if (!int_type) { + int_type = gras_datadesc_by_name("int"); + gras_assert(int_type); + } + DEBUG1("send_int(%d)",i); return gras_trp_chunk_send(sock, (char*)&i, int_type->size[GRAS_THISARCH]); } @@ -61,8 +62,10 @@ static gras_error_t gras_dd_recv_int(gras_socket_t *sock, int r_arch, int *i) { gras_error_t errcode; - if (!int_type) - TRY(gras_datadesc_by_name("int", &int_type)); + if (!int_type) { + int_type = gras_datadesc_by_name("int"); + gras_assert(int_type); + } if (int_type->size[GRAS_THISARCH] >= int_type->size[r_arch]) { TRY(gras_trp_chunk_recv(sock, (char*)i, int_type->size[r_arch])); @@ -356,8 +359,11 @@ gras_datadesc_send_rec(gras_socket_t *sock, } /* Send the actual value of the pointer for cycle handling */ - if (!pointer_type) - TRY(gras_datadesc_by_name("data pointer", &pointer_type)); + if (!pointer_type) { + pointer_type = gras_datadesc_by_name("data pointer"); + gras_assert(pointer_type); + } + TRY(gras_trp_chunk_send(sock, (char*)data, pointer_type->size[GRAS_THISARCH])); @@ -558,8 +564,10 @@ gras_datadesc_recv_rec(gras_socket_t *sock, TRY(gras_dd_recv_int(sock, r_arch, &ref_code)); /* Get the actual value of the pointer for cycle handling */ - if (!pointer_type) - TRY(gras_datadesc_by_name("data pointer", &pointer_type)); + if (!pointer_type) { + pointer_type = gras_datadesc_by_name("data pointer"); + gras_assert(pointer_type); + } if (! (r_ref = malloc((size_t)pointer_type->size[r_arch])) ) RAISE_MALLOC; diff --git a/src/gras/Msg/msg.c b/src/gras/Msg/msg.c index 4cb483b19e..e57a57c8a2 100644 --- a/src/gras/Msg/msg.c +++ b/src/gras/Msg/msg.c @@ -194,8 +194,10 @@ gras_msg_send(gras_socket_t *sock, gras_error_t errcode; static gras_datadesc_type_t *string_type=NULL; - if (!string_type) - TRY(gras_datadesc_by_name("string", &string_type)); + if (!string_type) { + string_type = gras_datadesc_by_name("string"); + gras_assert(string_type); + } TRY(gras_trp_chunk_send(sock, GRAS_header, 6)); @@ -222,8 +224,10 @@ gras_msg_recv(gras_socket_t *sock, int r_arch; char *msg_name; - if (!string_type) - TRY(gras_datadesc_by_name("string", &string_type)); + if (!string_type) { + string_type=gras_datadesc_by_name("string"); + gras_assert(string_type); + } TRY(gras_trp_chunk_recv(sock, header, 6)); for (cpt=0; cpt<4; cpt++) diff --git a/testsuite/gras/datadesc_usage.c b/testsuite/gras/datadesc_usage.c index 8acb2d073a..144e17f73d 100644 --- a/testsuite/gras/datadesc_usage.c +++ b/testsuite/gras/datadesc_usage.c @@ -49,24 +49,20 @@ gras_error_t test_graph(void); gras_error_t test_int(void) { gras_error_t errcode; - gras_datadesc_type_t *type; int i=5,*j=NULL; INFO0("==== Test on integer ===="); - TRY(gras_datadesc_by_name("int", &type)); - TRY(write_read(type, (void*)&i,(void**) &j)); + TRY(write_read(gras_datadesc_by_name("int"), (void*)&i,(void**) &j)); gras_assert(i == *j); free(j); return no_error; } gras_error_t test_float(void) { gras_error_t errcode; - gras_datadesc_type_t *type; float i=5.0,*j=NULL; INFO0("==== Test on float ===="); - TRY(gras_datadesc_by_name("float", &type)); - TRY(write_read(type, (void*)&i,(void**) &j)); + TRY(write_read(gras_datadesc_by_name("float"), (void*)&i,(void**) &j)); gras_assert(i == *j); free(j); return no_error; @@ -76,7 +72,6 @@ gras_error_t test_float(void) { typedef int array[SIZE]; gras_error_t test_array(void) { gras_error_t errcode; - gras_datadesc_type_t *int_type; gras_datadesc_type_t *my_type; array i,*j; @@ -88,9 +83,9 @@ gras_error_t test_array(void) { } j=NULL; - TRY(gras_datadesc_by_name("int", &int_type)); TRY(gras_datadesc_declare_array_fixed("fixed int array", - int_type, 5, &my_type)); + gras_datadesc_by_name("int"), + 5, &my_type)); TRY(write_read(my_type, (void*)&i,(void**) &j)); for (cpt=0; cpt