@@ -309,9 +309,9 @@ clear_current_module(PyInterpreterState *interp, PyObject *expected)
309309#define TIME_SET_FOLD (o , v ) (PyDateTime_TIME_GET_FOLD(o) = (v))
310310
311311/* Delta accessors for timedelta. */
312- #define GET_TD_DAYS (o ) (((PyDateTime_Delta *)(o) )->days)
313- #define GET_TD_SECONDS (o ) (((PyDateTime_Delta *)(o) )->seconds)
314- #define GET_TD_MICROSECONDS (o ) (((PyDateTime_Delta *)(o) )->microseconds)
312+ #define GET_TD_DAYS (o ) (_PyDelta_CAST(o )->days)
313+ #define GET_TD_SECONDS (o ) (_PyDelta_CAST(o )->seconds)
314+ #define GET_TD_MICROSECONDS (o ) (_PyDelta_CAST(o )->microseconds)
315315
316316#define SET_TD_DAYS (o , v ) ((o)->days = (v))
317317#define SET_TD_SECONDS (o , v ) ((o)->seconds = (v))
@@ -1430,7 +1430,7 @@ create_timezone(PyObject *offset, PyObject *name)
14301430 return (PyObject * )self ;
14311431}
14321432
1433- static int delta_bool (PyDateTime_Delta * self );
1433+ static int delta_bool (PyObject * op );
14341434static PyDateTime_TimeZone utc_timezone ;
14351435
14361436static PyObject *
@@ -1440,7 +1440,7 @@ new_timezone(PyObject *offset, PyObject *name)
14401440 assert (PyDelta_Check (offset ));
14411441 assert (name == NULL || PyUnicode_Check (name ));
14421442
1443- if (name == NULL && delta_bool (( PyDateTime_Delta * ) offset ) == 0 ) {
1443+ if (name == NULL && delta_bool (offset ) == 0 ) {
14441444 return Py_NewRef (CONST_UTC (NO_STATE ));
14451445 }
14461446 if ((GET_TD_DAYS (offset ) == -1 &&
@@ -1694,7 +1694,7 @@ format_ctime(PyDateTime_Date *date, int hours, int minutes, int seconds)
16941694 GET_YEAR (date ));
16951695}
16961696
1697- static PyObject * delta_negative (PyDateTime_Delta * self );
1697+ static PyObject * delta_negative (PyObject * op );
16981698
16991699/* Add formatted UTC offset string to buf. buf has no more than
17001700 * buflen bytes remaining. The UTC offset is gotten by calling
@@ -1727,7 +1727,7 @@ format_utcoffset(char *buf, size_t buflen, const char *sep,
17271727 /* Offset is normalized, so it is negative if days < 0 */
17281728 if (GET_TD_DAYS (offset ) < 0 ) {
17291729 sign = '-' ;
1730- Py_SETREF (offset , delta_negative (( PyDateTime_Delta * ) offset ));
1730+ Py_SETREF (offset , delta_negative (offset ));
17311731 if (offset == NULL )
17321732 return -1 ;
17331733 }
@@ -2429,7 +2429,7 @@ delta_add(PyObject *left, PyObject *right)
24292429}
24302430
24312431static PyObject *
2432- delta_negative (PyDateTime_Delta * self )
2432+ delta_negative (PyObject * self )
24332433{
24342434 return new_delta (- GET_TD_DAYS (self ),
24352435 - GET_TD_SECONDS (self ),
@@ -2438,7 +2438,7 @@ delta_negative(PyDateTime_Delta *self)
24382438}
24392439
24402440static PyObject *
2441- delta_positive (PyDateTime_Delta * self )
2441+ delta_positive (PyObject * self )
24422442{
24432443 /* Could optimize this (by returning self) if this isn't a
24442444 * subclass -- but who uses unary + ? Approximately nobody.
@@ -2450,7 +2450,7 @@ delta_positive(PyDateTime_Delta *self)
24502450}
24512451
24522452static PyObject *
2453- delta_abs (PyDateTime_Delta * self )
2453+ delta_abs (PyObject * self )
24542454{
24552455 PyObject * result ;
24562456
@@ -2515,8 +2515,9 @@ delta_richcompare(PyObject *self, PyObject *other, int op)
25152515static PyObject * delta_getstate (PyDateTime_Delta * self );
25162516
25172517static Py_hash_t
2518- delta_hash (PyDateTime_Delta * self )
2518+ delta_hash (PyObject * op )
25192519{
2520+ PyDateTime_Delta * self = _PyDelta_CAST (op );
25202521 if (self -> hashcode == -1 ) {
25212522 PyObject * temp = delta_getstate (self );
25222523 if (temp != NULL ) {
@@ -2880,15 +2881,15 @@ delta_new(PyTypeObject *type, PyObject *args, PyObject *kw)
28802881}
28812882
28822883static int
2883- delta_bool (PyDateTime_Delta * self )
2884+ delta_bool (PyObject * self )
28842885{
28852886 return (GET_TD_DAYS (self ) != 0
28862887 || GET_TD_SECONDS (self ) != 0
28872888 || GET_TD_MICROSECONDS (self ) != 0 );
28882889}
28892890
28902891static PyObject *
2891- delta_repr (PyDateTime_Delta * self )
2892+ delta_repr (PyObject * self )
28922893{
28932894 PyObject * args = Py_GetConstant (Py_CONSTANT_EMPTY_STR );
28942895
@@ -2937,7 +2938,7 @@ delta_repr(PyDateTime_Delta *self)
29372938}
29382939
29392940static PyObject *
2940- delta_str (PyDateTime_Delta * self )
2941+ delta_str (PyObject * self )
29412942{
29422943 int us = GET_TD_MICROSECONDS (self );
29432944 int seconds = GET_TD_SECONDS (self );
@@ -2977,12 +2978,12 @@ delta_getstate(PyDateTime_Delta *self)
29772978}
29782979
29792980static PyObject *
2980- delta_total_seconds (PyObject * self , PyObject * Py_UNUSED (ignored ))
2981+ delta_total_seconds (PyObject * op , PyObject * Py_UNUSED (closure ))
29812982{
29822983 PyObject * total_seconds ;
29832984 PyObject * total_microseconds ;
29842985
2985- total_microseconds = delta_to_microseconds (( PyDateTime_Delta * ) self );
2986+ total_microseconds = delta_to_microseconds (_PyDelta_CAST ( op ) );
29862987 if (total_microseconds == NULL )
29872988 return NULL ;
29882989
@@ -2997,8 +2998,9 @@ delta_total_seconds(PyObject *self, PyObject *Py_UNUSED(ignored))
29972998}
29982999
29993000static PyObject *
3000- delta_reduce (PyDateTime_Delta * self , PyObject * Py_UNUSED (ignored ))
3001+ delta_reduce (PyObject * op , PyObject * Py_UNUSED (closure ))
30013002{
3003+ PyDateTime_Delta * self = _PyDelta_CAST (op );
30023004 return Py_BuildValue ("ON" , Py_TYPE (self ), delta_getstate (self ));
30033005}
30043006
@@ -3021,7 +3023,7 @@ static PyMethodDef delta_methods[] = {
30213023 {"total_seconds" , delta_total_seconds , METH_NOARGS ,
30223024 PyDoc_STR ("Total seconds in the duration." )},
30233025
3024- {"__reduce__" , ( PyCFunction ) delta_reduce , METH_NOARGS ,
3026+ {"__reduce__" , delta_reduce , METH_NOARGS ,
30253027 PyDoc_STR ("__reduce__() -> (cls, state)" )},
30263028
30273029 {NULL , NULL },
@@ -3041,10 +3043,10 @@ static PyNumberMethods delta_as_number = {
30413043 delta_remainder , /* nb_remainder */
30423044 delta_divmod , /* nb_divmod */
30433045 0 , /* nb_power */
3044- ( unaryfunc ) delta_negative , /* nb_negative */
3045- ( unaryfunc ) delta_positive , /* nb_positive */
3046- ( unaryfunc ) delta_abs , /* nb_absolute */
3047- ( inquiry ) delta_bool , /* nb_bool */
3046+ delta_negative , /* nb_negative */
3047+ delta_positive , /* nb_positive */
3048+ delta_abs , /* nb_absolute */
3049+ delta_bool , /* nb_bool */
30483050 0 , /*nb_invert*/
30493051 0 , /*nb_lshift*/
30503052 0 , /*nb_rshift*/
@@ -3080,13 +3082,13 @@ static PyTypeObject PyDateTime_DeltaType = {
30803082 0 , /* tp_getattr */
30813083 0 , /* tp_setattr */
30823084 0 , /* tp_as_async */
3083- ( reprfunc ) delta_repr , /* tp_repr */
3085+ delta_repr , /* tp_repr */
30843086 & delta_as_number , /* tp_as_number */
30853087 0 , /* tp_as_sequence */
30863088 0 , /* tp_as_mapping */
3087- ( hashfunc ) delta_hash , /* tp_hash */
3089+ delta_hash , /* tp_hash */
30883090 0 , /* tp_call */
3089- ( reprfunc ) delta_str , /* tp_str */
3091+ delta_str , /* tp_str */
30903092 PyObject_GenericGetAttr , /* tp_getattro */
30913093 0 , /* tp_setattro */
30923094 0 , /* tp_as_buffer */
@@ -4113,7 +4115,7 @@ tzinfo_fromutc(PyDateTime_TZInfo *self, PyObject *dt)
41134115 goto Fail ;
41144116 if (dst == Py_None )
41154117 goto Inconsistent ;
4116- if (delta_bool (( PyDateTime_Delta * ) dst ) != 0 ) {
4118+ if (delta_bool (dst ) != 0 ) {
41174119 Py_SETREF (result , add_datetime_timedelta ((PyDateTime_DateTime * )result ,
41184120 (PyDateTime_Delta * )dst , 1 ));
41194121 if (result == NULL )
@@ -4274,7 +4276,7 @@ timezone_richcompare(PyDateTime_TimeZone *self,
42744276static Py_hash_t
42754277timezone_hash (PyDateTime_TimeZone * self )
42764278{
4277- return delta_hash (( PyDateTime_Delta * ) self -> offset );
4279+ return delta_hash (self -> offset );
42784280}
42794281
42804282/* Check argument type passed to tzname, utcoffset, or dst methods.
@@ -4330,7 +4332,7 @@ timezone_str(PyDateTime_TimeZone *self)
43304332 /* Offset is normalized, so it is negative if days < 0 */
43314333 if (GET_TD_DAYS (self -> offset ) < 0 ) {
43324334 sign = '-' ;
4333- offset = delta_negative (( PyDateTime_Delta * ) self -> offset );
4335+ offset = delta_negative (self -> offset );
43344336 if (offset == NULL )
43354337 return NULL ;
43364338 }
@@ -6726,7 +6728,7 @@ datetime_timetuple(PyDateTime_DateTime *self, PyObject *Py_UNUSED(ignored))
67266728 return NULL ;
67276729
67286730 if (dst != Py_None )
6729- dstflag = delta_bool (( PyDateTime_Delta * ) dst );
6731+ dstflag = delta_bool (dst );
67306732 Py_DECREF (dst );
67316733 }
67326734 return build_struct_time (GET_YEAR (self ),
0 commit comments