X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=genevent-new%2Fparser.c;h=425d390cfa9745bddce0bdf286ddfeb4fcb8811c;hb=212981b9a599532dc4fc790a654b10387eee9262;hp=e5e64ab17d0564bcca8a18b0291f425370bceb7a;hpb=a3e6ce641573c455fdf020fa10f3481046dfddf7;p=lttv.git diff --git a/genevent-new/parser.c b/genevent-new/parser.c index e5e64ab1..425d390c 100644 --- a/genevent-new/parser.c +++ b/genevent-new/parser.c @@ -558,11 +558,6 @@ void parseFields(parse_file_t *in, field_t *f, getLAnglebracket(in); f->type = parseType(in,NULL, unnamed_types, named_types); - /* Those will be set later by preset_field_type_size */ - f->fixed_root = FIELD_UNKNOWN; - f->fixed_parent = FIELD_UNKNOWN; - f->fixed_size = FIELD_UNKNOWN; - if(tag) { getLAnglebracket(in); getForwardslash(in); @@ -665,7 +660,7 @@ type_descriptor_t *parseType(parse_file_t *in, type_descriptor_t *inType, getForwardslash(in); getRAnglebracket(in); // - getLAnglebracket(in); // + //getLAnglebracket(in); // /* subfield */ f = (field_t *)memAlloc(sizeof(field_t)); sequence_push(&(t->fields),f); @@ -687,13 +682,13 @@ type_descriptor_t *parseType(parse_file_t *in, type_descriptor_t *inType, //getForwardslash(in); getRAnglebracket(in); // - getLAnglebracket(in); // + //getLAnglebracket(in); // /* subfield */ f = (field_t *)memAlloc(sizeof(field_t)); sequence_push(&(t->fields),f); parseFields(in, f, unnamed_types, named_types, 0); - getLAnglebracket(in); // + //getLAnglebracket(in); // /* subfield */ f = (field_t *)memAlloc(sizeof(field_t)); sequence_push(&(t->fields),f); @@ -906,16 +901,22 @@ type_descriptor_t * find_named_type(char *name, table_t * named_types) type_descriptor_t *t; t = table_find(named_types,name); - if(t == NULL) { - t = (type_descriptor_t *)memAlloc(sizeof(type_descriptor_t)); - t->type_name = allocAndCopy(name); - t->type = NONE; - t->fmt = NULL; - table_insert(named_types,t->type_name,t); - // table_insert(named_types,allocAndCopy(name),t); - } + return t; -} +} + +type_descriptor_t * create_named_type(char *name, table_t * named_types) +{ + type_descriptor_t *t; + + t = (type_descriptor_t *)memAlloc(sizeof(type_descriptor_t)); + t->type_name = allocAndCopy(name); + t->type = NONE; + t->fmt = NULL; + table_insert(named_types,t->type_name,t); + // table_insert(named_types,allocAndCopy(name),t); + return t; +} /***************************************************************************** *Function name @@ -934,7 +935,7 @@ void parseTypeDefinition(parse_file_t * in, sequence_t * unnamed_types, token = getNameAttribute(in); if(token == NULL) in->error(in, "Type has empty name"); - t = find_named_type(token, named_types); + t = create_named_type(token, named_types); if(t->type != NONE) in->error(in,"redefinition of named type"); getRAnglebracket(in); // @@ -1233,7 +1234,7 @@ void checkNamedTypesImplemented(table_t * named_types) ****************************************************************************/ void generateChecksum(char* facName, - unsigned long * checksum, sequence_t * events) + unsigned int * checksum, sequence_t * events) { unsigned long crc ; int pos; @@ -1337,12 +1338,12 @@ unsigned long getTypeChecksum(unsigned long aCrc, type_descriptor_t * type) flag = 1; break; case ARRAY: - sprintf(buf,"%llu", type->size); + sprintf(buf,"%zu", type->size); str = appendString("array ",buf); flag = 1; break; case SEQUENCE: - sprintf(buf,"%llu", type->size); + sprintf(buf,"%zu", type->size); str = appendString("sequence ",buf); flag = 1; break; @@ -1364,9 +1365,12 @@ unsigned long getTypeChecksum(unsigned long aCrc, type_descriptor_t * type) if(type->fmt) crc = partial_crc32(type->fmt,crc); - if(type->type == ARRAY || type->type == SEQUENCE){ - crc = getTypeChecksum(crc,type->nested_type); - }else if(type->type == STRUCT || type->type == UNION){ + if(type->type == ARRAY){ + crc = getTypeChecksum(crc,((field_t*)type->fields.array[0])->type); + } else if(type->type ==SEQUENCE) { + crc = getTypeChecksum(crc,((field_t*)type->fields.array[0])->type); + crc = getTypeChecksum(crc,((field_t*)type->fields.array[1])->type); + } else if(type->type == STRUCT || type->type == UNION){ for(pos =0; pos < type->fields.position; pos++){ fld = (field_t *) type->fields.array[pos]; crc = partial_crc32(fld->name,crc);