xref: /illumos-gate/usr/src/tools/smatch/src/dissect.h (revision 1f5207b7)
1*1f5207b7SJohn Levon #ifndef	DISSECT_H
2*1f5207b7SJohn Levon #define	DISSECT_H
3*1f5207b7SJohn Levon 
4*1f5207b7SJohn Levon #include <stdio.h>
5*1f5207b7SJohn Levon #include "parse.h"
6*1f5207b7SJohn Levon #include "expression.h"
7*1f5207b7SJohn Levon 
8*1f5207b7SJohn Levon #define	U_SHIFT		8
9*1f5207b7SJohn Levon 
10*1f5207b7SJohn Levon #define	U_R_AOF		0x01
11*1f5207b7SJohn Levon #define	U_W_AOF		0x02
12*1f5207b7SJohn Levon 
13*1f5207b7SJohn Levon #define	U_R_VAL		0x04
14*1f5207b7SJohn Levon #define	U_W_VAL		0x08
15*1f5207b7SJohn Levon 
16*1f5207b7SJohn Levon #define	U_R_PTR		(U_R_VAL << U_SHIFT)
17*1f5207b7SJohn Levon #define	U_W_PTR		(U_W_VAL << U_SHIFT)
18*1f5207b7SJohn Levon 
19*1f5207b7SJohn Levon struct reporter
20*1f5207b7SJohn Levon {
21*1f5207b7SJohn Levon 	void (*r_symdef)(struct symbol *);
22*1f5207b7SJohn Levon 
23*1f5207b7SJohn Levon 	void (*r_symbol)(unsigned, struct position *, struct symbol *);
24*1f5207b7SJohn Levon 	void (*r_member)(unsigned, struct position *, struct symbol *, struct symbol *);
25*1f5207b7SJohn Levon };
26*1f5207b7SJohn Levon 
27*1f5207b7SJohn Levon extern void dissect(struct symbol_list *, struct reporter *);
28*1f5207b7SJohn Levon 
29*1f5207b7SJohn Levon #endif
30