-uint64_t ctf_uint_read(struct stream_pos *pos,
- const struct declaration_integer *integer_declaration);
-int64_t ctf_int_read(struct stream_pos *pos,
- const struct declaration_integer *integer_declaration);
-void ctf_uint_write(struct stream_pos *pos,
- const struct declaration_integer *integer_declaration,
- uint64_t v);
-void ctf_int_write(struct stream_pos *pos,
- const struct declaration_integer *integer_declaration,
- int64_t v);
-
-double ctf_double_read(struct stream_pos *pos,
- const struct declaration_float *src);
-void ctf_double_write(struct stream_pos *pos,
- const struct declaration_float *dest,
- double v);
-long double ctf_ldouble_read(struct stream_pos *pos,
- const struct declaration_float *src);
-void ctf_ldouble_write(struct stream_pos *pos,
- const struct declaration_float *dest,
- long double v);
-void ctf_float_copy(struct stream_pos *destp,
- struct stream_pos *srcp,
- const struct declaration_float *float_declaration);
-
-void ctf_string_copy(struct stream_pos *dest, struct stream_pos *src,
- const struct declaration_string *string_declaration);
-void ctf_string_read(char **dest, struct stream_pos *src,
- const struct declaration_string *string_declaration);
-void ctf_string_write(struct stream_pos *dest, const char *src,
- const struct declaration_string *string_declaration);
-void ctf_string_free_temp(char *string);
-
-GArray *ctf_enum_read(struct stream_pos *pos,
- const struct declaration_enum *src);
-void ctf_enum_write(struct stream_pos *pos,
- const struct declaration_enum *dest,
- GQuark q);
-void ctf_struct_begin(struct stream_pos *pos,
- const struct declaration_struct *struct_declaration);
-void ctf_struct_end(struct stream_pos *pos,
- const struct declaration_struct *struct_declaration);
-void ctf_variant_begin(struct stream_pos *pos,
- const struct declaration_variant *variant_declaration);
-void ctf_variant_end(struct stream_pos *pos,
- const struct declaration_variant *variant_declaration);
-void ctf_array_begin(struct stream_pos *pos,
- const struct declaration_array *array_declaration);
-void ctf_array_end(struct stream_pos *pos,
- const struct declaration_array *array_declaration);
-void ctf_sequence_begin(struct stream_pos *pos,
- const struct declaration_sequence *sequence_declaration);
-void ctf_sequence_end(struct stream_pos *pos,
- const struct declaration_sequence *sequence_declaration);
+static inline
+int ctf_pos_access_ok(struct ctf_stream_pos *pos, size_t bit_len)
+{
+ if (pos->offset == EOF)
+ return 0;
+ if (pos->offset + bit_len > pos->packet_size)
+ return 0;
+ return 1;
+}
+
+/*
+ * Update the stream position for to the current event. This moves to
+ * the next packet if we are located at the end of the current packet.
+ */
+static inline
+void ctf_pos_get_event(struct ctf_stream_pos *pos)
+{
+ assert(pos->offset <= pos->content_size);
+ if (pos->offset == pos->content_size) {
+ printf_debug("ctf_move_pos_slow (before call): %zd\n",
+ pos->offset);
+ ctf_move_pos_slow(pos, 0, SEEK_CUR);
+ printf_debug("ctf_move_pos_slow (after call): %zd\n",
+ pos->offset);
+ }
+}