+ GQuark path;
+ struct definition_scope *scope;
+};
+
+typedef int (*rw_dispatch)(struct stream_pos *pos,
+ struct definition *definition);
+
+/* Parent of per-plugin positions */
+struct stream_pos {
+ /* read/write dispatch table. Specific to plugin used for stream. */
+ rw_dispatch *rw_table; /* rw dispatch table */
+ int (*event_cb)(struct stream_pos *pos,
+ struct ctf_stream *stream);
+};
+
+static inline
+int generic_rw(struct stream_pos *pos, struct definition *definition)
+{
+ enum ctf_type_id dispatch_id = definition->declaration->id;
+ rw_dispatch call;
+
+ assert(pos->rw_table[dispatch_id] != NULL);
+ call = pos->rw_table[dispatch_id];
+ return call(pos, definition);
+}
+
+enum ctf_string_encoding {
+ CTF_STRING_NONE = 0,
+ CTF_STRING_UTF8,
+ CTF_STRING_ASCII,
+ CTF_STRING_UNKNOWN,