X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=ltt%2Fbranches%2Fpoly%2Fltt%2Ftype.c;h=d396d21a0775b61a3612fad174f0ea85b2397ac7;hb=880fded3c234f271a7437bf055fbefb6aaca2386;hp=97a9593aad5a0a8bd3c36a0882b8dd1911f4d0bc;hpb=d3cd9e86e2c959b5cf35ff4c47a70822f78cb36e;p=lttv.git diff --git a/ltt/branches/poly/ltt/type.c b/ltt/branches/poly/ltt/type.c index 97a9593a..d396d21a 100644 --- a/ltt/branches/poly/ltt/type.c +++ b/ltt/branches/poly/ltt/type.c @@ -1,19 +1,20 @@ /* This file is part of the Linux Trace Toolkit viewer - * Copyright (C) 2003-2004 Xiangxiu Yang, Mathieu Desnoyers + * Copyright (C) 2003-2004 Xiangxiu Yang + * 2005 Mathieu Desnoyers * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License Version 2 as - * published by the Free Software Foundation; + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License Version 2.1 as published by the Free Software Foundation. * - * This program is distributed in the hope that it will be useful, + * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, - * MA 02111-1307, USA. + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H @@ -32,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 @@ -99,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 @@ -140,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]; @@ -166,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; } @@ -224,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; } @@ -370,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;