git-svn-id: http://ltt.polymtl.ca/svn@168 04897980-b3bd-0310-b5e0-8ef037075253
[lttv.git] / ltt / branches / poly / ltt / type.c
index 4f90c69ae23869c9792c73d04c40115bceeef90f..21636c24d5b0acb31730e280d1857d5eb17938fe 100644 (file)
@@ -164,12 +164,18 @@ unsigned ltt_type_size(LttTrace * trace, LttType *t)
       return intSizes[t->size];
     else{
       LttArchSize size = trace->system_description->size;
-      if(size == LTT_LP32)
-       return sizeof(int16_t);
-      else if(size == LTT_ILP32 || size == LTT_LP64)
-       return sizeof(int32_t);
-      else if(size == LTT_ILP64)
-       return sizeof(int64_t); 
+      if(size == LTT_LP32){
+       if(t->size == 5)return sizeof(int16_t);
+       else return sizeof(int32_t);
+      }
+      else if(size == LTT_ILP32 || size == LTT_LP64){
+       if(t->size == 5)return sizeof(int32_t);
+       else{
+         if(size == LTT_ILP32) return sizeof(int32_t);
+         else return sizeof(int64_t);
+       }
+      }
+      else if(size == LTT_ILP64)return sizeof(int64_t);              
     }
   }
 }
@@ -186,7 +192,7 @@ unsigned ltt_type_size(LttTrace * trace, LttType *t)
 
 LttType *ltt_type_element_type(LttType *t)
 {
-  if(t->type_class != LTT_ARRAY || t->type_class != LTT_SEQUENCE)
+  if(t->type_class != LTT_ARRAY && t->type_class != LTT_SEQUENCE)
     return NULL;
   return t->element_type[0];
 }
@@ -218,7 +224,7 @@ unsigned ltt_type_element_number(LttType *t)
 
 unsigned ltt_type_member_number(LttType *t)
 {
-  if(t->type_class != LTT_STRUCT || t->type_class != LTT_UNION)
+  if(t->type_class != LTT_STRUCT && t->type_class != LTT_UNION)
     return 0;
   return t->element_number;  
 }
@@ -233,10 +239,11 @@ unsigned ltt_type_member_number(LttType *t)
  *    LttType *           : the type of structure member
  ****************************************************************************/
 
-LttType *ltt_type_member_type(LttType *t, unsigned i)
+LttType *ltt_type_member_type(LttType *t, unsigned i, char ** name)
 {
-  if(t->type_class != LTT_STRUCT) return NULL;
-  if(i >= t->element_number || i < 0 ) return NULL;
+  if(t->type_class != LTT_STRUCT){*name == NULL; return NULL;}
+  if(i >= t->element_number || i < 0 ){*name = NULL; return NULL;}
+  *name = t->element_name;
   return t->element_type[i];
 }
 
@@ -271,7 +278,7 @@ char *ltt_enum_string_get(LttType *t, unsigned i)
 
 LttField *ltt_field_element(LttField *f)
 {
-  if(f->field_type->type_class != LTT_ARRAY ||
+  if(f->field_type->type_class != LTT_ARRAY &&
      f->field_type->type_class != LTT_SEQUENCE)
     return NULL;
 
This page took 0.023832 seconds and 4 git commands to generate.