214 #include <config_auto.h> 218 #include "allheaders.h" 241 DLLIST *elem, *next, *head;
243 PROCNAME(
"listDestroy");
246 L_WARNING(
"ptr address is null!\n", procName);
250 if ((head = *phead) == NULL)
253 for (elem = head; elem; elem = next) {
255 L_WARNING(
"list data ptr is not null\n", procName);
284 PROCNAME(
"listAddToHead");
287 return ERROR_INT(
"&head not defined", procName, 1);
290 return ERROR_INT(
"data not defined", procName, 1);
335 DLLIST *cell, *head, *tail;
337 PROCNAME(
"listAddToTail");
340 return ERROR_INT(
"&head not defined", procName, 1);
343 return ERROR_INT(
"&tail not defined", procName, 1);
345 return ERROR_INT(
"data not defined", procName, 1);
356 if ((tail = *ptail) == NULL)
398 PROCNAME(
"listInsertBefore");
401 return ERROR_INT(
"&head not defined", procName, 1);
404 return ERROR_INT(
"data not defined", procName, 1);
405 if ((!head && elem) || (head && !elem))
406 return ERROR_INT(
"head and elem not consistent", procName, 1);
415 }
else if (head == elem) {
421 cell->prev = elem->prev;
423 elem->prev->next = cell;
461 PROCNAME(
"listInsertAfter");
464 return ERROR_INT(
"&head not defined", procName, 1);
467 return ERROR_INT(
"data not defined", procName, 1);
468 if ((!head && elem) || (head && !elem))
469 return ERROR_INT(
"head and elem not consistent", procName, 1);
478 }
else if (elem->next == NULL) {
484 cell->next = elem->next;
485 elem->next->prev = cell;
514 PROCNAME(
"listRemoveElement");
517 return (
void *)ERROR_PTR(
"&head not defined", procName, NULL);
520 return (
void *)ERROR_PTR(
"head not defined", procName, NULL);
522 return (
void *)ERROR_PTR(
"elem not defined", procName, NULL);
526 if (head->next == NULL) {
528 return (
void *)ERROR_PTR(
"elem must be head", procName, NULL);
530 }
else if (head == elem) {
531 elem->next->prev = NULL;
533 }
else if (elem->next == NULL) {
534 elem->prev->next = NULL;
536 elem->next->prev = elem->prev;
537 elem->prev->next = elem->next;
565 PROCNAME(
"listRemoveFromHead");
568 return (
void *)ERROR_PTR(
"&head not defined", procName, NULL);
569 if ((head = *phead) == NULL)
570 return (
void *)ERROR_PTR(
"head not defined", procName, NULL);
572 if (head->next == NULL) {
575 head->next->prev = NULL;
614 PROCNAME(
"listRemoveFromTail");
617 return (
void *)ERROR_PTR(
"&head not defined", procName, NULL);
618 if ((head = *phead) == NULL)
619 return (
void *)ERROR_PTR(
"head not defined", procName, NULL);
621 return (
void *)ERROR_PTR(
"&tail not defined", procName, NULL);
622 if ((tail = *ptail) == NULL)
625 if (head->next == NULL) {
629 tail->prev->next = NULL;
667 PROCNAME(
"listFindElement");
670 return (
DLLIST *)ERROR_PTR(
"head not defined", procName, NULL);
672 return (
DLLIST *)ERROR_PTR(
"data not defined", procName, NULL);
674 for (cell = head; cell; cell = cell->next) {
675 if (cell->data == data)
694 PROCNAME(
"listFindTail");
697 return (
DLLIST *)ERROR_PTR(
"head not defined", procName, NULL);
699 for (cell = head; cell; cell = cell->next) {
700 if (cell->next == NULL)
704 return (
DLLIST *)ERROR_PTR(
"tail not found !!", procName, NULL);
720 PROCNAME(
"listGetCount");
723 return ERROR_INT(
"head not defined", procName, 0);
726 for (elem = head; elem; elem = elem->next)
750 PROCNAME(
"listReverse");
753 return ERROR_INT(
"&head not defined", procName, 1);
754 if ((head = *phead) == NULL)
755 return ERROR_INT(
"head not defined", procName, 1);
786 DLLIST *head1, *head2, *tail1;
788 PROCNAME(
"listJoin");
791 return ERROR_INT(
"&head1 not defined", procName, 1);
793 return ERROR_INT(
"&head2 not defined", procName, 1);
796 if ((head2 = *phead2) == NULL)
800 if ((head1 = *phead1) == NULL) {
void listDestroy(DLLIST **phead)
listDestroy()
void * listRemoveFromHead(DLLIST **phead)
listRemoveFromHead()
DLLIST * listFindTail(DLLIST *head)
listFindTail()
l_int32 listGetCount(DLLIST *head)
listGetCount()
void * listRemoveFromTail(DLLIST **phead, DLLIST **ptail)
listRemoveFromTail()
void * listRemoveElement(DLLIST **phead, DLLIST *elem)
listRemoveElement()
l_ok listReverse(DLLIST **phead)
listReverse()
l_ok listInsertBefore(DLLIST **phead, DLLIST *elem, void *data)
listInsertBefore()
l_ok listAddToTail(DLLIST **phead, DLLIST **ptail, void *data)
listAddToTail()
l_ok listAddToHead(DLLIST **phead, void *data)
listAddToHead()
l_ok listInsertAfter(DLLIST **phead, DLLIST *elem, void *data)
listInsertAfter()
l_ok listJoin(DLLIST **phead1, DLLIST **phead2)
listJoin()
DLLIST * listFindElement(DLLIST *head, void *data)
listFindElement()