#ifndef _ASSEMBLER_ASSEMBLER_H_ #define _ASSEMBLER_ASSEMBLER_H_ #include #include struct assembler_scope_type; typedef size_t extended_data_key; struct assembler_scope { enum ivy_assembler_scope_type s_type; unsigned long s_attrib[__IVY_ASM_ATTRIB_COUNT]; struct assembler_scope_type *s_ops; size_t s_start_offset; }; struct assembler_scope_type { size_t s_scope_size; enum ivy_status(*s_init_scope)( struct ivy_assembler *, struct assembler_scope *, const ivy_assembler_attrib_table); enum ivy_status(*s_finish_scope)( struct ivy_assembler *, struct assembler_scope *); enum ivy_status(*s_put_pval)(struct ivy_assembler *, struct assembler_scope *, enum ivy_assembler_pval_type, unsigned long, const void *); enum ivy_status(*s_put_xval)( struct ivy_assembler *, struct assembler_scope *, enum ivy_assembler_xval_type, const ivy_assembler_attrib_table); enum ivy_status(*s_put_instr)( struct ivy_assembler *, struct assembler_scope *, const struct ivy_instr *); }; extern size_t assembler_write_data(struct ivy_assembler *as, const void *p, size_t len); extern extended_data_key assembler_write_extended_data(struct ivy_assembler *as, const void *p, size_t len); extern struct assembler_scope *assembler_get_scope(struct ivy_assembler *as); #endif