X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=types%2Fvariant.c;h=460b2fb2b6bb3944bd77d17c1f4a735535463da8;hp=2ab14a21cd4db6e9ecc031289553ff16702ed2d2;hb=809cbff588674d09c14b128eb95d332048382770;hpb=d60cb676b003e5eb83566f9a2707b4dfea005020 diff --git a/types/variant.c b/types/variant.c index 2ab14a21..460b2fb2 100644 --- a/types/variant.c +++ b/types/variant.c @@ -1,5 +1,5 @@ /* -* variant.c + * variant.c * * BabelTrace - Variant Type Converter * @@ -27,25 +27,14 @@ struct definition *_variant_definition_new(struct declaration *declaration, static void _variant_definition_free(struct definition *definition); -void variant_copy(struct stream_pos *dest, const struct format *fdest, - struct stream_pos *src, const struct format *fsrc, - struct definition *definition) +void variant_rw(struct stream_pos *ppos, struct definition *definition) { - struct definition_variant *variant = + struct definition_variant *variant_definition = container_of(definition, struct definition_variant, p); - struct declaration_variant *variant_declaration = variant->declaration; struct field *field; - struct declaration *field_declaration; - - fsrc->variant_begin(src, variant_declaration); - fdest->variant_begin(dest, variant_declaration); - - field = variant_get_current_field(variant); - field_declaration = field->definition->declaration; - field_declaration->copy(dest, fdest, src, fsrc, field->definition); - fsrc->variant_end(src, variant_declaration); - fdest->variant_end(dest, variant_declaration); + field = variant_get_current_field(variant_definition); + generic_rw(ppos, field->definition); } static @@ -68,7 +57,7 @@ void _untagged_variant_declaration_free(struct declaration *declaration) g_free(untagged_variant_declaration); } -struct declaration_untagged_variant *untagged_variant_declaration_new(const char *name, +struct declaration_untagged_variant *untagged_variant_declaration_new( struct declaration_scope *parent_scope) { struct declaration_untagged_variant *untagged_variant_declaration; @@ -83,9 +72,7 @@ struct declaration_untagged_variant *untagged_variant_declaration_new(const char DEFAULT_NR_STRUCT_FIELDS); untagged_variant_declaration->scope = new_declaration_scope(parent_scope); declaration->id = CTF_TYPE_UNTAGGED_VARIANT; - declaration->name = g_quark_from_string(name); declaration->alignment = 1; - declaration->copy = NULL; declaration->declaration_free = _untagged_variant_declaration_free; declaration->definition_new = NULL; declaration->definition_free = NULL; @@ -116,7 +103,6 @@ struct declaration_variant * append_scope_path(tag, variant_declaration->tag_name); declaration->id = CTF_TYPE_VARIANT; declaration->alignment = 1; - declaration->copy = variant_copy; declaration->declaration_free = _variant_declaration_free; declaration->definition_new = _variant_definition_new; declaration->definition_free = _variant_definition_free;