/* %Z%%M% %I% %E% */

/*
 * Copyright (c) 1990, 1991, 1992, 1995 by Wayne C. Gramlich.
 * All rights reserved.
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * for any purpose is hereby granted without fee provided that the above
 * copyright notice and this permission are retained.  The author makes
 * no representations about the suitability of this software for any purpose.
 * It is provided "as is" without express or implied warranty.
 */

/* This file contains the gen data structure: */

#ifndef GEN_DEFS_H
#define GEN_DEFS_H

#ifndef CONVERT_TYPES_H
#include "call_types.h"
#endif

#ifndef FLAGS_TYPES_H
#include "flags_types.h"
#endif

#ifndef GEN_EXPORTS_H
#include "gen_exports.h"
#endif

#ifndef HEAP_TYPES_H
#include "heap_types.h"
#endif

#ifndef MSG_TYPES_H
#include "msg_types.h"
#endif

#ifndef NEED_TYPES_H
#include "need_types.h"
#endif

#ifndef OBJECT_TYPES_H
#include "object_types.h"
#endif

#ifndef ROUTINE_TYPES_H
#include "routine_types.h"
#endif

#ifndef TABLE_TYPES_H
#include "table_types.h"
#endif

#ifndef TYPE_TYPES_H
#include "type_types.h"
#endif

#ifndef UNIX_STDIO_H
#include "unix_stdio.h"
#endif

#ifndef VECTOR_TYPES_H
#include "vector_types.h"
#endif

struct Gen_struct {
	Convert			convert;
	int			debug;
	Flags			flags;
	Str			frame;		/* Frame name (including '.' */
	Heap			heap;
	int			linkage;	/* 1 => gen. linkage info */
	Vec(Statement_loop)	loop_stack;
	Stdio			out_file;
	Msg			msg;
	int			need_routine_ref;
	int			need_type_ref;
	Object_table		object_table;
	Str			package_name;
	int			patch;
	Routine			routine;
	Routine_table		routine_table;
	Vec(Type_ref)		temps;
	Type_def_table		type_def_table;
	Type_tables		type_tables;
};

#endif /* GEN_DEFS_H */
