#ifndef _OBJC_OBJC_H_
#define _OBJC_OBJC_H_
#include <sys/types.h> // for __DARWIN_NULL
#include <Availability.h>
#include <objc/objc-api.h>
typedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
typedef struct objc_selector *SEL;
typedef id (*IMP)(id, SEL, ...);
typedef signed char BOOL;
#define OBJC_BOOL_DEFINED
#define YES (BOOL)1
#define NO (BOOL)0
#ifndef Nil
#define Nil __DARWIN_NULL
#endif
#ifndef nil
#define nil __DARWIN_NULL
#endif
#if ! (defined(__OBJC_GC__) || __has_feature(objc_arr))
#define __strong
#endif
#if !__has_feature(objc_arr)
#define __unsafe_unretained
#define __autoreleasing
#endif
OBJC_EXPORT const char *sel_getName(SEL sel)
__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
OBJC_EXPORT SEL sel_registerName(const char *str)
__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
OBJC_EXPORT const char *object_getClassName(id obj)
__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
OBJC_EXPORT void *object_getIndexedIvars(id obj)
__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
OBJC_EXPORT BOOL sel_isMapped(SEL sel)
__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
OBJC_EXPORT SEL sel_getUid(const char *str)
__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
#ifndef CF_CONSUMED
#if __has_feature(attribute_cf_consumed)
#define CF_CONSUMED __attribute__((cf_consumed))
#else
#define CF_CONSUMED
#endif
#endif
#ifndef CF_RETURNS_NOT_RETAINED
#if __has_feature(attribute_cf_not_retained)
#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
#else
#define CF_RETURNS_NOT_RETAINED
#endif
#endif
#ifndef NS_RETURNS_RETAINED
#if __has_feature(attribute_ns_returns_retained)
#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
#else
#define NS_RETURNS_RETAINED
#endif
#endif
#ifndef NS_RETURNS_NOT_RETAINED
#if __has_feature(attribute_ns_returns_not_retained)
#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
#else
#define NS_RETURNS_NOT_RETAINED
#endif
#endif
typedef const void* objc_objectptr_t;
OBJC_EXPORT NS_RETURNS_RETAINED id objc_retainedObject(objc_objectptr_t CF_CONSUMED pointer)
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
OBJC_EXPORT NS_RETURNS_NOT_RETAINED id objc_unretainedObject(objc_objectptr_t pointer)
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
OBJC_EXPORT CF_RETURNS_NOT_RETAINED objc_objectptr_t objc_unretainedPointer(id object)
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_5_0);
#if !__OBJC2__
#if defined(__LP64__)
typedef long arith_t;
typedef unsigned long uarith_t;
# define ARITH_SHIFT 32
#else
typedef int arith_t;
typedef unsigned uarith_t;
# define ARITH_SHIFT 16
#endif
typedef char *STR;
#define ISSELECTOR(sel) sel_isMapped(sel)
#define SELNAME(sel) sel_getName(sel)
#define SELUID(str) sel_getUid(str)
#define NAMEOF(obj) object_getClassName(obj)
#define IV(obj) object_getIndexedIvars(obj)
#endif
#endif