/*
 * symtab.h
 *
 * Copyright 1995-2004 Timo Rossi, <trossi@iki.fi>
 * See the file LICENSE for license terms.
 *
 */

struct symbol {
  struct symbol *next;
  union {
    long value;
    struct macro_line *text;
  } v;
  char type;
  char type2;
  char name[1]; /*struct hack*/
};

/* symbol types */
enum {
  SYM_MACRO,
  SYM_FORWARD,
  SYM_SET,
  SYM_DEFINED
};

#define SYMTAB_GLOBAL 0
#define SYMTAB_LOCAL  1

/* type2 */
enum {
  SYMT_UNKNOWN,
  SYMT_LABEL,
  SYMT_REGFILE,
  SYMT_CONSTANT
};

/*prototypes*/
void init_symtab(void);
void add_local_symtab(void);
void remove_local_symtab(void);
struct symbol *add_symbol(char *name, int tab);
struct symbol *lookup_symbol(char *name, int tab);
void dump_symtab(FILE *, int);



syntax highlighted by Code2HTML, v. 0.9.1