Bool otSymeIsFoamConst(Syme syme) { TForm tf; Sefo sf; if (syme == NULL) return false; if (symeHasDefault(syme)) return false; if (!otSymeConstEnvIndep(syme)) return false; if (!symeIsImport(syme) && !symeIsExport(syme)) return false; if (symeIsExport(syme)) return true; tf = symeExporter(syme); if (!tfIsGeneral(tf)) return true; sf = tfExpr(tf); if (abIsLeaf(sf)) return otIsConstSyme(abSyme(sf)); else return !otSefoIsParameterized(sf->abApply.op); }
Hash symeTypeCode(Syme syme) { Hash h = 0; h = symeHash(syme); if (h) return h; tfHashDEBUG(dbOut, "Hash: %s %pSyme %pTForm\n", symeString(syme), syme, symeType(syme)); if (symeIsExport(syme) || symeIsParam(syme) || symeIsSelf(syme)) { h = tfHash(symeType(syme)); symeHashArg(h, (Hash) symeKind(syme)); symeHashArg(h, symeDefLevel(syme)->hash); } else if (symeIsImport(syme)) { h = tfHash(symeType(syme)); symeHashArg(h, tfHash(symeExporter(syme))); } else { h = tfHash(symeType(syme)); symeHashArg(h, symeDefLevel(syme)->hash); } tfHashDEBUG(dbOut, "Hash: %s %pSyme = %d\n", symeString(syme), syme, h); return symeSetHash(syme, h); }
Bool symeTop(Syme syme) { return (symeIsExport(syme) || symeIsExtend(syme)) && symeOriginal(syme) == syme && listMemq(StabLevel)(stabFile(), symeDefLevel(syme)); }
Doc symeComment(Syme syme) { Doc doc; assert(symeIsExport(syme)); /* Use docNone if the comment is not present. */ doc = (Doc) symeGetFieldFn(syme, SYFI_Comment); if (doc == NULL) doc = docNone; return doc; }