#ifndef symTab_h #define symTab_h #define AN_OBJECT 0 #define AN_OPERATION 1 #define NIL 0 /* These are used for the arrays of names */ #define HASHSIZ 100000 #define NAMESIZ 10000 typedef char *NameArray[NAMESIZ] ; typedef char *HashArray[HASHSIZ] ; struct specification { struct object_list *objects; struct operation_list *operations; char *name; }; struct spec_list { struct specification spec; struct spec_list *next_spec; }; struct object_list { struct object *component; struct object_list *next_component; }; struct namelist { char *name; int start_pos,end_pos; /* each name has an associated position */ struct namelist *nextname; }; struct link_list { int link_type; int *link; struct link_list *next_link; }; struct graphics { /* Graphics function, or a pixmap */ int x; /* arguments to above function */ }; struct operation_list { struct operation *component; struct operation_list *next_component; }; struct equations { int x; }; struct object { /* general objects symbol table, i.e. for xfig2, dfi,at */ char *name; struct namelist *components; /* may be an object list later */ struct object *parent; struct namelist *operations; /* position in file of the object name */ int start_pos; int end_pos; }; struct operation { char *name; struct namelist *components; struct operaton *parent; struct namelist *inputs; struct namelist *outputs; int start_pos; int end_pos; }; #endif