X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=formats%2Fctf%2Fir%2Ffields.c;h=cf08e7807af32fc2ac99822b7a65c4a5acc85f50;hb=e0f15669bbfe5c29244ba6e0eb9f1e81f26e5244;hp=2df961f4b61e90bf049247717bb267bb0eb5ec00;hpb=76f869abeb1faef01e89ae83399faa231e10cc9e;p=babeltrace.git diff --git a/formats/ctf/ir/fields.c b/formats/ctf/ir/fields.c index 2df961f4..cf08e780 100644 --- a/formats/ctf/ir/fields.c +++ b/formats/ctf/ir/fields.c @@ -866,15 +866,14 @@ end: return container; } -const char *bt_ctf_field_enumeration_get_mapping_name( - struct bt_ctf_field *field) +struct bt_ctf_field_type_enumeration_mapping_iterator * +bt_ctf_field_enumeration_get_mappings(struct bt_ctf_field *field) { int ret; - const char *name = NULL; struct bt_ctf_field *container = NULL; struct bt_ctf_field_type *container_type = NULL; struct bt_ctf_field_type_integer *integer_type = NULL; - struct bt_ctf_field_type_enumeration *enumeration_type = NULL; + struct bt_ctf_field_type_enumeration_mapping_iterator *iter = NULL; container = bt_ctf_field_enumeration_get_container(field); if (!container) { @@ -888,29 +887,27 @@ const char *bt_ctf_field_enumeration_get_mapping_name( integer_type = container_of(container_type, struct bt_ctf_field_type_integer, parent); - enumeration_type = container_of(field->type, - struct bt_ctf_field_type_enumeration, parent); if (!integer_type->declaration.signedness) { uint64_t value; + ret = bt_ctf_field_unsigned_integer_get_value(container, &value); if (ret) { goto error_put_container_type; } - - name = bt_ctf_field_type_enumeration_get_mapping_name_unsigned( - enumeration_type, value); + iter = bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value( + field->type, value); } else { int64_t value; + ret = bt_ctf_field_signed_integer_get_value(container, &value); if (ret) { goto error_put_container_type; } - - name = bt_ctf_field_type_enumeration_get_mapping_name_signed( - enumeration_type, value); + iter = bt_ctf_field_type_enumeration_find_mappings_by_signed_value( + field->type, value); } error_put_container_type: @@ -918,7 +915,7 @@ error_put_container_type: error_put_container: bt_put(container); end: - return name; + return iter; } int bt_ctf_field_signed_integer_get_value(struct bt_ctf_field *field, @@ -1687,7 +1684,7 @@ int bt_ctf_field_array_validate(struct bt_ctf_field *field) for (i = 0; i < array->elements->len; i++) { ret = bt_ctf_field_validate(array->elements->pdata[i]); if (ret) { - fprintf(stderr, "Failed to validate sequence field #%zu\n", i); + fprintf(stderr, "Failed to validate array field #%zu\n", i); goto end; } } @@ -2523,7 +2520,7 @@ bool bt_ctf_field_array_is_set(struct bt_ctf_field *field) array = container_of(field, struct bt_ctf_field_array, parent); for (i = 0; i < array->elements->len; i++) { - is_set = bt_ctf_field_validate(array->elements->pdata[i]); + is_set = bt_ctf_field_is_set(array->elements->pdata[i]); if (!is_set) { goto end; }