Beispiel #1
0
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);
}
Beispiel #2
0
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);
}
Beispiel #3
0
Bool
otIsConstSyme(Syme syme)
{
	Bool	result = true;

	if (syme == NULL || symeHasDefault(syme))
		result = false;

	else if (symeIsImport(syme)) {
		TForm	tf = symeExporter(syme);
		if (tfIsGeneral(tf) && otSefoIsParameterized(tfExpr(tf)))
			result = false;
	}

	return result;
}