From 5e8260b09c2aa3faa7ec4722b44e452072301b20 Mon Sep 17 00:00:00 2001 From: Amaury Forgeot d'Arc Date: Tue, 17 Jan 2012 21:31:50 +0100 Subject: [PATCH] Issue #13727: Add 3 macros to access PyDateTime_Delta members: PyDateTime_DELTA_GET_DAYS, PyDateTime_DELTA_GET_SECONDS, PyDateTime_DELTA_GET_MICROSECONDS. Please use them instead of directly accessing PyDateTime_Delta struct members. --- Doc/c-api/datetime.rst | 25 +++++++++++++++++++++++++ Include/datetime.h | 6 ++++++ Misc/NEWS | 4 ++++ 3 files changed, 35 insertions(+) diff --git a/Doc/c-api/datetime.rst b/Doc/c-api/datetime.rst index fcd13954a33..39542bd17a3 100644 --- a/Doc/c-api/datetime.rst +++ b/Doc/c-api/datetime.rst @@ -170,6 +170,31 @@ and the type is not checked: Return the microsecond, as an int from 0 through 999999. +Macros to extract fields from time delta objects. The argument must be an +instance of :c:data:`PyDateTime_Delta`, including subclasses. The argument must +not be *NULL*, and the type is not checked: + +.. c:function:: int PyDateTime_DELTA_GET_DAYS(PyDateTime_Delta *o) + + Return the number of days, as an int from -999999999 to 999999999. + + .. versionadded:: 3.3 + + +.. c:function:: int PyDateTime_DELTA_GET_SECONDS(PyDateTime_Delta *o) + + Return the number of seconds, as an int from 0 through 86399. + + .. versionadded:: 3.3 + + +.. c:function:: int PyDateTime_DELTA_GET_MICROSECOND(PyDateTime_Delta *o) + + Return the number of microseconds, as an int from 0 through 999999. + + .. versionadded:: 3.3 + + Macros for the convenience of modules implementing the DB API: .. c:function:: PyObject* PyDateTime_FromTimestamp(PyObject *args) diff --git a/Include/datetime.h b/Include/datetime.h index db57a18e66b..41e3bcf865c 100644 --- a/Include/datetime.h +++ b/Include/datetime.h @@ -135,6 +135,12 @@ typedef struct (((PyDateTime_Time*)o)->data[4] << 8) | \ ((PyDateTime_Time*)o)->data[5]) +/* Apply for time delta instances */ +#define PyDateTime_DELTA_GET_DAYS(o) (((PyDateTime_Delta*)o)->days) +#define PyDateTime_DELTA_GET_SECONDS(o) (((PyDateTime_Delta*)o)->seconds) +#define PyDateTime_DELTA_GET_MICROSECONDS(o) \ + (((PyDateTime_Delta*)o)->microseconds) + /* Define structure for C API. */ typedef struct { diff --git a/Misc/NEWS b/Misc/NEWS index a2954d8b4e1..8178a92b89d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -2056,6 +2056,10 @@ Tests C-API ----- +- Issue #13727: Add 3 macros to access PyDateTime_Delta members: + PyDateTime_DELTA_GET_DAYS, PyDateTime_DELTA_GET_SECONDS, + PyDateTime_DELTA_GET_MICROSECONDS. + - Issue #10542: Add 4 macros to work with surrogates: Py_UNICODE_IS_SURROGATE, Py_UNICODE_IS_HIGH_SURROGATE, Py_UNICODE_IS_LOW_SURROGATE, Py_UNICODE_JOIN_SURROGATES.