30 #define DISABLE_DEBUGLOG
34 #include <gwenhywfar/misc.h>
35 #include <gwenhywfar/debug.h>
84 if (--(lp->refCount)==0) {
107 GWEN_LIST_ENTRY *nle;
128 GWEN_LIST_ENTRY *nle;
134 nle->previous=nlp->last;
141 nle->linkCount=le->linkCount;
185 nl->listPtr=l->listPtr;
194 return l->refPtrInfo;
213 if (l->listPtr->refCount>1) {
225 le->previous=lp->last;
247 if (l->listPtr->refCount>1) {
261 lp->first->previous=le;
280 if (l->listPtr->first)
290 if (l->listPtr->first)
291 return l->listPtr->first->dataPtr;
300 if (l->listPtr->last)
310 if (l->listPtr->last)
311 return l->listPtr->last->dataPtr;
320 return l->listPtr->size;
334 if (l->listPtr->last==0)
336 if (l->listPtr->refCount>1) {
349 lp->last=le->previous;
351 le->previous->next=0;
370 if (l->listPtr->first==0)
372 if (l->listPtr->refCount>1) {
387 le->next->previous=0;
404 if (l->listPtr->refCount>1) {
429 el=fn(el, user_data);
443 if (l->listPtr->refCount>1) {
456 GWEN_LIST_ENTRY *current;
461 if (l->listPtr->refCount>1) {
462 GWEN_LIST_ENTRY *tle;
470 while(tle->previous) {
481 tle=l->listPtr->first;
494 if (it->current->linkCount==1) {
496 if (lp->first==current)
497 lp->first=current->next;
498 if (lp->last==current)
499 lp->last=current->previous;
503 it->current=current->next;
504 current->next->usage++;
505 current->next->previous=current->previous;
510 if (current->previous)
511 current->previous->next=current->next;
523 it->current=current->next;
524 current->next->usage++;
529 it->current->linkCount--;
587 if (l->listPtr->first==0)
590 li->current=l->listPtr->first;
592 li->current->usage++;
604 if (l->listPtr->last==0)
607 li->current=l->listPtr->last;
609 li->current->usage++;
619 fprintf(f,
"List contains %d entries\n", l->listPtr->size);
620 le=l->listPtr->first;
622 for (i=0; i<indent; i++) fprintf(f,
" ");
623 fprintf(f,
"List entry %p\n", (
void*)le);
624 for (i=0; i<indent; i++) fprintf(f,
" ");
625 fprintf(f,
" Usage : %d\n", le->usage);
626 for (i=0; i<indent; i++) fprintf(f,
" ");
627 fprintf(f,
" Previous: %p\n", (
void*)le->previous);
628 for (i=0; i<indent; i++) fprintf(f,
" ");
629 fprintf(f,
" Next : %p\n", (
void*)le->next);
630 for (i=0; i<indent; i++) fprintf(f,
" ");
737 return li->current->dataPtr;
747 li->current->linkCount++;
756 return li->current->linkCount;
855 el = fn(el, user_data);