#ifndef __STACK_H__
#define __STACK_H__ 1

#include "icode2ast.h"

extern IMPAST *run_stack(IMPAST *Program);

#define MAX_TAGS 0x10000
extern IMPAST *DEFTAG[MAX_TAGS];
extern IMPAST *DEFUNIQUETAG[MAX_TAGS];

// primarily used in stack.c but may be used sometimes in genc.c for transformations
// that are only appropriate for C, not Imp output:
extern void copy_type(IMPAST *dest, IMPAST *source);
extern void set_type(IMPAST *this, int T_type);
extern void set_form(IMPAST *this, int F_form);
extern void set_recordformattag(IMPAST *this, int recfmtag);
extern void set_linkage(IMPAST *this, int L_linkage);
extern void set_special(IMPAST *this, int S_special);
extern void inherit_array_element_info(IMPAST *this);
extern void inherit_pointed_to_info(IMPAST *this);
extern void make_into_pointer(IMPAST *this);

//#define MAX_ASTS 100000
//extern IMPAST *DEFSEQ[MAX_ASTS];

#endif // __STACK_H__
