Leptonica  1.82.0
Image processing and image analysis suite
list.h File Reference

Go to the source code of this file.

Data Structures

struct  DoubleLinkedList
 

Macros

#define L_BEGIN_LIST_FORWARD(head, element)
 
#define L_BEGIN_LIST_REVERSE(tail, element)
 
#define L_END_LIST   }}
 

Typedefs

typedef struct DoubleLinkedList DLLIST
 

Detailed Description

      Cell for double-linked lists

      This allows composition of a list of cells with
          prev, next and data pointers.  Generic data
          structures hang on the list cell data pointers.

      The list is not circular because that would add much
          complexity in traversing the list under general
          conditions where list cells can be added and removed.
          The only disadvantage of not having the head point to
          the last cell is that the list must be traversed to
          find its tail.  However, this traversal is fast, and
          the listRemoveFromTail() function updates the tail
          so there is no searching overhead with repeated use.

      The list macros are used to run through a list, and their
      use is encouraged.  They are invoked, e.g., as

            DLLIST  *head, *elem;
            ...
            L_BEGIN_LIST_FORWARD(head, elem)
                <do something with elem and/or elem->data >
            L_END_LIST

Definition in file list.h.

Macro Definition Documentation

◆ L_BEGIN_LIST_FORWARD

#define L_BEGIN_LIST_FORWARD (   head,
  element 
)
Value:
{ \
DLLIST *_leptvar_nextelem_; \
for ((element) = (head); (element); (element) = _leptvar_nextelem_) { \
_leptvar_nextelem_ = (element)->next;

Simple list traverse macro - forward

Definition at line 71 of file list.h.

◆ L_BEGIN_LIST_REVERSE

#define L_BEGIN_LIST_REVERSE (   tail,
  element 
)
Value:
{ \
DLLIST *_leptvar_prevelem_; \
for ((element) = (tail); (element); (element) = _leptvar_prevelem_) { \
_leptvar_prevelem_ = (element)->prev;

Simple list traverse macro - reverse

Definition at line 79 of file list.h.

◆ L_END_LIST

#define L_END_LIST   }}

Simple list traverse macro - end of a list traverse

Definition at line 87 of file list.h.