+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_integer(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @floatfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is a floating point number field,
+ or 0 otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_floating_point(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @enumfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is an enumeration field, or 0
+ otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_enumeration(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @stringfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is a string field, or 0
+ otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_string(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @structfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is a structure field, or 0
+ otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_structure(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @arrayfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is an array field, or 0
+ otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_array(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @seqfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is a sequence field, or 0
+ otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_sequence(struct bt_ctf_field *field);
+
+/**
+@brief Returns whether or not the @field \p field is a @varfield.
+
+@param[in] field Field to check (can be \c NULL).
+@returns 1 if \p field is a variant field, or 0
+ otherwise (including if \p field is
+ \c NULL).
+
+@prenotnull{field}
+@postrefcountsame{field}
+
+@sa bt_ctf_field_get_type_id(): Returns the type ID of a given
+ field's type.
+*/
+extern int bt_ctf_field_is_variant(struct bt_ctf_field *field);
+
+/** @} */
+
+/**
+@name Misc. functions
+@{
+*/
+
+/**
+@brief Creates a \em deep copy of the @field \p field.
+
+You can copy a frozen field: the resulting copy is <em>not frozen</em>.
+
+@param[in] field Field to copy.
+@returns Deep copy of \p field on success,
+ or \c NULL on error.
+
+@prenotnull{field}
+@postrefcountsame{field}
+@postsuccessrefcountret1
+@post <strong>On success</strong>, the returned field is not frozen.
+*/
+extern struct bt_ctf_field *bt_ctf_field_copy(struct bt_ctf_field *field);
+
+/** @} */
+
+/** @} */
+
+/**
+@defgroup ctfirintfield CTF IR integer field
+@ingroup ctfirfields
+@brief CTF IR integer field.
+
+@code
+#include <babeltrace/ctf-ir/fields.h>
+@endcode
+
+A CTF IR <strong><em>integer field</em></strong> is a @field which
+holds a signed or unsigned integral value, and which is described by
+a @intft.
+
+An integer field object is considered \em unsigned if
+bt_ctf_field_type_integer_get_signed() on its parent field type returns
+0. Otherwise it is considered \em signed. You \em must use
+bt_ctf_field_unsigned_integer_get_value() and
+bt_ctf_field_unsigned_integer_set_value() with an unsigned integer
+field, and bt_ctf_field_signed_integer_get_value() and
+bt_ctf_field_signed_integer_set_value() with a signed integer field.
+
+After you create an integer field with bt_ctf_field_create(), you
+\em must set an integral value with
+bt_ctf_field_unsigned_integer_set_value() or
+bt_ctf_field_signed_integer_set_value() before you can get the
+field's value with bt_ctf_field_unsigned_integer_get_value() or
+bt_ctf_field_signed_integer_get_value().
+
+@sa ctfirintfieldtype
+@sa ctfirfields
+
+@addtogroup ctfirintfield
+@{
+*/
+
+/**
+@brief Returns the signed integral value of the @intfield
+ \p integer_field.
+
+@param[in] integer_field Integer field of which to get the
+ signed integral value.
+@param[out] value Returned signed integral value of
+ \p integer_field.
+@returns 0 on success, or a negative value on
+ error, including if \p integer_field
+ has no integral value yet.
+
+@prenotnull{integer_field}
+@prenotnull{value}
+@preisintfield{integer_field}
+@pre bt_ctf_field_type_integer_get_signed() returns 1 for the parent
+ @ft of \p integer_field.
+@pre \p integer_field contains a signed integral value previously
+ set with bt_ctf_field_signed_integer_set_value().
+@postrefcountsame{integer_field}
+
+@sa bt_ctf_field_signed_integer_set_value(): Sets the signed integral
+ value of a given integer field.
+*/
+extern int bt_ctf_field_signed_integer_get_value(
+ struct bt_ctf_field *integer_field, int64_t *value);
+
+/**
+@brief Sets the signed integral value of the @intfield
+ \p integer_field to \p value.
+
+@param[in] integer_field Integer field of which to set
+ the signed integral value.
+@param[in] value New signed integral value of
+ \p integer_field.
+@returns 0 on success, or a negative value on error.
+
+@prenotnull{integer_field}
+@preisintfield{integer_field}
+@prehot{integer_field}
+@pre bt_ctf_field_type_integer_get_signed() returns 1 for the parent
+ @ft of \p integer_field.
+@postrefcountsame{integer_field}
+
+@sa bt_ctf_field_signed_integer_get_value(): Returns the signed integral
+ value of a given integer field.
+*/
+extern int bt_ctf_field_signed_integer_set_value(
+ struct bt_ctf_field *integer_field, int64_t value);
+
+/**
+@brief Returns the unsigned integral value of the @intfield
+ \p integer_field.
+
+@param[in] integer_field Integer field of which to get the
+ unsigned integral value.
+@param[out] value Returned unsigned integral value of
+ \p integer_field.
+@returns 0 on success, or a negative value on
+ error, including if \p integer_field
+ has no integral value yet.
+
+@prenotnull{integer_field}
+@prenotnull{value}
+@preisintfield{integer_field}
+@pre bt_ctf_field_type_integer_get_signed() returns 0 for the parent
+ @ft of \p integer_field.
+@pre \p integer_field contains an unsigned integral value previously
+ set with bt_ctf_field_unsigned_integer_set_value().
+@postrefcountsame{integer_field}
+
+@sa bt_ctf_field_unsigned_integer_set_value(): Sets the unsigned
+ integral value of a given integer field.
+*/
+extern int bt_ctf_field_unsigned_integer_get_value(
+ struct bt_ctf_field *integer_field, uint64_t *value);
+
+/**
+@brief Sets the unsigned integral value of the @intfield
+ \p integer_field to \p value.
+
+@param[in] integer_field Integer field of which to set
+ the unsigned integral value.
+@param[in] value New unsigned integral value of
+ \p integer_field.
+@returns 0 on success, or a negative value on error.
+
+@prenotnull{integer_field}
+@preisintfield{integer_field}
+@prehot{integer_field}
+@pre bt_ctf_field_type_integer_get_signed() returns 0 for the parent
+ @ft of \p integer_field.
+@postrefcountsame{integer_field}
+
+@sa bt_ctf_field_unsigned_integer_get_value(): Returns the unsigned
+ integral value of a given integer field.
+*/
+extern int bt_ctf_field_unsigned_integer_set_value(
+ struct bt_ctf_field *integer_field, uint64_t value);
+
+/** @} */
+
+/**
+@defgroup ctfirfloatfield CTF IR floating point number field
+@ingroup ctfirfields
+@brief CTF IR floating point number field.
+
+@code
+#include <babeltrace/ctf-ir/fields.h>
+@endcode
+
+A CTF IR <strong><em>floating point number field</em></strong> is a
+@field which holds a floating point number value, and which is
+described by a @floatft.
+
+After you create a floating point number field with bt_ctf_field_create(), you
+\em must set a floating point number value with
+bt_ctf_field_floating_point_set_value() before you can get the
+field's value with bt_ctf_field_floating_point_get_value().
+
+@sa ctfirfloatfieldtype
+@sa ctfirfields
+
+@addtogroup ctfirfloatfield
+@{
+*/
+
+/**
+@brief Returns the floating point number value of the @floatfield
+ \p float_field.
+
+@param[in] float_field Floating point number field of which to get the
+ floating point number value.
+@param[out] value Returned floating point number value of
+ \p float_field.
+@returns 0 on success, or a negative value on error,
+ including if \p float_field has no floating
+ point number value yet.
+
+@prenotnull{float_field}
+@prenotnull{value}
+@preisfloatfield{float_field}
+@pre \p float_field contains a floating point number value previously
+ set with bt_ctf_field_floating_point_set_value().
+@postrefcountsame{float_field}
+
+@sa bt_ctf_field_floating_point_set_value(): Sets the floating point
+ number value of a given floating point number field.
+*/