Exemple #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);
}
Exemple #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);
}
Exemple #3
0
Bool
symeTop(Syme syme)
{
	return	(symeIsExport(syme) || symeIsExtend(syme)) &&
		symeOriginal(syme) == syme &&
		listMemq(StabLevel)(stabFile(), symeDefLevel(syme));
}
Exemple #4
0
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;
}