#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;
#if !OBJC_OLD_DISPATCH_PROTOTYPES
typedef void (*IMP)(void );
#else
typedef id (*IMP)(id, SEL, ...);
#endif
#define OBJC_BOOL_DEFINED
typedef signed char BOOL;
#if __has_feature(objc_bool)
#define YES __objc_yes
#define NO __objc_no
#else
#define YES ((BOOL)1)
#define NO ((BOOL)0)
#endif
#ifndef Nil
# if __has_feature(cxx_nullptr)
# define Nil nullptr
# else
# define Nil __DARWIN_NULL
# endif
#endif
#ifndef nil
# if __has_feature(cxx_nullptr)
# define nil nullptr
# else
# define nil __DARWIN_NULL
# endif
#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);
typedef const void* objc_objectptr_t;
#if __has_feature(objc_arc)
# define objc_retainedObject(o) ((__bridge_transfer id)(objc_objectptr_t)(o))
# define objc_unretainedObject(o) ((__bridge id)(objc_objectptr_t)(o))
# define objc_unretainedPointer(o) ((__bridge objc_objectptr_t)(id)(o))
#else
# define objc_retainedObject(o) ((id)(objc_objectptr_t)(o))
# define objc_unretainedObject(o) ((id)(objc_objectptr_t)(o))
# define objc_unretainedPointer(o) ((objc_objectptr_t)(id)(o))
#endif
#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