+/**
+@defgroup ctfirenumftmappingiter CTF IR enumeration field type mapping iterator
+@ingroup ctfirenumfieldtype
+@brief CTF IR enumeration field type mapping iterator.
+
+@code
+#include <babeltrace/ctf-ir/field-types.h>
+@endcode
+
+A CTF IR <strong><em>enumeration field type mapping
+iterator</em></strong> 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_field_type_enumeration_find_mappings_by_name(): Finds the
+ mappings with a given name.
+ - bt_field_type_enumeration_unsigned_find_mappings_by_value():
+ Finds the mappings which contain a given unsigned value in their
+ range.
+ - bt_field_type_enumeration_signed_find_mappings_by_value():
+ Finds the mappings which contain a given signed value in their range.
+- bt_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_field_type_enumeration_mapping_iterator_signed_get()
+or
+bt_field_type_enumeration_mapping_iterator_unsigned_get(),
+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_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 <a
+href="https://en.wikipedia.org/wiki/Reference_counting">reference
+counts</a>. See \ref refs to learn more about the reference counting
+management of Babeltrace objects.
+
+@sa ctfirenumfieldtype
+
+@addtogroup ctfirenumftmappingiter
+@{
+*/
+
+/**
+@struct bt_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_field_type_enumeration_get_container_field_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_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_field_type_enumeration_mapping_iterator_unsigned_get():
+ Returns the name and the unsigned range of the current mapping
+ of a given enumeration field type mapping iterator.
+*/
+extern int bt_field_type_enumeration_mapping_iterator_signed_get(
+ struct bt_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_field_type_enumeration_get_container_field_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_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_field_type_enumeration_mapping_iterator_signed_get():
+ Returns the name and the signed range of the current mapping of
+ a given enumeration field type mapping iterator.
+*/
+extern int bt_field_type_enumeration_mapping_iterator_unsigned_get(
+ struct bt_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_field_type_enumeration_mapping_iterator_next(
+ struct bt_field_type_enumeration_mapping_iterator *iter);
+
+/** @} */
+