X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftype.c;h=d396d21a0775b61a3612fad174f0ea85b2397ac7;hb=880fded3c234f271a7437bf055fbefb6aaca2386;hp=a1563d04a494e776f5195e9b51074dd5b09aca18;hpb=1b44b0b5729fbc82eab287323dc14d12c028dd44;p=lttv.git diff --git a/ltt/branches/poly/ltt/type.c b/ltt/branches/poly/ltt/type.c index a1563d04..d396d21a 100644 --- a/ltt/branches/poly/ltt/type.c +++ b/ltt/branches/poly/ltt/type.c @@ -33,13 +33,19 @@ static unsigned intSizes[] = { sizeof(int8_t), sizeof(int16_t), sizeof(int32_t), sizeof(int64_t), sizeof(short) }; +static unsigned floatSizes[] = { + 0, 0, sizeof(float), sizeof(double), 0, sizeof(float), sizeof(double) }; + + typedef enum _intSizesNames { SIZE_INT8, SIZE_INT16, SIZE_INT32, SIZE_INT64, SIZE_SHORT, INT_SIZES_NUMBER } intSizesNames; +static char * typeNames[] = { + "int_fixed", "uint_fixed", "pointer", "char", "uchar", "short", "ushort", + "int", "uint", "long", "ulong", "size_t", "ssize_t", "off_t", "float", + "string", "enum", "array", "sequence", "struct", "union", "none" }; -static unsigned floatSizes[] = { - 0, 0, sizeof(float), sizeof(double), 0, sizeof(float), sizeof(double) }; #define FLOAT_SIZES_NUMBER 7 @@ -100,6 +106,20 @@ guint8 ltt_eventtype_id(LttEventType *et) return et->index; } +/***************************************************************************** + *Function name + * ltt_type_name : get the name of the type + *Input params + * t : a type + *Return value + * GQuark : the name of the type + ****************************************************************************/ + +GQuark ltt_type_name(LttType *t) +{ + return g_quark_from_static_string(typeNames[t->type_class]); +} + /***************************************************************************** *Function name * ltt_field_name : get the name of the field @@ -141,15 +161,19 @@ LttTypeEnum ltt_type_class(LttType *t) * returns 0 if erroneous, and show a critical warning message. ****************************************************************************/ -size_t ltt_type_size(LttTrace * trace, LttType *t) +guint ltt_type_size(LttTrace * trace, LttType *t) { - size_t size; + guint size; switch(t->type_class) { - + case LTT_INT_FIXED: + case LTT_UINT_FIXED: + case LTT_CHAR: + case LTT_UCHAR: + case LTT_SHORT: + case LTT_USHORT: case LTT_INT: case LTT_UINT: - case LTT_SEQUENCE: case LTT_ENUM: if(likely(t->size < INT_SIZES_NUMBER)) size = intSizes[t->size]; @@ -167,11 +191,13 @@ size_t ltt_type_size(LttTrace * trace, LttType *t) case LTT_ULONG: case LTT_SIZE_T: case LTT_SSIZE_T: + case LTT_SEQUENCE: case LTT_OFF_T: case LTT_STRING: case LTT_ARRAY: case LTT_STRUCT: case LTT_UNION: + case LTT_NONE: goto error; break; } @@ -225,7 +251,8 @@ unsigned ltt_type_element_number(LttType *t) unsigned ret = 0; if(likely(t->type_class == LTT_ENUM)) - ret = g_hash_table_size(t->enum_map); + // Permits non full enums ret = g_hash_table_size(t->enum_map); + ret = (unsigned)(t->highest_value - t->lowest_value); return ret; } @@ -371,7 +398,7 @@ int ltt_field_size(LttField * f) guint ltt_eventtype_num_fields(LttEventType *event_type) { - if(unlikely(!event_type)) return NULL; + if(unlikely(!event_type)) return 0; return event_type->fields->len;