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