@@ -77,7 +77,7 @@ _csv_traverse(PyObject *module, visitproc visit, void *arg)
7777static  void 
7878_csv_free (void  * module )
7979{
80-    _csv_clear ((PyObject  * )module );
80+     ( void ) _csv_clear ((PyObject  * )module );
8181}
8282
8383typedef  enum  {
@@ -151,6 +151,10 @@ typedef struct {
151151    PyObject  * error_obj ;       /* cached error object */ 
152152} WriterObj ;
153153
154+ #define  _DialectObj_CAST (op )    ((DialectObj *)(op))
155+ #define  _ReaderObj_CAST (op )     ((ReaderObj *)(op))
156+ #define  _WriterObj_CAST (op )     ((WriterObj *)(op))
157+ 
154158/* 
155159 * DIALECT class 
156160 */ 
@@ -176,32 +180,37 @@ get_char_or_None(Py_UCS4 c)
176180}
177181
178182static  PyObject  * 
179- Dialect_get_lineterminator (DialectObj   * self , void  * Py_UNUSED (ignored ))
183+ Dialect_get_lineterminator (PyObject   * op , void  * Py_UNUSED (ignored ))
180184{
185+     DialectObj  * self  =  _DialectObj_CAST (op );
181186    return  Py_XNewRef (self -> lineterminator );
182187}
183188
184189static  PyObject  * 
185- Dialect_get_delimiter (DialectObj   * self , void  * Py_UNUSED (ignored ))
190+ Dialect_get_delimiter (PyObject   * op , void  * Py_UNUSED (ignored ))
186191{
192+     DialectObj  * self  =  _DialectObj_CAST (op );
187193    return  get_char_or_None (self -> delimiter );
188194}
189195
190196static  PyObject  * 
191- Dialect_get_escapechar (DialectObj   * self , void  * Py_UNUSED (ignored ))
197+ Dialect_get_escapechar (PyObject   * op , void  * Py_UNUSED (ignored ))
192198{
199+     DialectObj  * self  =  _DialectObj_CAST (op );
193200    return  get_char_or_None (self -> escapechar );
194201}
195202
196203static  PyObject  * 
197- Dialect_get_quotechar (DialectObj   * self , void  * Py_UNUSED (ignored ))
204+ Dialect_get_quotechar (PyObject   * op , void  * Py_UNUSED (ignored ))
198205{
206+     DialectObj  * self  =  _DialectObj_CAST (op );
199207    return  get_char_or_None (self -> quotechar );
200208}
201209
202210static  PyObject  * 
203- Dialect_get_quoting (DialectObj   * self , void  * Py_UNUSED (ignored ))
211+ Dialect_get_quoting (PyObject   * op , void  * Py_UNUSED (ignored ))
204212{
213+     DialectObj  * self  =  _DialectObj_CAST (op );
205214    return  PyLong_FromLong (self -> quoting );
206215}
207216
@@ -371,16 +380,16 @@ static struct PyMemberDef Dialect_memberlist[] = {
371380#undef  D_OFF
372381
373382static  PyGetSetDef  Dialect_getsetlist [] =  {
374-     {  "delimiter" ,          ( getter ) Dialect_get_delimiter },
375-     {  "escapechar" ,             ( getter ) Dialect_get_escapechar },
376-     {  "lineterminator" ,         ( getter ) Dialect_get_lineterminator },
377-     {  "quotechar" ,              ( getter ) Dialect_get_quotechar },
378-     {  "quoting" ,                ( getter ) Dialect_get_quoting },
383+     {"delimiter" ,          Dialect_get_delimiter },
384+     {"escapechar" ,         Dialect_get_escapechar },
385+     {"lineterminator" ,     Dialect_get_lineterminator },
386+     {"quotechar" ,          Dialect_get_quotechar },
387+     {"quoting" ,            Dialect_get_quoting },
379388    {NULL },
380389};
381390
382391static  void 
383- Dialect_dealloc (DialectObj  * self )
392+ Dialect_dealloc (PyObject  * self )
384393{
385394    PyTypeObject  * tp  =  Py_TYPE (self );
386395    PyObject_GC_UnTrack (self );
@@ -594,15 +603,17 @@ PyDoc_STRVAR(Dialect_Type_doc,
594603"The Dialect type records CSV parsing and generation options.\n" );
595604
596605static  int 
597- Dialect_clear (DialectObj   * self )
606+ Dialect_clear (PyObject   * op )
598607{
608+     DialectObj  * self  =  _DialectObj_CAST (op );
599609    Py_CLEAR (self -> lineterminator );
600610    return  0 ;
601611}
602612
603613static  int 
604- Dialect_traverse (DialectObj   * self , visitproc  visit , void  * arg )
614+ Dialect_traverse (PyObject   * op , visitproc  visit , void  * arg )
605615{
616+     DialectObj  * self  =  _DialectObj_CAST (op );
606617    Py_VISIT (self -> lineterminator );
607618    Py_VISIT (Py_TYPE (self ));
608619    return  0 ;
@@ -916,8 +927,10 @@ parse_reset(ReaderObj *self)
916927}
917928
918929static  PyObject  * 
919- Reader_iternext (ReaderObj   * self )
930+ Reader_iternext (PyObject   * op )
920931{
932+     ReaderObj  * self  =  _ReaderObj_CAST (op );
933+ 
921934    PyObject  * fields  =  NULL ;
922935    Py_UCS4  c ;
923936    Py_ssize_t  pos , linelen ;
@@ -982,11 +995,12 @@ Reader_iternext(ReaderObj *self)
982995}
983996
984997static  void 
985- Reader_dealloc (ReaderObj   * self )
998+ Reader_dealloc (PyObject   * op )
986999{
1000+     ReaderObj  * self  =  _ReaderObj_CAST (op );
9871001    PyTypeObject  * tp  =  Py_TYPE (self );
9881002    PyObject_GC_UnTrack (self );
989-     tp -> tp_clear (( PyObject   * ) self );
1003+     ( void ) tp -> tp_clear (op );
9901004    if  (self -> field  !=  NULL ) {
9911005        PyMem_Free (self -> field );
9921006        self -> field  =  NULL ;
@@ -996,8 +1010,9 @@ Reader_dealloc(ReaderObj *self)
9961010}
9971011
9981012static  int 
999- Reader_traverse (ReaderObj   * self , visitproc  visit , void  * arg )
1013+ Reader_traverse (PyObject   * op , visitproc  visit , void  * arg )
10001014{
1015+     ReaderObj  * self  =  _ReaderObj_CAST (op );
10011016    Py_VISIT (self -> dialect );
10021017    Py_VISIT (self -> input_iter );
10031018    Py_VISIT (self -> fields );
@@ -1006,8 +1021,9 @@ Reader_traverse(ReaderObj *self, visitproc visit, void *arg)
10061021}
10071022
10081023static  int 
1009- Reader_clear (ReaderObj   * self )
1024+ Reader_clear (PyObject   * op )
10101025{
1026+     ReaderObj  * self  =  _ReaderObj_CAST (op );
10111027    Py_CLEAR (self -> dialect );
10121028    Py_CLEAR (self -> input_iter );
10131029    Py_CLEAR (self -> fields );
@@ -1303,8 +1319,9 @@ PyDoc_STRVAR(csv_writerow_doc,
13031319"elements will be converted to string." );
13041320
13051321static  PyObject  * 
1306- csv_writerow (WriterObj   * self , PyObject  * seq )
1322+ csv_writerow (PyObject   * op , PyObject  * seq )
13071323{
1324+     WriterObj  * self  =  _WriterObj_CAST (op );
13081325    DialectObj  * dialect  =  self -> dialect ;
13091326    PyObject  * iter , * field , * line , * result ;
13101327    bool  null_field  =  false;
@@ -1412,7 +1429,7 @@ PyDoc_STRVAR(csv_writerows_doc,
14121429"elements will be converted to string." );
14131430
14141431static  PyObject  * 
1415- csv_writerows (WriterObj  * self , PyObject  * seqseq )
1432+ csv_writerows (PyObject  * self , PyObject  * seqseq )
14161433{
14171434    PyObject  * row_iter , * row_obj , * result ;
14181435
@@ -1437,9 +1454,9 @@ csv_writerows(WriterObj *self, PyObject *seqseq)
14371454}
14381455
14391456static  struct  PyMethodDef  Writer_methods [] =  {
1440-     {  "writerow" , ( PyCFunction ) csv_writerow , METH_O , csv_writerow_doc },
1441-     {  "writerows" , ( PyCFunction ) csv_writerows , METH_O , csv_writerows_doc },
1442-     {  NULL , NULL  } 
1457+     {"writerow" , csv_writerow , METH_O , csv_writerow_doc },
1458+     {"writerows" , csv_writerows , METH_O , csv_writerows_doc },
1459+     {NULL , NULL ,  0 ,  NULL }   /* sentinel */ 
14431460};
14441461
14451462#define  W_OFF (x ) offsetof(WriterObj, x)
@@ -1452,8 +1469,9 @@ static struct PyMemberDef Writer_memberlist[] = {
14521469#undef  W_OFF
14531470
14541471static  int 
1455- Writer_traverse (WriterObj   * self , visitproc  visit , void  * arg )
1472+ Writer_traverse (PyObject   * op , visitproc  visit , void  * arg )
14561473{
1474+     WriterObj  * self  =  _WriterObj_CAST (op );
14571475    Py_VISIT (self -> dialect );
14581476    Py_VISIT (self -> write );
14591477    Py_VISIT (self -> error_obj );
@@ -1462,20 +1480,22 @@ Writer_traverse(WriterObj *self, visitproc visit, void *arg)
14621480}
14631481
14641482static  int 
1465- Writer_clear (WriterObj   * self )
1483+ Writer_clear (PyObject   * op )
14661484{
1485+     WriterObj  * self  =  _WriterObj_CAST (op );
14671486    Py_CLEAR (self -> dialect );
14681487    Py_CLEAR (self -> write );
14691488    Py_CLEAR (self -> error_obj );
14701489    return  0 ;
14711490}
14721491
14731492static  void 
1474- Writer_dealloc (WriterObj   * self )
1493+ Writer_dealloc (PyObject   * op )
14751494{
1495+     WriterObj  * self  =  _WriterObj_CAST (op );
14761496    PyTypeObject  * tp  =  Py_TYPE (self );
14771497    PyObject_GC_UnTrack (self );
1478-     tp -> tp_clear (( PyObject   * ) self );
1498+     tp -> tp_clear (op );
14791499    if  (self -> rec  !=  NULL ) {
14801500        PyMem_Free (self -> rec );
14811501    }
0 commit comments