libmapi/dlinklist.h File Reference

Defines

#define DLIST_ADD(list, p)
#define DLIST_ADD_AFTER(list, p, el)
#define DLIST_ADD_END(list, p, type)
#define DLIST_CONCATENATE(list1, list2, type)
#define DLIST_DEMOTE(list, p, tmp)
#define DLIST_PROMOTE(list, p)
#define DLIST_REMOVE(list, p)

Define Documentation

#define DLIST_ADD ( list,
 ) 
Value:
do { \
        if (!(list)) { \
                (list) = (p); \
                (p)->next = (p)->prev = NULL; \
        } else { \
                (list)->prev = (p); \
                (p)->next = (list); \
                (p)->prev = NULL; \
                (list) = (p); \
        }\
} while (0)

Referenced by CreateBookmark(), mapi_id_array_add_id(), mapi_id_array_add_obj(), MapiLogonProvider(), and Subscribe().

#define DLIST_ADD_AFTER ( list,
p,
el   ) 
Value:
do { \
        if (!(list) || !(el)) { \
                DLIST_ADD(list, p); \
        } else { \
                p->prev = el; \
                p->next = el->next; \
                el->next = p; \
                if (p->next) p->next->prev = p; \
        }\
} while (0)
#define DLIST_ADD_END ( list,
p,
type   ) 
Value:
do { \
                if (!(list)) { \
                        (list) = (p); \
                        (p)->next = (p)->prev = NULL; \
                } else { \
                        type tmp; \
                        for (tmp = (list); tmp->next; tmp = tmp->next) ; \
                        tmp->next = (p); \
                        (p)->next = NULL; \
                        (p)->prev = tmp; \
                } \
} while (0)
#define DLIST_CONCATENATE ( list1,
list2,
type   ) 
Value:
do { \
                if (!(list1)) { \
                        (list1) = (list2); \
                } else { \
                        type tmp; \
                        for (tmp = (list1); tmp->next; tmp = tmp->next) ; \
                        tmp->next = (list2); \
                        if (list2) { \
                                (list2)->prev = tmp;    \
                        } \
                } \
} while (0)
#define DLIST_DEMOTE ( list,
p,
tmp   ) 
Value:
do { \
                DLIST_REMOVE(list, p); \
                DLIST_ADD_END(list, p, tmp); \
} while (0)
#define DLIST_PROMOTE ( list,
 ) 
Value:
do { \
          DLIST_REMOVE(list, p); \
          DLIST_ADD(list, p); \
} while (0)
#define DLIST_REMOVE ( list,
 ) 
Value:
do { \
        if ((p) == (list)) { \
                (list) = (p)->next; \
                if (list) (list)->prev = NULL; \
        } else { \
                if ((p)->prev) (p)->prev->next = (p)->next; \
                if ((p)->next) (p)->next->prev = (p)->prev; \
        } \
        if ((p) && ((p) != (list))) (p)->next = (p)->prev = NULL; \
} while (0)

Referenced by FreeBookmark(), Logoff(), mapi_id_array_del_id(), mapi_id_array_del_obj(), and Unsubscribe().


Creative Commons License
Creative Commons Attribution icon Creative Commons Share Alike icon
This content is licensed under the Creative Commons
Attribution ShareAlike License v. 3.0:
http://creativecommons.org/licenses/by-sa/3.0/