static
void destroy_structure_field(struct structure_field *field)
{
+ if (!field) {
+ return;
+ }
+
+ BT_LOGD("Destroying structure/variant field type's field object: "
+ "addr=%p, field-ft-addr=%p, field-name=\"%s\"",
+ field, field->type, g_quark_to_string(field->name));
+ BT_LOGD_STR("Putting field type.");
bt_put(field->type);
g_free(field);
}
type->serialize = type_serialize_funcs[type->id];
if (init_bo) {
- int ret = bt_ctf_field_type_set_byte_order(type,
- BT_CTF_BYTE_ORDER_NATIVE);
+ int ret;
+ const enum bt_ctf_byte_order bo = BT_CTF_BYTE_ORDER_NATIVE;
+
+ BT_LOGD("Setting initial field type's byte order: bo=%s",
+ bt_ctf_byte_order_string(bo));
+ ret = bt_ctf_field_type_set_byte_order(type, bo);
assert(ret == 0);
}
struct bt_ctf_field_type *type;
enum bt_ctf_field_type_id type_id;
- BT_LOGD("Destroying field type object: addr=%p", obj);
type = container_of(obj, struct bt_ctf_field_type, base);
type_id = type->id;
- if (type_id <= BT_CTF_FIELD_TYPE_ID_UNKNOWN ||
- type_id >= BT_CTF_NR_TYPE_IDS) {
- BT_LOGW("Unknown field type ID: addr=%p, id=%d", obj, type_id);
- return;
- }
-
+ assert(type_id > BT_CTF_FIELD_TYPE_ID_UNKNOWN &&
+ type_id < BT_CTF_NR_TYPE_IDS);
type_destroy_funcs[type_id](type);
}
tag_mappings_count =
bt_ctf_field_type_enumeration_get_mapping_count(
(struct bt_ctf_field_type *) variant->tag);
+ assert(tag_mappings_count >= 0);
/*
* Validate that each mapping found in the tag has a name which
if (!ret && type->frozen) {
/* Field type is valid */
+ BT_LOGV("Marking field type as valid: addr=%p", type);
type->valid = 1;
}
return clock_class;
}
-int bt_ctf_field_type_integer_set_mapped_clock_class(
+BT_HIDDEN
+int bt_ctf_field_type_integer_set_mapped_clock_class_no_check(
struct bt_ctf_field_type *type,
struct bt_ctf_clock_class *clock_class)
{
goto end;
}
- if (type->frozen) {
- BT_LOGW("Invalid parameter: field type is frozen: addr=%p",
- type);
- ret = -1;
+ if (type->id != BT_CTF_FIELD_TYPE_ID_INTEGER) {
+ BT_LOGW("Invalid parameter: field type is not an integer field type: "
+ "addr=%p, ft-id=%s", type,
+ bt_ctf_field_type_id_string(type->id));
goto end;
}
return ret;
}
+int bt_ctf_field_type_integer_set_mapped_clock_class(
+ struct bt_ctf_field_type *type,
+ struct bt_ctf_clock_class *clock_class)
+{
+ int ret = 0;
+
+ if (!type) {
+ BT_LOGW_STR("Invalid parameter: field type is NULL.");
+ ret = -1;
+ goto end;
+ }
+
+ if (type->frozen) {
+ BT_LOGW("Invalid parameter: field type is frozen: addr=%p",
+ type);
+ ret = -1;
+ goto end;
+ }
+
+ ret = bt_ctf_field_type_integer_set_mapped_clock_class_no_check(
+ type, clock_class);
+
+end:
+ return ret;
+}
+
static
void bt_ctf_field_type_enum_iter_destroy(struct bt_object *obj)
{
struct bt_ctf_field_type_enumeration_mapping_iterator,
base);
+ BT_LOGD("Destroying enumeration field type mapping iterator: addr=%p",
+ obj);
+ BT_LOGD_STR("Putting parent enumeration field type.");
bt_put(&iter->enumeration_type->parent);
g_free(iter);
}
iter->u.name_quark = g_quark_try_string(name);
if (!iter->u.name_quark) {
- BT_LOGE("Cannot get GQuark: string=\"%s\"", name);
+ BT_LOGV("No such enumeration field type mapping name: "
+ "ft-addr=%p, mapping-name=\"%s\"",
+ type, name);
goto error;
}
/* Advance iterator to first entry, or leave index at -1. */
if (bt_ctf_field_type_enumeration_mapping_iterator_next(iter)) {
/* No entry found. */
+ BT_LOGV("No such enumeration field type mapping name: "
+ "ft-addr=%p, mapping-name=\"%s\"",
+ type, name);
goto error;
}
break;
}
default:
+ BT_LOGF("Invalid enumeration field type mapping iterator type: "
+ "type=%d", iter->type);
abort();
}
}
if (mapping_name) {
*mapping_name = g_quark_to_string(mapping->string);
+ assert(*mapping_name);
}
if (range_begin) {
if (mapping_name) {
*mapping_name = g_quark_to_string(mapping->string);
+ assert(*mapping_name);
}
if (range_begin) {
}
if (field_name) {
*field_name = g_quark_to_string(field->name);
+ assert(*field_name);
}
end:
return ret;
name_quark = g_quark_try_string(name);
if (!name_quark) {
- BT_LOGE("Cannot get GQuark: string=\"%s\"", name);
+ BT_LOGV("No such structure field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, name);
goto end;
}
structure = container_of(type, struct bt_ctf_field_type_structure,
parent);
if (!g_hash_table_lookup_extended(structure->field_name_to_index,
- GUINT_TO_POINTER(name_quark), NULL, (gpointer *)&index)) {
+ GUINT_TO_POINTER(name_quark), NULL, (gpointer *)&index)) {
+ BT_LOGV("No such structure field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, name);
goto end;
}
name_quark = g_quark_try_string(field_name);
if (!name_quark) {
- BT_LOGE("Cannot get GQuark: string=\"%s\"", field_name);
+ BT_LOGV("No such variant field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, field_name);
goto end;
}
variant = container_of(type, struct bt_ctf_field_type_variant, parent);
if (!g_hash_table_lookup_extended(variant->field_name_to_index,
- GUINT_TO_POINTER(name_quark), NULL, (gpointer *)&index)) {
+ GUINT_TO_POINTER(name_quark), NULL, (gpointer *)&index)) {
+ BT_LOGV("No such variant field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, field_name);
goto end;
}
}
if (field_name) {
*field_name = g_quark_to_string(field->name);
+ assert(*field_name);
}
end:
return ret;
return;
}
- BT_LOGD("Freezing field type: addr=%p", type);
type->freeze(type);
}
field_name_quark = query.mapping_name;
if (!g_hash_table_lookup_extended(variant->field_name_to_index,
- GUINT_TO_POINTER(field_name_quark), NULL, &index)) {
+ GUINT_TO_POINTER(field_name_quark), NULL, &index)) {
goto end;
}
assert(type);
assert(context);
- BT_LOGD("Serializing field type's metadata: "
- "ft-addr=%p, metadata-context-addr=%p", type, context);
-
/* Make sure field type is valid before serializing it */
ret = bt_ctf_field_type_validate(type);
if (ret) {
- BT_LOGW_STR("Cannot serialize field type's metadata: field type is invalid.");
+ BT_LOGW("Cannot serialize field type's metadata: field type is invalid: "
+ "addr=%p", type);
goto end;
}
{
struct bt_ctf_field_type *copy = NULL;
- BT_LOGD("Copying field type object: addr=%p", type);
-
if (!type) {
BT_LOGW_STR("Invalid parameter: field type is NULL.");
goto end;
}
copy->alignment = type->alignment;
- BT_LOGD("Copied field type object: copy-ft-addr=%p", copy);
end:
return copy;
}
name_quark = g_quark_try_string(name);
if (!name_quark) {
- BT_LOGE("Cannot get GQuark: string=\"%s\"", name);
+ BT_LOGV("No such structure field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, name);
ret = -1;
goto end;
}
structure = container_of(type, struct bt_ctf_field_type_structure,
parent);
if (!g_hash_table_lookup_extended(structure->field_name_to_index,
- GUINT_TO_POINTER(name_quark), NULL, (gpointer *)&index)) {
+ GUINT_TO_POINTER(name_quark),
+ NULL, (gpointer *)&index)) {
+ BT_LOGV("No such structure field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, name);
ret = -1;
goto end;
}
name_quark = g_quark_try_string(name);
if (!name_quark) {
- BT_LOGE("Cannot get GQuark: string=\"%s\"", name);
+ BT_LOGV("No such variant field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, name);
ret = -1;
goto end;
}
variant = container_of(type, struct bt_ctf_field_type_variant,
parent);
if (!g_hash_table_lookup_extended(variant->field_name_to_index,
- GUINT_TO_POINTER(name_quark), NULL, (gpointer *)&index)) {
+ GUINT_TO_POINTER(name_quark),
+ NULL, (gpointer *)&index)) {
+ BT_LOGV("No such variant field type field name: "
+ "ft-addr=%p, field-name=\"%s\"",
+ type, name);
ret = -1;
goto end;
}
}
BT_LOGD("Destroying integer field type object: addr=%p", type);
+ BT_LOGD_STR("Putting mapped clock class.");
bt_put(integer->mapped_clock);
g_free(integer);
}
BT_LOGD("Destroying enumeration field type object: addr=%p", type);
g_ptr_array_free(enumeration->entries, TRUE);
+ BT_LOGD_STR("Putting container field type.");
bt_put(enumeration->container);
g_free(enumeration);
}
g_ptr_array_free(variant->fields, TRUE);
g_hash_table_destroy(variant->field_name_to_index);
g_string_free(variant->tag_name, TRUE);
+ BT_LOGD_STR("Putting tag field type.");
bt_put(&variant->tag->parent);
BT_PUT(variant->tag_field_path);
g_free(variant);
}
BT_LOGD("Destroying array field type object: addr=%p", type);
+ BT_LOGD_STR("Putting element field type.");
bt_put(array->element_type);
g_free(array);
}
}
BT_LOGD("Destroying sequence field type object: addr=%p", type);
+ BT_LOGD_STR("Putting element field type.");
bt_put(sequence->element_type);
g_string_free(sequence->length_field_name, TRUE);
+ BT_LOGD_STR("Putting length field path.");
BT_PUT(sequence->length_field_path);
g_free(sequence);
}
BT_LOGD("Freezing integer field type object: addr=%p", type);
if (integer_type->mapped_clock) {
+ BT_LOGD_STR("Freezing integer field type's mapped clock class.");
bt_ctf_clock_class_freeze(integer_type->mapped_clock);
}
BT_LOGD("Freezing enumeration field type object: addr=%p", type);
set_enumeration_range_overlap(type);
generic_field_type_freeze(type);
+ BT_LOGD("Freezing enumeration field type object's container field type: int-ft-addr=%p",
+ enumeration_type->container);
bt_ctf_field_type_freeze(enumeration_type->container);
}
static
void freeze_structure_field(struct structure_field *field)
{
- BT_LOGD("Freezing structure field type field: addr=%p", field);
+ BT_LOGD("Freezing structure/variant field type field: field-addr=%p, "
+ "field-ft-addr=%p, field-name=\"%s\"", field,
+ field->type, g_quark_to_string(field->name));
bt_ctf_field_type_freeze(field->type);
}
BT_LOGD("Freezing array field type object: addr=%p", type);
type->alignment = bt_ctf_field_type_get_alignment(type);
generic_field_type_freeze(type);
+ BT_LOGD("Freezing array field type object's element field type: element-ft-addr=%p",
+ array_type->element_type);
bt_ctf_field_type_freeze(array_type->element_type);
}
BT_LOGD("Freezing sequence field type object: addr=%p", type);
type->alignment = bt_ctf_field_type_get_alignment(type);
generic_field_type_freeze(type);
+ BT_LOGD("Freezing sequence field type object's element field type: element-ft-addr=%p",
+ sequence_type->element_type);
bt_ctf_field_type_freeze(sequence_type->element_type);
}
container_signed = bt_ctf_field_type_integer_get_signed(container_type);
assert(container_signed >= 0);
g_string_append(context->string, "enum : ");
+ BT_LOGD_STR("Serializing enumeration field type's container field type's metadata.");
ret = bt_ctf_field_type_serialize(enumeration->container, context);
if (ret) {
BT_LOGW("Cannot serialize enumeration field type's container field type's metadata: "
{
size_t i;
unsigned int indent;
- int64_t ret = 0;
+ int ret = 0;
struct bt_ctf_field_type_structure *structure = container_of(type,
struct bt_ctf_field_type_structure, parent);
GString *structure_field_name = context->field_name;
for (i = 0; i < structure->fields->len; i++) {
struct structure_field *field = structure->fields->pdata[i];
- BT_LOGV("Serializing structure field type's field metadata: "
+ BT_LOGD("Serializing structure field type's field metadata: "
"index=%" PRId64 ", "
"field-ft-addr=%p, field-name=\"%s\"",
i, field, g_quark_to_string(field->name));
for (i = 0; i < variant->fields->len; i++) {
struct structure_field *field = variant->fields->pdata[i];
- BT_LOGV("Serializing variant field type's field metadata: "
+ BT_LOGD("Serializing variant field type's field metadata: "
"index=%" PRId64 ", "
"field-ft-addr=%p, field-name=\"%s\"",
i, field, g_quark_to_string(field->name));
BT_LOGD("Serializing array field type's metadata: "
"ft-addr=%p, metadata-context-addr=%p", type, context);
+ BT_LOGD_STR("Serializing array field type's element field type's metadata.");
ret = bt_ctf_field_type_serialize(array->element_type, context);
if (ret) {
BT_LOGW("Cannot serialize array field type's element field type's metadata: "
BT_LOGD("Serializing sequence field type's metadata: "
"ft-addr=%p, metadata-context-addr=%p", type, context);
+ BT_LOGD_STR("Serializing sequence field type's element field type's metadata.");
ret = bt_ctf_field_type_serialize(sequence->element_type, context);
if (ret) {
BT_LOGW("Cannot serialize sequence field type's element field type's metadata: "
parent);
/* Copy the source enumeration's container */
+ BT_LOGD_STR("Copying enumeration field type's container field type.");
copy_container = bt_ctf_field_type_copy(enumeration->container);
if (!copy_container) {
BT_LOGE_STR("Cannot copy enumeration field type's container field type.");
struct bt_ctf_field_type *copy_field;
entry = g_ptr_array_index(structure->fields, i);
- BT_LOGV("Copying structure field type's field: "
+ BT_LOGD("Copying structure field type's field: "
"index=%" PRId64 ", "
"field-ft-addr=%p, field-name=\"%s\"",
i, entry, g_quark_to_string(entry->name));
variant = container_of(type, struct bt_ctf_field_type_variant,
parent);
if (variant->tag) {
+ BT_LOGD_STR("Copying variant field type's tag field type.");
copy_tag = bt_ctf_field_type_copy(&variant->tag->parent);
if (!copy_tag) {
BT_LOGE_STR("Cannot copy variant field type's tag field type.");
struct bt_ctf_field_type *copy_field;
entry = g_ptr_array_index(variant->fields, i);
- BT_LOGV("Copying variant field type's field: "
+ BT_LOGD("Copying variant field type's field: "
"index=%" PRId64 ", "
"field-ft-addr=%p, field-name=\"%s\"",
i, entry, g_quark_to_string(entry->name));
}
if (variant->tag_field_path) {
- BT_LOGV_STR("Copying variant field type's tag field path.");
+ BT_LOGD_STR("Copying variant field type's tag field path.");
copy_variant->tag_field_path = bt_ctf_field_path_copy(
variant->tag_field_path);
if (!copy_variant->tag_field_path) {
BT_LOGD("Copying array field type's: addr=%p", type);
array = container_of(type, struct bt_ctf_field_type_array,
parent);
+ BT_LOGD_STR("Copying array field type's element field type.");
copy_element = bt_ctf_field_type_copy(array->element_type);
if (!copy_element) {
BT_LOGE_STR("Cannot copy array field type's element field type.");
BT_LOGD("Copying sequence field type's: addr=%p", type);
sequence = container_of(type, struct bt_ctf_field_type_sequence,
parent);
+ BT_LOGD_STR("Copying sequence field type's element field type.");
copy_element = bt_ctf_field_type_copy(sequence->element_type);
if (!copy_element) {
BT_LOGE_STR("Cannot copy sequence field type's element field type.");
copy_sequence = container_of(copy, struct bt_ctf_field_type_sequence,
parent);
if (sequence->length_field_path) {
- BT_LOGV_STR("Copying sequence field type's length field path.");
+ BT_LOGD_STR("Copying sequence field type's length field path.");
copy_sequence->length_field_path = bt_ctf_field_path_copy(
sequence->length_field_path);
if (!copy_sequence->length_field_path) {