X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fbabeltrace%2Ftypes.h;h=3d2b70a4ed92d878588ff5547d7fc85537ac43b8;hp=bfc698706766668cf67a1a9d346dc9dec1a9fc08;hb=dd2544fde7500d15afb76f588009874cc577f0ac;hpb=ab4cf05887a402e53396db43b5958918d0d2d022 diff --git a/include/babeltrace/types.h b/include/babeltrace/types.h index bfc69870..3d2b70a4 100644 --- a/include/babeltrace/types.h +++ b/include/babeltrace/types.h @@ -31,59 +31,7 @@ /* Preallocate this many fields for structures */ #define DEFAULT_NR_STRUCT_FIELDS 8 -/* - * Always update stream_pos with move_pos and init_pos. - */ -struct stream_pos { - char *base; /* Base address */ - size_t offset; /* Offset from base, in bits */ - int dummy; /* Dummy position, for length calculation */ -}; - -static inline -void init_pos(struct stream_pos *pos, char *base) -{ - pos->base = base; /* initial base, page-aligned */ - pos->offset = 0; - pos->dummy = false; -} - -/* - * move_pos - move position of a relative bit offset - * - * TODO: allow larger files by updating base too. - */ -static inline -void move_pos(struct stream_pos *pos, size_t offset) -{ - pos->offset = pos->offset + offset; -} - -/* - * align_pos - align position on a bit offset (> 0) - * - * TODO: allow larger files by updating base too. - */ -static inline -void align_pos(struct stream_pos *pos, size_t offset) -{ - pos->offset += offset_align(pos->offset, offset); -} - -static inline -void copy_pos(struct stream_pos *dest, struct stream_pos *src) -{ - memcpy(dest, src, sizeof(struct stream_pos)); -} - -static inline -char *get_pos_addr(struct stream_pos *pos) -{ - /* Only makes sense to get the address after aligning on CHAR_BIT */ - assert(!(pos->offset % CHAR_BIT)); - return pos->base + (pos->offset / CHAR_BIT); -} - +struct stream_pos; struct format; struct definition; @@ -349,7 +297,7 @@ int register_declaration(GQuark declaration_name, struct declaration *declaration, struct declaration_scope *scope); struct declaration *lookup_declaration(GQuark declaration_name, - struct declaration_scope *scope); + struct declaration_scope *scope); /* * Type scopes also contain a separate registry for struct, variant and @@ -364,9 +312,9 @@ struct declaration_struct * lookup_struct_declaration(GQuark struct_name, struct declaration_scope *scope); int register_variant_declaration(GQuark variant_name, - struct declaration_variant *variant_declaration, + struct declaration_untagged_variant *untagged_variant_declaration, struct declaration_scope *scope); -struct declaration_variant *lookup_variant_declaration(GQuark variant_name, +struct declaration_untagged_variant *lookup_variant_declaration(GQuark variant_name, struct declaration_scope *scope); int register_enum_declaration(GQuark enum_name, struct declaration_enum *enum_declaration, @@ -450,6 +398,9 @@ size_t enum_get_nr_enumerators(struct declaration_enum *enum_declaration); struct declaration_enum * enum_declaration_new(struct declaration_integer *integer_declaration); +struct declaration_string * + string_declaration_new(enum ctf_string_encoding encoding); + struct declaration_struct * struct_declaration_new(struct declaration_scope *parent_scope); void struct_declaration_add_field(struct declaration_struct *struct_declaration,