Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Stop implementing bit fields manually, and ask the C compiler to do so for me
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 27 Jun 2005 22:16:07 +0000 (22:16 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Mon, 27 Jun 2005 22:16:07 +0000 (22:16 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@1430 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/gras/DataDesc/datadesc_private.h
src/gras/DataDesc/ddt_create.c
src/gras/DataDesc/ddt_exchange.c

index 00898c2..1d842fc 100644 (file)
@@ -200,13 +200,6 @@ union u_gras_datadesc_category {
         gras_dd_cat_array_t    array_data;
 };
 
-/* flags about the datadesc */
-enum {
-   gras_datadesc_flag_cycle = 1, /* true if the datatype may contain cycle */
-   gras_datadesc_flag_sentinel = 1024
-} gras_datadesc_flag_t;
-
-
 /****************************************/
 /* The holy grail: type descriptor type */
 /****************************************/
@@ -233,9 +226,11 @@ typedef struct s_gras_datadesc_type {
   gras_datadesc_type_cb_void_t         send;
   gras_datadesc_type_cb_void_t         recv;
    
-  int                                  flags; /* possible flags are in gras_datadesc_flag_t */
+  /* flags */
+  int                                  cycle :1;
    
-  char                                 extra[SIZEOF_MAX]; /* random value for users (like default value or whatever) */
+  /* random value for users (like default value or whatever) */
+  char                                 extra[SIZEOF_MAX]; 
 
 } s_gras_datadesc_type_t;
 
index ea98f36..5dfcdea 100644 (file)
@@ -39,7 +39,7 @@ static gras_datadesc_type_t gras_ddt_new(const char *name) {
 
   res->name = (char*)strdup(name);
   res->name_len = strlen(name);
-  res->flags = 0;
+  res->cycle = 0;
       
   xbt_set_add(gras_datadesc_set_local,
               (xbt_set_elm_t)res,&gras_ddt_freev);
@@ -247,7 +247,7 @@ gras_datadesc_struct_close(gras_datadesc_type_t struct_type) {
  */
 void
 gras_datadesc_cycle_set(gras_datadesc_type_t ddt) {
-  ddt->flags |= gras_datadesc_flag_cycle;
+  ddt->cycle = 1;
 }
 
 /**
@@ -259,7 +259,7 @@ gras_datadesc_cycle_set(gras_datadesc_type_t ddt) {
  */
 void
 gras_datadesc_cycle_unset(gras_datadesc_type_t ddt) {
-  ddt->flags &= ~(gras_datadesc_flag_cycle);
+  ddt->cycle = 0;
 }
 
 /** \brief Declare a new union description */
index 7fec4c3..bc64789 100644 (file)
@@ -180,7 +180,7 @@ gras_datadesc_send_rec(gras_socket_t         sock,
       
       VERB1("Send field %s",field->name);
       TRY(gras_datadesc_send_rec(sock,state,refs,sub_type, field_data, 
-                                detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                detect_cycle || sub_type->cycle));
       
     }
     VERB1("<< Sent all fields of the structure %s", type->name);
@@ -220,7 +220,7 @@ gras_datadesc_send_rec(gras_socket_t         sock,
       field->send(type,state,data);
     
     TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, data, 
-                              detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                              detect_cycle || sub_type->cycle));
           
     break;
   }
@@ -262,7 +262,7 @@ gras_datadesc_send_rec(gras_socket_t         sock,
        if (detect_cycle)
         xbt_dict_set_ext(refs, (char*)ref, sizeof(void*), ref, NULL);
        TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, *ref, 
-                                 detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                 detect_cycle || sub_type->cycle));
          
     } else if (errcode == no_error) {
        VERB1("Not sending data referenced at %p (already done)", (void*)*ref);
@@ -309,7 +309,7 @@ gras_datadesc_send_rec(gras_socket_t         sock,
     } else {
       for (cpt=0; cpt<count; cpt++) {
        TRY(gras_datadesc_send_rec(sock,state,refs, sub_type, ptr, 
-                                  detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                  detect_cycle || sub_type->cycle));
        ptr += elm_size;
       }
     }
@@ -342,7 +342,7 @@ xbt_error_t gras_datadesc_send(gras_socket_t        sock,
   refs = xbt_dict_new();
   state = gras_cbps_new();
   
-  errcode = gras_datadesc_send_rec(sock,state,refs,type,(char*)src, (type->flags & gras_datadesc_flag_cycle));
+  errcode = gras_datadesc_send_rec(sock,state,refs,type,(char*)src, type->cycle);
 
   xbt_dict_free(&refs);
   gras_cbps_free(&state);
@@ -415,7 +415,7 @@ gras_datadesc_recv_rec(gras_socket_t         sock,
       TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
                                 r_arch,NULL,0,
                                 field_data,-1, 
-                                detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                detect_cycle || sub_type->cycle));
        
       if (field->recv)
         field->recv(type,state,(void*)l_data);
@@ -453,7 +453,7 @@ gras_datadesc_recv_rec(gras_socket_t         sock,
     TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
                               r_arch,NULL,0,
                               l_data,-1,
-                              detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                              detect_cycle || sub_type->cycle));
     if (field->recv)
        field->recv(type,state,l_data);
 
