1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/jar/jar-ds.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,78 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#ifndef __JAR_DS_h_ 1.9 +#define __JAR_DS_h_ 1.10 + 1.11 +/* Typedefs */ 1.12 +typedef struct ZZLinkStr ZZLink; 1.13 +typedef struct ZZListStr ZZList; 1.14 + 1.15 +/* 1.16 +** Circular linked list. Each link contains a pointer to the object that 1.17 +** is actually in the list. 1.18 +*/ 1.19 +struct ZZLinkStr { 1.20 + ZZLink *next; 1.21 + ZZLink *prev; 1.22 + JAR_Item *thing; 1.23 +}; 1.24 + 1.25 +struct ZZListStr { 1.26 + ZZLink link; 1.27 +}; 1.28 + 1.29 +#define ZZ_InitList(lst) \ 1.30 +{ \ 1.31 + (lst)->link.next = &(lst)->link; \ 1.32 + (lst)->link.prev = &(lst)->link; \ 1.33 + (lst)->link.thing = 0; \ 1.34 +} 1.35 + 1.36 +#define ZZ_ListEmpty(lst) ((lst)->link.next == &(lst)->link) 1.37 + 1.38 +#define ZZ_ListHead(lst) ((lst)->link.next) 1.39 + 1.40 +#define ZZ_ListTail(lst) ((lst)->link.prev) 1.41 + 1.42 +#define ZZ_ListIterDone(lst,lnk) ((lnk) == &(lst)->link) 1.43 + 1.44 +#define ZZ_AppendLink(lst,lnk) \ 1.45 +{ \ 1.46 + (lnk)->next = &(lst)->link; \ 1.47 + (lnk)->prev = (lst)->link.prev; \ 1.48 + (lst)->link.prev->next = (lnk); \ 1.49 + (lst)->link.prev = (lnk); \ 1.50 +} 1.51 + 1.52 +#define ZZ_InsertLink(lst,lnk) \ 1.53 +{ \ 1.54 + (lnk)->next = (lst)->link.next; \ 1.55 + (lnk)->prev = &(lst)->link; \ 1.56 + (lst)->link.next->prev = (lnk); \ 1.57 + (lst)->link.next = (lnk); \ 1.58 +} 1.59 + 1.60 +#define ZZ_RemoveLink(lnk) \ 1.61 +{ \ 1.62 + (lnk)->next->prev = (lnk)->prev; \ 1.63 + (lnk)->prev->next = (lnk)->next; \ 1.64 + (lnk)->next = 0; \ 1.65 + (lnk)->prev = 0; \ 1.66 +} 1.67 + 1.68 +extern ZZLink * 1.69 +ZZ_NewLink(JAR_Item *thing); 1.70 + 1.71 +extern void 1.72 +ZZ_DestroyLink(ZZLink *link); 1.73 + 1.74 +extern ZZList * 1.75 +ZZ_NewList(void); 1.76 + 1.77 +extern void 1.78 +ZZ_DestroyList(ZZList *list); 1.79 + 1.80 + 1.81 +#endif /* __JAR_DS_h_ */