Esempio n. 1
0
File: arch.c Progetto: dioptre/SABR
treeNode *nameNode(int tok,treeNode *stagesNode,int nameId,int objId,treeNode *set) {

    nodeType type;
    switch(tok) {
    case OBJECT:
        type = objType;
        break;
    case DESOBJECT:
        type = desObjType;
        if(!nameId) nameId = inventName("DesObj");
        break;
    case REQUIRE:
        type = reqType;
        if(!nameId) nameId = inventName("Req");
        break;
    case OPTION:
        type = optType;
        if(!nameId) nameId = addSymbol("+NoNameOpt+");
        break;
    case START:
        type = startType;
        break;
    case END:
        type = endType;
        break;
    case SYMBOLS:
        type = symType;
        break;
    default:
        assert(NULL,"No Token");
    }
    startSetData *notParsed = set->data;

    nameData *name = Malloc(sizeof(nameData));
    name->nameId = nameId;
    name->objId = objId;
    name->elabNum = 0;
    name->set = createSet(notParsed);

    treeNode *newNode = Malloc(sizeof(treeNode));
    newNode->type = type;
    newNode->data = name;
    newNode->stages = NULL;

    if(stagesNode) {
        newNode->stages = stagesNode->data;
        Free(stagesNode);
    }

    destroyLinked(set->spaces,singleFree);
    Free(set);
    return newNode;
}
Esempio n. 2
0
File: arch.c Progetto: dbunker/SABR
treeNode *transNode(int type,treeNode *stagesNode,int transId,int objId,treeNode *startSet,treeNode *endSet){

	treeNode *newNode = Malloc(sizeof(treeNode));
	newNode->stages = NULL;
	transData *data = Malloc(sizeof(transData));
	
	if(stagesNode){
		newNode->stages = stagesNode->data;
		Free(stagesNode);
	}

	if(!transId)
		transId = inventName("Trans");

	data->transId = transId;
	data->objId = objId;
	
	startSetData *notParsedStart = startSet->data;
	startSetData *notParsedEnd = endSet->data;
	
	data->startData = createSet(notParsedStart);
	data->endData = createSet(notParsedEnd);
	
	// either Trans, TransSim, or TransLock
	if(type == TRANSFORM)
		newNode->type = transType;
	else if(type == TRANSFORMSIM)
		newNode->type = transSimType;
    else if(type == TRANSFORMLOCK)
		newNode->type = transLockType;

	newNode->data = data;

	destroyLinked(startSet->spaces,singleFree);
	destroyLinked(endSet->spaces,singleFree);

	Free(startSet);
	Free(endSet);
	return newNode;
}