X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftype.c;h=21636c24d5b0acb31730e280d1857d5eb17938fe;hb=02007847f865c0d2f50979b5ceecbdeec5ef7b97;hp=4f90c69ae23869c9792c73d04c40115bceeef90f;hpb=89d4760c299207c7d0235fe2c326d51e0c37d73e;p=lttv.git diff --git a/ltt/branches/poly/ltt/type.c b/ltt/branches/poly/ltt/type.c index 4f90c69a..21636c24 100644 --- a/ltt/branches/poly/ltt/type.c +++ b/ltt/branches/poly/ltt/type.c @@ -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;