1/* 2 * This module is used in the unittests for object identity. 3 */ 4#include "Python.h" 5#include "pyobjc-api.h" 6 7#include <CoreFoundation/CoreFoundation.h> 8 9@interface OC_TestCFSocket : NSObject 10-(id)newSocket; 11@end 12 13@implementation OC_TestCFSocket 14-(id)newSocket 15{ 16 CFSocketRef sock; 17 18 sock = CFSocketCreate(NULL, 0, 0, 0, 0, 0, 0); 19 return (id)sock; 20} 21@end 22 23static PyMethodDef mod_methods[] = { 24 { 0, 0, 0, 0 } 25}; 26 27#if PY_VERSION_HEX >= 0x03000000 28 29static struct PyModuleDef mod_module = { 30 PyModuleDef_HEAD_INIT, 31 "cfsocket", 32 NULL, 33 0, 34 mod_methods, 35 NULL, 36 NULL, 37 NULL, 38 NULL 39}; 40 41#define INITERROR() return NULL 42#define INITDONE() return m 43 44PyObject* PyInit_cfsocket(void); 45 46PyObject* 47PyInit_cfsocket(void) 48 49#else 50 51#define INITERROR() return 52#define INITDONE() return 53 54void initcfsocket(void); 55 56void 57initcfsocket(void) 58#endif 59{ 60 PyObject* m; 61 62#if PY_VERSION_HEX >= 0x03000000 63 m = PyModule_Create(&mod_module); 64#else 65 m = Py_InitModule4("cfsocket", mod_methods, 66 NULL, NULL, PYTHON_API_VERSION); 67#endif 68 if (!m) { 69 INITERROR(); 70 } 71 72 if (PyObjC_ImportAPI(m) < 0) { 73 INITERROR(); 74 } 75 76 if (PyModule_AddObject(m, "OC_TestCFSocket", 77 PyObjCClass_New([OC_TestCFSocket class])) < 0) { 78 INITERROR(); 79 } 80 81 INITDONE(); 82} 83