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;
14
15int PyObjCUtil_Init(PyObject* module);
16
17void PyObjCErr_FromObjC(NSException* localException);
18void PyObjCErr_ToObjC(void);
19
20void PyObjCErr_ToObjCWithGILState(PyGILState_STATE* state);
21
22NSException* PyObjCErr_AsExc(void);
23
24PyObject* PyObjC_CallPython(id self, SEL selector, PyObject* arglist, BOOL* isAlloc, BOOL* isCFAlloc);
25
26char* PyObjCUtil_Strdup(const char* value);
27
28#include <Foundation/NSMapTable.h>
29extern NSMapTableKeyCallBacks PyObjCUtil_PointerKeyCallBacks;
30extern NSMapTableValueCallBacks PyObjCUtil_PointerValueCallBacks;
31
32extern NSMapTableKeyCallBacks PyObjCUtil_ObjCIdentityKeyCallBacks;
33extern NSMapTableValueCallBacks PyObjCUtil_ObjCValueCallBacks;
34
35void    PyObjC_FreeCArray(int, void*);
36int     PyObjC_PythonToCArray(BOOL, BOOL, const char*, PyObject*, void**, Py_ssize_t*, PyObject**);
37PyObject* PyObjC_CArrayToPython(const char*, void*, Py_ssize_t);
38PyObject* PyObjC_CArrayToPython2(const char*, void*, Py_ssize_t, bool already_retained, bool already_cfretained);
39int     PyObjC_IsPythonKeyword(const char* word);
40
41
42extern int PyObjCRT_SimplifySignature(char* signature, char* buf, size_t buflen);
43
44extern int PyObjCObject_Convert(PyObject* object, void* pvar);
45extern int PyObjCClass_Convert(PyObject* object, void* pvar);
46
47extern int PyObjC_is_ascii_string(PyObject* unicode_string, const char* ascii_string);
48extern int PyObjC_is_ascii_prefix(PyObject* unicode_string, const char* ascii_string, size_t n);
49
50extern PyObject* PyObjC_ImportName(const char* name);
51
52#endif /* OBJC_UTIL */
53