void cmdlne_Free() /**************************************************************** INPUT: NONE RETURNS: Nothing. EFFECT: Free memory of module ***************************************************************/ { list_DeleteWithElement(cmdlne_ArgumentsList, (void (*) (POINTER)) cmdlne_FreePair); }
LIST list_NListTimes(LIST List1, LIST List2) /************************************************************** INPUT: Two lists of lists. RETURNS: The list of combinations of element lists. CAUTION: Destroys List1 and List2. ***************************************************************/ { LIST Result, Scan1, Scan2; Result = list_Nil(); if (!list_Empty(List2)) { for (Scan1=List1; !list_Empty(Scan1); Scan1=list_Cdr(Scan1)) for (Scan2=List2; !list_Empty(Scan2); Scan2=list_Cdr(Scan2)) Result = list_Cons(list_Append(((LIST)list_Car(Scan1)), list_Copy((LIST)list_Car(Scan2))), Result); } list_DeleteWithElement(List1, (void (*)(POINTER))list_Delete); list_DeleteWithElement(List2, (void (*)(POINTER))list_Delete); return Result; }
void st_IndexDelete(st_INDEX StIndex) /************************************************************** INPUT: A pointer to an existing St-Index. SUMMARY: Deletes the whole index structure. ***************************************************************/ { if (StIndex == NULL) return; else if (st_IsLeaf(StIndex)) list_Delete(StIndex->entries); else /* Recursion */ list_DeleteWithElement(StIndex->subnodes, (void (*)(POINTER))st_IndexDelete); subst_Delete(StIndex->subst); st_Free(StIndex); }