+/**
+@brief Returns the mantissa and sign storage size of the @floatfields
+ described by the @floatft \p float_field_type.
+
+On success, the returned value is the sum of the mantissa \em and
+sign storage sizes.
+
+@param[in] float_field_type Floating point number field type which
+ describes the floating point number
+ fields of which to get the mantissa and
+ sign storage size.
+@returns Mantissa and sign storage size of the
+ floating point number fields
+ described by \p float_field_type,
+ or a negative value on error.
+
+@prenotnull{float_field_type}
+@preisfloatft{float_field_type}
+@postrefcountsame{float_field_type}
+
+@sa bt_ctf_field_type_floating_point_set_mantissa_digits(): Sets the
+ mantissa and size storage size of the floating point number
+ fields described by a given floating point number field type.
+*/
+extern int bt_ctf_field_type_floating_point_get_mantissa_digits(
+ struct bt_ctf_field_type *float_field_type);
+
+/**
+@brief Sets the mantissa and sign storage size of the @floatfields
+ described by the @floatft \p float_field_type to \p
+ mantissa_sign_size.
+
+As of Babeltrace \btversion, \p mantissa_sign_size can only be 24 or 53.
+
+@param[in] float_field_type Floating point number field type which
+ describes the floating point number
+ fields of which to set the mantissa and
+ sign storage size.
+@param[in] mantissa_sign_size Mantissa and sign storage size of the
+ floating point number fields described
+ by \p float_field_type.
+@returns 0 on success, or a negative value on error.
+
+@prenotnull{float_field_type}
+@preisfloatft{float_field_type}
+@prehot{float_field_type}
+@pre \p mantissa_sign_size is 24 or 53.
+@postrefcountsame{float_field_type}
+
+@sa bt_ctf_field_type_floating_point_get_mantissa_digits(): Returns the
+ mantissa and sign storage size of the floating point number
+ fields described by a given floating point number field type.
+*/
+extern int bt_ctf_field_type_floating_point_set_mantissa_digits(
+ struct bt_ctf_field_type *float_field_type,
+ unsigned int mantissa_sign_size);
+
+/** @} */
+
+/**
+@defgroup ctfirenumfieldtype CTF IR enumeration field type
+@ingroup ctfirfieldtypes
+@brief CTF IR enumeration field type.
+
+@code
+#include <babeltrace/ctf-ir/field-types.h>
+@endcode
+
+A CTF IR <strong><em>enumeration field type</em></strong> is
+a field type that you can use to create concrete @enumfields.
+
+You can create an enumeration field type with
+bt_ctf_field_type_enumeration_create(). This function needs a @intft
+which represents the storage field type of the created enumeration field
+type. In other words, an enumeration field type wraps an integer field
+type and adds label-value mappings to it.
+
+An enumeration mapping has:
+
+- A <strong>name</strong>.
+- A <strong>range of values</strong> given by a beginning and an ending
+ value, both included in the range.
+
+You can add a mapping to an enumeration field type with
+bt_ctf_field_type_enumeration_add_mapping_signed() 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:
+
+@verbatim
+APPLE -> [ 3, 19]
+BANANA -> [-15, 1]
+CHERRY -> [ 25, 34]
+APPLE -> [ 55, 55]
+@endverbatim
+
+The following set of mappings is also valid:
+
+@verbatim
+APPLE -> [ 3, 19]
+BANANA -> [-15, 1]
+CHERRY -> [ 25, 34]
+APPLE -> [ 30, 55]
+@endverbatim
+
+Here, the range of the second \c APPLE mapping overlaps the range of
+the \c CHERRY mapping.
+
+@sa ctfirenumftmappingiter
+@sa ctfirenumfield
+@sa ctfirfieldtypes
+
+@addtogroup ctfirenumfieldtype
+@{
+*/
+
+/**
+@brief Creates a default @enumft wrapping the @intft \p int_field_type.
+
+@param[in] int_field_type Integer field type wrapped by the
+ created enumeration field type.
+@returns Created enumeration field type,
+ or \c NULL on error.
+
+@prenotnull{int_field_type}
+@preisintft{int_field_type}
+@postsuccessrefcountinc{int_field_type}
+@postsuccessrefcountret1
+*/
+extern struct bt_ctf_field_type *bt_ctf_field_type_enumeration_create(
+ struct bt_ctf_field_type *int_field_type);
+
+/**
+@brief Returns the @intft wrapped by the @enumft \p enum_field_type.
+
+@param[in] enum_field_type Enumeration field type of which to get
+ the wrapped integer field type.
+@returns Integer field type wrapped by
+ \p enum_field_type, or \c NULL on
+ error.
+
+@prenotnull{enum_field_type}
+@preisenumft{enum_field_type}
+@postrefcountsame{enum_field_type}
+@postsuccessrefcountretinc
+*/
+extern
+struct bt_ctf_field_type *bt_ctf_field_type_enumeration_get_container_type(
+ struct bt_ctf_field_type *enum_field_type);
+
+/**
+@brief Returns the number of mappings contained in the
+ @enumft \p enum_field_type.
+
+@param[in] enum_field_type Enumeration field type of which to get
+ the number of contained mappings.
+@returns Number of mappings contained in
+ \p enum_field_type, or a negative
+ value on error.
+
+@prenotnull{enum_field_type}
+@preisenumft{enum_field_type}
+@postrefcountsame{enum_field_type}
+*/
+extern int64_t bt_ctf_field_type_enumeration_get_mapping_count(
+ struct bt_ctf_field_type *enum_field_type);
+
+/**
+@brief Returns the signed mapping of the @enumft
+ \p enum_field_type at index \p index.
+
+The @intft wrapped by \p enum_field_type, as returned by
+bt_ctf_field_type_enumeration_get_container_type(), must be \b signed
+to use this function.
+
+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
+ \p enum_field_type.
+@param[out] name Returned name of the mapping at index
+ \p index.
+@param[out] range_begin Returned beginning of the range
+ (included) of the mapping at index \p
+ index.
+@param[out] range_end Returned end of the range (included) of
+ the mapping at index \p index.
+@returns 0 on success, or a negative value on error.
+
+@prenotnull{enum_field_type}
+@prenotnull{name}
+@prenotnull{range_begin}
+@prenotnull{range_end}
+@preisenumft{enum_field_type}
+@pre The wrapped @intft of \p enum_field_type is signed.
+@pre \p index is lesser than the number of mappings contained in the
+ enumeration field type \p enum_field_type (see
+ 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
+ at a given index.
+*/
+extern int bt_ctf_field_type_enumeration_get_mapping_signed(
+ struct bt_ctf_field_type *enum_field_type, uint64_t index,
+ const char **name, int64_t *range_begin, int64_t *range_end);
+
+/**
+@brief Returns the unsigned mapping of the @enumft
+ \p enum_field_type at index \p index.
+
+The @intft wrapped by \p enum_field_type, as returned by
+bt_ctf_field_type_enumeration_get_container_type(), must be
+\b unsigned to use this function.
+
+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
+ \p enum_field_type.
+@param[out] name Returned name of the mapping at index
+ \p index.
+@param[out] range_begin Returned beginning of the range
+ (included) of the mapping at index \p
+ index.
+@param[out] range_end Returned end of the range (included) of
+ the mapping at index \p index.
+@returns 0 on success, or a negative value on error.
+
+@prenotnull{enum_field_type}
+@prenotnull{name}
+@prenotnull{range_begin}
+@prenotnull{range_end}
+@preisenumft{enum_field_type}
+@pre The wrapped @intft of \p enum_field_type is unsigned.
+@pre \p index is lesser than the number of mappings contained in the
+ enumeration field type \p enum_field_type (see
+ 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
+ at a given index.
+*/