OLD | NEW |
| (Empty) |
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 /* | |
6 * hashops.c | |
7 * | |
8 * This file includes a set of PLHashAllocOps that use NSSArenas. | |
9 */ | |
10 | |
11 #ifndef BASE_H | |
12 #include "base.h" | |
13 #endif /* BASE_H */ | |
14 | |
15 static void *PR_CALLBACK | |
16 nss_arena_hash_alloc_table(void *pool, PRSize size) | |
17 { | |
18 NSSArena *arena = (NSSArena *)NULL; | |
19 | |
20 #ifdef NSSDEBUG | |
21 if ((void *)NULL != arena) { | |
22 if (PR_SUCCESS != nssArena_verifyPointer(arena)) { | |
23 return (void *)NULL; | |
24 } | |
25 } | |
26 #endif /* NSSDEBUG */ | |
27 | |
28 return nss_ZAlloc(arena, size); | |
29 } | |
30 | |
31 static void PR_CALLBACK | |
32 nss_arena_hash_free_table(void *pool, void *item) | |
33 { | |
34 (void)nss_ZFreeIf(item); | |
35 } | |
36 | |
37 static PLHashEntry *PR_CALLBACK | |
38 nss_arena_hash_alloc_entry(void *pool, const void *key) | |
39 { | |
40 NSSArena *arena = NULL; | |
41 | |
42 #ifdef NSSDEBUG | |
43 if ((void *)NULL != arena) { | |
44 if (PR_SUCCESS != nssArena_verifyPointer(arena)) { | |
45 return (void *)NULL; | |
46 } | |
47 } | |
48 #endif /* NSSDEBUG */ | |
49 | |
50 return nss_ZNEW(arena, PLHashEntry); | |
51 } | |
52 | |
53 static void PR_CALLBACK | |
54 nss_arena_hash_free_entry(void *pool, PLHashEntry *he, PRUintn flag) | |
55 { | |
56 if (HT_FREE_ENTRY == flag) { | |
57 (void)nss_ZFreeIf(he); | |
58 } | |
59 } | |
60 | |
61 NSS_IMPLEMENT_DATA PLHashAllocOps nssArenaHashAllocOps = { | |
62 nss_arena_hash_alloc_table, nss_arena_hash_free_table, | |
63 nss_arena_hash_alloc_entry, nss_arena_hash_free_entry | |
64 }; | |
OLD | NEW |