Blob


1 typedef struct Type Type;
2 typedef struct Typeref Typeref;
3 typedef struct TypeList TypeList;
4 typedef struct Sym Sym;
6 enum
7 {
8 None,
9 Base,
10 Enum,
11 Aggr,
12 Function,
13 Pointer,
14 Array,
15 Range,
16 Defer,
17 Typedef
18 };
20 struct Type
21 { /* Font Tab 4 */
22 uint ty; /* None, Struct, ... */
23 vlong lo; /* for range */
24 char sue;
25 vlong hi;
26 uint gen;
27 uint n1; /* type number (impl dependent) */
28 uint n2; /* another type number */
29 char *name; /* name of type */
30 char *suename; /* name of struct, union, enumeration */
31 uint isunion; /* is this Struct a union? */
32 uint printfmt; /* describes base type */
33 uint xsizeof; /* size of type */
34 Type *sub; /* subtype */
35 uint n; /* count for t, tname, val */
36 Type **t; /* members of sue, params of function */
37 char **tname; /* associated names */
38 long *val; /* associated offsets or values */
39 uint didtypedef; /* internal flag */
40 uint didrange; /* internal flag */
41 uint printed; /* internal flag */
42 Type *equiv; /* internal */
43 };
45 struct TypeList
46 {
47 Type *hd;
48 TypeList *tl;
49 };
51 struct Sym
52 {
53 char *fn;
54 char *name;
55 Type *type;
56 Sym *next;
57 };
59 void *erealloc(void*, uint);
60 void *emalloc(uint);
61 char *estrdup(char*);
62 void warn(char*, ...);
64 Type *typebynum(uint n1, uint n2);
65 Type *typebysue(char, char*);
66 void printtypes(Biobuf*);
67 void renumber(TypeList*, uint);
68 void denumber(void);
69 TypeList *mktl(Type*, TypeList*);
71 struct Dwarf;
72 struct Stab;
73 int dwarf2acid(struct Dwarf*, Biobuf*);
74 int stabs2acid(struct Stab*, Biobuf*);
76 Type *newtype(void);
77 Type *defer(Type*);
78 char *nameof(Type*, int);
79 void freetypes(void);
81 extern char *prefix;
82 extern int verbose;
84 char *fixname(char*);
85 char *cleanstl(char*);
87 void addsymx(char*, char*, Type*);
88 void dumpsyms(Biobuf*);
90 int Bfmt(Fmt*);
92 #ifdef VARARGCK
93 #pragma varargck type "B" char*
94 #endif