Leptonica 1.85.0
Image processing and image analysis suite
Loading...
Searching...
No Matches
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};
67typedef 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 */