diff options
author | Brett Cannon <brett@python.org> | 2015-03-27 12:57:16 -0400 |
---|---|---|
committer | Brett Cannon <brett@python.org> | 2015-03-27 12:57:16 -0400 |
commit | ff7f428b38d22e1a168fff3f9eac383e8e5511f5 (patch) | |
tree | 82ad850a2c0eaefa85db8d92a29b38469db7c442 /Python/pytime.c | |
parent | 781692ff6af7747948b956eca9b435c9c93c3407 (diff) | |
parent | 992c43fec900e204deffc026318b97ab0f83eff6 (diff) | |
download | cpython-git-ff7f428b38d22e1a168fff3f9eac383e8e5511f5.tar.gz |
Merge
Diffstat (limited to 'Python/pytime.c')
-rw-r--r-- | Python/pytime.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/Python/pytime.c b/Python/pytime.c index 6bf7030cba..2aeeddc943 100644 --- a/Python/pytime.c +++ b/Python/pytime.c @@ -424,7 +424,7 @@ _PyTime_FromTimespec(_PyTime_t *tp, struct timespec *ts) #endif int -_PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round) +_PyTime_FromSecondsObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round) { if (PyFloat_Check(obj)) { double d, err; @@ -433,8 +433,7 @@ _PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round) d = PyFloat_AsDouble(obj); d *= 1e9; - /* FIXME: use sign */ - if (round == _PyTime_ROUND_UP) + if ((round == _PyTime_ROUND_UP) ^ (d < 0)) d = ceil(d); else d = floor(d); @@ -471,6 +470,18 @@ _PyTime_FromObject(_PyTime_t *t, PyObject *obj, _PyTime_round_t round) } } +PyObject * +_PyTime_AsNanosecondsObject(_PyTime_t t) +{ +#ifdef HAVE_LONG_LONG + assert(sizeof(PY_LONG_LONG) >= sizeof(_PyTime_t)); + return PyLong_FromLongLong((PY_LONG_LONG)t); +#else + assert(sizeof(long) >= sizeof(_PyTime_t)); + return PyLong_FromLong((long)t); +#endif +} + static _PyTime_t _PyTime_Multiply(_PyTime_t t, unsigned int multiply, _PyTime_round_t round) { |