/**** **** Defintions for sym-aux.c. ****/ #ifdef gplusplus #include "cpplist++.h" #else #include "cpplist.h" #endif #include "list.h" /* * An empty SrcLoc value to use in building stand-alone tree nodes. */ static SrcLoc EmptyLoc = {0, 0, 0}; /* * Vars to hold max int and card values. */ int MAXCARD, MAXINT; /* * Queue of modules to check at end. */ #ifdef USEWITHCPP extern "C" CppList ModuleList; #else CppList ModuleList; #endif /* * Visible Functions */ SymtabEntry *LookupThisScope(char *); SymtabEntry *LookupStringThisScope(char *); SymtabEntry *LookupInThisScope(char*, Symtab*); SymtabEntry *LookupQid(nodep, nodep*); SymtabEntry *LookupQidNoError(nodep, nodep*); SymtabEntry *LookupQid1(nodep, bool, nodep*); TypeStruct LookupType(nodep); void EnterModule(nodep, SymClasses); void EnterProc(nodep); void ExitProc(TypeStruct, nodep); void LinkFormals(nodep); void LinkFPSections(nodep, nodep); void EnterImports(nodep); void EnterExports(nodep); void EnterConst(nodep, nodep); void EnterType(nodep, nodep); void EnterVars(nodep, TypeStruct); bool EnterVar(nodep, TypeStruct); int EnterEnumIdents(nodep, TypeStruct); void EnterParms(nodep, TypeStruct, bool); TypeStruct BuildOpenArrayType(TypeStruct, List*); TypeStruct BuildOpenArrayTypeSize(TypeStruct, int, List*); TypeStruct BuildAnonUnion(nodep t, List* types); void ExitRecord(TypeStruct); void EnterRecord(); void EnterField(); void ExitVariant(nodep, nodep, nodep, nodep); bool isTypeIdent(TypeStruct); void EnterVariant(); void EnterVariantField(); void InstallBuiltInSyms(); SymtabEntry *InstallProc(char *, ValueStruct (*f)(), bool, TypeStruct (*cf)()); SymtabEntry *InstallFormal(SymtabEntry *, char *, TypeStruct, int, int); void InstallObj(char *name, int size, ValTag tag); void InstallAttr(char *name); void EnterAnonOpName(int num); SymtabEntry* EnterObjectName(nodep obj, nodep namenode); void EnterOpName(nodep namenode); SymtabEntry* EnterOperation(nodep t); SymtabEntry* EnterFunction(nodep t); bool chkForLegalOpOverload(SymtabEntry* sym); void EnterOpInParm( nodep nametypepair, /* A ':' DECL_NODE */ bool islist); /* True if this is a list parm */ void EnterOpOutParm( nodep nametypepair, /* A ':' DECL_NODE */ bool islist); /* True if this is a list parm */ SymtabEntry* EnterOpParm(nodep nametypepair, bool islist); void ProcessImports(nodep t); void ProcessImports1(nodep t); void BuildConstructorOp(SymtabEntry* sym, bool isdup); void chkForObjRedef(char* name, nodep namenode); bool MergeDupObjDefs(SymtabEntry* sym); bool isInitNameTypePair(nodep t); void FixRecordFieldsIfNecessary(TypeStruct t); nodep CopyAtomNode(nodep t); void EnterAxiom(nodep namenode, int num); void EnterTheorem(nodep namenode, int num); SymtabEntry* EnterFormalDecl(nodep namenode, char* name, int num);