blob: 8a043787cf480fe97c2562febc2824f0e6103d28 [file] [log] [blame]
typedef struct Type Type;
typedef struct Typeref Typeref;
typedef struct TypeList TypeList;
typedef struct Sym Sym;
enum
{
None,
Base,
Enum,
Aggr,
Function,
Pointer,
Array,
Range,
Defer,
Typedef
};
struct Type
{ /* Font Tab 4 */
uint ty; /* None, Struct, ... */
vlong lo; /* for range */
char sue;
vlong hi;
uint gen;
uint n1; /* type number (impl dependent) */
uint n2; /* another type number */
char *name; /* name of type */
char *suename; /* name of struct, union, enumeration */
uint isunion; /* is this Struct a union? */
uint printfmt; /* describes base type */
uint xsizeof; /* size of type */
Type *sub; /* subtype */
uint n; /* count for t, tname, val */
Type **t; /* members of sue, params of function */
char **tname; /* associated names */
long *val; /* associated offsets or values */
uint didtypedef; /* internal flag */
uint didrange; /* internal flag */
uint printed; /* internal flag */
Type *equiv; /* internal */
};
struct TypeList
{
Type *hd;
TypeList *tl;
};
struct Sym
{
char *fn;
char *name;
Type *type;
Sym *next;
};
void *erealloc(void*, uint);
void *emalloc(uint);
char *estrdup(char*);
void warn(char*, ...);
Type *typebynum(uint n1, uint n2);
Type *typebysue(char, char*);
void printtypes(Biobuf*);
void renumber(TypeList*, uint);
void denumber(void);
TypeList *mktl(Type*, TypeList*);
struct Dwarf;
struct Stab;
int dwarf2acid(struct Dwarf*, Biobuf*);
int stabs2acid(struct Stab*, Biobuf*);
Type *newtype(void);
Type *defer(Type*);
char *nameof(Type*, int);
void freetypes(void);
extern char *prefix;
extern int verbose;
char *fixname(char*);
char *cleanstl(char*);
void addsymx(char*, char*, Type*);
void dumpsyms(Biobuf*);
int Bfmt(Fmt*);
#ifdef VARARGCK
#pragma varargck type "B" char*
#endif