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