예제 #1
0
파일: syme.c 프로젝트: hemmecke/aldor
void
symeSetLib(Syme syme, Lib lib)
{
	Lib clib = NULL;

	if (syme->kind != SYME_Trigger 
		 && syme->lib != NULL 
		 && symeSameLibs(syme))
		clib = symeConstLib(syme);

	syme->lib = lib;

	if (clib)
		symeSetConstLib(syme, clib);
}
예제 #2
0
파일: gf_syme.c 프로젝트: dokterp/aldor
void
otTransferFoamInfoToSyme(Syme syme, Foam unit)
{
	Foam def, prog;
	int cNum = symeConstNum(syme);
	
	if (symeConstLib(syme) == NULL &&
	    cNum != SYME_NUMBER_UNASSIGNED) {
		def = unit->foamUnit.defs->foamDDef.argv[cNum];
		prog = def->foamDef.rhs;
		if (foamTag(prog) == FOAM_Prog && 
		    foamProgHasNoEnvUse(prog))
			otSymeConstSetEnvIndep(syme);
		else
			otSymeConstClrEnvIndep(syme);
	}
}
예제 #3
0
파일: gf_syme.c 프로젝트: dokterp/aldor
Bool
genHasConstNum(Syme syme)
{
	Length	dindex;
	
	if (symeExtension(syme))
		syme = symeExtension(syme);

	if (symeHasConstNum(syme) && 
	    symeConstLib(syme) != NULL)
		return true;

	dindex = symeDefnNum(syme);
	
	if (0 < dindex && dindex < gen0SymeTableC && gen0SymeTableV[dindex]) {
		symeSetConstNum(syme, symeConstNum(gen0SymeTableV[dindex]));
		symeSetHashNum(syme,  symeHashNum(gen0SymeTableV[dindex]));
		symeSetDVMark(syme,   symeDVMark(gen0SymeTableV[dindex]));
	}

	return symeHasConstNum(syme);
}