@@ -11,6 +11,8 @@ typedef struct {
11
11
Py_ssize_t references ;
12
12
} testBufObject ;
13
13
14
+ #define testBufObject_CAST (op ) ((testBufObject *)(op))
15
+
14
16
static PyObject *
15
17
testbuf_new (PyTypeObject * type , PyObject * args , PyObject * kwds )
16
18
{
@@ -29,30 +31,34 @@ testbuf_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
29
31
}
30
32
31
33
static int
32
- testbuf_traverse (testBufObject * self , visitproc visit , void * arg )
34
+ testbuf_traverse (PyObject * op , visitproc visit , void * arg )
33
35
{
36
+ testBufObject * self = testBufObject_CAST (op );
34
37
Py_VISIT (self -> obj );
35
38
return 0 ;
36
39
}
37
40
38
41
static int
39
- testbuf_clear (testBufObject * self )
42
+ testbuf_clear (PyObject * op )
40
43
{
44
+ testBufObject * self = testBufObject_CAST (op );
41
45
Py_CLEAR (self -> obj );
42
46
return 0 ;
43
47
}
44
48
45
49
static void
46
- testbuf_dealloc (testBufObject * self )
50
+ testbuf_dealloc (PyObject * op )
47
51
{
52
+ testBufObject * self = testBufObject_CAST (op );
48
53
PyObject_GC_UnTrack (self );
49
54
Py_XDECREF (self -> obj );
50
- Py_TYPE (self )-> tp_free (( PyObject * ) self );
55
+ Py_TYPE (self )-> tp_free (self );
51
56
}
52
57
53
58
static int
54
- testbuf_getbuf (testBufObject * self , Py_buffer * view , int flags )
59
+ testbuf_getbuf (PyObject * op , Py_buffer * view , int flags )
55
60
{
61
+ testBufObject * self = testBufObject_CAST (op );
56
62
int buf = PyObject_GetBuffer (self -> obj , view , flags );
57
63
if (buf == 0 ) {
58
64
Py_SETREF (view -> obj , Py_NewRef (self ));
@@ -62,15 +68,16 @@ testbuf_getbuf(testBufObject *self, Py_buffer *view, int flags)
62
68
}
63
69
64
70
static void
65
- testbuf_releasebuf (testBufObject * self , Py_buffer * view )
71
+ testbuf_releasebuf (PyObject * op , Py_buffer * Py_UNUSED ( view ) )
66
72
{
73
+ testBufObject * self = testBufObject_CAST (op );
67
74
self -> references -- ;
68
75
assert (self -> references >= 0 );
69
76
}
70
77
71
78
static PyBufferProcs testbuf_as_buffer = {
72
- .bf_getbuffer = ( getbufferproc ) testbuf_getbuf ,
73
- .bf_releasebuffer = ( releasebufferproc ) testbuf_releasebuf ,
79
+ .bf_getbuffer = testbuf_getbuf ,
80
+ .bf_releasebuffer = testbuf_releasebuf ,
74
81
};
75
82
76
83
static struct PyMemberDef testbuf_members [] = {
@@ -84,9 +91,9 @@ static PyTypeObject testBufType = {
84
91
.tp_basicsize = sizeof (testBufObject ),
85
92
.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC ,
86
93
.tp_new = testbuf_new ,
87
- .tp_dealloc = ( destructor ) testbuf_dealloc ,
88
- .tp_traverse = ( traverseproc ) testbuf_traverse ,
89
- .tp_clear = ( inquiry ) testbuf_clear ,
94
+ .tp_dealloc = testbuf_dealloc ,
95
+ .tp_traverse = testbuf_traverse ,
96
+ .tp_clear = testbuf_clear ,
90
97
.tp_as_buffer = & testbuf_as_buffer ,
91
98
.tp_members = testbuf_members
92
99
};
0 commit comments