1
2#ifndef OPENSOURCE
3#include <CoreFoundation/CoreFoundation.h>
4#include <CoreFoundation/CFRuntime.h>
5#endif
6
7struct heim_base {
8#ifndef OPENSOURCE
9    CFRuntimeBase base;
10#else
11#ifdef HEIM_BASE_INTERNAL
12    heim_type_t isa;
13    heim_base_atomic_type ref_cnt;
14    HEIM_TAILQ_ENTRY(heim_base) autorel;
15    heim_auto_release_t autorelpool;
16    uintptr_t isaextra[3];
17#else
18    void *data[8];
19#endif
20#endif
21};
22
23/* specialized version of base */
24struct heim_base_uniq {
25#ifndef OPENSOURCE
26    CFRuntimeBase base;
27    const char *name;
28    void (*dealloc)(void *);
29#else
30#ifdef HEIM_BASE_INTERNAL
31    heim_type_t isa;
32    heim_base_atomic_type ref_cnt;
33    HEIM_TAILQ_ENTRY(heim_base) autorel;
34    heim_auto_release_t autorelpool;
35    const char *name;
36    void (*dealloc)(void *);
37    uintptr_t isaextra[1];
38#else
39    void *data[8];
40#endif
41#endif
42};
43
44