/*********************************************************************/
/*                  pC++/Sage++  Copyright (C) 1993                  */
/*  Indiana University  University of Oregon  University of Rennes   */
/*********************************************************************/


/****************************************************************
 *								*
 *	 Structure of the dep files generated by parsers	*
 *								*
 ****************************************************************/

/*#include <sys/types.h>
 */
#ifndef MAX_DEP
#include dep.h
#endif

#include "compatible.h"
/*#ifdef NO_u_short
 *#ifndef DEF_USHORT
 *#define DEF_USHORT 1
 */





typedef unsigned int u_shrt;
/*#endif
#endif
 */

#define D_MAGIC	0420

struct preamble {		/* structure of preamble of dep file */
        u_shrt ptrsize;        /* bit length of pointers (32 or 64) phb */
	u_shrt language;	/* source language type */
	u_shrt  num_blobs;	/* number of blob nodes */
	u_shrt num_bfnds;	/* number of bif nodes */
	u_shrt num_llnds;	/* number of low level nodes */
	u_shrt num_symbs;	/* number of symbol nodes */
	u_shrt num_types;	/* number of type nodes */
	u_shrt num_label;	/* number of label nodes */
	u_shrt num_dep;	/* number of dep nodes */
	u_shrt num_cmnts;	/* number of comment nodes */
	u_shrt num_files;	/* number of filename nodes */
	u_shrt global_bfnd;	/* id of the global bif node */
};


struct locs {
	long llnd;		/* offset of llnd in the dep file */
	long symb;		/* 	     symbol nodes	  */
	long type;		/*	     type nodes		  */
	long labs;		/*	     label nodes	  */
	long cmnt;		/*	     comment nodes	  */
	long file;		/*	     filename nodes	  */
	long deps;		/*	     dep nodes		  */
	long strs;		/*	     string tables	  */
};

struct bf_nd {			/* structure of bif node in dep file */
	u_shrt id;		/* id of this bif node */
	u_shrt variant;	/* type of this bif node */
	u_shrt cp;		/* control parent of this node */
	u_shrt bf_ptr1;
	u_shrt cmnt_ptr;
	u_shrt symbol;
	u_shrt ll_ptr1;
	u_shrt ll_ptr2;
	u_shrt ll_ptr3;
	u_shrt dep_ptr1;
	u_shrt dep_ptr2;
	u_shrt label;
	u_shrt lbl_ptr;
	u_shrt g_line;
	u_shrt l_line;
        u_shrt decl_specs;
	u_shrt filename;
};


struct ll_nd {
	u_shrt id;
	u_shrt variant;
	u_shrt type;
};


struct sym_nd {
	u_shrt id;
	u_shrt variant;
	u_shrt type;
	u_shrt attr;
	u_shrt next;
	u_shrt scope;
	u_shrt ident;
};


struct typ_nd {
	u_shrt id;
	u_shrt variant;
	u_shrt name;
};


struct lab_nd {
	u_shrt id;
	u_shrt labtype;
	u_shrt body;
	u_shrt name;
	long	stat_no;
};


struct fil_nd {
	u_shrt id;
	u_shrt name;
};


struct cmt_nd {
	u_shrt id;
	u_shrt type;
	u_shrt next;
	u_shrt str;
};


struct dep_nd {
	u_shrt id;
	u_shrt type;
	u_shrt sym;
	u_shrt from_stmt;
	u_shrt from_ref;
	u_shrt to_stmt;
	u_shrt to_ref;
	u_shrt from_hook;
	u_shrt to_hook;
	u_shrt from_fwd;
	u_shrt from_back;
	u_shrt to_fwd;
	u_shrt to_back;
	u_shrt dire[MAX_DEP];
};


























