#include <babeltrace/ctf-writer/event-types.h>
#include <babeltrace/ctf-ir/event-types-internal.h>
+#include <babeltrace/ctf-ir/field-path-internal.h>
#include <babeltrace/ctf-ir/utils.h>
#include <babeltrace/ref.h>
#include <babeltrace/ctf-ir/clock.h>
static
void (* const type_destroy_funcs[])(struct bt_ctf_field_type *) = {
- [CTF_TYPE_INTEGER] = bt_ctf_field_type_integer_destroy,
- [CTF_TYPE_ENUM] =
+ [BT_CTF_TYPE_ID_INTEGER] = bt_ctf_field_type_integer_destroy,
+ [BT_CTF_TYPE_ID_ENUM] =
bt_ctf_field_type_enumeration_destroy,
- [CTF_TYPE_FLOAT] =
+ [BT_CTF_TYPE_ID_FLOAT] =
bt_ctf_field_type_floating_point_destroy,
- [CTF_TYPE_STRUCT] = bt_ctf_field_type_structure_destroy,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_destroy,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_destroy,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_destroy,
- [CTF_TYPE_STRING] = bt_ctf_field_type_string_destroy,
+ [BT_CTF_TYPE_ID_STRUCT] = bt_ctf_field_type_structure_destroy,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_destroy,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_destroy,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_destroy,
+ [BT_CTF_TYPE_ID_STRING] = bt_ctf_field_type_string_destroy,
};
static
static
type_freeze_func const type_freeze_funcs[] = {
- [CTF_TYPE_INTEGER] = generic_field_type_freeze,
- [CTF_TYPE_ENUM] = bt_ctf_field_type_enumeration_freeze,
- [CTF_TYPE_FLOAT] = generic_field_type_freeze,
- [CTF_TYPE_STRUCT] = bt_ctf_field_type_structure_freeze,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_freeze,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_freeze,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_freeze,
- [CTF_TYPE_STRING] = generic_field_type_freeze,
+ [BT_CTF_TYPE_ID_INTEGER] = generic_field_type_freeze,
+ [BT_CTF_TYPE_ID_ENUM] = bt_ctf_field_type_enumeration_freeze,
+ [BT_CTF_TYPE_ID_FLOAT] = generic_field_type_freeze,
+ [BT_CTF_TYPE_ID_STRUCT] = bt_ctf_field_type_structure_freeze,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_freeze,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_freeze,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_freeze,
+ [BT_CTF_TYPE_ID_STRING] = generic_field_type_freeze,
};
static
static
type_serialize_func const type_serialize_funcs[] = {
- [CTF_TYPE_INTEGER] = bt_ctf_field_type_integer_serialize,
- [CTF_TYPE_ENUM] =
+ [BT_CTF_TYPE_ID_INTEGER] = bt_ctf_field_type_integer_serialize,
+ [BT_CTF_TYPE_ID_ENUM] =
bt_ctf_field_type_enumeration_serialize,
- [CTF_TYPE_FLOAT] =
+ [BT_CTF_TYPE_ID_FLOAT] =
bt_ctf_field_type_floating_point_serialize,
- [CTF_TYPE_STRUCT] =
+ [BT_CTF_TYPE_ID_STRUCT] =
bt_ctf_field_type_structure_serialize,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_serialize,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_serialize,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_serialize,
- [CTF_TYPE_STRING] = bt_ctf_field_type_string_serialize,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_serialize,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_serialize,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_serialize,
+ [BT_CTF_TYPE_ID_STRING] = bt_ctf_field_type_string_serialize,
};
static
static
void (* const set_byte_order_funcs[])(struct bt_ctf_field_type *,
int byte_order, int set_native) = {
- [CTF_TYPE_INTEGER] = bt_ctf_field_type_integer_set_byte_order,
- [CTF_TYPE_ENUM] =
+ [BT_CTF_TYPE_ID_INTEGER] = bt_ctf_field_type_integer_set_byte_order,
+ [BT_CTF_TYPE_ID_ENUM] =
bt_ctf_field_type_enumeration_set_byte_order,
- [CTF_TYPE_FLOAT] =
+ [BT_CTF_TYPE_ID_FLOAT] =
bt_ctf_field_type_floating_point_set_byte_order,
- [CTF_TYPE_STRUCT] =
+ [BT_CTF_TYPE_ID_STRUCT] =
bt_ctf_field_type_structure_set_byte_order,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_set_byte_order,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_set_byte_order,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_set_byte_order,
- [CTF_TYPE_STRING] = NULL,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_set_byte_order,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_set_byte_order,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_set_byte_order,
+ [BT_CTF_TYPE_ID_STRING] = NULL,
};
static
static
struct bt_ctf_field_type *(* const type_copy_funcs[])(
struct bt_ctf_field_type *) = {
- [CTF_TYPE_INTEGER] = bt_ctf_field_type_integer_copy,
- [CTF_TYPE_ENUM] = bt_ctf_field_type_enumeration_copy,
- [CTF_TYPE_FLOAT] = bt_ctf_field_type_floating_point_copy,
- [CTF_TYPE_STRUCT] = bt_ctf_field_type_structure_copy,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_copy,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_copy,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_copy,
- [CTF_TYPE_STRING] = bt_ctf_field_type_string_copy,
+ [BT_CTF_TYPE_ID_INTEGER] = bt_ctf_field_type_integer_copy,
+ [BT_CTF_TYPE_ID_ENUM] = bt_ctf_field_type_enumeration_copy,
+ [BT_CTF_TYPE_ID_FLOAT] = bt_ctf_field_type_floating_point_copy,
+ [BT_CTF_TYPE_ID_STRUCT] = bt_ctf_field_type_structure_copy,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_copy,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_copy,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_copy,
+ [BT_CTF_TYPE_ID_STRING] = bt_ctf_field_type_string_copy,
};
static
static
int (* const type_compare_funcs[])(struct bt_ctf_field_type *,
struct bt_ctf_field_type *) = {
- [CTF_TYPE_INTEGER] = bt_ctf_field_type_integer_compare,
- [CTF_TYPE_ENUM] = bt_ctf_field_type_enumeration_compare,
- [CTF_TYPE_FLOAT] = bt_ctf_field_type_floating_point_compare,
- [CTF_TYPE_STRUCT] = bt_ctf_field_type_structure_compare,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_compare,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_compare,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_compare,
- [CTF_TYPE_STRING] = bt_ctf_field_type_string_compare,
+ [BT_CTF_TYPE_ID_INTEGER] = bt_ctf_field_type_integer_compare,
+ [BT_CTF_TYPE_ID_ENUM] = bt_ctf_field_type_enumeration_compare,
+ [BT_CTF_TYPE_ID_FLOAT] = bt_ctf_field_type_floating_point_compare,
+ [BT_CTF_TYPE_ID_STRUCT] = bt_ctf_field_type_structure_compare,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_compare,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_compare,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_compare,
+ [BT_CTF_TYPE_ID_STRING] = bt_ctf_field_type_string_compare,
};
static
static
int (* const type_validate_funcs[])(struct bt_ctf_field_type *) = {
- [CTF_TYPE_INTEGER] = NULL,
- [CTF_TYPE_FLOAT] = NULL,
- [CTF_TYPE_STRING] = NULL,
- [CTF_TYPE_ENUM] = bt_ctf_field_type_enumeration_validate,
- [CTF_TYPE_STRUCT] = bt_ctf_field_type_structure_validate,
- [CTF_TYPE_VARIANT] = bt_ctf_field_type_variant_validate,
- [CTF_TYPE_ARRAY] = bt_ctf_field_type_array_validate,
- [CTF_TYPE_SEQUENCE] = bt_ctf_field_type_sequence_validate,
+ [BT_CTF_TYPE_ID_INTEGER] = NULL,
+ [BT_CTF_TYPE_ID_FLOAT] = NULL,
+ [BT_CTF_TYPE_ID_STRING] = NULL,
+ [BT_CTF_TYPE_ID_ENUM] = bt_ctf_field_type_enumeration_validate,
+ [BT_CTF_TYPE_ID_STRUCT] = bt_ctf_field_type_structure_validate,
+ [BT_CTF_TYPE_ID_VARIANT] = bt_ctf_field_type_variant_validate,
+ [BT_CTF_TYPE_ID_ARRAY] = bt_ctf_field_type_array_validate,
+ [BT_CTF_TYPE_ID_SEQUENCE] = bt_ctf_field_type_sequence_validate,
};
static
static
void bt_ctf_field_type_init(struct bt_ctf_field_type *type, int init_bo)
{
- enum ctf_type_id type_id = type->declaration->id;
+ enum bt_ctf_type_id type_id = type->declaration->id;
- assert(type && (type_id > CTF_TYPE_UNKNOWN) &&
- (type_id < NR_CTF_TYPES));
+ assert(type && (type_id > BT_CTF_TYPE_ID_UNKNOWN) &&
+ (type_id < BT_CTF_NR_TYPE_IDS));
bt_object_init(type, bt_ctf_field_type_destroy);
type->freeze = type_freeze_funcs[type_id];
void bt_ctf_field_type_destroy(struct bt_object *obj)
{
struct bt_ctf_field_type *type;
- enum ctf_type_id type_id;
+ enum bt_ctf_type_id type_id;
type = container_of(obj, struct bt_ctf_field_type, base);
type_id = type->declaration->id;
- if (type_id <= CTF_TYPE_UNKNOWN ||
- type_id >= NR_CTF_TYPES) {
+ if (type_id <= BT_CTF_TYPE_ID_UNKNOWN ||
+ type_id >= BT_CTF_NR_TYPE_IDS) {
return;
}
int bt_ctf_field_type_validate(struct bt_ctf_field_type *type)
{
int ret = 0;
- enum ctf_type_id id = bt_ctf_field_type_get_type_id(type);
+ enum bt_ctf_type_id id = bt_ctf_field_type_get_type_id(type);
if (!type) {
ret = -1;
}
integer->parent.declaration = &integer->declaration.p;
- integer->parent.declaration->id = CTF_TYPE_INTEGER;
+ integer->parent.declaration->id = BT_CTF_TYPE_ID_INTEGER;
integer->declaration.len = size;
integer->declaration.base = BT_CTF_INTEGER_BASE_DECIMAL;
- integer->declaration.encoding = CTF_STRING_NONE;
+ integer->declaration.encoding = BT_CTF_STRING_ENCODING_NONE;
bt_ctf_field_type_init(&integer->parent, TRUE);
return &integer->parent;
}
int ret = 0;
struct bt_ctf_field_type_integer *integer;
- if (!type || type->declaration->id != CTF_TYPE_INTEGER) {
+ if (!type || type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
ret = -1;
goto end;
}
int ret = 0;
struct bt_ctf_field_type_integer *integer;
- if (!type || type->declaration->id != CTF_TYPE_INTEGER) {
+ if (!type || type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_integer *integer;
if (!type || type->frozen ||
- type->declaration->id != CTF_TYPE_INTEGER) {
+ type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
ret = -1;
goto end;
}
enum bt_ctf_integer_base ret = BT_CTF_INTEGER_BASE_UNKNOWN;
struct bt_ctf_field_type_integer *integer;
- if (!type || type->declaration->id != CTF_TYPE_INTEGER) {
+ if (!type || type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
goto end;
}
int ret = 0;
if (!type || type->frozen ||
- type->declaration->id != CTF_TYPE_INTEGER) {
+ type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
ret = -1;
goto end;
}
return ret;
}
-enum ctf_string_encoding bt_ctf_field_type_integer_get_encoding(
+enum bt_ctf_string_encoding bt_ctf_field_type_integer_get_encoding(
struct bt_ctf_field_type *type)
{
- enum ctf_string_encoding ret = CTF_STRING_UNKNOWN;
+ enum bt_ctf_string_encoding ret = BT_CTF_STRING_ENCODING_UNKNOWN;
struct bt_ctf_field_type_integer *integer;
- if (!type || type->declaration->id != CTF_TYPE_INTEGER) {
+ if (!type || type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
goto end;
}
}
int bt_ctf_field_type_integer_set_encoding(struct bt_ctf_field_type *type,
- enum ctf_string_encoding encoding)
+ enum bt_ctf_string_encoding encoding)
{
int ret = 0;
struct bt_ctf_field_type_integer *integer;
if (!type || type->frozen ||
- (type->declaration->id != CTF_TYPE_INTEGER) ||
- (encoding < CTF_STRING_NONE) ||
- (encoding >= CTF_STRING_UNKNOWN)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_INTEGER) ||
+ (encoding < BT_CTF_STRING_ENCODING_NONE) ||
+ (encoding >= BT_CTF_STRING_ENCODING_UNKNOWN)) {
ret = -1;
goto end;
}
goto error;
}
- if (integer_container_type->declaration->id != CTF_TYPE_INTEGER) {
+ if (integer_container_type->declaration->id != BT_CTF_TYPE_ID_INTEGER) {
goto error;
}
}
enumeration->parent.declaration = &enumeration->declaration.p;
- enumeration->parent.declaration->id = CTF_TYPE_ENUM;
+ enumeration->parent.declaration->id = BT_CTF_TYPE_ID_ENUM;
bt_get(integer_container_type);
enumeration->container = integer_container_type;
enumeration->entries = g_ptr_array_new_with_free_func(
goto end;
}
- if (type->declaration->id != CTF_TYPE_ENUM) {
+ if (type->declaration->id != BT_CTF_TYPE_ID_ENUM) {
goto end;
}
struct range_overlap_query query;
char *escaped_string;
- if (!type || (type->declaration->id != CTF_TYPE_ENUM) ||
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ENUM) ||
type->frozen ||
(range_end < range_start)) {
ret = -1;
struct range_overlap_query query;
char *escaped_string;
- if (!type || (type->declaration->id != CTF_TYPE_ENUM) ||
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ENUM) ||
type->frozen ||
(range_end < range_start)) {
ret = -1;
int ret = 0;
struct bt_ctf_field_type_enumeration *enumeration;
- if (!type || (type->declaration->id != CTF_TYPE_ENUM)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ENUM)) {
ret = -1;
goto end;
}
int ret = 0;
if (!type || index < 0 || !string || !range_start || !range_end ||
- (type->declaration->id != CTF_TYPE_ENUM)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_ENUM)) {
ret = -1;
goto end;
}
int ret = 0;
if (!type || index < 0 || !string || !range_start || !range_end ||
- (type->declaration->id != CTF_TYPE_ENUM)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_ENUM)) {
ret = -1;
goto end;
}
int i, ret = 0;
if (!type || !name ||
- (type->declaration->id != CTF_TYPE_ENUM)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_ENUM)) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_enumeration *enumeration;
int i, ret = 0;
- if (!type || (type->declaration->id != CTF_TYPE_ENUM)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ENUM)) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_enumeration *enumeration;
int i, ret = 0;
- if (!type || (type->declaration->id != CTF_TYPE_ENUM)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ENUM)) {
ret = -1;
goto end;
}
floating_point->declaration.exp = &floating_point->exp;
floating_point->sign.len = 1;
floating_point->parent.declaration = &floating_point->declaration.p;
- floating_point->parent.declaration->id = CTF_TYPE_FLOAT;
+ floating_point->parent.declaration->id = BT_CTF_TYPE_ID_FLOAT;
floating_point->declaration.exp->len =
sizeof(float) * CHAR_BIT - FLT_MANT_DIG;
floating_point->declaration.mantissa->len = FLT_MANT_DIG - 1;
int ret = 0;
struct bt_ctf_field_type_floating_point *floating_point;
- if (!type || (type->declaration->id != CTF_TYPE_FLOAT)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_FLOAT)) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_floating_point *floating_point;
if (!type || type->frozen ||
- (type->declaration->id != CTF_TYPE_FLOAT)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_FLOAT)) {
ret = -1;
goto end;
}
int ret = 0;
struct bt_ctf_field_type_floating_point *floating_point;
- if (!type || (type->declaration->id != CTF_TYPE_FLOAT)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_FLOAT)) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_floating_point *floating_point;
if (!type || type->frozen ||
- (type->declaration->id != CTF_TYPE_FLOAT)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_FLOAT)) {
ret = -1;
goto end;
}
}
structure->parent.declaration = &structure->declaration.p;
- structure->parent.declaration->id = CTF_TYPE_STRUCT;
+ structure->parent.declaration->id = BT_CTF_TYPE_ID_STRUCT;
structure->fields = g_ptr_array_new_with_free_func(
(GDestroyNotify)destroy_structure_field);
structure->field_name_to_index = g_hash_table_new(NULL, NULL);
if (!type || !field_type || type->frozen ||
bt_ctf_validate_identifier(field_name) ||
- (type->declaration->id != CTF_TYPE_STRUCT)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_STRUCT)) {
ret = -1;
goto end;
}
int ret = 0;
struct bt_ctf_field_type_structure *structure;
- if (!type || (type->declaration->id != CTF_TYPE_STRUCT)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_STRUCT)) {
ret = -1;
goto end;
}
struct structure_field *field;
int ret = 0;
- if (!type || index < 0 || (type->declaration->id != CTF_TYPE_STRUCT)) {
+ if (!type || index < 0 ||
+ (type->declaration->id != BT_CTF_TYPE_ID_STRUCT)) {
ret = -1;
goto end;
}
}
variant->parent.declaration = &variant->declaration.p;
- variant->parent.declaration->id = CTF_TYPE_VARIANT;
+ variant->parent.declaration->id = BT_CTF_TYPE_ID_VARIANT;
variant->tag_name = g_string_new(tag_name);
variant->field_name_to_index = g_hash_table_new(NULL, NULL);
variant->fields = g_ptr_array_new_with_free_func(
struct bt_ctf_field_type_variant *variant;
struct bt_ctf_field_type *tag_type = NULL;
- if (!type || (type->declaration->id != CTF_TYPE_VARIANT)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_VARIANT)) {
goto end;
}
struct bt_ctf_field_type_variant *variant;
const char *tag_name = NULL;
- if (!type || (type->declaration->id != CTF_TYPE_VARIANT)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_VARIANT)) {
goto end;
}
struct bt_ctf_field_type_variant *variant;
if (!type || type->frozen ||
- (type->declaration->id != CTF_TYPE_VARIANT) ||
+ (type->declaration->id != BT_CTF_TYPE_ID_VARIANT) ||
bt_ctf_validate_identifier(name)) {
ret = -1;
goto end;
if (!type || !field_type || type->frozen ||
bt_ctf_validate_identifier(field_name) ||
- (type->declaration->id != CTF_TYPE_VARIANT)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_VARIANT)) {
ret = -1;
goto end;
}
const char *enum_value;
struct bt_ctf_field_type *field_type = NULL;
- if (!type || !tag || type->declaration->id != CTF_TYPE_VARIANT) {
+ if (!type || !tag || type->declaration->id != BT_CTF_TYPE_ID_VARIANT) {
goto end;
}
int ret = 0;
struct bt_ctf_field_type_variant *variant;
- if (!type || (type->declaration->id != CTF_TYPE_VARIANT)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_VARIANT)) {
ret = -1;
goto end;
}
struct structure_field *field;
int ret = 0;
- if (!type || index < 0 || (type->declaration->id != CTF_TYPE_VARIANT)) {
+ if (!type || index < 0 ||
+ (type->declaration->id != BT_CTF_TYPE_ID_VARIANT)) {
ret = -1;
goto end;
}
}
array->parent.declaration = &array->declaration.p;
- array->parent.declaration->id = CTF_TYPE_ARRAY;
+ array->parent.declaration->id = BT_CTF_TYPE_ID_ARRAY;
bt_get(element_type);
array->element_type = element_type;
struct bt_ctf_field_type *ret = NULL;
struct bt_ctf_field_type_array *array;
- if (!type || (type->declaration->id != CTF_TYPE_ARRAY)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ARRAY)) {
goto end;
}
struct bt_ctf_field_type_array *array;
if (!type || !element_type ||
- (type->declaration->id != CTF_TYPE_ARRAY)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_ARRAY)) {
ret = -1;
goto end;
}
int64_t ret;
struct bt_ctf_field_type_array *array;
- if (!type || (type->declaration->id != CTF_TYPE_ARRAY)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_ARRAY)) {
ret = -1;
goto end;
}
}
sequence->parent.declaration = &sequence->declaration.p;
- sequence->parent.declaration->id = CTF_TYPE_SEQUENCE;
+ sequence->parent.declaration->id = BT_CTF_TYPE_ID_SEQUENCE;
bt_get(element_type);
sequence->element_type = element_type;
sequence->length_field_name = g_string_new(length_field_name);
struct bt_ctf_field_type *ret = NULL;
struct bt_ctf_field_type_sequence *sequence;
- if (!type || (type->declaration->id != CTF_TYPE_SEQUENCE)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_SEQUENCE)) {
goto end;
}
struct bt_ctf_field_type_sequence *sequence;
if (!type || !element_type ||
- (type->declaration->id != CTF_TYPE_SEQUENCE)) {
+ (type->declaration->id != BT_CTF_TYPE_ID_SEQUENCE)) {
ret = -1;
goto end;
}
const char *ret = NULL;
struct bt_ctf_field_type_sequence *sequence;
- if (!type || (type->declaration->id != CTF_TYPE_SEQUENCE)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_SEQUENCE)) {
goto end;
}
}
string->parent.declaration = &string->declaration.p;
- string->parent.declaration->id = CTF_TYPE_STRING;
+ string->parent.declaration->id = BT_CTF_TYPE_ID_STRING;
bt_ctf_field_type_init(&string->parent, TRUE);
- string->declaration.encoding = CTF_STRING_UTF8;
+ string->declaration.encoding = BT_CTF_STRING_ENCODING_UTF8;
string->parent.declaration->alignment = CHAR_BIT;
return &string->parent;
}
-enum ctf_string_encoding bt_ctf_field_type_string_get_encoding(
+enum bt_ctf_string_encoding bt_ctf_field_type_string_get_encoding(
struct bt_ctf_field_type *type)
{
struct bt_ctf_field_type_string *string;
- enum ctf_string_encoding ret = CTF_STRING_UNKNOWN;
+ enum bt_ctf_string_encoding ret = BT_CTF_STRING_ENCODING_UNKNOWN;
- if (!type || (type->declaration->id != CTF_TYPE_STRING)) {
+ if (!type || (type->declaration->id != BT_CTF_TYPE_ID_STRING)) {
goto end;
}
}
int bt_ctf_field_type_string_set_encoding(struct bt_ctf_field_type *type,
- enum ctf_string_encoding encoding)
+ enum bt_ctf_string_encoding encoding)
{
int ret = 0;
struct bt_ctf_field_type_string *string;
- if (!type || type->declaration->id != CTF_TYPE_STRING ||
- (encoding != CTF_STRING_UTF8 &&
- encoding != CTF_STRING_ASCII)) {
+ if (!type || type->declaration->id != BT_CTF_TYPE_ID_STRING ||
+ (encoding != BT_CTF_STRING_ENCODING_UTF8 &&
+ encoding != BT_CTF_STRING_ENCODING_ASCII)) {
ret = -1;
goto end;
}
int bt_ctf_field_type_get_alignment(struct bt_ctf_field_type *type)
{
int ret;
- enum ctf_type_id type_id;
+ enum bt_ctf_type_id type_id;
if (!type) {
ret = -1;
type_id = bt_ctf_field_type_get_type_id(type);
switch (type_id) {
- case CTF_TYPE_SEQUENCE:
+ case BT_CTF_TYPE_ID_SEQUENCE:
{
struct bt_ctf_field_type *element =
bt_ctf_field_type_sequence_get_element_type(type);
bt_put(element);
break;
}
- case CTF_TYPE_ARRAY:
+ case BT_CTF_TYPE_ID_ARRAY:
{
struct bt_ctf_field_type *element =
bt_ctf_field_type_array_get_element_type(type);
bt_put(element);
break;
}
- case CTF_TYPE_STRUCT:
+ case BT_CTF_TYPE_ID_STRUCT:
{
int i, element_count;
ret = (int) type->declaration->alignment;
break;
}
- case CTF_TYPE_UNKNOWN:
+ case BT_CTF_TYPE_ID_UNKNOWN:
ret = -1;
break;
default:
unsigned int alignment)
{
int ret = 0;
- enum ctf_type_id type_id;
+ enum bt_ctf_type_id type_id;
/* Alignment must be a power of two */
if (!type || type->frozen || !is_power_of_two(alignment)) {
}
type_id = bt_ctf_field_type_get_type_id(type);
- if (type_id == CTF_TYPE_UNKNOWN) {
+ if (type_id == BT_CTF_TYPE_ID_UNKNOWN) {
ret = -1;
goto end;
}
- if (type->declaration->id == CTF_TYPE_STRING &&
+ if (type->declaration->id == BT_CTF_TYPE_ID_STRING &&
alignment != CHAR_BIT) {
ret = -1;
goto end;
}
- if (type_id == CTF_TYPE_VARIANT || type_id == CTF_TYPE_SEQUENCE ||
- type_id == CTF_TYPE_ARRAY) {
+ if (type_id == BT_CTF_TYPE_ID_VARIANT ||
+ type_id == BT_CTF_TYPE_ID_SEQUENCE ||
+ type_id == BT_CTF_TYPE_ID_ARRAY) {
/* Setting an alignment on these types makes no sense */
ret = -1;
goto end;
}
switch (type->declaration->id) {
- case CTF_TYPE_INTEGER:
+ case BT_CTF_TYPE_ID_INTEGER:
{
struct bt_ctf_field_type_integer *integer = container_of(
type, struct bt_ctf_field_type_integer, parent);
ret = integer->user_byte_order;
break;
}
- case CTF_TYPE_FLOAT:
+ case BT_CTF_TYPE_ID_FLOAT:
{
struct bt_ctf_field_type_floating_point *floating_point =
container_of(type,
{
int ret = 0;
int internal_byte_order;
- enum ctf_type_id type_id;
+ enum bt_ctf_type_id type_id;
if (!type || type->frozen) {
ret = -1;
return ret;
}
-enum ctf_type_id bt_ctf_field_type_get_type_id(
+enum bt_ctf_type_id bt_ctf_field_type_get_type_id(
struct bt_ctf_field_type *type)
{
if (!type) {
- return CTF_TYPE_UNKNOWN;
+ return BT_CTF_TYPE_ID_UNKNOWN;
}
return type->declaration->id;
int bt_ctf_field_type_is_integer(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_INTEGER;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_INTEGER;
}
int bt_ctf_field_type_is_floating_point(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_FLOAT;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_FLOAT;
}
int bt_ctf_field_type_is_enumeration(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_ENUM;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_ENUM;
}
int bt_ctf_field_type_is_string(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_STRING;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_STRING;
}
int bt_ctf_field_type_is_structure(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_STRUCT;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_STRUCT;
}
int bt_ctf_field_type_is_array(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_ARRAY;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_ARRAY;
}
int bt_ctf_field_type_is_sequence(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_SEQUENCE;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_SEQUENCE;
}
int bt_ctf_field_type_is_variant(struct bt_ctf_field_type *type)
{
- return bt_ctf_field_type_get_type_id(type) == CTF_TYPE_VARIANT;
+ return bt_ctf_field_type_get_type_id(type) == BT_CTF_TYPE_ID_VARIANT;
}
void bt_ctf_field_type_get(struct bt_ctf_field_type *type)
return copy;
}
-BT_HIDDEN
-struct bt_ctf_field_path *bt_ctf_field_path_create(void)
-{
- struct bt_ctf_field_path *field_path = NULL;
-
- field_path = g_new0(struct bt_ctf_field_path, 1);
- if (!field_path) {
- goto end;
- }
-
- field_path->root = CTF_NODE_UNKNOWN;
- field_path->path_indexes = g_array_new(TRUE, FALSE, sizeof(int));
- if (!field_path->path_indexes) {
- bt_ctf_field_path_destroy(field_path);
- field_path = NULL;
- }
-end:
- return field_path;
-}
-
-
-BT_HIDDEN
-struct bt_ctf_field_path *bt_ctf_field_path_copy(
- struct bt_ctf_field_path *path)
-{
- struct bt_ctf_field_path *new_path = bt_ctf_field_path_create();
-
- if (!new_path) {
- goto end;
- }
-
- new_path->root = path->root;
- g_array_insert_vals(new_path->path_indexes, 0,
- path->path_indexes->data, path->path_indexes->len);
-end:
- return new_path;
-}
-
-BT_HIDDEN
-void bt_ctf_field_path_destroy(struct bt_ctf_field_path *path)
-{
- if (!path) {
- return;
- }
-
- if (path->path_indexes) {
- g_array_free(path->path_indexes, TRUE);
- }
- g_free(path);
-}
-
BT_HIDDEN
int bt_ctf_field_type_structure_get_field_name_index(
struct bt_ctf_field_type *type, const char *name)
struct bt_ctf_field_type_structure *structure;
if (!type || !name ||
- bt_ctf_field_type_get_type_id(type) != CTF_TYPE_STRUCT) {
+ bt_ctf_field_type_get_type_id(type) != BT_CTF_TYPE_ID_STRUCT) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_structure *structure;
if (!type || !field ||
- bt_ctf_field_type_get_type_id(type) != CTF_TYPE_STRUCT) {
+ bt_ctf_field_type_get_type_id(type) != BT_CTF_TYPE_ID_STRUCT) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_variant *variant;
if (!type || !name ||
- bt_ctf_field_type_get_type_id(type) != CTF_TYPE_VARIANT) {
+ bt_ctf_field_type_get_type_id(type) != BT_CTF_TYPE_ID_VARIANT) {
ret = -1;
goto end;
}
int ret = 0;
struct bt_ctf_field_type_sequence *sequence;
- if (!type || bt_ctf_field_type_get_type_id(type) != CTF_TYPE_SEQUENCE) {
+ if (!type || bt_ctf_field_type_get_type_id(type) !=
+ BT_CTF_TYPE_ID_SEQUENCE) {
ret = -1;
goto end;
}
sequence = container_of(type, struct bt_ctf_field_type_sequence,
parent);
- if (sequence->length_field_path) {
- bt_ctf_field_path_destroy(sequence->length_field_path);
- }
- sequence->length_field_path = path;
+ bt_get(path);
+ BT_MOVE(sequence->length_field_path, path);
end:
return ret;
}
-BT_HIDDEN
-struct bt_ctf_field_path *bt_ctf_field_type_sequence_get_length_field_path(
- struct bt_ctf_field_type *type)
-{
- struct bt_ctf_field_type_sequence *sequence;
-
- sequence = container_of(type, struct bt_ctf_field_type_sequence,
- parent);
-
- return sequence->length_field_path;
-}
-
BT_HIDDEN
int bt_ctf_field_type_variant_set_tag_field_path(struct bt_ctf_field_type *type,
struct bt_ctf_field_path *path)
int ret = 0;
struct bt_ctf_field_type_variant *variant;
- if (!type || bt_ctf_field_type_get_type_id(type) != CTF_TYPE_VARIANT) {
+ if (!type || bt_ctf_field_type_get_type_id(type) !=
+ BT_CTF_TYPE_ID_VARIANT) {
ret = -1;
goto end;
}
variant = container_of(type, struct bt_ctf_field_type_variant,
parent);
- if (variant->tag_path) {
- bt_ctf_field_path_destroy(variant->tag_path);
- }
- variant->tag_path = path;
+ bt_get(path);
+ BT_MOVE(variant->tag_field_path, path);
end:
return ret;
}
BT_HIDDEN
-struct bt_ctf_field_path *bt_ctf_field_type_variant_get_tag_field_path(
- struct bt_ctf_field_type *type)
-{
- struct bt_ctf_field_type_variant *variant;
-
- variant = container_of(type, struct bt_ctf_field_type_variant,
- parent);
-
- return variant->tag_path;
-}
-
-BT_HIDDEN
-int bt_ctf_field_type_variant_set_tag(struct bt_ctf_field_type *type,
+int bt_ctf_field_type_variant_set_tag_field_type(struct bt_ctf_field_type *type,
struct bt_ctf_field_type *tag)
{
int ret = 0;
struct bt_ctf_field_type_variant *variant;
- if (!type || !tag || type->frozen ||
- bt_ctf_field_type_get_type_id(tag) != CTF_TYPE_ENUM) {
+ if (!type || !tag ||
+ bt_ctf_field_type_get_type_id(tag) !=
+ BT_CTF_TYPE_ID_ENUM) {
ret = -1;
goto end;
}
struct bt_ctf_field_type_variant *variant;
if (!type || !field ||
- bt_ctf_field_type_get_type_id(type) != CTF_TYPE_VARIANT) {
+ bt_ctf_field_type_get_type_id(type) != BT_CTF_TYPE_ID_VARIANT) {
ret = -1;
goto end;
}
g_hash_table_destroy(variant->field_name_to_index);
g_string_free(variant->tag_name, TRUE);
bt_put(&variant->tag->parent);
- bt_ctf_field_path_destroy(variant->tag_path);
+ BT_PUT(variant->tag_field_path);
g_free(variant);
}
bt_put(sequence->element_type);
g_string_free(sequence->length_field_name, TRUE);
- bt_ctf_field_path_destroy(sequence->length_field_path);
+ BT_PUT(sequence->length_field_path);
g_free(sequence);
}
}
static
-const char *get_encoding_string(enum ctf_string_encoding encoding)
+const char *get_encoding_string(enum bt_ctf_string_encoding encoding)
{
const char *encoding_string;
switch (encoding) {
- case CTF_STRING_NONE:
+ case BT_CTF_STRING_ENCODING_NONE:
encoding_string = "none";
break;
- case CTF_STRING_ASCII:
+ case BT_CTF_STRING_ENCODING_ASCII:
encoding_string = "ASCII";
break;
- case CTF_STRING_UTF8:
+ case BT_CTF_STRING_ENCODING_UTF8:
encoding_string = "UTF8";
break;
default:
}
copy_variant->declaration = variant->declaration;
- if (variant->tag_path) {
- copy_variant->tag_path = bt_ctf_field_path_copy(
- variant->tag_path);
- if (!copy_variant->tag_path) {
+ if (variant->tag_field_path) {
+ copy_variant->tag_field_path = bt_ctf_field_path_copy(
+ variant->tag_field_path);
+ if (!copy_variant->tag_field_path) {
goto error;
}
}
if (ret) {
goto end;
}
-
- ret = 1;
}
/* Equal */
if (ret) {
goto end;
}
-
- ret = 1;
}
/* Equal */
goto end;
}
- if (type_a->declaration->id == CTF_TYPE_UNKNOWN) {
+ if (type_a->declaration->id == BT_CTF_TYPE_ID_UNKNOWN) {
/* Both have unknown type IDs */
goto end;
}
end:
return ret;
}
+
+BT_HIDDEN
+int bt_ctf_field_type_get_field_count(struct bt_ctf_field_type *field_type)
+{
+ int field_count = -1;
+ enum ctf_type_id type_id = bt_ctf_field_type_get_type_id(field_type);
+
+ switch (type_id) {
+ case CTF_TYPE_STRUCT:
+ field_count =
+ bt_ctf_field_type_structure_get_field_count(field_type);
+ break;
+ case CTF_TYPE_VARIANT:
+ field_count =
+ bt_ctf_field_type_variant_get_field_count(field_type);
+ break;
+ case CTF_TYPE_ARRAY:
+ case CTF_TYPE_SEQUENCE:
+ /*
+ * Array and sequence types always contain a single member
+ * (the element type).
+ */
+ field_count = 1;
+ break;
+ default:
+ break;
+ }
+
+ return field_count;
+}
+
+BT_HIDDEN
+struct bt_ctf_field_type *bt_ctf_field_type_get_field_at_index(
+ struct bt_ctf_field_type *field_type, int index)
+{
+ struct bt_ctf_field_type *field = NULL;
+ enum ctf_type_id type_id = bt_ctf_field_type_get_type_id(field_type);
+
+ switch (type_id) {
+ case CTF_TYPE_STRUCT:
+ bt_ctf_field_type_structure_get_field(field_type, NULL, &field,
+ index);
+ break;
+ case CTF_TYPE_VARIANT:
+ bt_ctf_field_type_variant_get_field(field_type, NULL,
+ &field, index);
+ break;
+ case CTF_TYPE_ARRAY:
+ field = bt_ctf_field_type_array_get_element_type(field_type);
+ break;
+ case CTF_TYPE_SEQUENCE:
+ field = bt_ctf_field_type_sequence_get_element_type(field_type);
+ break;
+ default:
+ break;
+ }
+
+ return field;
+}
+
+BT_HIDDEN
+int bt_ctf_field_type_get_field_index(struct bt_ctf_field_type *field_type,
+ const char *name)
+{
+ int field_index = -1;
+ enum ctf_type_id type_id = bt_ctf_field_type_get_type_id(field_type);
+
+ switch (type_id) {
+ case CTF_TYPE_STRUCT:
+ field_index = bt_ctf_field_type_structure_get_field_name_index(
+ field_type, name);
+ break;
+ case CTF_TYPE_VARIANT:
+ field_index = bt_ctf_field_type_variant_get_field_name_index(
+ field_type, name);
+ break;
+ default:
+ break;
+ }
+
+ return field_index;
+}
+
+struct bt_ctf_field_path *bt_ctf_field_type_variant_get_tag_field_path(
+ struct bt_ctf_field_type *type)
+{
+ struct bt_ctf_field_path *field_path = NULL;
+ struct bt_ctf_field_type_variant *variant;
+
+ if (!type || !bt_ctf_field_type_is_variant(type)) {
+ goto end;
+ }
+
+ variant = container_of(type, struct bt_ctf_field_type_variant,
+ parent);
+ field_path = bt_get(variant->tag_field_path);
+end:
+ return field_path;
+}
+
+struct bt_ctf_field_path *bt_ctf_field_type_sequence_get_length_field_path(
+ struct bt_ctf_field_type *type)
+{
+ struct bt_ctf_field_path *field_path = NULL;
+ struct bt_ctf_field_type_sequence *sequence;
+
+ if (!type || !bt_ctf_field_type_is_sequence(type)) {
+ goto end;
+ }
+
+ sequence = container_of(type, struct bt_ctf_field_type_sequence,
+ parent);
+ field_path = bt_get(sequence->length_field_path);
+end:
+ return field_path;
+}