diff options
Diffstat (limited to 'Include')
-rw-r--r-- | Include/datetime.h | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/Include/datetime.h b/Include/datetime.h index 7bfbf0b..5c31162 100644 --- a/Include/datetime.h +++ b/Include/datetime.h @@ -27,6 +27,11 @@ /* # of bytes for year, month, day, hour, minute, second, and usecond. */ #define _PyDateTime_DATETIME_DATASIZE 10 +#define _PyTZINFO_HEAD \ + PyObject_HEAD \ + long hashcode; \ + char hastzinfo; /* boolean flag */ + typedef struct { PyObject_HEAD @@ -49,20 +54,23 @@ typedef struct PyObject *tzinfo; } PyDateTime_DateTimeTZ; + + +#define _PyDateTime_TIMEHEAD \ + _PyTZINFO_HEAD \ + unsigned char data[_PyDateTime_TIME_DATASIZE]; + typedef struct { - PyObject_HEAD - long hashcode; - unsigned char data[_PyDateTime_TIME_DATASIZE]; -} PyDateTime_Time; + _PyDateTime_TIMEHEAD +} _PyDateTime_BaseTime; /* hastzinfo false */ typedef struct { - PyObject_HEAD - long hashcode; - unsigned char data[_PyDateTime_TIME_DATASIZE]; + _PyDateTime_TIMEHEAD PyObject *tzinfo; -} PyDateTime_TimeTZ; +} PyDateTime_Time; /* hastzinfo true */ + typedef struct { @@ -92,7 +100,7 @@ typedef struct (((PyDateTime_DateTime*)o)->data[8] << 8) | \ ((PyDateTime_DateTime*)o)->data[9]) -/* Apply for time and timetz instances. */ +/* Apply for time instances. */ #define PyDateTime_TIME_GET_HOUR(o) (((PyDateTime_Time*)o)->data[0]) #define PyDateTime_TIME_GET_MINUTE(o) (((PyDateTime_Time*)o)->data[1]) #define PyDateTime_TIME_GET_SECOND(o) (((PyDateTime_Time*)o)->data[2]) @@ -113,9 +121,6 @@ typedef struct #define PyTime_Check(op) PyObject_TypeCheck(op, &PyDateTime_TimeType) #define PyTime_CheckExact(op) ((op)->ob_type == &PyDateTime_TimeType) -#define PyTimeTZ_Check(op) PyObject_TypeCheck(op, &PyDateTime_TimeTZType) -#define PyTimeTZ_CheckExact(op) ((op)->ob_type == &PyDateTime_TimeTZType) - #define PyDelta_Check(op) PyObject_TypeCheck(op, &PyDateTime_DeltaType) #define PyDelta_CheckExact(op) ((op)->ob_type == &PyDateTime_DeltaType) |