X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf-ir%2Ffield-types.h;h=6391f154e9680e60cba177878fd47c6663a8bdd1;hb=9ac68eb139149d2768848dae5e263cc5a755d439;hp=420ae7f4faf07bbffb14b382b678b7e5b3c7d53b;hpb=23320c3b6257db7d0936b4974c2ee2a1dbf63cf6;p=babeltrace.git diff --git a/include/babeltrace/ctf-ir/field-types.h b/include/babeltrace/ctf-ir/field-types.h index 420ae7f4..6391f154 100644 --- a/include/babeltrace/ctf-ir/field-types.h +++ b/include/babeltrace/ctf-ir/field-types.h @@ -31,6 +31,7 @@ */ #include +#include #ifdef __cplusplus extern "C" { @@ -96,49 +97,49 @@ The standard CTF field types are: CTF IR field which you can create from this field type - #BT_CTF_TYPE_ID_INTEGER + #BT_CTF_FIELD_TYPE_ID_INTEGER \ref ctfirintfieldtype \ref ctfirintfield - #BT_CTF_TYPE_ID_FLOAT + #BT_CTF_FIELD_TYPE_ID_FLOAT \ref ctfirfloatfieldtype \ref ctfirfloatfield - #BT_CTF_TYPE_ID_ENUM + #BT_CTF_FIELD_TYPE_ID_ENUM \ref ctfirenumfieldtype \ref ctfirenumfield - #BT_CTF_TYPE_ID_STRING + #BT_CTF_FIELD_TYPE_ID_STRING \ref ctfirstringfieldtype \ref ctfirstringfield - #BT_CTF_TYPE_ID_STRUCT + #BT_CTF_FIELD_TYPE_ID_STRUCT \ref ctfirstructfieldtype \ref ctfirstructfield - #BT_CTF_TYPE_ID_ARRAY + #BT_CTF_FIELD_TYPE_ID_ARRAY \ref ctfirarrayfieldtype \ref ctfirarrayfield - #BT_CTF_TYPE_ID_SEQUENCE + #BT_CTF_FIELD_TYPE_ID_SEQUENCE \ref ctfirseqfieldtype \ref ctfirseqfield - #BT_CTF_TYPE_ID_VARIANT + #BT_CTF_FIELD_TYPE_ID_VARIANT \ref ctfirvarfieldtype \ref ctfirvarfield Each field type has its own type ID (see -#bt_ctf_type_id). You get the type ID of a field type object +#bt_ctf_field_type_id). You get the type ID of a field type object with bt_ctf_field_type_get_type_id(). You can get a deep copy of a field type with bt_ctf_field_type_copy(). @@ -205,7 +206,7 @@ struct bt_ctf_field_type_enumeration_mapping_iterator; /* * Babeltrace 1.x enumerations that were also used in CTF writer's API. * They are left here for backward compatibility reasons, but - * enum bt_ctf_type_id and enum bt_ctf_string_encoding should be used + * enum bt_ctf_field_type_id and enum bt_ctf_string_encoding should be used * in new code. Both new enumerations are compatible with their legacy * counterpart. */ @@ -274,37 +275,37 @@ enum bt_ctf_scope { /** @brief Type ID of a @ft. */ -enum bt_ctf_type_id { +enum bt_ctf_field_type_id { /// Unknown, used for errors. - BT_CTF_TYPE_ID_UNKNOWN = CTF_TYPE_UNKNOWN, + BT_CTF_FIELD_TYPE_ID_UNKNOWN = CTF_TYPE_UNKNOWN, /// \ref ctfirintfieldtype - BT_CTF_TYPE_ID_INTEGER = CTF_TYPE_INTEGER, + BT_CTF_FIELD_TYPE_ID_INTEGER = CTF_TYPE_INTEGER, /// \ref ctfirfloatfieldtype - BT_CTF_TYPE_ID_FLOAT = CTF_TYPE_FLOAT, + BT_CTF_FIELD_TYPE_ID_FLOAT = CTF_TYPE_FLOAT, /// \ref ctfirenumfieldtype - BT_CTF_TYPE_ID_ENUM = CTF_TYPE_ENUM, + BT_CTF_FIELD_TYPE_ID_ENUM = CTF_TYPE_ENUM, /// \ref ctfirstringfieldtype - BT_CTF_TYPE_ID_STRING = CTF_TYPE_STRING, + BT_CTF_FIELD_TYPE_ID_STRING = CTF_TYPE_STRING, /// \ref ctfirstructfieldtype - BT_CTF_TYPE_ID_STRUCT = CTF_TYPE_STRUCT, + BT_CTF_FIELD_TYPE_ID_STRUCT = CTF_TYPE_STRUCT, /// @cond DOCUMENT BT_CTF_TYPE_ID_UNTAGGED_VARIANT = CTF_TYPE_UNTAGGED_VARIANT, /// @endcond /// \ref ctfirarrayfieldtype - BT_CTF_TYPE_ID_ARRAY = CTF_TYPE_ARRAY, + BT_CTF_FIELD_TYPE_ID_ARRAY = CTF_TYPE_ARRAY, /// \ref ctfirseqfieldtype - BT_CTF_TYPE_ID_SEQUENCE = CTF_TYPE_SEQUENCE, + BT_CTF_FIELD_TYPE_ID_SEQUENCE = CTF_TYPE_SEQUENCE, /// \ref ctfirvarfieldtype - BT_CTF_TYPE_ID_VARIANT = CTF_TYPE_VARIANT, + BT_CTF_FIELD_TYPE_ID_VARIANT = CTF_TYPE_VARIANT, /// Number of enumeration entries. BT_CTF_NR_TYPE_IDS = NR_CTF_TYPES, @@ -315,12 +316,12 @@ enum bt_ctf_type_id { @param[in] field_type Field type of which to get the type ID. @returns Type ID of \p field_type, - or #BT_CTF_TYPE_ID_UNKNOWN on error. + or #BT_CTF_FIELD_TYPE_ID_UNKNOWN on error. @prenotnull{field_type} @postrefcountsame{field_type} -@sa #bt_ctf_type_id: CTF IR field type ID. +@sa #bt_ctf_field_type_id: CTF IR field type ID. @sa bt_ctf_field_type_is_integer(): Returns whether or not a given field type is a @intft. @sa bt_ctf_field_type_is_floating_point(): Returns whether or not a @@ -338,7 +339,7 @@ enum bt_ctf_type_id { @sa bt_ctf_field_type_is_variant(): Returns whether or not a given field type is a @varft. */ -extern enum bt_ctf_type_id bt_ctf_field_type_get_type_id( +extern enum bt_ctf_field_type_id bt_ctf_field_type_get_type_id( struct bt_ctf_field_type *field_type); /** @@ -702,13 +703,13 @@ An integer field type has the following properties: integer fields Specified at creation bt_ctf_field_type_integer_get_size() - None: specified at creation (bt_ctf_field_type_integer_create()) + bt_ctf_field_type_integer_set_size() Signedness of the described integer fields Unsigned - bt_ctf_field_type_integer_get_signed() - bt_ctf_field_type_integer_set_signed() + bt_ctf_field_type_integer_is_signed() + bt_ctf_field_type_integer_set_is_signed() Preferred display base of the described @@ -764,6 +765,10 @@ enum bt_ctf_integer_base { @brief Creates a default @intft with \p size bits as the storage size of the @intfields it describes. +You can change the storage size of the integer fields described by +the created integer field type later with +bt_ctf_field_type_integer_set_size(). + @param[in] size Storage size (bits) of the described integer fields. @returns Created integer field type, or \c NULL on error. @@ -787,10 +792,36 @@ extern struct bt_ctf_field_type *bt_ctf_field_type_integer_create( @prenotnull{int_field_type} @preisintft{int_field_type} @postrefcountsame{int_field_type} + +@sa bt_ctf_field_type_integer_set_size(): Sets the storage size of the + integer fields described by a given integer field type. */ extern int bt_ctf_field_type_integer_get_size( struct bt_ctf_field_type *int_field_type); +/** +@brief Sets the storage size, in bits, of the @intfields described by + the @intft \p int_field_type. + +@param[in] int_field_type Integer field type which describes the + integer fields of which to set the + storage size. +@param[in] size Storage size (bits) of the integer fields + described by \p int_field_type. +@returns 0 on success, or a negative value on error. + +@prenotnull{int_field_type} +@preisintft{int_field_type} +@prehot{int_field_type} +@pre \p size is greater than 0 and lesser than or equal to 64. +@postrefcountsame{int_field_type} + +@sa bt_ctf_field_type_integer_get_size(): Returns the storage size of + the integer fields described by a given integer field type. +*/ +extern int bt_ctf_field_type_integer_set_size( + struct bt_ctf_field_type *int_field_type, size_t size); + /** @brief Returns whether or not the @intfields described by the @intft \p int_field_type are signed. @@ -807,12 +838,15 @@ extern int bt_ctf_field_type_integer_get_size( @preisintft{int_field_type} @postrefcountsame{int_field_type} -@sa bt_ctf_field_type_integer_set_signed(): Sets the signedness of the +@sa bt_ctf_field_type_integer_set_is_signed(): Sets the signedness of the integer fields described by a given integer field type. */ -extern int bt_ctf_field_type_integer_get_signed( +extern int bt_ctf_field_type_integer_is_signed( struct bt_ctf_field_type *int_field_type); +/* Pre-2.0 CTF writer compatibility */ +#define bt_ctf_field_type_integer_get_signed bt_ctf_field_type_integer_is_signed + /** @brief Sets whether or not the @intfields described by the @intft \p int_field_type are signed. @@ -829,14 +863,17 @@ extern int bt_ctf_field_type_integer_get_signed( @preisintft{int_field_type} @prehot{int_field_type} @pre \p is_signed is 0 or 1. -@postrefcountsame{event_class} +@postrefcountsame{int_field_type} -@sa bt_ctf_field_type_integer_get_signed(): Returns the signedness of +@sa bt_ctf_field_type_integer_is_signed(): Returns the signedness of the integer fields described by a given integer field type. */ -extern int bt_ctf_field_type_integer_set_signed( +extern int bt_ctf_field_type_integer_set_is_signed( struct bt_ctf_field_type *int_field_type, int is_signed); +/* Pre-2.0 CTF writer compatibility */ +#define bt_ctf_field_type_integer_set_signed bt_ctf_field_type_integer_set_is_signed + /** @brief Returns the preferred display base (radix) of the @intfields described by the @intft \p int_field_type. @@ -1177,36 +1214,6 @@ extern int bt_ctf_field_type_floating_point_set_mantissa_digits( /** @} */ -struct bt_ctf_field_type_enumeration_mapping_iterator * - bt_ctf_field_type_enumeration_find_mappings_by_name( - struct bt_ctf_field_type *type, - const char *name); - -struct bt_ctf_field_type_enumeration_mapping_iterator * - bt_ctf_field_type_enumeration_find_mappings_by_signed_value( - struct bt_ctf_field_type *type, - int64_t value); - -struct bt_ctf_field_type_enumeration_mapping_iterator * - bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value( - struct bt_ctf_field_type *type, - uint64_t value); - -int bt_ctf_field_type_enumeration_mapping_iterator_get_name( - struct bt_ctf_field_type_enumeration_mapping_iterator *iter, - const char **mapping_name); - -int bt_ctf_field_type_enumeration_mapping_iterator_get_signed( - struct bt_ctf_field_type_enumeration_mapping_iterator *iter, - const char **mapping_name, int64_t *lower, int64_t *upper); - -int bt_ctf_field_type_enumeration_mapping_iterator_get_unsigned( - struct bt_ctf_field_type_enumeration_mapping_iterator *iter, - const char **mapping_name, uint64_t *lower, uint64_t *upper); - -int bt_ctf_field_type_enumeration_mapping_iterator_next( - struct bt_ctf_field_type_enumeration_mapping_iterator *iter); - /** @defgroup ctfirenumfieldtype CTF IR enumeration field type @ingroup ctfirfieldtypes @@ -1236,6 +1243,20 @@ bt_ctf_field_type_enumeration_add_mapping() or bt_ctf_field_type_enumeration_add_mapping_unsigned(), depending on the signedness of the wrapped @intft. +You can find mappings by name or by value with the following find +operations: + +- bt_ctf_field_type_enumeration_find_mappings_by_name(): Finds the + mappings with a given name. +- bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value(): + Finds the mappings which contain a given unsigned value in their + range. +- bt_ctf_field_type_enumeration_find_mappings_by_signed_value(): + Finds the mappings which contain a given signed value in their range. + +Those functions return a @enumftiter on the result set of the find +operation. + Many mappings can share the same name, and the ranges of a given enumeration field type are allowed to overlap. For example, this is a valid set of mappings: @@ -1259,6 +1280,7 @@ APPLE -> [ 30, 55] Here, the range of the second \c APPLE mapping overlaps the range of the \c CHERRY mapping. +@sa ctfirenumftmappingiter @sa ctfirenumfield @sa ctfirfieldtypes @@ -1314,7 +1336,7 @@ struct bt_ctf_field_type *bt_ctf_field_type_enumeration_get_container_type( @preisenumft{enum_field_type} @postrefcountsame{enum_field_type} */ -extern int bt_ctf_field_type_enumeration_get_mapping_count( +extern int64_t bt_ctf_field_type_enumeration_get_mapping_count( struct bt_ctf_field_type *enum_field_type); /** @@ -1329,7 +1351,7 @@ On success, \p enum_field_type remains the sole owner of \p *name. @param[in] enum_field_type Enumeration field type of which to get the mapping at index \p index. -­@param[in] index Index of the mapping to get from +@param[in] index Index of the mapping to get from \p enum_field_type. @param[out] name Returned name of the mapping at index \p index. @@ -1351,12 +1373,12 @@ On success, \p enum_field_type remains the sole owner of \p *name. bt_ctf_field_type_enumeration_get_mapping_count()). @postrefcountsame{enum_field_type} -@sa bt_ctf_field_type_enumeration_get_mapping_signed(): Returns the - signed mapping contained by a given enumeration field type +@sa bt_ctf_field_type_enumeration_get_mapping_unsigned(): Returns the + unsigned mapping contained by a given enumeration field type at a given index. */ extern int bt_ctf_field_type_enumeration_get_mapping_signed( - struct bt_ctf_field_type *enum_field_type, int index, + struct bt_ctf_field_type *enum_field_type, uint64_t index, const char **name, int64_t *range_begin, int64_t *range_end); /** @@ -1371,7 +1393,7 @@ On success, \p enum_field_type remains the sole owner of \p *name. @param[in] enum_field_type Enumeration field type of which to get the mapping at index \p index. -­@param[in] index Index of the mapping to get from +@param[in] index Index of the mapping to get from \p enum_field_type. @param[out] name Returned name of the mapping at index \p index. @@ -1393,15 +1415,122 @@ On success, \p enum_field_type remains the sole owner of \p *name. bt_ctf_field_type_enumeration_get_mapping_count()). @postrefcountsame{enum_field_type} -@sa bt_ctf_field_type_enumeration_get_mapping_unsigned(): Returns the - unsigned mapping contained by a given enumeration field type +@sa bt_ctf_field_type_enumeration_get_mapping_signed(): Returns the + signed mapping contained by a given enumeration field type at a given index. */ extern int bt_ctf_field_type_enumeration_get_mapping_unsigned( - struct bt_ctf_field_type *enum_field_type, int index, + struct bt_ctf_field_type *enum_field_type, uint64_t index, const char **name, uint64_t *range_begin, uint64_t *range_end); +/** +@brief Finds the mappings of the @enumft \p enum_field_type which + are named \p name. + +This function returns an iterator on the result set of this find +operation. See \ref ctfirenumftmappingiter for more details. + +@param[in] enum_field_type Enumeration field type of which to find + the mappings named \p name. +@param[in] name Name of the mappings to find in + \p enum_field_type. +@returns @enumftiter on the set of mappings named + \p name in \p enum_field_type, or + \c NULL if no mappings were found or + on error. + +@prenotnull{enum_field_type} +@prenotnull{name} +@preisenumft{enum_field_type} +@postrefcountsame{enum_field_type} +@postsuccessrefcountret1 +@post On success, the returned @enumftiter can iterate + on at least one mapping. + +@sa bt_ctf_field_type_enumeration_find_mappings_by_signed_value(): Finds + the mappings of a given enumeration field type which contain + a given signed value in their range. +@sa bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value(): Finds + the mappings of a given enumeration field type which contain + a given unsigned value in their range. +*/ +extern struct bt_ctf_field_type_enumeration_mapping_iterator * +bt_ctf_field_type_enumeration_find_mappings_by_name( + struct bt_ctf_field_type *enum_field_type, + const char *name); + +/** +@brief Finds the mappings of the @enumft \p enum_field_type which + contain the signed value \p value in their range. + +This function returns an iterator on the result set of this find +operation. See \ref ctfirenumftmappingiter for more details. + +@param[in] enum_field_type Enumeration field type of which to find + the mappings which contain \p value. +@param[in] value Value to find in the ranges of the + mappings of \p enum_field_type. +@returns @enumftiter on the set of mappings of + \p enum_field_type which contain + \p value in their range, or \c NULL if + no mappings were found or on error. + +@prenotnull{enum_field_type} +@preisenumft{enum_field_type} +@postrefcountsame{enum_field_type} +@postsuccessrefcountret1 +@post On success, the returned @enumftiter can iterate + on at least one mapping. + +@sa bt_ctf_field_type_enumeration_find_mappings_by_name(): Finds the + mappings of a given enumeration field type which have a given + name. +@sa bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value(): Finds + the mappings of a given enumeration field type which contain + a given unsigned value in their range. +*/ +extern struct bt_ctf_field_type_enumeration_mapping_iterator * +bt_ctf_field_type_enumeration_find_mappings_by_signed_value( + struct bt_ctf_field_type *enum_field_type, + int64_t value); + +/** +@brief Finds the mappings of the @enumft \p enum_field_type which + contain the unsigned value \p value in their range. + +This function returns an iterator on the result set of this find +operation. See \ref ctfirenumftmappingiter for more details. + +@param[in] enum_field_type Enumeration field type of which to find + the mappings which contain \p value. +@param[in] value Value to find in the ranges of the + mappings of \p enum_field_type. +@returns @enumftiter on the set of mappings of + \p enum_field_type which contain + \p value in their range, or \c NULL + if no mappings were found or + on error. + +@prenotnull{enum_field_type} +@preisenumft{enum_field_type} +@postrefcountsame{enum_field_type} +@postsuccessrefcountret1 +@post On success, the returned @enumftiter can iterate + on at least one mapping. + +@sa bt_ctf_field_type_enumeration_find_mappings_by_name(): Finds the + mappings of a given enumeration field type which have a given + name. +@sa bt_ctf_field_type_enumeration_find_mappings_by_signed_value(): Finds + the mappings of a given enumeration field type which contain + a given unsigned value in their range. +*/ +extern struct bt_ctf_field_type_enumeration_mapping_iterator * +bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value( + struct bt_ctf_field_type *enum_field_type, + uint64_t value); + /** @brief Adds a mapping to the @enumft \p enum_field_type which maps the name \p name to the signed range \p range_begin (included) to @@ -1428,6 +1557,7 @@ A mapping in \p enum_field_type can exist with the name \p name. @prenotnull{enum_field_type} @prenotnull{name} +@prehot{enum_field_type} @preisenumft{enum_field_type} @pre The wrapped @intft of \p enum_field_type is signed. @pre \p range_end is greater than or equal to \p range_begin. @@ -1466,6 +1596,7 @@ A mapping in \p enum_field_type can exist with the name \p name. @prenotnull{enum_field_type} @prenotnull{name} +@prehot{enum_field_type} @preisenumft{enum_field_type} @pre The wrapped @intft of \p enum_field_type is unsigned. @pre \p range_end is greater than or equal to \p range_begin. @@ -1480,6 +1611,167 @@ extern int bt_ctf_field_type_enumeration_add_mapping_unsigned( /** @} */ +/** +@defgroup ctfirenumftmappingiter CTF IR enumeration field type mapping iterator +@ingroup ctfirenumfieldtype +@brief CTF IR enumeration field type mapping iterator. + +@code +#include +@endcode + +A CTF IR enumeration field type mapping +iterator is an iterator on @enumft mappings. + +You can get an enumeration mapping iterator from one of the following +functions: + +- Find operations of an @enumft object: + - bt_ctf_field_type_enumeration_find_mappings_by_name(): Finds the + mappings with a given name. + - bt_ctf_field_type_enumeration_find_mappings_by_unsigned_value(): + Finds the mappings which contain a given unsigned value in their + range. + - bt_ctf_field_type_enumeration_find_mappings_by_signed_value(): + Finds the mappings which contain a given signed value in their range. +- bt_ctf_field_enumeration_get_mappings(): Finds the mappings in the + @enumft of an @enumfield containing its current integral value in + their range. + +Those functions guarantee that the returned iterator can iterate on +at least one mapping. Otherwise, they return \c NULL. + +You can get the name and the range of a mapping iterator's current +mapping with +bt_ctf_field_type_enumeration_mapping_iterator_get_signed() +or +bt_ctf_field_type_enumeration_mapping_iterator_get_unsigned(), +depending on the signedness of the @intft wrapped by the +@enumft. If you only need the name of the current mapping, you can +use any of the two functions and set the \p range_begin and \p range_end +parameters to \c NULL. + +You can advance an enumeration field type mapping iterator to the next +mapping with +bt_ctf_field_type_enumeration_mapping_iterator_next(). This +function returns a negative value when you reach the end of the +result set. + +As with any Babeltrace object, CTF IR enumeration field type mapping +iterator objects have reference +counts. See \ref refs to learn more about the reference counting +management of Babeltrace objects. + +@sa ctfirenumfieldtype + +@addtogroup ctfirenumftmappingiter +@{ +*/ + +/** +@struct bt_ctf_field_type_enumeration_mapping_iterator +@brief A CTF IR enumeration field type mapping iterator. +@sa ctfirenumftmappingiter +*/ + +/** +@brief Returns the name and the range of the current (signed) mapping + of the @enumftiter \p iter. + +If one of \p range_begin or \p range_end is not \c NULL, the @intft +wrapped by the @enumft from which \p iter was obtained, as returned by +bt_ctf_field_type_enumeration_get_container_type(), must be +\b signed to use this function. Otherwise, if you only need to get the +name of the current mapping, set \p range_begin and \p range_end to +\c NULL. + +On success, if \p name is not \c NULL, \p *name remains valid as long +as \p iter exists and +bt_ctf_field_type_enumeration_mapping_iterator_next() is +\em not called on \p iter. + +@param[in] iter Enumeration field type mapping iterator + of which to get the range of the current + mapping. +@param[out] name Returned name of the current mapping of + \p iter (can be \c NULL to ignore). +@param[out] range_begin Returned beginning of the range + (included) of the current mapping of + \p iter (can be \c NULL to ignore). +@param[out] range_end Returned end of the range + (included) of the current mapping of + \p iter (can be \c NULL to ignore). +@returns 0 on success, or a negative value on error. + +@prenotnull{iter} +@postrefcountsame{iter} + +@sa bt_ctf_field_type_enumeration_mapping_iterator_get_unsigned(): + Returns the name and the unsigned range of the current mapping + of a given enumeration field type mapping iterator. +*/ +extern int bt_ctf_field_type_enumeration_mapping_iterator_get_signed( + struct bt_ctf_field_type_enumeration_mapping_iterator *iter, + const char **name, int64_t *range_begin, int64_t *range_end); + +/** +@brief Returns the name and the range of the current (unsigned) mapping + of the @enumftiter \p iter. + +If one of \p range_begin or \p range_end is not \c NULL, the @intft +wrapped by the @enumft from which \p iter was obtained, as returned by +bt_ctf_field_type_enumeration_get_container_type(), must be +\b unsigned to use this function. Otherwise, if you only need to get the +name of the current mapping, set \p range_begin and \p range_end to +\c NULL. + +On success, if \p name is not \c NULL, \p *name remains valid as long +as \p iter exists and +bt_ctf_field_type_enumeration_mapping_iterator_next() is +\em not called on \p iter. + +@param[in] iter Enumeration field type mapping iterator + of which to get the range of the current + mapping. +@param[out] name Returned name of the current mapping of + \p iter (can be \c NULL to ignore). +@param[out] range_begin Returned beginning of the range + (included) of the current mapping of + \p iter (can be \c NULL to ignore). +@param[out] range_end Returned end of the range + (included) of the current mapping of + \p iter (can be \c NULL to ignore). +@returns 0 on success, or a negative value on error. + +@prenotnull{iter} +@postrefcountsame{iter} + +@sa + bt_ctf_field_type_enumeration_mapping_iterator_get_signed(): + Returns the name and the signed range of the current mapping of + a given enumeration field type mapping iterator. +*/ +extern int bt_ctf_field_type_enumeration_mapping_iterator_get_unsigned( + struct bt_ctf_field_type_enumeration_mapping_iterator *iter, + const char **name, uint64_t *range_begin, uint64_t *range_end); + +/** +@brief Advances the @enumftiter \p iter to the next mapping. + +@param[in] iter Enumeration field type mapping iterator to + advance. +@returns 0 on success, or a negative value on error or + when you reach the end of the set. + +@prenotnull{iter} +@postrefcountsame{iter} +*/ +extern int bt_ctf_field_type_enumeration_mapping_iterator_next( + struct bt_ctf_field_type_enumeration_mapping_iterator *iter); + +/** @} */ + /** @defgroup ctfirstringfieldtype CTF IR string field type @ingroup ctfirfieldtypes @@ -1629,7 +1921,7 @@ extern struct bt_ctf_field_type *bt_ctf_field_type_structure_create(void); @preisstructft{struct_field_type} @postrefcountsame{struct_field_type} */ -extern int bt_ctf_field_type_structure_get_field_count( +extern int64_t bt_ctf_field_type_structure_get_field_count( struct bt_ctf_field_type *struct_field_type); /** @@ -1663,10 +1955,13 @@ On success, the field's type is placed in \p *field_type if @sa bt_ctf_field_type_structure_get_field_type_by_name(): Finds a structure field type's field by name. */ -extern int bt_ctf_field_type_structure_get_field( +extern int bt_ctf_field_type_structure_get_field_by_index( struct bt_ctf_field_type *struct_field_type, const char **field_name, struct bt_ctf_field_type **field_type, - int index); + uint64_t index); + +/* Pre-2.0 CTF writer compatibility */ +#define bt_ctf_field_type_structure_get_field bt_ctf_field_type_structure_get_field_by_index /** @brief Returns the type of the field named \p field_name found in @@ -1685,7 +1980,7 @@ extern int bt_ctf_field_type_structure_get_field( @postrefcountsame{struct_field_type} @postsuccessrefcountretinc -@sa bt_ctf_field_type_structure_get_field(): Finds a +@sa bt_ctf_field_type_structure_get_field_by_index(): Finds a structure field type's field by index. */ extern @@ -2108,7 +2403,7 @@ extern struct bt_ctf_field_path *bt_ctf_field_type_variant_get_tag_field_path( @preisvarft{variant_field_type} @postrefcountsame{variant_field_type} */ -extern int bt_ctf_field_type_variant_get_field_count( +extern int64_t bt_ctf_field_type_variant_get_field_count( struct bt_ctf_field_type *variant_field_type); /** @@ -2144,10 +2439,13 @@ On success, the field's type is placed in \p *field_type if @sa bt_ctf_field_type_variant_get_field_type_from_tag(): Finds a variant field type's field by current tag value. */ -extern int bt_ctf_field_type_variant_get_field( +extern int bt_ctf_field_type_variant_get_field_by_index( struct bt_ctf_field_type *variant_field_type, const char **field_name, - struct bt_ctf_field_type **field_type, int index); + struct bt_ctf_field_type **field_type, uint64_t index); + +/* Pre-2.0 CTF writer compatibility */ +#define bt_ctf_field_type_variant_get_field bt_ctf_field_type_variant_get_field_by_index /** @brief Returns the type of the field (choice) named \p field_name @@ -2166,7 +2464,7 @@ extern int bt_ctf_field_type_variant_get_field( @postrefcountsame{variant_field_type} @postsuccessrefcountretinc -@sa bt_ctf_field_type_variant_get_field(): Finds a variant field type's +@sa bt_ctf_field_type_variant_get_field_by_index(): Finds a variant field type's field by index. @sa bt_ctf_field_type_variant_get_field_type_from_tag(): Finds a variant field type's field by current tag value. @@ -2202,7 +2500,7 @@ bt_ctf_field_type_variant_get_tag_type() for \p variant_field_type. @postrefcountsame{tag_field} @postsuccessrefcountretinc -@sa bt_ctf_field_type_variant_get_field(): Finds a variant field type's +@sa bt_ctf_field_type_variant_get_field_by_index(): Finds a variant field type's field by index. @sa bt_ctf_field_type_variant_get_field_type_by_name(): Finds a variant field type's field by name.