1#ifndef OBJC_UTIL 2#define OBJC_UTIL 3 4#include <Foundation/NSException.h> 5#define THREADSTATE_AUTORELEASEPOOL "__threadstate_autoreleasepool" 6 7extern PyObject* PyObjCExc_Error; 8extern PyObject* PyObjCExc_NoSuchClassError; 9extern PyObject* PyObjCExc_InternalError; 10extern PyObject* PyObjCExc_UnInitDeallocWarning; 11extern PyObject* PyObjCExc_ObjCRevivalWarning; 12extern PyObject* PyObjCExc_LockError; 13extern PyObject* PyObjCExc_BadPrototypeError; 14extern PyObject* PyObjCExc_UnknownPointerError; 15 16int PyObjCUtil_Init(PyObject* module); 17 18void PyObjCErr_FromObjC(NSException* localException); 19void PyObjCErr_ToObjC(void) __attribute__((__noreturn__)); 20 21void PyObjCErr_ToObjCWithGILState(PyGILState_STATE* state) __attribute__((__noreturn__)); 22 23NSException* PyObjCErr_AsExc(void); 24 25PyObject* PyObjC_CallPython(id self, SEL selector, PyObject* arglist, BOOL* isAlloc, BOOL* isCFAlloc); 26 27char* PyObjCUtil_Strdup(const char* value); 28 29#include <Foundation/NSMapTable.h> 30extern NSMapTableKeyCallBacks PyObjCUtil_PointerKeyCallBacks; 31extern NSMapTableValueCallBacks PyObjCUtil_PointerValueCallBacks; 32 33extern NSMapTableKeyCallBacks PyObjCUtil_ObjCIdentityKeyCallBacks; 34extern NSMapTableValueCallBacks PyObjCUtil_ObjCValueCallBacks; 35 36void PyObjC_FreeCArray(int, void*); 37int PyObjC_PythonToCArray(BOOL, BOOL, const char*, PyObject*, void**, Py_ssize_t*, PyObject**); 38PyObject* PyObjC_CArrayToPython(const char*, void*, Py_ssize_t); 39PyObject* PyObjC_CArrayToPython2(const char*, void*, Py_ssize_t, bool already_retained, bool already_cfretained); 40int PyObjC_IsPythonKeyword(const char* word); 41 42 43extern int PyObjCRT_SimplifySignature(const char* signature, char* buf, size_t buflen); 44 45extern int PyObjCObject_Convert(PyObject* object, void* pvar); 46extern int PyObjCClass_Convert(PyObject* object, void* pvar); 47 48extern int PyObjC_is_ascii_string(PyObject* unicode_string, const char* ascii_string); 49extern int PyObjC_is_ascii_prefix(PyObject* unicode_string, const char* ascii_string, size_t n); 50 51extern PyObject* PyObjC_ImportName(const char* name); 52 53#endif /* OBJC_UTIL */ 54