- if(t->type_class==LTT_STRUCT || t->type_class==LTT_ARRAY ||
- t->type_class==LTT_STRING) return 0;
-
- if(t->type_class == LTT_FLOAT){
- return floatSizes[t->size];
- }else{
- if(t->size < sizeof(intSizes)/sizeof(unsigned))
- return intSizes[t->size];
- else{
- LttArchSize size = trace->system_description->size;
- 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);
- }
+ size_t size;
+
+ switch(t->type_class) {
+
+ case LTT_INT:
+ case LTT_UINT:
+ case LTT_SEQUENCE:
+ case LTT_ENUM:
+ if(likely(t->size < INT_SIZES_NUMBER))
+ size = intSizes[t->size];
+ else
+ goto error;
+ break;
+ case LTT_FLOAT:
+ if(likely(t->size < FLOAT_SIZES_NUMBER))
+ size = floatSizes[t->size];
+ else
+ goto error;
+ break;
+ case LTT_POINTER:
+ case LTT_LONG:
+ case LTT_ULONG:
+ case LTT_SIZE_T:
+ case LTT_SSIZE_T:
+ case LTT_OFF_T:
+ case LTT_STRING:
+ case LTT_ARRAY:
+ case LTT_STRUCT:
+ case LTT_UNION:
+ goto error;
+ break;