#ifndef DISSECT_H #define DISSECT_H #include #include "parse.h" #include "expression.h" #define U_SHIFT 8 #define U_R_AOF 0x01 #define U_W_AOF 0x02 #define U_R_VAL 0x04 #define U_W_VAL 0x08 #define U_R_PTR (U_R_VAL << U_SHIFT) #define U_W_PTR (U_W_VAL << U_SHIFT) struct reporter { void (*r_symdef)(struct symbol*); void (*r_symbol)(unsigned, struct position*, struct symbol*); void (*r_member)(unsigned, struct position*, struct symbol*, struct symbol*); }; extern void dissect(struct symbol_list*, struct reporter*); #define MK_IDENT(s) ({ \ static struct { \ struct ident ident; \ char __[sizeof(s)]; \ } ident = {{ \ .len = sizeof(s)-1, \ .name = s, \ }}; \ &ident.ident; \ }) #endif