pkix_list.h (2009B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 /* 5 * pkix_list.h 6 * 7 * List Object Type Definition 8 * 9 */ 10 11 #ifndef _PKIX_LIST_H 12 #define _PKIX_LIST_H 13 14 #include "pkix_tools.h" 15 16 #ifdef __cplusplus 17 extern "C" { 18 #endif 19 20 typedef PKIX_Error * 21 (*PKIX_List_SortComparatorCallback)( 22 PKIX_PL_Object *obj1, 23 PKIX_PL_Object *obj2, 24 PKIX_Int32 *pResult, 25 void *plContext); 26 27 struct PKIX_ListStruct { 28 PKIX_PL_Object *item; 29 PKIX_List *next; 30 PKIX_Boolean immutable; 31 PKIX_UInt32 length; 32 PKIX_Boolean isHeader; 33 }; 34 35 /* see source file for function documentation */ 36 37 PKIX_Error *pkix_List_RegisterSelf(void *plContext); 38 39 PKIX_Error * 40 pkix_List_Contains( 41 PKIX_List *list, 42 PKIX_PL_Object *object, 43 PKIX_Boolean *pFound, 44 void *plContext); 45 46 PKIX_Error * 47 pkix_List_Remove( 48 PKIX_List *list, 49 PKIX_PL_Object *target, 50 void *plContext); 51 52 PKIX_Error * 53 pkix_List_MergeLists( 54 PKIX_List *firstList, 55 PKIX_List *secondList, 56 PKIX_List **pMergedList, 57 void *plContext); 58 59 PKIX_Error * 60 pkix_List_AppendList( 61 PKIX_List *toList, 62 PKIX_List *fromList, 63 void *plContext); 64 65 PKIX_Error * 66 pkix_List_AppendUnique( 67 PKIX_List *toList, 68 PKIX_List *fromList, 69 void *plContext); 70 71 PKIX_Error * 72 pkix_List_RemoveItems( 73 PKIX_List *list, 74 PKIX_List *deleteList, 75 void *plContext); 76 77 PKIX_Error * 78 pkix_List_QuickSort( 79 PKIX_List *fromList, 80 PKIX_List_SortComparatorCallback comparator, 81 PKIX_List **pSortedList, 82 void *plContext); 83 84 PKIX_Error * 85 pkix_List_BubbleSort( 86 PKIX_List *fromList, 87 PKIX_List_SortComparatorCallback comparator, 88 PKIX_List **pSortedList, 89 void *plContext); 90 91 #ifdef __cplusplus 92 } 93 #endif 94 95 #endif /* _PKIX_LIST_H */