Leptonica  1.82.0
Image processing and image analysis suite
list.h
Go to the documentation of this file.
1 /*====================================================================*
2  - Copyright (C) 2001 Leptonica. All rights reserved.
3  -
4  - Redistribution and use in source and binary forms, with or without
5  - modification, are permitted provided that the following conditions
6  - are met:
7  - 1. Redistributions of source code must retain the above copyright
8  - notice, this list of conditions and the following disclaimer.
9  - 2. Redistributions in binary form must reproduce the above
10  - copyright notice, this list of conditions and the following
11  - disclaimer in the documentation and/or other materials
12  - provided with the distribution.
13  -
14  - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15  - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16  - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17  - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ANY
18  - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23  - NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  *====================================================================*/
26 
27 
28 #ifndef LEPTONICA_LIST_H
29 #define LEPTONICA_LIST_H
30 
62 {
63  struct DoubleLinkedList *prev;
64  struct DoubleLinkedList *next;
65  void *data;
66 };
67 typedef struct DoubleLinkedList DLLIST;
68 
69 
71 #define L_BEGIN_LIST_FORWARD(head, element) \
72  { \
73  DLLIST *_leptvar_nextelem_; \
74  for ((element) = (head); (element); (element) = _leptvar_nextelem_) { \
75  _leptvar_nextelem_ = (element)->next;
76 
77 
79 #define L_BEGIN_LIST_REVERSE(tail, element) \
80  { \
81  DLLIST *_leptvar_prevelem_; \
82  for ((element) = (tail); (element); (element) = _leptvar_prevelem_) { \
83  _leptvar_prevelem_ = (element)->prev;
84 
85 
87 #define L_END_LIST }}
88 
89 
90 #endif /* LEPTONICA_LIST_H */