/*********************************************************************/ /* pC++/Sage++ Copyright (C) 1993 */ /* Indiana University University of Oregon University of Rennes */ /*********************************************************************/ /**************************************************************** * * * db.h -- contains all definitions needed by the data base * * management routines * * * ****************************************************************/ #ifndef CallSiteE #ifndef FILE # include #endif #ifndef DEP_DIR # include "defs.h" #endif #ifndef __BIF_DEF__ # include "bif.h" #endif #ifndef __LL_DEF__ # include "ll.h" #endif #ifndef __SYMB_DEF__ # include "symb.h" #endif #ifndef MAX_LP_DEPTH # include "sets.h" #endif /* * Definitions for inquiring the information about variables */ #define Use 1 /* for inquiring USE info */ #define Mod 2 /* for inquiring MOD info */ #define UseMod 3 /* for inquiring both USE and MOD info */ #define Alias 4 /* for inquiring ALIAS information */ /* * Definitions for inquiring the information about procedures * This previous four definitions are shared here */ #define ProcDef 5 /* procedure's definition */ #define CallSite 6 /* list of the call sites of this procedure */ #define CallSiteE 7 /* the call sites extended with loop info */ #define ExternProc 8 /* list of external procedures references */ /* * Definitions for inquiring the information about files */ #define IncludeFile 1 /* list of files included by this file */ #define GlobalVarRef 2 /* list of global variables referenced */ #define ExternProcRef 3 /* list of external procedure referenced */ /* * Definitions for inquiring the information about project */ #define ProjFiles 1 /* get a list of .dep files make up the project */ #define ProjNames 2 /* list of all procedures in the project */ #define UnsolvRef 3 /* list of unsolved global references */ #define ProjGlobals 4 /* list of all global declarations */ #define ProjSrc 5 /* list of source files (e.g. .h, .c and .f) */ /* * Definition for blobl tree */ #define IsLnk 0 /* this blob1 node is only a link */ #define IsObj 1 /* this blob1 node is a real object */ /***************************** * Some data structures used * ******************************/ typedef struct proj_obj *PTR_PROJ; typedef struct file_obj *PTR_FILE; typedef struct blob1 *PTR_BLOB1; typedef struct obj_info *PTR_INFO; typedef char *(*PCF)(); /* * structure for the whole project */ struct proj_obj { char *proj_name; /* project filename */ PTR_BLOB file_chain; /* list of all opened files in the project */ PTR_BLOB *hash_tbl; /* hash table of procedures declared */ PTR_PROJ next; /* point to next project */ }; /* * Structure for each files in the project */ struct file_obj { char *filename; /* filename of the .dep file */ FILE *fid; /* its file id */ int lang; /* type of language */ PTR_HASH *hash_tbl; /* hash table for this file obj */ PTR_BFND global_bfnd; /* global BIF node for this file */ PTR_BFND head_bfnd, /* head of BIF node for this file */ cur_bfnd; PTR_LLND head_llnd, /* head of low level node */ cur_llnd; PTR_SYMB head_symb, /* head of symbol node */ cur_symb; PTR_TYPE head_type, /* head of type node */ cur_type; PTR_BLOB head_blob, /* head of blob node */ cur_blob; PTR_DEP head_dep, /* head of dependence node */ cur_dep; PTR_LABEL head_lab, /* head of label node */ cur_lab; PTR_CMNT head_cmnt, /* head of comment node */ cur_cmnt; PTR_FNAME head_file; int num_blobs, /* no. of blob nodes */ num_bfnds, /* no. of bif nodes */ num_llnds, /* no. of ll nodes */ num_symbs, /* no. of symb nodes */ num_label, /* no. of label nodes */ num_types, /* no. of type nodes */ num_files, /* no. of filename nodes */ num_dep, /* no. of dependence nodes */ num_cmnt; /* no. of comment nodes */ }; /* * A cons obj structure */ struct blob1{ char tag; /* type of this blob node */ char *ref; /* pointer to the objects of interest */ PTR_BLOB1 next;/* point to next cons obj */ }; /* * Structure for information objects */ struct obj_info { char *filename; /* filename of the reference */ int g_line; /* absolute line number in the file */ int l_line; /* relative line number to the object */ char *source; /* source line */ }; /* * Structure for property list */ struct prop_link { char *prop_name; /* property name */ char *prop_val; /* property value */ PTR_PLNK next; /* point to the next property list */ }; /* * declaration of data base routines */ PTR_PROJ OpenProj(); PTR_PROJ SelectProj(); PTR_BLOB1 GetProjInfo(); PTR_BLOB1 GetProcInfo(); PTR_BLOB1 GetTypeInfo(); PTR_BLOB1 GetTypeDef (); PTR_BLOB1 GetVarInfo (); PTR_BLOB1 GetDepInfo (); int AddToProj(); int DelFromProj(); #endif /* CallSiteE */