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; }
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; }