@@ -535,7 +535,7 @@ gras_datadesc_recv_rec(gras_socket_t         sock,
       TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
                                 r_arch,r_ref,pointer_type->size[r_arch],
                                 (char*)l_referenced, subsubcount,
-                                detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                detect_cycle || sub_type->cycle));
                               
       *(void**)l_data=l_referenced;
       VERB3("'%s' remotely referenced at %p locally at %p",
@@ -625,7 +625,7 @@ gras_datadesc_recv_rec(gras_socket_t         sock,
       for (cpt=0; cpt<count; cpt++) {
        TRY(gras_datadesc_recv_rec(sock,state,refs, sub_type,
                                   r_arch, NULL, 0, ptr,-1,
-                                  detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                  detect_cycle || sub_type->cycle));
                                   
        ptr += elm_size;
       }
@@ -667,7 +667,7 @@ gras_datadesc_recv(gras_socket_t         sock,
   errcode = gras_datadesc_recv_rec(sock, state, refs, type, 
                                   r_arch, NULL, 0,
                                   (char *) dst,-1, 
-                                  (type->flags & gras_datadesc_flag_cycle));
+                                  type->cycle);
 
   xbt_dict_free(&refs);
   gras_cbps_free(&state);
@@ -728,7 +728,7 @@ gras_datadesc_gen_send_rec(gras_socket_t         sock,
       printf("  VERB1(\"Send field %s\");\n",field->name);
       printf("  data += %lu;\n",field->offset[GRAS_THISARCH]);
       TRY(gras_datadesc_gen_send_rec(sock,state,refs,sub_type, field_data, 
-                                    detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                    detect_cycle || sub_type->cycle));
       printf("  data -= %lu;\n",field->offset[GRAS_THISARCH]);
       
       xbt_assert0(!field->recv, "Callbacks not implemented in IDL compiler");
@@ -769,7 +769,7 @@ gras_datadesc_gen_send_rec(gras_socket_t         sock,
       field->send(state,data);
     
     TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, data,
-                                  detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                  detect_cycle || sub_type->cycle));
            
     break;
   }
@@ -811,7 +811,7 @@ gras_datadesc_gen_send_rec(gras_socket_t         sock,
        if (detect_cycle)
         xbt_dict_set_ext(refs, (char*)ref, sizeof(void*), ref, NULL);
        TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, *ref, 
-                                     detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                     detect_cycle || sub_type->cycle));
          
     } else if (errcode == no_error) {
        VERB1("Not sending data referenced at %p (already done)", (void*)*ref);
@@ -858,7 +858,7 @@ gras_datadesc_gen_send_rec(gras_socket_t         sock,
     } else {
       for (cpt=0; cpt<count; cpt++) {
        TRY(gras_datadesc_gen_send_rec(sock,state,refs, sub_type, ptr, 
-                                      detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                      detect_cycle || sub_type->cycle));
        ptr += elm_size;
       }
     }
@@ -892,7 +892,7 @@ xbt_error_t gras_datadesc_gen_send(gras_socket_t        sock,
   printf("xbt_error_t gras_%s_send(gras_socket_t sock,void *dst){\n",
         type->name);
   errcode = gras_datadesc_gen_send_rec(sock,state,refs,type,(char*)src, 
-                                      detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle));
+                                      detect_cycle || sub_type->cycle);
   printf("}\n");
   
   xbt_dict_free(&refs);
@@ -966,7 +966,7 @@ gras_datadesc_gen_recv_rec(gras_socket_t         sock,
       TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
                                     r_arch,NULL,0,
                                     field_data,-1,
-                                    detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                    detect_cycle || sub_type->cycle));
       if (field->recv)
         field->recv(type,state,data);
 
@@ -1003,7 +1003,7 @@ gras_datadesc_gen_recv_rec(gras_socket_t         sock,
     TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
                                   r_arch,NULL,0,
                                   l_data,-1,
-                                  detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                  detect_cycle || sub_type->cycle));
     if (field->recv)
         field->recv(type,state,data);
                  
@@ -1085,7 +1085,7 @@ gras_datadesc_gen_recv_rec(gras_socket_t         sock,
       TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
                                     r_arch,r_ref,pointer_type->size[r_arch],
                                     (char*)l_referenced, subsubcount,
-                                    detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                    detect_cycle || sub_type->cycle));
                                     
       *(void**)l_data=l_referenced;
       VERB3("'%s' remotely referenced at %p locally at %p",
@@ -1175,7 +1175,7 @@ gras_datadesc_gen_recv_rec(gras_socket_t         sock,
       for (cpt=0; cpt<count; cpt++) {
        TRY(gras_datadesc_gen_recv_rec(sock,state,refs, sub_type,
                                       r_arch, NULL, 0, ptr,-1,
-                                      detect_cycle || (sub_type->flags & gras_datadesc_flag_cycle)));
+                                      detect_cycle || sub_type->cycle));
                                      
        ptr += elm_size;
       }
@@ -1219,7 +1219,7 @@ gras_datadesc_gen_recv(gras_socket_t         sock,
   errcode = gras_datadesc_gen_recv_rec(sock, state, refs, type, 
                                       r_arch, NULL, 0,
                                       (char *) dst,-1, 
-                                      (sub_type->flags & gras_datadesc_flag_cycle)); 
+                                      sub_type->cycle); 
 
   printf("}\n");
   xbt_dict_free(&refs);