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 * pkix_pl_object.h | |
6 * | |
7 * Object Construction, Destruction and Callback Definitions | |
8 * | |
9 */ | |
10 | |
11 #ifndef _PKIX_PL_OBJECT_H | |
12 #define _PKIX_PL_OBJECT_H | |
13 | |
14 #include "pkix_pl_common.h" | |
15 | |
16 #ifdef __cplusplus | |
17 extern "C" { | |
18 #endif | |
19 | |
20 /* | |
21 * Object Implementation Notes: | |
22 * | |
23 * Allocating a new object creates an object header and a block of | |
24 * uninitialized user data. A pointer to this uninitialized data is | |
25 * returned to the user. The structure looks as follows: | |
26 * | |
27 * +--------------------+ | |
28 * | MAGIC HEADER | | |
29 * | (object header) | | |
30 * +--------------------+ | |
31 * | user data | -- pointer returned from PKIX_PL_Object_Alloc | |
32 * +--------------------+ | |
33 * | |
34 * Object operations receive a pointer to raw user data as an argument. | |
35 * The macro HEADER(object) returns a pointer to the object header. | |
36 * An assertion then verifies that the first field is the MAGIC_HEADER. | |
37 */ | |
38 | |
39 /* PKIX_PL_Object Structure Definition */ | |
40 struct PKIX_PL_ObjectStruct { | |
41 PRUint64 magicHeader; | |
42 PKIX_UInt32 type; | |
43 PKIX_Int32 references; | |
44 PRLock *lock; | |
45 PKIX_PL_String *stringRep; | |
46 PKIX_UInt32 hashcode; | |
47 PKIX_Boolean hashcodeCached; | |
48 }; | |
49 | |
50 /* see source file for function documentation */ | |
51 | |
52 PKIX_Error * | |
53 pkix_pl_Object_RetrieveEqualsCallback( | |
54 PKIX_PL_Object *object, | |
55 PKIX_PL_EqualsCallback *equalsCallback, | |
56 void *plContext); | |
57 | |
58 extern PKIX_Boolean initializing; | |
59 extern PKIX_Boolean initialized; | |
60 | |
61 #ifdef PKIX_USER_OBJECT_TYPE | |
62 | |
63 extern PRLock *classTableLock; | |
64 | |
65 #endif | |
66 | |
67 extern pkix_ClassTable_Entry systemClasses[PKIX_NUMTYPES]; | |
68 | |
69 PKIX_Error * | |
70 pkix_pl_Object_RegisterSelf(void *plContext); | |
71 | |
72 #ifdef __cplusplus | |
73 } | |
74 #endif | |
75 | |
76 #endif /* _PKIX_PL_OBJECT_H */ | |
OLD | NEW |