std::vector<int> Expr::footprint(const Func& f) const { MLVal fp = footprintOfFuncInExpr(f.name(), contents->node); assert(!listEmpty(fp)); std::vector<int> footprint; for (; !listEmpty(fp); fp = listTail(fp)) { footprint.push_back(int(listHead(fp))); } return footprint; }
int main(int argc, char *argv[]) { Page *page = pageFetch("http://www.cs.columbia.edu/~sedwards/"); // printf("%s\n", page->url); // printf("%s\n", page->html); NODE * first = pageFind(page, "#titlebar"); printf("id: %s\n",elementAttr((Element*)listHead(first), "id")); printf("text: %s\n",elementText((Element*)listHead(first))); printf("type: %s\n\n\n",elementType((Element*)listHead(first))); NODE *child_list = elementChildren(page, (Element*)listHead(first)); Element * e = (Element*)listHead(listTail(child_list)); printf("text first child: %s\n",elementText(e)); printf("type first child: %s\n",elementType(e)); printf("id first child: %s\n",elementAttr(e,"id")); // // NODE * first = listNew(); // listAddLast(first, "a"); // listAddLast(first, "b"); // listAddLast(first, "c"); // listAddLast(first, "c"); // listAddLast(first, "d"); // listAddLast(first, "e"); // listPrint(first); // printf("\n"); // list_remove(first,3); // // listPrint(first); // printf("\n"); // // NODE * newFirst = listNew(); // NODE * f = listAddLast(newFirst, "f"); // listAddAfter(f,"G"); // listAddLast(newFirst, "h"); // listConcate(first,newFirst); // listPrint(first); // printf("\n"); // listSet(f,"F Modified"); // listPrint(first); // // // printf("should be a: %s\n",listHead(first)); // printf("should be b: %s\n",listHead(listTail(first))); return 0; }
int main(int argc, char *argv[]) { List list; Data *data[6]; int i, errors = 0; for (i = 0; i < 6; i++) { data[i] = calloc(1, sizeof(Data)); } listInitialize(&list); TEST_INT(listLength(&list), 0); TEST_INT(listIsEmpty(&list), TRUE); listAppendTail(&list, data[0]); listAppendTail(&list, data[1]); listAppendTail(&list, data[2]); listAppendTail(&list, data[3]); TEST_INT(listLength(&list), 4); TEST_INT(listIsEmpty(&list), FALSE); TEST_PTR(listHead(&list), data[0]); TEST_PTR(listTail(&list), data[3]); TEST_PTR(listNext(data[0]), data[1]); TEST_PTR(listNext(data[1]), data[2]); TEST_PTR(listNext(data[2]), data[3]); TEST_PTR(listNext(data[3]), NULL); TEST_PTR(listPrev(data[3]), data[2]); TEST_PTR(listPrev(data[2]), data[1]); TEST_PTR(listPrev(data[1]), data[0]); TEST_PTR(listPrev(data[0]), NULL); TEST_PTR(listContaining(data[0]), &list); TEST_PTR(listContaining(data[1]), &list); TEST_PTR(listContaining(data[2]), &list); TEST_PTR(listContaining(data[3]), &list); listRemove(&list, data[0]); listRemove(&list, data[1]); listRemove(&list, data[2]); listRemove(&list, data[3]); TEST_INT(listLength(&list), 0); TEST_INT(listIsEmpty(&list), TRUE); TEST_PTR(listContaining(data[0]), NULL); TEST_PTR(listContaining(data[1]), NULL); TEST_PTR(listContaining(data[2]), NULL); TEST_PTR(listContaining(data[3]), NULL); listInsertHead(&list, data[3]); listInsertHead(&list, data[2]); listInsertHead(&list, data[1]); listInsertHead(&list, data[0]); TEST_INT(listLength(&list), 4); TEST_INT(listIsEmpty(&list), FALSE); TEST_PTR(listHead(&list), data[0]); TEST_PTR(listTail(&list), data[3]); TEST_PTR(listNext(data[0]), data[1]); TEST_PTR(listNext(data[1]), data[2]); TEST_PTR(listNext(data[2]), data[3]); TEST_PTR(listNext(data[3]), NULL); TEST_PTR(listPrev(data[3]), data[2]); TEST_PTR(listPrev(data[2]), data[1]); TEST_PTR(listPrev(data[1]), data[0]); TEST_PTR(listPrev(data[0]), NULL); TEST_PTR(listRemoveHead(&list), data[0]); TEST_PTR(listRemoveHead(&list), data[1]); TEST_PTR(listRemoveTail(&list), data[3]); TEST_PTR(listRemoveTail(&list), data[2]); TEST_INT(listLength(&list), 0); TEST_INT(listIsEmpty(&list), TRUE); listAppendTail(&list, data[0]); listAppendTail(&list, data[3]); listAppend(&list, data[1], data[0]); listInsert(&list, data[2], data[3]); TEST_PTR(listRemoveHead(&list), data[0]); TEST_PTR(listRemoveHead(&list), data[1]); TEST_PTR(listRemoveTail(&list), data[3]); TEST_PTR(listRemoveTail(&list), data[2]); data[0]->i = 3; data[1]->i = 4; data[2]->i = 5; data[3]->i = 1; data[4]->i = 2; data[5]->i = 3; listAppendTail(&list, data[0]); listAppendTail(&list, data[1]); listAppendTail(&list, data[2]); listAppendTail(&list, data[3]); listAppendTail(&list, data[4]); listAppendTail(&list, data[5]); listSort(&list, cmp); TEST_PTR(listRemoveHead(&list), data[3]); TEST_PTR(listRemoveHead(&list), data[4]); TEST_PTR(listRemoveHead(&list), data[0]); TEST_PTR(listRemoveHead(&list), data[5]); TEST_PTR(listRemoveHead(&list), data[1]); TEST_PTR(listRemoveHead(&list), data[2]); exit(errors); }