X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf-ir%2Fevent-types.h;h=d445812f4363292a16ccfd0a01967e9a7d1de7bd;hb=0ce5791baa59e384c6702a89b66e2b1ae08d0c02;hp=f51dde371dd277d8dc65ece5e2dff50e703ad9c0;hpb=2c4a07581e21e1ed005894d126a0dc084c1a5852;p=babeltrace.git diff --git a/include/babeltrace/ctf-ir/event-types.h b/include/babeltrace/ctf-ir/event-types.h index f51dde37..d445812f 100644 --- a/include/babeltrace/ctf-ir/event-types.h +++ b/include/babeltrace/ctf-ir/event-types.h @@ -40,6 +40,7 @@ extern "C" { struct bt_ctf_event_class; struct bt_ctf_event; struct bt_ctf_field_type; +struct bt_ctf_field; enum bt_ctf_integer_base { BT_CTF_INTEGER_BASE_UNKNOWN = -1, @@ -50,6 +51,7 @@ enum bt_ctf_integer_base { }; enum bt_ctf_byte_order { + BT_CTF_BYTE_ORDER_UNKNOWN = -1, BT_CTF_BYTE_ORDER_NATIVE = 0, BT_CTF_BYTE_ORDER_LITTLE_ENDIAN, BT_CTF_BYTE_ORDER_BIG_ENDIAN, @@ -69,6 +71,30 @@ enum bt_ctf_byte_order { extern struct bt_ctf_field_type *bt_ctf_field_type_integer_create( unsigned int size); +/* + * bt_ctf_field_type_integer_get_size: get an integer type's size. + * + * Get an integer type's size. + * + * @param integer Integer type. + * + * Returns the integer type's size, a negative value on error. + */ +extern int bt_ctf_field_type_integer_get_size( + struct bt_ctf_field_type *integer); + +/* + * bt_ctf_field_type_integer_get_signed: get an integer type's signedness. + * + * Get an integer type's signedness attribute. + * + * @param integer Integer type. + * + * Returns the integer's signedness, a negative value on error. + */ +extern int bt_ctf_field_type_integer_get_signed( + struct bt_ctf_field_type *integer); + /* * bt_ctf_field_type_integer_set_signed: set an integer type's signedness. * @@ -82,6 +108,19 @@ extern struct bt_ctf_field_type *bt_ctf_field_type_integer_create( extern int bt_ctf_field_type_integer_set_signed( struct bt_ctf_field_type *integer, int is_signed); +/* + * bt_ctf_field_type_integer_get_base: get an integer type's base. + * + * Get an integer type's base used to pretty-print the resulting trace. + * + * @param integer Integer type. + * + * Returns the integer type's base on success, BT_CTF_INTEGER_BASE_UNKNOWN on + * error. + */ +extern enum bt_ctf_integer_base bt_ctf_field_type_integer_get_base( + struct bt_ctf_field_type *integer); + /* * bt_ctf_field_type_integer_set_base: set an integer type's base. * @@ -95,6 +134,16 @@ extern int bt_ctf_field_type_integer_set_signed( extern int bt_ctf_field_type_integer_set_base(struct bt_ctf_field_type *integer, enum bt_ctf_integer_base base); +/* + * bt_ctf_field_type_integer_get_encoding: get an integer type's encoding. + * + * @param integer Integer type. + * + * Returns the string field's encoding on success, CTF_STRING_UNKNOWN on error. + */ +extern enum ctf_string_encoding bt_ctf_field_type_integer_get_encoding( + struct bt_ctf_field_type *integer); + /* * bt_ctf_field_type_integer_set_encoding: set an integer type's encoding. * @@ -126,22 +175,136 @@ extern int bt_ctf_field_type_integer_set_encoding( extern struct bt_ctf_field_type *bt_ctf_field_type_enumeration_create( struct bt_ctf_field_type *integer_container_type); +/* + * bt_ctf_field_type_enumeration_get_container_type: get underlying container. + * + * Get the enumeration type's underlying integer container type. + * + * @param enumeration Enumeration type. + * + * Returns an allocated field type on success, NULL on error. + */ +extern +struct bt_ctf_field_type *bt_ctf_field_type_enumeration_get_container_type( + struct bt_ctf_field_type *enumeration); + /* * bt_ctf_field_type_enumeration_add_mapping: add an enumeration mapping. * * Add a mapping to the enumeration. The range's values are inclusive. * * @param enumeration Enumeration type. - * @param string Enumeration mapping name (will be copied). + * @param name Enumeration mapping name (will be copied). * @param range_start Enumeration mapping range start. * @param range_end Enumeration mapping range end. * * Returns 0 on success, a negative value on error. */ extern int bt_ctf_field_type_enumeration_add_mapping( - struct bt_ctf_field_type *enumeration, const char *string, + struct bt_ctf_field_type *enumeration, const char *name, int64_t range_start, int64_t range_end); +/* + * bt_ctf_field_type_enumeration_add_mapping_unsigned: add an enumeration + * mapping. + * + * Add a mapping to the enumeration. The range's values are inclusive. + * + * @param enumeration Enumeration type. + * @param name Enumeration mapping name (will be copied). + * @param range_start Enumeration mapping range start. + * @param range_end Enumeration mapping range end. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_add_mapping_unsigned( + struct bt_ctf_field_type *enumeration, const char *name, + uint64_t range_start, uint64_t range_end); + +/* + * bt_ctf_field_type_enumeration_get_mapping_count: Get the number of mappings + * defined in the enumeration. + * + * @param enumeration Enumeration type. + * + * Returns the mapping count on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_get_mapping_count( + struct bt_ctf_field_type *enumeration); + +/* + * bt_ctf_field_type_enumeration_get_mapping: get an enumeration mapping. + * + * @param enumeration Enumeration type. + * @param index Index of mapping. + * @param name Pointer where the mapping's name will be returned (valid for + * the lifetime of the enumeration). + * @param range_start Pointer where the enumeration mapping's range start will + * be returned. + * @param range_end Pointer where the enumeration mapping's range end will + * be returned. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_get_mapping( + struct bt_ctf_field_type *enumeration, int index, + const char **name, int64_t *range_start, int64_t *range_end); + +/* + * bt_ctf_field_type_enumeration_get_mapping_unsigned: get a mapping. + * + * @param enumeration Enumeration type. + * @param index Index of mapping. + * @param name Pointer where the mapping's name will be returned (valid for + * the lifetime of the enumeration). + * @param range_start Pointer where the enumeration mapping's range start will + * be returned. + * @param range_end Pointer where the enumeration mapping's range end will + * be returned. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_get_mapping_unsigned( + struct bt_ctf_field_type *enumeration, int index, + const char **name, uint64_t *range_start, + uint64_t *range_end); + +/* + * bt_ctf_field_type_enumeration_get_mapping_index_by_name: get an enumerations' + * mapping index by name. + * + * @param enumeration Enumeration type. + * @param name Mapping name. + * + * Returns mapping index on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_get_mapping_index_by_name( + struct bt_ctf_field_type *enumeration, const char *name); + +/* + * bt_ctf_field_type_enumeration_get_mapping_index_by_value: get an + * enumerations' mapping index by value. + * + * @param enumeration Enumeration type. + * @param value Value. + * + * Returns mapping index on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_get_mapping_index_by_value( + struct bt_ctf_field_type *enumeration, int64_t value); + +/* + * bt_ctf_field_type_enumeration_get_mapping_index_by_unsigned_value: get an + * enumerations' mapping index by value. + * + * @param enumeration Enumeration type. + * @param value Value. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_field_type_enumeration_get_mapping_index_by_unsigned_value( + struct bt_ctf_field_type *enumeration, uint64_t value); + /* * bt_ctf_field_type_floating_point_create: create a floating point field type. * @@ -152,9 +315,20 @@ extern int bt_ctf_field_type_enumeration_add_mapping( */ extern struct bt_ctf_field_type *bt_ctf_field_type_floating_point_create(void); +/* + * bt_ctf_field_type_floating_point_get_exponent_digits: get exponent digit + * count. + * + * @param floating_point Floating point type. + * + * Returns the exponent digit count on success, a negative value on error. + */ +extern int bt_ctf_field_type_floating_point_get_exponent_digits( + struct bt_ctf_field_type *floating_point); + /* * bt_ctf_field_type_floating_point_set_exponent_digits: set exponent digit - * count. + * count. * * Set the number of exponent digits to use to store the floating point field. * The only values currently supported are FLT_EXP_DIG and DBL_EXP_DIG. @@ -170,9 +344,20 @@ extern int bt_ctf_field_type_floating_point_set_exponent_digits( unsigned int exponent_digits); /* - * bt_ctf_field_type_floating_point_set_mantissa_digits: set mantissa digit + * bt_ctf_field_type_floating_point_get_mantissa_digits: get mantissa digit * count. * + * @param floating_point Floating point type. + * + * Returns the mantissa digit count on success, a negative value on error. + */ +extern int bt_ctf_field_type_floating_point_get_mantissa_digits( + struct bt_ctf_field_type *floating_point); + +/* + * bt_ctf_field_type_floating_point_set_mantissa_digits: set mantissa digit + * count. + * * Set the number of mantissa digits to use to store the floating point field. * The only values currently supported are FLT_MANT_DIG and DBL_MANT_DIG. * @@ -213,6 +398,47 @@ extern int bt_ctf_field_type_structure_add_field( struct bt_ctf_field_type *field_type, const char *field_name); +/* + * bt_ctf_field_type_structure_get_field_count: Get the number of fields defined + * in the structure. + * + * @param structure Structure type. + * + * Returns the field count on success, a negative value on error. + */ +extern int bt_ctf_field_type_structure_get_field_count( + struct bt_ctf_field_type *structure); + +/* + * bt_ctf_field_type_structure_get_field: get a structure's field type and name. + * + * @param structure Structure type. + * @param field_type Pointer to a const char* where the field's name will + * be returned. + * @param field_type Pointer to a bt_ctf_field_type* where the field's type will + * be returned. + * @param index Index of field. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_field_type_structure_get_field( + struct bt_ctf_field_type *structure, + const char **field_name, struct bt_ctf_field_type **field_type, + int index); + +/* + * bt_ctf_field_type_structure_get_field_type_by_name: get a structure field's + * type by name. + * + * @param structure Structure type. + * @param field_name Name of the structure's field. + * + * Returns a field type instance on success, NULL on error. + */ +extern +struct bt_ctf_field_type *bt_ctf_field_type_structure_get_field_type_by_name( + struct bt_ctf_field_type *structure, const char *field_name); + /* * bt_ctf_field_type_variant_create: create a variant field type. * @@ -226,13 +452,32 @@ extern int bt_ctf_field_type_structure_add_field( * Returns an allocated field type on success, NULL on error. */ extern struct bt_ctf_field_type *bt_ctf_field_type_variant_create( - struct bt_ctf_field_type *enum_tag, - const char *tag_name); + struct bt_ctf_field_type *enum_tag, const char *tag_name); + +/* + * bt_ctf_field_type_variant_get_tag_type: get a variant's tag type. + * + * @param variant Variant type. + * + * Returns a field type instance on success, NULL on error. + */ +extern struct bt_ctf_field_type *bt_ctf_field_type_variant_get_tag_type( + struct bt_ctf_field_type *variant); + +/* + * bt_ctf_field_type_variant_get_tag_name: get a variant's tag name. + * + * @param variant Variant type. + * + * Returns the tag field's name, NULL on error. + */ +extern const char *bt_ctf_field_type_variant_get_tag_name( + struct bt_ctf_field_type *variant); /* * bt_ctf_field_type_variant_add_field: add a field to a variant. * - * Add a field of type "field_type" to the variant.The variant will share + * Add a field of type "field_type" to the variant. The variant will share * field_type's ownership by increasing its reference count. The "field_name" * will be copied. field_name must match a mapping in the tag/selector * enumeration. @@ -248,6 +493,57 @@ extern int bt_ctf_field_type_variant_add_field( struct bt_ctf_field_type *field_type, const char *field_name); +/* + * bt_ctf_field_type_variant_get_field_type_by_name: get variant field's type. + * + * @param structure Variant type. + * @param field_name Name of the variant's field. + * + * Returns a field type instance on success, NULL on error. + */ +extern +struct bt_ctf_field_type *bt_ctf_field_type_variant_get_field_type_by_name( + struct bt_ctf_field_type *variant, const char *field_name); + +/* + * bt_ctf_field_type_variant_get_field_type_from_tag: get variant field's type. + * + * @param variant Variant type. + * @param tag Type tag (enum). + * + * Returns a field type instance on success, NULL on error. + */ +extern +struct bt_ctf_field_type *bt_ctf_field_type_variant_get_field_type_from_tag( + struct bt_ctf_field_type *variant, struct bt_ctf_field *tag); + +/* + * bt_ctf_field_type_variant_get_field_count: Get the number of fields defined + * in the variant. + * + * @param variant Variant type. + * + * Returns the field count on success, a negative value on error. + */ +extern int bt_ctf_field_type_variant_get_field_count( + struct bt_ctf_field_type *variant); + +/* + * bt_ctf_field_type_variant_get_field: get a variant's field name and type. + * + * @param variant Variant type. + * @param field_type Pointer to a const char* where the field's name will + * be returned. + * @param field_type Pointer to a bt_ctf_field_type* where the field's type will + * be returned. + * @param index Index of field. + * + * Returns 0 on success, a negative value on error. + */ +extern int bt_ctf_field_type_variant_get_field( + struct bt_ctf_field_type *variant, const char **field_name, + struct bt_ctf_field_type **field_type, int index); + /* * bt_ctf_field_type_array_create: create an array field type. * @@ -260,8 +556,27 @@ extern int bt_ctf_field_type_variant_add_field( * Returns an allocated field type on success, NULL on error. */ extern struct bt_ctf_field_type *bt_ctf_field_type_array_create( - struct bt_ctf_field_type *element_type, - unsigned int length); + struct bt_ctf_field_type *element_type, unsigned int length); + +/* + * bt_ctf_field_type_array_get_element_type: get an array's element type. + * + * @param array Array type. + * + * Returns a field type instance on success, NULL on error. + */ +extern struct bt_ctf_field_type *bt_ctf_field_type_array_get_element_type( + struct bt_ctf_field_type *array); + +/* + * bt_ctf_field_type_array_get_length: get an array's length. + * + * @param array Array type. + * + * Returns the array's length on success, a negative value on error. + */ +extern int64_t bt_ctf_field_type_array_get_length( + struct bt_ctf_field_type *array); /* * bt_ctf_field_type_sequence_create: create a sequence field type. @@ -280,6 +595,26 @@ extern struct bt_ctf_field_type *bt_ctf_field_type_sequence_create( struct bt_ctf_field_type *element_type, const char *length_field_name); +/* + * bt_ctf_field_type_sequence_get_element_type: get a sequence's element type. + * + * @param sequence Sequence type. + * + * Returns a field type instance on success, NULL on error. + */ +extern struct bt_ctf_field_type *bt_ctf_field_type_sequence_get_element_type( + struct bt_ctf_field_type *sequence); + +/* + * bt_ctf_field_type_sequence_get_length_field_name: get length field name. + * + * @param sequence Sequence type. + * + * Returns the sequence's length field on success, NULL on error. + */ +extern const char *bt_ctf_field_type_sequence_get_length_field_name( + struct bt_ctf_field_type *sequence); + /* * bt_ctf_field_type_string_create: create a string field type. * @@ -290,21 +625,44 @@ extern struct bt_ctf_field_type *bt_ctf_field_type_sequence_create( */ extern struct bt_ctf_field_type *bt_ctf_field_type_string_create(void); +/* + * bt_ctf_field_type_string_get_encoding: get a string type's encoding. + * + * Get the string type's encoding. + * + * @param string_type String type. + * + * Returns the string's encoding on success, a CTF_STRING_UNKNOWN on error. + */ +extern enum ctf_string_encoding bt_ctf_field_type_string_get_encoding( + struct bt_ctf_field_type *string_type); + /* * bt_ctf_field_type_string_set_encoding: set a string type's encoding. * * Set the string type's encoding. * - * @param string String type. + * @param string_type String type. * @param encoding String field encoding, default CTF_STRING_ENCODING_ASCII. * Valid values are CTF_STRING_ENCODING_ASCII and CTF_STRING_ENCODING_UTF8. * * Returns 0 on success, a negative value on error. */ extern int bt_ctf_field_type_string_set_encoding( - struct bt_ctf_field_type *string, + struct bt_ctf_field_type *string_type, enum ctf_string_encoding encoding); +/* + * bt_ctf_field_type_get_alignment: get a field type's alignment. + * + * Get the field type's alignment. + * + * @param type Field type. + * + * Returns the field type's alignment on success, a negative value on error. + */ +extern int bt_ctf_field_type_get_alignment(struct bt_ctf_field_type *type); + /* * bt_ctf_field_type_set_alignment: set a field type's alignment. * @@ -320,6 +678,16 @@ extern int bt_ctf_field_type_string_set_encoding( extern int bt_ctf_field_type_set_alignment(struct bt_ctf_field_type *type, unsigned int alignment); +/* + * bt_ctf_field_type_get_byte_order: get a field type's byte order. + * + * @param type Field type. + * + * Returns the field type's byte order on success, a negative value on error. + */ +extern enum bt_ctf_byte_order bt_ctf_field_type_get_byte_order( + struct bt_ctf_field_type *type); + /* * bt_ctf_field_type_set_byte_order: set a field type's byte order. * @@ -334,6 +702,31 @@ extern int bt_ctf_field_type_set_alignment(struct bt_ctf_field_type *type, extern int bt_ctf_field_type_set_byte_order(struct bt_ctf_field_type *type, enum bt_ctf_byte_order byte_order); +/* + * bt_ctf_field_type_get_type_id: get a field type's ctf_type_id. + * + * @param type Field type. + * + * Returns the field type's ctf_type_id, CTF_TYPE_UNKNOWN on error. + */ +extern enum ctf_type_id bt_ctf_field_type_get_type_id( + struct bt_ctf_field_type *type); + +/* + * bt_ctf_field_type_get_alias_nameL get a field type's alias name + * + * A type's alias name is set if it was resolved from a typedef or + * typealias. Note that types that are resolved from a ypealias or + * typedef are distinct from the underlying type and can't be compared + * pointer-wise. + * + * @param type Field type. + * + * Returns a field type's alias name, NULL on error. + */ +extern const char *bt_ctf_field_type_get_alias_name( + struct bt_ctf_field_type *type); + /* * bt_ctf_field_type_get and bt_ctf_field_type_put: increment and decrement * the field type's reference count.