X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf-ir%2Ffields.h;h=5bf0c3b634743f1d9354928e7d91cba1fc31f2db;hp=f975e530b32c1e66d5d23732d82263f87923457a;hb=44c440bc5fe8219cc17d1b786d91fd83c4c9860a;hpb=c800eb3790218d2f33df01e77ec38cbd43cc02a1 diff --git a/include/babeltrace/ctf-ir/fields.h b/include/babeltrace/ctf-ir/fields.h index f975e530..5bf0c3b6 100644 --- a/include/babeltrace/ctf-ir/fields.h +++ b/include/babeltrace/ctf-ir/fields.h @@ -31,898 +31,84 @@ */ #include -#include - -/* For bt_get() */ -#include /* For bt_bool */ #include -/* For BT_FIELD_TYPE_ID_* */ +/* For enum bt_field_type_id */ #include #ifdef __cplusplus extern "C" { #endif -struct bt_field_type; - -/** -@defgroup ctfirfields CTF IR fields -@ingroup ctfir -@brief CTF IR fields. - -@code -#include -@endcode - -A CTF IR field is an object which holds a -concrete value, and which is described by a @ft. - -In the CTF IR hierarchy, you can set the root fields of two objects: - -- \ref ctfirpacket - - Trace packet header field: bt_packet_set_header(). - - Stream packet context field: bt_packet_set_context(). -- \ref ctfirevent - - Stream event header field: bt_event_set_header(). - - Stream event context field: bt_event_set_stream_event_context(). - - Event context field: bt_event_set_event_context(). - - Event payload field: bt_event_set_payload_field(). - -There are two categories of fields: - -- Basic fields: - - @intfield: contains an integral value. - - @floatfield: contains a floating point number value. - - @enumfield: contains an integer field which contains an integral - value. - - @stringfield: contains a string value. -- Compound fields: - - @structfield: contains an ordered list of named fields - (possibly with different @fts). - - @arrayfield: contains an ordered list of fields which share - the same field type. - - @seqfield: contains an ordered list of fields which share - the same field type. - - @varfield: contains a single, current field. - -You can create a field object from a @ft object with -bt_field_create(). The enumeration and compound fields create their -contained fields with the following getters if such fields do not exist -yet: - -- bt_field_enumeration_get_container() -- bt_field_structure_get_field_by_name() -- bt_field_array_get_field() -- bt_field_sequence_get_field() -- bt_field_variant_get_field() - -If you already have a field object, you can also assign it to a specific -name within a @structfield with -bt_field_structure_set_field_by_name(). - -You can get a reference to the @ft which was used to create a field with -bt_field_get_type(). You can get the -\link #bt_field_type_id type ID\endlink of this field type directly with -bt_field_get_type_id(). - -You can get a deep copy of a field with bt_field_copy(). The field -copy, and its contained field copies if it's the case, have the same -field type as the originals. - -As with any Babeltrace object, CTF IR field objects have -reference -counts. See \ref refs to learn more about the reference counting -management of Babeltrace objects. - -The functions which freeze CTF IR \link ctfirpacket packet\endlink and -\link ctfirevent event\endlink objects also freeze their root field -objects. You cannot modify a frozen field object: it is considered -immutable, except for \link refs reference counting\endlink. - -@sa ctfirfieldtypes - -@file -@brief CTF IR fields type and functions. -@sa ctfirfields - -@addtogroup ctfirfields -@{ -*/ - -/** -@struct bt_field -@brief A CTF IR field. -@sa ctfirfields -*/ struct bt_field; -struct bt_event_class; -struct bt_event; struct bt_field_type; struct bt_field_type_enumeration_mapping_iterator; -/** -@name Creation and parent field type access functions -@{ -*/ - extern struct bt_field_type *bt_field_borrow_type(struct bt_field *field); -/** -@brief Returns the parent @ft of the @field \p field. - -This function returns a reference to the field type which was used to -create the field object in the first place with bt_field_create(). - -@param[in] field Field of which to get the parent field type. -@returns Parent field type of \p event, - or \c NULL on error. - -@prenotnull{field} -@postrefcountsame{field} -@postsuccessrefcountretinc -*/ -static inline -struct bt_field_type *bt_field_get_type(struct bt_field *field) -{ - return bt_get(bt_field_borrow_type(field)); -} - -/** @} */ - -/** -@name Type information -@{ -*/ - -/** -@brief Returns the type ID of the @ft of the @field \p field. - -@param[in] field Field of which to get the type ID of its - parent field type.. -@returns Type ID of the parent field type of \p field, - or #BT_FIELD_TYPE_ID_UNKNOWN on error. - -@prenotnull{field} -@postrefcountsame{field} - -@sa #bt_field_type_id: CTF IR field type ID. -@sa bt_field_is_integer(): Returns whether or not a given field is a - @intfield. -@sa bt_field_is_floating_point(): Returns whether or not a given - field is a @floatfield. -@sa bt_field_is_enumeration(): Returns whether or not a given field - is a @enumfield. -@sa bt_field_is_string(): Returns whether or not a given field is a - @stringfield. -@sa bt_field_is_structure(): Returns whether or not a given field is - a @structfield. -@sa bt_field_is_array(): Returns whether or not a given field is a - @arrayfield. -@sa bt_field_is_sequence(): Returns whether or not a given field is - a @seqfield. -@sa bt_field_is_variant(): Returns whether or not a given field is a - @varfield. -*/ extern enum bt_field_type_id bt_field_get_type_id(struct bt_field *field); -/** -@brief Returns whether or not the @field \p field is a @intfield. - -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is an integer field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). - -@prenotnull{field} -@postrefcountsame{field} - -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_integer(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_INTEGER; -} - -/** -@brief Returns whether or not the @field \p field is a @floatfield. - -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is a floating point number fiel - #BT_FALSE or 0 otherwise (including if \p field is - \c NULL). - -@prenotnull{field} -@postrefcountsame{field} - -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_floating_point(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_FLOAT; -} - -/** -@brief Returns whether or not the @field \p field is a @enumfield. - -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is an enumeration field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). - -@prenotnull{field} -@postrefcountsame{field} - -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_enumeration(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_ENUM; -} - -/** -@brief Returns whether or not the @field \p field is a @stringfield. - -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is a string field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). +extern int64_t bt_field_signed_integer_get_value(struct bt_field *field); -@prenotnull{field} -@postrefcountsame{field} +extern void bt_field_signed_integer_set_value(struct bt_field *field, + int64_t value); -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_string(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_STRING; -} - -/** -@brief Returns whether or not the @field \p field is a @structfield. +extern uint64_t bt_field_unsigned_integer_get_value(struct bt_field *field); -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is a structure field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). +extern void bt_field_unsigned_integer_set_value(struct bt_field *field, + uint64_t value); -@prenotnull{field} -@postrefcountsame{field} - -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_structure(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_STRUCT; -} +extern double bt_field_real_get_value(struct bt_field *field); -/** -@brief Returns whether or not the @field \p field is a @arrayfield. +extern void bt_field_real_set_value(struct bt_field *field, double value); -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is an array field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). - -@prenotnull{field} -@postrefcountsame{field} - -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_array(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_ARRAY; -} +extern int bt_field_unsigned_enumeration_get_mapping_labels( + struct bt_field *field, + bt_field_type_enumeration_mapping_label_array *label_array, + uint64_t *count); -/** -@brief Returns whether or not the @field \p field is a @seqfield. +extern int bt_field_signed_enumeration_get_mapping_labels( + struct bt_field *field, + bt_field_type_enumeration_mapping_label_array *label_array, + uint64_t *count); -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is a sequence field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). +extern const char *bt_field_string_get_value(struct bt_field *field); -@prenotnull{field} -@postrefcountsame{field} +extern uint64_t bt_field_string_get_length(struct bt_field *field); -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_sequence(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_SEQUENCE; -} - -/** -@brief Returns whether or not the @field \p field is a @varfield. - -@param[in] field Field to check (can be \c NULL). -@returns #BT_TRUE if \p field is a variant field, or - #BT_FALSE otherwise (including if \p field is - \c NULL). - -@prenotnull{field} -@postrefcountsame{field} - -@sa bt_field_get_type_id(): Returns the type ID of a given - field's type. -*/ -static inline -bt_bool bt_field_is_variant(struct bt_field *field) -{ - return bt_field_get_type_id(field) == BT_FIELD_TYPE_ID_VARIANT; -} +extern int bt_field_string_set_value(struct bt_field *field, const char *value); -/** @} */ - -/** -@name Misc. functions -@{ -*/ - -/** @} */ - -/** @} */ - -/** -@defgroup ctfirintfield CTF IR integer field -@ingroup ctfirfields -@brief CTF IR integer field. - -@code -#include -@endcode - -A CTF IR integer field 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_field_type_integer_get_signed() on its parent field type returns -0. Otherwise it is considered \em signed. You \em must use -bt_field_integer_unsigned_get_value() and -bt_field_integer_unsigned_set_value() with an unsigned integer -field, and bt_field_integer_signed_get_value() and -bt_field_integer_signed_set_value() with a signed integer field. - -After you create an integer field with bt_field_create(), you -\em must set an integral value with -bt_field_integer_unsigned_set_value() or -bt_field_integer_signed_set_value() before you can get the -field's value with bt_field_integer_unsigned_get_value() or -bt_field_integer_signed_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_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_field_integer_signed_set_value(). -@postrefcountsame{integer_field} - -@sa bt_field_integer_signed_set_value(): Sets the signed integral - value of a given integer field. -*/ -extern int bt_field_integer_signed_get_value( - struct bt_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_field_type_integer_get_signed() returns 1 for the parent - @ft of \p integer_field. -@postrefcountsame{integer_field} - -@sa bt_field_integer_signed_get_value(): Returns the signed integral - value of a given integer field. -*/ -extern int bt_field_integer_signed_set_value( - struct bt_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_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_field_integer_unsigned_set_value(). -@postrefcountsame{integer_field} - -@sa bt_field_integer_unsigned_set_value(): Sets the unsigned - integral value of a given integer field. -*/ -extern int bt_field_integer_unsigned_get_value( - struct bt_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_field_type_integer_get_signed() returns 0 for the parent - @ft of \p integer_field. -@postrefcountsame{integer_field} - -@sa bt_field_integer_unsigned_get_value(): Returns the unsigned - integral value of a given integer field. -*/ -extern int bt_field_integer_unsigned_set_value( - struct bt_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 -@endcode - -A CTF IR floating point number field 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_field_create(), you -\em must set a floating point number value with -bt_field_floating_point_set_value() before you can get the -field's value with bt_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_field_floating_point_set_value(). -@postrefcountsame{float_field} - -@sa bt_field_floating_point_set_value(): Sets the floating point - number value of a given floating point number field. -*/ -extern int bt_field_floating_point_get_value( - struct bt_field *float_field, double *value); - -/** -@brief Sets the floating point number value of the @floatfield - \p float_field to \p value. - -@param[in] float_field Floating point number field of which to set - the floating point number value. -@param[in] value New floating point number value of - \p float_field. -@returns 0 on success, or a negative value on error. - -@prenotnull{float_field} -@preisfloatfield{float_field} -@prehot{float_field} -@postrefcountsame{float_field} - -@sa bt_field_floating_point_get_value(): Returns the floating point - number value of a given floating point number field. -*/ -extern int bt_field_floating_point_set_value( - struct bt_field *float_field, double value); - -/** @} */ - -/** -@brief Returns a @enumftiter on all the mappings of the field type of - \p enum_field which contain the current integral value of the - @enumfield \p enum_field in their range. - -This function is the equivalent of using -bt_field_type_enumeration_find_mappings_by_unsigned_value() or -bt_field_type_enumeration_find_mappings_by_signed_value() with the -current integral value of \p enum_field. - -@param[in] enum_field Enumeration field of which to get the mappings - containing the current integral value of \p - enum_field in their range. -@returns @enumftiter on the set of mappings of the field - type of \p enum_field which contain the current - integral value of \p enum_field in their range, - or \c NULL if no mappings were found or on - error. - -@prenotnull{enum_field} -@preisenumfield{enum_field} -@pre The wrapped integer field of \p enum_field contains an integral - value. -@postrefcountsame{enum_field} -@postsuccessrefcountret1 -@post On success, the returned @enumftiter can iterate - on at least one mapping. -*/ -extern struct bt_field_type_enumeration_mapping_iterator * -bt_field_enumeration_get_mappings(struct bt_field *enum_field); - -/** @} */ - -/** -@defgroup ctfirstringfield CTF IR string field -@ingroup ctfirfields -@brief CTF IR string field. - -@code -#include -@endcode - -A CTF IR string field is a @field which holds -a string value, and which is described by a @stringft. - -Use bt_field_string_set_value() to set the current string value -of a string field object. You can also use bt_field_string_append() -and bt_field_string_append_len() to append a string to the current -value of a string field. - -After you create a string field with bt_field_create(), you -\em must set a string value with -bt_field_string_set_value(), bt_field_string_append(), or -bt_field_string_append_len() before you can get the -field's value with bt_field_string_get_value(). - -@sa ctfirstringfieldtype -@sa ctfirfields - -@addtogroup ctfirstringfield -@{ -*/ - -/** -@brief Returns the string value of the @stringfield \p string_field. - -On success, \p string_field remains the sole owner of the returned -value. - -@param[in] string_field String field field of which to get the - string value. -@returns String value, or \c NULL on error. - -@prenotnull{string_field} -@prenotnull{value} -@preisstringfield{string_field} -@pre \p string_field contains a string value previously - set with bt_field_string_set_value(), - bt_field_string_append(), or - bt_field_string_append_len(). -@postrefcountsame{string_field} - -@sa bt_field_string_set_value(): Sets the string value of a given - string field. -*/ -extern const char *bt_field_string_get_value(struct bt_field *string_field); - -/** -@brief Sets the string value of the @stringfield \p string_field to - \p value. - -@param[in] string_field String field of which to set - the string value. -@param[in] value New string value of \p string_field (copied - on success). -@returns 0 on success, or a negative value on error. - -@prenotnull{string_field} -@prenotnull{value} -@preisstringfield{string_field} -@prehot{string_field} -@postrefcountsame{string_field} - -@sa bt_field_string_get_value(): Returns the string value of a - given string field. -*/ -extern int bt_field_string_set_value(struct bt_field *string_field, - const char *value); - -/** -@brief Appends the string \p value to the current string value of - the @stringfield \p string_field. - -This function is the equivalent of: - -@code -bt_field_string_append_len(string_field, value, strlen(value)); -@endcode - -@param[in] string_field String field of which to append \p value to - its current value. -@param[in] value String to append to the current string value - of \p string_field (copied on success). -@returns 0 on success, or a negative value on error. - -@prenotnull{string_field} -@prenotnull{value} -@preisstringfield{string_field} -@prehot{string_field} -@postrefcountsame{string_field} - -@sa bt_field_string_set_value(): Sets the string value of a given - string field. -*/ -extern int bt_field_string_append(struct bt_field *string_field, - const char *value); - -/** -@brief Appends the first \p length characters of \p value to the - current string value of the @stringfield \p string_field. - -If \p string_field has no current string value, this function first -sets an empty string as the string value of \p string_field and then -appends the first \p length characters of \p value. - -@param[in] string_field String field of which to append the first - \p length characters of \p value to - its current value. -@param[in] value String containing the characters to append to - the current string value of \p string_field - (copied on success). -@param[in] length Number of characters of \p value to append to - the current string value of \p string_field. -@returns 0 on success, or a negative value on error. - -@prenotnull{string_field} -@prenotnull{value} -@preisstringfield{string_field} -@prehot{string_field} -@postrefcountsame{string_field} - -@sa bt_field_string_set_value(): Sets the string value of a given - string field. -*/ -extern int bt_field_string_append_len( - struct bt_field *string_field, const char *value, - unsigned int length); - -extern int bt_field_string_clear(struct bt_field *string_field); - -/** @} */ - -/** -@defgroup ctfirstructfield CTF IR structure field -@ingroup ctfirfields -@brief CTF IR structure field. - -@code -#include -@endcode - -A CTF IR structure field is a @field which -contains an ordered list of zero or more named @fields which can be -different @fts, and which is described by a @structft. - -To set the value of a specific field of a structure field, you need to -first get the field with bt_field_structure_get_field_by_name() or -bt_field_structure_get_field_by_index(). If you already have a -field object, you can assign it to a specific name within a structure -field with bt_field_structure_set_field_by_name(). - -@sa ctfirstructfieldtype -@sa ctfirfields - -@addtogroup ctfirstructfield -@{ -*/ - -extern struct bt_field *bt_field_structure_borrow_field_by_name( - struct bt_field *struct_field, const char *name); - -extern struct bt_field *bt_field_structure_borrow_field_by_index( - struct bt_field *struct_field, uint64_t index); - -/** @} */ - -/** -@defgroup ctfirarrayfield CTF IR array field -@ingroup ctfirfields -@brief CTF IR array field. - -@code -#include -@endcode - -A CTF IR array field is a @field which -contains an ordered list of zero or more @fields sharing the same @ft, -and which is described by a @arrayft. - -To set the value of a specific field of an array field, you need to -first get the field with bt_field_array_get_field(). - -@sa ctfirarrayfieldtype -@sa ctfirfields - -@addtogroup ctfirarrayfield -@{ -*/ - -extern struct bt_field *bt_field_array_borrow_field( - struct bt_field *array_field, uint64_t index); - -/** @} */ - -/** -@defgroup ctfirseqfield CTF IR sequence field -@ingroup ctfirfields -@brief CTF IR sequence field. - -@code -#include -@endcode - -A CTF IR sequence field is a @field which -contains an ordered list of zero or more @fields sharing the same @ft, -and which is described by a @seqft. - -Before you can get a specific field of a sequence field with -bt_field_sequence_get_field(), you need to set its current length -@intfield with bt_field_sequence_set_length(). The integral value of -the length field of a sequence field indicates the number of fields -it contains. +extern int bt_field_string_append(struct bt_field *field, const char *value); -@sa ctfirseqfieldtype -@sa ctfirfields +extern int bt_field_string_append_with_length(struct bt_field *field, + const char *value, uint64_t length); -@addtogroup ctfirseqfield -@{ -*/ +extern int bt_field_string_clear(struct bt_field *field); -extern struct bt_field *bt_field_sequence_borrow_field( - struct bt_field *sequence_field, uint64_t index); +extern struct bt_field *bt_field_structure_borrow_member_field_by_index( + struct bt_field *field, uint64_t index); -extern int64_t bt_field_sequence_get_length(struct bt_field *sequence_field); +extern struct bt_field *bt_field_structure_borrow_member_field_by_name( + struct bt_field *field, const char *name); -/** -@brief Sets the length @intfield of the @seqfield \p sequence_field - to \p length_field. +extern uint64_t bt_field_array_get_length(struct bt_field *field); -The current integral value of \p length_field indicates the number of -fields contained in \p sequence_field. +extern struct bt_field *bt_field_array_borrow_element_field_by_index( + struct bt_field *field, uint64_t index); -@param[in] sequence_field Sequence field of which to set the - length field. -@param[in] length_field Length field of \p sequence_field. -@returns 0 on success, or a negative value on error. - -@prenotnull{sequence_field} -@prenotnull{length_field} -@preisseqfield{sequence_field} -@preisintfield{length_field} -@prehot{sequence_field} -@postrefcountsame{sequence_field} -@postsuccessrefcountinc{length_field} - -@sa bt_field_sequence_get_length(): Returns the length field of a - given sequence field. -*/ -extern int bt_field_sequence_set_length(struct bt_field *sequence_field, +extern int bt_field_dynamic_array_set_length(struct bt_field *field, uint64_t length); -/** @} */ - -/** -@defgroup ctfirvarfield CTF IR variant field -@ingroup ctfirfields -@brief CTF IR variant field. - -@code -#include -@endcode - -A CTF IR variant field is a @field which -contains a current @field amongst one or more choices, and which is -described by a @varft. - -Use bt_field_variant_get_field() to get the @field selected by -a specific tag @enumfield. Once you call this function, you can call -bt_field_variant_get_current_field() afterwards to get this last -field again. - -@sa ctfirvarfieldtype -@sa ctfirfields - -@addtogroup ctfirvarfield -@{ -*/ - -extern int bt_field_variant_set_tag_signed(struct bt_field *variant_field, - int64_t tag); - -extern int bt_field_variant_set_tag_unsigned(struct bt_field *variant_field, - uint64_t tag); - -extern int bt_field_variant_get_tag_signed(struct bt_field *variant_field, - int64_t *tag); - -extern int bt_field_variant_get_tag_unsigned(struct bt_field *variant_field, - uint64_t *tag); +extern int bt_field_variant_select_option_field(struct bt_field *field, + uint64_t index); -extern struct bt_field *bt_field_variant_borrow_current_field( - struct bt_field *variant_field); +extern uint64_t bt_field_variant_get_selected_option_field_index( + struct bt_field *field); -/** @} */ +extern struct bt_field *bt_field_variant_borrow_selected_option_field( + struct bt_field *field); #ifdef __cplusplus }