#include "list.h" int traceList=0; struct VoidNode : public Node { }; int ListCount(List *l) { return l->count(); } #if 1 struct LinkedString : public Node { char *string; }; struct LinkedStringPrintInfos { int fd; int index; }; bool linkedStringPrint(LinkedString *n,LinkedStringPrintInfos *infos) { //fdprintf(infos->fd,"string %d:%s\n",infos->index,n->string); infos->index++; return false; } void linkedStringsPrint(int fd,List *l) { LinkedStringPrintInfos infos[1]; infos->fd=fd; infos->index=0; l->each((List::eachFunc)linkedStringPrint,(void *)infos); } int listTest() { List stringList[1]; LinkedString lss[4]; lss[0].string="0"; lss[1].string="1"; lss[2].string="2"; lss[3].string="3"; stringList->init(); stringList->add(&lss[0]); stringList->add(&lss[1]); stringList->add(&lss[2]); stringList->add(&lss[3]); linkedStringsPrint(0,stringList); stringList->init(); stringList->queue(&lss[0]); stringList->queue(&lss[1]); stringList->queue(&lss[2]); stringList->queue(&lss[3]); linkedStringsPrint(0,stringList); return 0; } int listTestIterator() { List stringList[1]; LinkedString lss[4]; lss[0].string="0"; lss[1].string="1"; lss[2].string="2"; lss[3].string="3"; stringList->init(); stringList->add(&lss[0]); stringList->add(&lss[1]); stringList->add(&lss[2]); stringList->add(&lss[3]); int pos=0; for(ListIterator i(stringList);(bool)i;i++,pos++) { //printf("string %d:%s\n",pos,i->string); } stringList->init(); stringList->queue(&lss[0]); stringList->queue(&lss[1]); stringList->queue(&lss[2]); stringList->queue(&lss[3]); pos=0; for(ListIterator i(stringList);(bool)i;i++,pos++) { //printf("string %d:%s\n",pos,i->string); } return 0; } #endif /* __list_h_test__ */