/* Prototypes for functions defined in
etags.c
 */

extern char gotone;

extern char header_file;

extern char _wht[127];

extern char _etk[127];

extern char _itk[127];

extern char _btk[127];

extern char _gd[127];

Stab * stab_create(void);

Stab_entry * stab_find(Stab * stab,
                       register char * sym,
                       register int symlen);

Stab_entry * stab_search(register Stab * stab,
                         char * sym,
                         int symlen);

extern TYST tydef;

extern STRUCTST structdef;

extern char structtag[512];

extern Stab_entry * structkey;

extern DEFINEST definedef;

extern char next_token_is_func;

extern char searchar;

extern LINENO lineno;

extern long charno;

extern FILEPOS linepos;

extern FILEPOS prev_linepos;

extern long linecharno;

extern char * curfile;

extern char * outfile;

extern char * white;

extern char * endtk;

extern char * begtk;

extern char * intk;

extern char * notgd;

extern int append_to_tagfile;

extern int emacs_tags_format;

extern int typedefs;

extern int typedefs_and_cplusplus;

extern int constantypedefs;

extern int update;

extern int vgrind_style;

extern int no_warnings;

extern int field_style;

extern int cxref_style;

extern int cplusplus;

extern int noindentypedefs;

extern char * progname;

extern FILE * inf;

extern FILE * outf;

extern NODE * head;

extern int permit_duplicates;

extern struct linebuffer lb;

extern struct linebuffer lb1;

extern struct linebuffer filename_lb;

void print_version(void);

void print_help(void);

void main(int argc,
          char ** argv);

void process_file(char * file);

void init(void);

void find_entries(char * file);

int string_numeric_p(char * str);

void pfnote(char * name,
            int is_func,
            int rewritten,
            char * linestart,
            int linelen,
            int lno,
            long cno,
            enum sym_type type);

void free_tree(register NODE * node);

void add_node(NODE * node,
              NODE ** cur_node_p);

void put_entries(register NODE * node);

int number_len(long num);

int total_size_of_entries(register NODE * node);

extern Stab * C_stab;

extern Stab * C_PLPL_stab;

extern Stab * C_STAR_stab;

void add_keyword(Stab * stab,
                 char * sym,
                 enum sym_type type);

Stab * C_create_stab(int c_ext);

void C_create_stabs(void);

void C_entries(int c_ext);

char consider_token(register int c,
                    char ** lpp,
                    TOKEN * tokp,
                    char * is_func,
                    int c_ext,
                    int level);

void getline(long atcookie);

extern char * dbp;

extern int pfcnt;

int PF_funcs(FILE * fi);

char tail(char * cp);

void takeprec(void);

void getit(enum sym_type type);

void Asm_funcs(FILE * fi);

void PAS_funcs(FILE * fi);

void L_funcs(FILE * fi);

int L_isdef(char * dbp);

void L_getit(enum sym_type );

void Scheme_funcs(FILE * fi);

void get_scheme(void);

extern struct TEX_tabent * TEX_toktab;

void TEX_funcs(FILE * fi);

void TEX_mode(FILE * f);

struct TEX_tabent * TEX_decode_env(char * evarname,
                                   char * defenv);

void TEX_getit(char * name,
               int len);

int TEX_Token(char * cp);

void prolog_getit(char * s,
                  int lineno,
                  long linecharno);

void prolog_funcs(FILE * fi);

void skip_comment(struct linebuffer * plb,
                  FILE * fi,
                  int * plineno,
                  long * plinecharno);

int substr(char * sub,
           char * s);

int prestr(char * pre,
           char * s);

void initbuffer(struct linebuffer * linebuffer);

long readline(struct linebuffer * linebuffer,
              register FILE * stream);

char * savestr(char * cp);

char * savenstr(char * cp,
                int len);

void fatal(char * s1,
           char * s2);

void error(char * s1,
           char * s2);

char * concat(char * s1,
              char * s2,
              char * s3);

char * xmalloc(int size);

char * xrealloc(char * ptr,
                int size);

