ASF_ASFConditionalEquationList ASF_unionASFConditionalEquationList(ASF_ASFConditionalEquationList cel1, ASF_OptLayout separator, ASF_ASFConditionalEquationList cel2) { if (!ASF_isASFConditionalEquationListEmpty(cel2)) { if (!ASF_isASFConditionalEquationListEmpty(cel1)) { int len1 = ASF_getASFConditionalEquationListLength(cel1); int len2 = ASF_getASFConditionalEquationListLength(cel2); ATermIndexedSet iSet = ATindexedSetCreate((len1+len2)*2, 75); ASF_ASFConditionalEquation ce; ASF_ASFConditionalEquationList newCel = ASF_makeASFConditionalEquationListEmpty(); int maxIndex = 0, index; while (ASF_hasASFConditionalEquationListHead(cel1)) { ce = ASF_getASFConditionalEquationListHead(cel1); index = ATindexedSetPut(iSet, ASF_ASFConditionalEquationToTerm(ce), NULL); if (index > maxIndex) { maxIndex = index; } if (ASF_hasASFConditionalEquationListTail(cel1)) { cel1 = ASF_getASFConditionalEquationListTail(cel1); } else { break; } } while (ASF_hasASFConditionalEquationListHead(cel2)) { ce = ASF_getASFConditionalEquationListHead(cel2); index = ATindexedSetPut(iSet, ASF_ASFConditionalEquationToTerm(ce), NULL); if (index > maxIndex) { maxIndex = index; } if (ASF_hasASFConditionalEquationListTail(cel2)) { cel2 = ASF_getASFConditionalEquationListTail(cel2); } else { break; } } for (index=0; index <= maxIndex; index++) { ce = ASF_ASFConditionalEquationFromTerm(ATindexedSetGetElem(iSet, index)); newCel = ASF_makeASFConditionalEquationListMany(ce, separator, newCel); } ATindexedSetDestroy(iSet); return newCel; } return cel2; } return cel1; }
ATerm HTgetTerm(HTable *table, long n) { return ATindexedSetGetElem(table->terms,n); }