@@ -79,6 +79,9 @@ get_array_state(PyObject *module)
79
79
#define get_array_state_by_class (cls ) \
80
80
(get_array_state(PyType_GetModule(cls)))
81
81
82
+ #define arrayobject_CAST (op ) ((arrayobject *)(op))
83
+ #define arrayiterobject_CAST (op ) ((arrayiterobject *)(op))
84
+
82
85
enum machine_format_code {
83
86
UNKNOWN_FORMAT = -1 ,
84
87
/* UNKNOWN_FORMAT is used to indicate that the machine format for an
@@ -712,22 +715,25 @@ ins1(arrayobject *self, Py_ssize_t where, PyObject *v)
712
715
/* Methods */
713
716
714
717
static int
715
- array_tp_traverse (arrayobject * op , visitproc visit , void * arg )
718
+ array_tp_traverse (PyObject * op , visitproc visit , void * arg )
716
719
{
717
720
Py_VISIT (Py_TYPE (op ));
718
721
return 0 ;
719
722
}
720
723
721
724
static void
722
- array_dealloc (arrayobject * op )
725
+ array_dealloc (PyObject * op )
723
726
{
724
727
PyTypeObject * tp = Py_TYPE (op );
725
728
PyObject_GC_UnTrack (op );
726
729
727
- if (op -> weakreflist != NULL )
728
- PyObject_ClearWeakRefs ((PyObject * ) op );
729
- if (op -> ob_item != NULL )
730
- PyMem_Free (op -> ob_item );
730
+ arrayobject * self = arrayobject_CAST (op );
731
+ if (self -> weakreflist != NULL ) {
732
+ PyObject_ClearWeakRefs (op );
733
+ }
734
+ if (self -> ob_item != NULL ) {
735
+ PyMem_Free (self -> ob_item );
736
+ }
731
737
tp -> tp_free (op );
732
738
Py_DECREF (tp );
733
739
}
@@ -843,19 +849,19 @@ array_richcompare(PyObject *v, PyObject *w, int op)
843
849
}
844
850
845
851
static Py_ssize_t
846
- array_length (arrayobject * a )
852
+ array_length (PyObject * op )
847
853
{
848
- return Py_SIZE (a );
854
+ return Py_SIZE (op );
849
855
}
850
856
851
857
static PyObject *
852
- array_item (arrayobject * a , Py_ssize_t i )
858
+ array_item (PyObject * op , Py_ssize_t i )
853
859
{
854
- if (i < 0 || i >= Py_SIZE (a )) {
860
+ if (i < 0 || i >= Py_SIZE (op )) {
855
861
PyErr_SetString (PyExc_IndexError , "array index out of range" );
856
862
return NULL ;
857
863
}
858
- return getarrayitem (( PyObject * ) a , i );
864
+ return getarrayitem (op , i );
859
865
}
860
866
861
867
static PyObject *
@@ -930,8 +936,9 @@ array_array___deepcopy__(arrayobject *self, PyObject *unused)
930
936
}
931
937
932
938
static PyObject *
933
- array_concat (arrayobject * a , PyObject * bb )
939
+ array_concat (PyObject * op , PyObject * bb )
934
940
{
941
+ arrayobject * a = arrayobject_CAST (op );
935
942
array_state * state = find_array_state_by_type (Py_TYPE (a ));
936
943
Py_ssize_t size ;
937
944
arrayobject * np ;
@@ -966,8 +973,9 @@ array_concat(arrayobject *a, PyObject *bb)
966
973
}
967
974
968
975
static PyObject *
969
- array_repeat (arrayobject * a , Py_ssize_t n )
976
+ array_repeat (PyObject * op , Py_ssize_t n )
970
977
{
978
+ arrayobject * a = arrayobject_CAST (op );
971
979
array_state * state = find_array_state_by_type (Py_TYPE (a ));
972
980
973
981
if (n < 0 )
@@ -1026,8 +1034,9 @@ array_del_slice(arrayobject *a, Py_ssize_t ilow, Py_ssize_t ihigh)
1026
1034
}
1027
1035
1028
1036
static int
1029
- array_ass_item (arrayobject * a , Py_ssize_t i , PyObject * v )
1037
+ array_ass_item (PyObject * op , Py_ssize_t i , PyObject * v )
1030
1038
{
1039
+ arrayobject * a = arrayobject_CAST (op );
1031
1040
if (i < 0 || i >= Py_SIZE (a )) {
1032
1041
PyErr_SetString (PyExc_IndexError ,
1033
1042
"array assignment index out of range" );
@@ -1045,7 +1054,7 @@ setarrayitem(PyObject *a, Py_ssize_t i, PyObject *v)
1045
1054
array_state * state = find_array_state_by_type (Py_TYPE (a ));
1046
1055
assert (array_Check (a , state ));
1047
1056
#endif
1048
- return array_ass_item (( arrayobject * ) a , i , v );
1057
+ return array_ass_item (a , i , v );
1049
1058
}
1050
1059
1051
1060
static int
@@ -1105,8 +1114,9 @@ array_do_extend(array_state *state, arrayobject *self, PyObject *bb)
1105
1114
}
1106
1115
1107
1116
static PyObject *
1108
- array_inplace_concat (arrayobject * self , PyObject * bb )
1117
+ array_inplace_concat (PyObject * op , PyObject * bb )
1109
1118
{
1119
+ arrayobject * self = arrayobject_CAST (op );
1110
1120
array_state * state = find_array_state_by_type (Py_TYPE (self ));
1111
1121
1112
1122
if (!array_Check (bb , state )) {
@@ -1121,8 +1131,9 @@ array_inplace_concat(arrayobject *self, PyObject *bb)
1121
1131
}
1122
1132
1123
1133
static PyObject *
1124
- array_inplace_repeat (arrayobject * self , Py_ssize_t n )
1134
+ array_inplace_repeat (PyObject * op , Py_ssize_t n )
1125
1135
{
1136
+ arrayobject * self = arrayobject_CAST (op );
1126
1137
const Py_ssize_t array_size = Py_SIZE (self );
1127
1138
1128
1139
if (array_size > 0 && n != 1 ) {
@@ -1236,13 +1247,13 @@ array_array_index_impl(arrayobject *self, PyObject *v, Py_ssize_t start,
1236
1247
}
1237
1248
1238
1249
static int
1239
- array_contains (arrayobject * self , PyObject * v )
1250
+ array_contains (PyObject * self , PyObject * v )
1240
1251
{
1241
1252
Py_ssize_t i ;
1242
1253
int cmp ;
1243
1254
1244
1255
for (i = 0 , cmp = 0 ; cmp == 0 && i < Py_SIZE (self ); i ++ ) {
1245
- PyObject * selfi = getarrayitem (( PyObject * ) self , i );
1256
+ PyObject * selfi = getarrayitem (self , i );
1246
1257
if (selfi == NULL )
1247
1258
return -1 ;
1248
1259
cmp = PyObject_RichCompareBool (selfi , v , Py_EQ );
@@ -2349,22 +2360,24 @@ array_array___reduce_ex___impl(arrayobject *self, PyTypeObject *cls,
2349
2360
}
2350
2361
2351
2362
static PyObject *
2352
- array_get_typecode (arrayobject * a , void * closure )
2363
+ array_get_typecode (PyObject * op , void * Py_UNUSED ( closure ) )
2353
2364
{
2365
+ arrayobject * a = arrayobject_CAST (op );
2354
2366
char typecode = a -> ob_descr -> typecode ;
2355
2367
return PyUnicode_FromOrdinal (typecode );
2356
2368
}
2357
2369
2358
2370
static PyObject *
2359
- array_get_itemsize (arrayobject * a , void * closure )
2371
+ array_get_itemsize (PyObject * op , void * Py_UNUSED ( closure ) )
2360
2372
{
2373
+ arrayobject * a = arrayobject_CAST (op );
2361
2374
return PyLong_FromLong ((long )a -> ob_descr -> itemsize );
2362
2375
}
2363
2376
2364
2377
static PyGetSetDef array_getsets [] = {
2365
- {"typecode" , ( getter ) array_get_typecode , NULL ,
2378
+ {"typecode" , array_get_typecode , NULL ,
2366
2379
"the typecode character used to create the array" },
2367
- {"itemsize" , ( getter ) array_get_itemsize , NULL ,
2380
+ {"itemsize" , array_get_itemsize , NULL ,
2368
2381
"the size, in bytes, of one array item" },
2369
2382
{NULL }
2370
2383
};
@@ -2398,11 +2411,12 @@ static PyMethodDef array_methods[] = {
2398
2411
};
2399
2412
2400
2413
static PyObject *
2401
- array_repr (arrayobject * a )
2414
+ array_repr (PyObject * op )
2402
2415
{
2403
2416
char typecode ;
2404
2417
PyObject * s , * v = NULL ;
2405
2418
Py_ssize_t len ;
2419
+ arrayobject * a = arrayobject_CAST (op );
2406
2420
2407
2421
len = Py_SIZE (a );
2408
2422
typecode = a -> ob_descr -> typecode ;
@@ -2425,8 +2439,9 @@ array_repr(arrayobject *a)
2425
2439
}
2426
2440
2427
2441
static PyObject *
2428
- array_subscr (arrayobject * self , PyObject * item )
2442
+ array_subscr (PyObject * op , PyObject * item )
2429
2443
{
2444
+ arrayobject * self = arrayobject_CAST (op );
2430
2445
array_state * state = find_array_state_by_type (Py_TYPE (self ));
2431
2446
2432
2447
if (PyIndex_Check (item )) {
@@ -2436,7 +2451,7 @@ array_subscr(arrayobject* self, PyObject* item)
2436
2451
}
2437
2452
if (i < 0 )
2438
2453
i += Py_SIZE (self );
2439
- return array_item (self , i );
2454
+ return array_item (op , i );
2440
2455
}
2441
2456
else if (PySlice_Check (item )) {
2442
2457
Py_ssize_t start , stop , step , slicelength , i ;
@@ -2488,9 +2503,10 @@ array_subscr(arrayobject* self, PyObject* item)
2488
2503
}
2489
2504
2490
2505
static int
2491
- array_ass_subscr (arrayobject * self , PyObject * item , PyObject * value )
2506
+ array_ass_subscr (PyObject * op , PyObject * item , PyObject * value )
2492
2507
{
2493
2508
Py_ssize_t start , stop , step , slicelength , needed ;
2509
+ arrayobject * self = arrayobject_CAST (op );
2494
2510
array_state * state = find_array_state_by_type (Py_TYPE (self ));
2495
2511
arrayobject * other ;
2496
2512
int itemsize ;
@@ -2542,7 +2558,7 @@ array_ass_subscr(arrayobject* self, PyObject* item, PyObject* value)
2542
2558
value = array_slice (other , 0 , needed );
2543
2559
if (value == NULL )
2544
2560
return -1 ;
2545
- ret = array_ass_subscr (self , item , value );
2561
+ ret = array_ass_subscr (op , item , value );
2546
2562
Py_DECREF (value );
2547
2563
return ret ;
2548
2564
}
@@ -2649,14 +2665,15 @@ static const void *emptybuf = "";
2649
2665
2650
2666
2651
2667
static int
2652
- array_buffer_getbuf (arrayobject * self , Py_buffer * view , int flags )
2668
+ array_buffer_getbuf (PyObject * op , Py_buffer * view , int flags )
2653
2669
{
2654
2670
if (view == NULL ) {
2655
2671
PyErr_SetString (PyExc_BufferError ,
2656
2672
"array_buffer_getbuf: view==NULL argument is obsolete" );
2657
2673
return -1 ;
2658
2674
}
2659
2675
2676
+ arrayobject * self = arrayobject_CAST (op );
2660
2677
view -> buf = (void * )self -> ob_item ;
2661
2678
view -> obj = Py_NewRef (self );
2662
2679
if (view -> buf == NULL )
@@ -2689,8 +2706,9 @@ array_buffer_getbuf(arrayobject *self, Py_buffer *view, int flags)
2689
2706
}
2690
2707
2691
2708
static void
2692
- array_buffer_relbuf (arrayobject * self , Py_buffer * view )
2709
+ array_buffer_relbuf (PyObject * op , Py_buffer * Py_UNUSED ( view ) )
2693
2710
{
2711
+ arrayobject * self = arrayobject_CAST (op );
2694
2712
self -> ob_exports -- ;
2695
2713
}
2696
2714
@@ -2925,7 +2943,7 @@ typecode -- the typecode character used to create the array\n\
2925
2943
itemsize -- the length in bytes of one array item\n\
2926
2944
" );
2927
2945
2928
- static PyObject * array_iter (arrayobject * ao );
2946
+ static PyObject * array_iter (PyObject * op );
2929
2947
2930
2948
static struct PyMemberDef array_members [] = {
2931
2949
{"__weaklistoffset__" , Py_T_PYSSIZET , offsetof(arrayobject , weakreflist ), Py_READONLY },
@@ -2985,8 +3003,9 @@ class array.arrayiterator "arrayiterobject *" "find_array_state_by_type(type)->A
2985
3003
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=fb46d5ef98dd95ff]*/
2986
3004
2987
3005
static PyObject *
2988
- array_iter (arrayobject * ao )
3006
+ array_iter (PyObject * op )
2989
3007
{
3008
+ arrayobject * ao = arrayobject_CAST (op );
2990
3009
array_state * state = find_array_state_by_type (Py_TYPE (ao ));
2991
3010
arrayiterobject * it ;
2992
3011
@@ -3007,16 +3026,15 @@ array_iter(arrayobject *ao)
3007
3026
}
3008
3027
3009
3028
static PyObject *
3010
- arrayiter_next (arrayiterobject * it )
3029
+ arrayiter_next (PyObject * op )
3011
3030
{
3012
- arrayobject * ao ;
3013
-
3031
+ arrayiterobject * it = arrayiterobject_CAST (op );
3014
3032
assert (it != NULL );
3015
3033
#ifndef NDEBUG
3016
3034
array_state * state = find_array_state_by_type (Py_TYPE (it ));
3017
3035
assert (PyObject_TypeCheck (it , state -> ArrayIterType ));
3018
3036
#endif
3019
- ao = it -> ao ;
3037
+ arrayobject * ao = it -> ao ;
3020
3038
if (ao == NULL ) {
3021
3039
return NULL ;
3022
3040
}
@@ -3032,19 +3050,20 @@ arrayiter_next(arrayiterobject *it)
3032
3050
}
3033
3051
3034
3052
static void
3035
- arrayiter_dealloc (arrayiterobject * it )
3053
+ arrayiter_dealloc (PyObject * op )
3036
3054
{
3055
+ arrayiterobject * it = arrayiterobject_CAST (op );
3037
3056
PyTypeObject * tp = Py_TYPE (it );
3038
-
3039
3057
PyObject_GC_UnTrack (it );
3040
3058
Py_XDECREF (it -> ao );
3041
3059
PyObject_GC_Del (it );
3042
3060
Py_DECREF (tp );
3043
3061
}
3044
3062
3045
3063
static int
3046
- arrayiter_traverse (arrayiterobject * it , visitproc visit , void * arg )
3064
+ arrayiter_traverse (PyObject * op , visitproc visit , void * arg )
3047
3065
{
3066
+ arrayiterobject * it = arrayiterobject_CAST (op );
3048
3067
Py_VISIT (Py_TYPE (it ));
3049
3068
Py_VISIT (it -> ao );
3050
3069
return 0 ;
@@ -3156,7 +3175,7 @@ array_clear(PyObject *module)
3156
3175
static void
3157
3176
array_free (void * module )
3158
3177
{
3159
- array_clear ((PyObject * )module );
3178
+ ( void ) array_clear ((PyObject * )module );
3160
3179
}
3161
3180
3162
3181
/* No functions in array module. */
0 commit comments