/[imapfilter]/imapfilter/struct.h
ViewVC logotype

Annotation of /imapfilter/struct.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (hide annotations)
Thu Jul 31 15:46:02 2003 UTC (20 years, 8 months ago) by lefcha
Branch: MAIN
CVS Tags: release-0_9
Branch point for: release-0_9-patches
File MIME type: text/plain
Broke up program files and created some new header files.

1 lefcha 1.1 #ifndef STRUCT_H
2     #define STRUCT_H
3    
4    
5     #include "imapfilter.h"
6     #include "account.h"
7    
8    
9     /*
10     * Find last node of linked list and append at the end of the list the
11     * supplied node.
12     */
13     #define APPEND_LINKED_LIST(FIRST, NODE, TYPE) \
14     { \
15     struct TYPE *POS; \
16     struct TYPE **APP; \
17     POS = FIRST; \
18     APP = &FIRST; \
19     while (POS) { \
20     APP = &(POS->next); \
21     POS = POS->next; \
22     } \
23     *APP = NODE; \
24     }
25    
26     /*
27     * Find, based on the key of the supplied node, the apropriate position for it
28     * in the tree, and then insert it there.
29     */
30     #define INSERT_TREE(ROOT, NODE, TYPE) \
31     { \
32     int CMP; \
33     struct TYPE *POS; \
34     struct TYPE **INS; \
35     INS = &ROOT; \
36     POS = ROOT; \
37     while (POS) { \
38     CMP = strncmp(NODE->key, POS->key, KEY_LEN); \
39     if (CMP < 0) { \
40     INS = &(POS->left); \
41     POS = POS->left; \
42     } else if (CMP > 0) { \
43     INS = &(POS->right); \
44     POS = POS->right; \
45     } else \
46     return ERROR_CONFIG_PARSE; \
47     } \
48     *INS = NODE; \
49     }
50    
51     /*
52     * Find, based on the key, the position of a node, and set accordingly the
53     * pointer supplied.
54     */
55     #define FIND_TREE(ROOT, KEY, PTR) \
56     { \
57     int CMP; \
58     PTR = ROOT; \
59     while (PTR) { \
60     CMP = strncmp(KEY, PTR->key, KEY_LEN); \
61     if (CMP < 0) \
62     PTR = PTR->left; \
63     else if (CMP > 0) \
64     PTR = PTR->right; \
65     else \
66     break; \
67     } \
68     }
69    
70    
71     #endif /* STRUCT_H */

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26