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; }
void HTfree(HTable *table){ ATindexedSetDestroy(table->terms); PTfree(&table->pointers); }
void SG_cleanupMarks(void) { ATindexedSetDestroy(marks); marks = NULL; }
int TDBdestroy(tdb_t tdb) { ATindexedSetDestroy(tdb->db); if (tdb->gzfile) GZclose(tdb->gzfile); free(tdb); return 0; }