+ events_discarded_field = bt_ctf_field_structure_get_field(
+ stream->packet_context, "events_discarded");
+ if (!events_discarded_field) {
+ ret = -1;
+ goto end;
+ }
+
+ events_discarded_field_type = bt_ctf_field_get_type(
+ events_discarded_field);
+ if (!events_discarded_field_type) {
+ ret = -1;
+ goto end;
+ }
+
+ field_signed = bt_ctf_field_type_integer_get_signed(
+ events_discarded_field_type);
+ if (field_signed < 0) {
+ ret = field_signed;
+ goto end;
+ }
+
+ if (field_signed) {
+ int64_t signed_count;
+
+ ret = bt_ctf_field_signed_integer_get_value(
+ events_discarded_field, &signed_count);
+ if (ret) {
+ goto end;
+ }
+ if (signed_count < 0) {
+ /* Invalid value */
+ ret = -1;
+ goto end;
+ }
+ *count = (uint64_t) signed_count;
+ } else {
+ ret = bt_ctf_field_unsigned_integer_get_value(
+ events_discarded_field, count);
+ if (ret) {
+ goto end;
+ }
+ }