X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace%2Fctf-ir%2Ffields.h;h=7d811c96fcd511c568ba48a4150e093f57f048d3;hb=e22b45d0f7d3ce1311bf96a930bc42326f555202;hp=896cd4e41ac48db58bb30064a108f449a349c072;hpb=3dca22768a95bef664012559aa9ac977091de6ac;p=babeltrace.git diff --git a/include/babeltrace/ctf-ir/fields.h b/include/babeltrace/ctf-ir/fields.h index 896cd4e4..7d811c96 100644 --- a/include/babeltrace/ctf-ir/fields.h +++ b/include/babeltrace/ctf-ir/fields.h @@ -33,6 +33,9 @@ #include #include +/* For bt_get() */ +#include + /* For bt_bool */ #include @@ -142,25 +145,7 @@ struct bt_field_type_enumeration_mapping_iterator; @{ */ -/** -@brief Creates an uninitialized @field described by the @ft - \p field_type. - -On success, \p field_type becomes the parent of the created field -object. - -On success, this function creates an \em uninitialized field: it has -no value. You need to set the value of the created field with one of the -its specific setters. - -@param[in] field_type Field type which describes the field to create. -@returns Created field object, or \c NULL on error. - -@prenotnull{field_type} -@postsuccessrefcountret1 -@postsuccessfrozen{field_type} -*/ -extern struct bt_field *bt_field_create(struct bt_field_type *field_type); +extern struct bt_field_type *bt_field_borrow_type(struct bt_field *field); /** @brief Returns the parent @ft of the @field \p field. @@ -176,7 +161,11 @@ create the field object in the first place with bt_field_create(). @postrefcountsame{field} @postsuccessrefcountretinc */ -extern struct bt_field_type *bt_field_get_type(struct bt_field *field); +static inline +struct bt_field_type *bt_field_get_type(struct bt_field *field) +{ + return bt_get(bt_field_borrow_type(field)); +} /** @} */ @@ -351,22 +340,6 @@ extern bt_bool bt_field_is_variant(struct bt_field *field); @{ */ -/** -@brief Creates a \em deep copy of the @field \p field. - -You can copy a frozen field: the resulting copy is not frozen. - -@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 On success, the returned field is not frozen. -*/ -extern struct bt_field *bt_field_copy(struct bt_field *field); - /** @} */ /** @} */ @@ -581,56 +554,6 @@ extern int bt_field_floating_point_set_value( /** @} */ -/** -@defgroup ctfirenumfield CTF IR enumeration field -@ingroup ctfirfields -@brief CTF IR enumeration field. - -@code -#include -@endcode - -A CTF IR enumeration field is a @field which -holds a @intfield, and which is described by a @enumft. - -To set the current integral value of an enumeration field, you need to -get its wrapped @intfield with bt_field_enumeration_get_container(), -and then set the integral value with either -bt_field_integer_signed_set_value() or -bt_field_integer_unsigned_set_value(). - -Once you set the integral value of an enumeration field by following the -previous paragraph, you can get the mappings containing this value in -their range with bt_field_enumeration_get_mappings(). This function -returns a @enumftiter. - -@sa ctfirenumfieldtype -@sa ctfirfields - -@addtogroup ctfirenumfield -@{ -*/ - -/** -@brief Returns the @intfield, potentially creating it, wrapped by the - @enumfield \p enum_field. - -This function creates the @intfield to return if it does not currently -exist. - -@param[in] enum_field Enumeration field of which to get the wrapped - integer field. -@returns Integer field wrapped by \p enum_field, or - \c NULL on error. - -@prenotnull{enum_field} -@preisenumfield{enum_field} -@postrefcountsame{enum_field} -@postsuccessrefcountretinc -*/ -extern struct bt_field *bt_field_enumeration_get_container( - struct bt_field *enum_field); - /** @brief Returns a @enumftiter on all the mappings of the field type of \p enum_field which contain the current integral value of the @@ -799,6 +722,8 @@ 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); + /** @} */ /** @@ -827,103 +752,12 @@ field with bt_field_structure_set_field_by_name(). @{ */ -/** -@brief Returns the @field named \p name, potentially creating it, - in the @structfield \p struct_field. - -This function creates the @field to return if it does not currently -exist. - -@param[in] struct_field Structure field of which to get the field - named \p name. -@param[in] name Name of the field to get from \p struct_field. -@returns Field named \p name in \p struct_field, or - \c NULL on error. - -@prenotnull{struct_field} -@prenotnull{name} -@preisstructfield{struct_field} -@postrefcountsame{struct_field} -@postsuccessrefcountretinc - -@sa bt_field_structure_get_field_by_index(): Returns the field of a - given structure field by index. -@sa bt_field_structure_set_field_by_name(): Sets the field of a - given structure field by name. -*/ -extern struct bt_field *bt_field_structure_get_field_by_name( +extern struct bt_field *bt_field_structure_borrow_field_by_name( struct bt_field *struct_field, const char *name); -/** -@brief Returns the @field at index \p index in the @structfield - \p struct_field. - -@param[in] struct_field Structure field of which to get the field - at index \p index. -@param[in] index Index of the field to get in \p struct_field. -@returns Field at index \p index in \p struct_field, or - \c NULL on error. - -@prenotnull{struct_field} -@preisstructfield{struct_field} -@pre \p index is lesser than the number of fields contained in the - parent field type of \p struct_field (see - bt_field_type_structure_get_field_count()). -@postrefcountsame{struct_field} -@postsuccessrefcountretinc - -@sa bt_field_structure_get_field_by_name(): Returns the field of a - given structure field by name. -@sa bt_field_structure_set_field_by_name(): Sets the field of a - given structure field by name. -*/ -extern struct bt_field *bt_field_structure_get_field_by_index( +extern struct bt_field *bt_field_structure_borrow_field_by_index( struct bt_field *struct_field, uint64_t index); -/** -@brief Sets the field of the @structfield \p struct_field named \p name - to the @field \p field. - -If \p struct_field already contains a field named \p name, then it may -either be replaced by \p field and its reference count is decremented, -or \p field's value is assigned to it. - -The field type of \p field, as returned by bt_field_get_type(), -\em must be equivalent to the field type returned by -bt_field_type_structure_get_field_type_by_name() with the field -type of \p struct_field and the same name, \p name. - -bt_trace_get_packet_header_type() for the parent trace class of -\p packet. - -@param[in] struct_field Structure field of which to set the field - named \p name. -@param[in] name Name of the field to set in \p struct_field. -@param[in] field Field named \p name to set in \p struct_field. -@returns 0 on success, or -1 on error. - -@prenotnull{struct_field} -@prenotnull{name} -@prenotnull{field} -@prehot{struct_field} -@preisstructfield{struct_field} -@pre \p field has a field type equivalent to the field type returned by - bt_field_type_structure_get_field_type_by_name() for the - field type of \p struct_field with the name \p name. -@postrefcountsame{struct_field} -@post On success, the field in \p struct_field named \p name - may either be replaced by \p field or have the same value as \p field. -@postsuccessrefcountinc{field} - -@sa bt_field_structure_get_field_by_index(): Returns the field of a - given structure field by index. -@sa bt_field_structure_get_field_by_name(): Returns the field of a - given structure field by name. -*/ -extern int bt_field_structure_set_field_by_name( - struct bt_field *struct_field, - const char *name, struct bt_field *field); - /** @} */ /** @@ -949,27 +783,7 @@ first get the field with bt_field_array_get_field(). @{ */ -/** -@brief Returns the @field at index \p index, potentially creating it, - in the @arrayfield \p array_field. - -This function creates the @field to return if it does not currently -exist. - -@param[in] array_field Array field of which to get the field - at index \p index. -@param[in] index Index of the field to get in \p array_field. -@returns Field at index \p index in \p array_field, or - \c NULL on error. - -@prenotnull{array_field} -@preisarrayfield{array_field} -@pre \p index is lesser than bt_field_type_array_get_length() called - on the field type of \p array_field. -@postrefcountsame{array_field} -@postsuccessrefcountretinc -*/ -extern struct bt_field *bt_field_array_get_field( +extern struct bt_field *bt_field_array_borrow_field( struct bt_field *array_field, uint64_t index); /** @} */ @@ -1000,57 +814,10 @@ it contains. @{ */ -/** -@brief Returns the @field at index \p index, potentially creating it, - in the @seqfield \p sequence_field. - -This function creates the @field to return if it does not currently -exist. - -@param[in] sequence_field Sequence field of which to get the field - at index \p index. -@param[in] index Index of the field to get in - \p sequence_field. -@returns Field at index \p index in - \p sequence_field, or \c NULL on error. - -@prenotnull{sequence_field} -@preisseqfield{sequence_field} -@pre \p sequence_field has a length field previously set with - bt_field_sequence_set_length(). -@pre \p index is lesser than the current integral value of the current - length field of \p sequence_field (see - bt_field_sequence_get_length()). -@postrefcountsame{sequence_field} -@postsuccessrefcountretinc -*/ -extern struct bt_field *bt_field_sequence_get_field( +extern struct bt_field *bt_field_sequence_borrow_field( struct bt_field *sequence_field, uint64_t index); -/** -@brief Returns the length @intfield of the @seqfield \p sequence_field. - -The current integral value of the returned length field indicates the -number of fields contained in \p sequence_field. - -@param[in] sequence_field Sequence field of which to get the - length field. -@returns Length field of \p sequence_field, or - \c NULL on error. - -@prenotnull{sequence_field} -@preisseqfield{sequence_field} -@pre \p sequence_field has a length field previously set with - bt_field_sequence_set_length(). -@postrefcountsame{sequence_field} -@postsuccessrefcountretinc -@post On success, the returned field is a @intfield. - -@sa bt_field_sequence_set_length(): Sets the length field of a given - sequence field. -*/ -extern struct bt_field *bt_field_sequence_get_length( - struct bt_field *sequence_field); +extern int64_t bt_field_sequence_get_length(struct bt_field *sequence_field); /** @brief Sets the length @intfield of the @seqfield \p sequence_field @@ -1076,7 +843,7 @@ fields contained in \p sequence_field. given sequence field. */ extern int bt_field_sequence_set_length(struct bt_field *sequence_field, - struct bt_field *length_field); + uint64_t length); /** @} */ @@ -1105,72 +872,19 @@ field again. @{ */ -/** -@brief Returns the @field, potentially creating it, selected by the - tag @intfield \p tag_field in the @varfield \p variant_field. - -This function creates the @field to return if it does not currently -exist. - -Once you call this function, you can call -bt_field_variant_get_current_field() to get the same field again, -and you can call bt_field_variant_get_tag() to get \p tag_field. - -@param[in] variant_field Variant field of which to get the field - selected by \p tag_field. -@param[in] tag_field Tag field. -@returns Field selected by \p tag_field in - \p variant_field, or \c NULL on error. - -@prenotnull{variant_field} -@prenotnull{tag_field} -@preisvarfield{variant_field} -@preisenumfield{tag_field} -@postrefcountsame{variant_field} -@postsuccessrefcountinc{tag_field} -@postsuccessrefcountretinc -*/ -extern struct bt_field *bt_field_variant_get_field( - struct bt_field *variant_field, - struct bt_field *tag_field); +extern int bt_field_variant_set_tag_signed(struct bt_field *variant_field, + int64_t tag); -/** -@brief Returns the currently selected @field of the @varfield - \p variant_field. - -@param[in] variant_field Variant field of which to get the - currently selected field. -@returns Currently selected field of - \p variant_field, or \c NULL if there's - no selected field or on error. - -@prenotnull{variant_field} -@preisvarfield{variant_field} -@pre \p variant_field contains has a current selected field previously - set with bt_field_variant_get_field(). -@postrefcountsame{variant_field} -@postsuccessrefcountretinc -*/ -extern struct bt_field *bt_field_variant_get_current_field( - struct bt_field *variant_field); +extern int bt_field_variant_set_tag_unsigned(struct bt_field *variant_field, + uint64_t tag); -/** -@brief Returns the tag @enumfield of the @varfield \p variant_field. - -@param[in] variant_field Variant field of which to get the - tag field. -@returns Tag field of \p variant_field, or - \c NULL on error. - -@prenotnull{variant_field} -@preisvarfield{variant_field} -@pre \p variant_field contains has a current selected field previously - set with bt_field_variant_get_field(). -@postrefcountsame{variant_field} -@postsuccessrefcountretinc -@post On success, the returned field is a @enumfield. -*/ -extern struct bt_field *bt_field_variant_get_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 struct bt_field *bt_field_variant_borrow_current_field( struct bt_field *variant_field); /** @} */