hikyuu2/hikyuu_pywrap/_TimeDelta.cpp

201 lines
5.4 KiB
C++
Raw Normal View History

2019-12-15 01:25:00 +08:00
/*
* _TimeDelta.cpp
*
* Copyright (C) 2019 hikyuu.org
*
* Created on: 2019-12-14
* Author: fasiondog
*/
#include <boost/python.hpp>
#include <hikyuu/serialization/TimeDelta_serialization.h>
#include "pickle_support.h"
using namespace boost::python;
using namespace hku;
2019-12-24 02:15:37 +08:00
double (TimeDelta::*TimeDelta_div_1)(TimeDelta) const = &TimeDelta::operator/;
TimeDelta (TimeDelta::*TimeDelta_div_2)(double) const = &TimeDelta::operator/;
2019-12-25 02:45:24 +08:00
TimeDelta (TimeDelta::*TimeDelta_pos)() const = &TimeDelta::operator+;
TimeDelta (TimeDelta::*TimeDelta_neg)() const = &TimeDelta::operator-;
2019-12-15 01:25:00 +08:00
void export_TimeDelta() {
2020-06-29 00:24:53 +08:00
class_<TimeDelta>("TimeDelta",
R"(时间时长,用于时间计算。可通过以下方式构建:
- datetime.timedelta TimdeDelta(timedelta实例)
- TimeDelta(days=0, hours=0, minutes=0, seconds=0, milliseconds=0, microseconds=0)
- -99999999 <= days <= 99999999
- -100000 <= hours <= 100000
- -100000 <= minutes <= 100000
- -8639900 <= seconds <= 8639900
- -86399000000 <= milliseconds <= 86399000000
- -86399000000 <= microseconds <= 86399000000
使使
Days, Hours, Minutes, Seconds, Milliseconds, Microseconds)")
.def(init<>())
.def(init<int64_t, int64_t, int64_t, int64_t, int64_t, int64_t>(
2020-06-29 00:24:53 +08:00
(arg("days") = 0, arg("hours") = 0, arg("minutes") = 0, arg("seconds") = 0,
arg("milliseconds") = 0, arg("microseconds") = 0)))
.def("__str__", &TimeDelta::str)
.def("__repr__", &TimeDelta::repr)
2020-06-29 00:24:53 +08:00
.add_property("days", &TimeDelta::days, "天数 [-99999999, 99999999]")
.add_property("hours", &TimeDelta::hours, "小时数 [0, 23]")
.add_property("minutes", &TimeDelta::minutes, "分钟数 [0, 59]")
.add_property("seconds", &TimeDelta::seconds, "秒数 [0, 59]")
.add_property("milliseconds", &TimeDelta::milliseconds, "毫秒数 [0, 999]")
.add_property("microseconds", &TimeDelta::microseconds, "微秒数 [0, 999]")
.add_property("ticks", &TimeDelta::ticks, "同总微秒数")
.def("isNegative", &TimeDelta::isNegative, R"(isNegative(self)
:rtype: bool)")
.def("total_days", &TimeDelta::total_days, R"(total_days(self)
:rtype: float)")
.def("total_hours", &TimeDelta::total_hours, R"(total_hours(self)
:rtype: float)")
.def("total_minutes", &TimeDelta::total_minutes, R"(total_minutes(self)
:rtype: float)")
.def("total_seconds", &TimeDelta::total_seconds, R"(total_seconds(self)
:rtype: float)")
.def("total_milliseconds", &TimeDelta::total_milliseconds, R"(total_milliseconds(self)
:rtype: float)")
.def("max", &TimeDelta::max, R"(max()
:return: TimeDelta(99999999, 23, 59, 59, 999, 999))")
2019-12-19 02:32:06 +08:00
.staticmethod("max")
2020-06-29 00:24:53 +08:00
.def("min", &TimeDelta::min, R"(min()
:return: TimeDelta(-99999999, 0, 0, 0, 0, 0))")
2019-12-19 02:32:06 +08:00
.staticmethod("min")
2020-06-29 00:24:53 +08:00
.def("resolution", &TimeDelta::resolution, R"(resolution()
:return: TimeDelta(0, 0, 0, 0, 0, 1))")
2019-12-19 02:32:06 +08:00
.staticmethod("resolution")
2020-06-29 00:24:53 +08:00
.def("maxTicks", &TimeDelta::maxTicks, R"(maxTicks()
ticks
:rtype: int)")
2019-12-21 03:01:33 +08:00
.staticmethod("maxTicks")
2020-06-29 00:24:53 +08:00
.def("minTicks", &TimeDelta::minTicks, R"(minTicks()
ticks
:rtype: int)")
2019-12-21 03:01:33 +08:00
.staticmethod("minTicks")
2020-06-29 00:24:53 +08:00
.def("fromTicks", &TimeDelta::fromTicks, R"(fromTicks(ticks)
使 ticks
:param int ticks:
:rtype: TimeDelta)")
2019-12-21 03:01:33 +08:00
.staticmethod("fromTicks")
2019-12-19 02:32:06 +08:00
2020-06-29 00:24:53 +08:00
.def(self == self)
.def(self != self)
.def(self >= self)
.def(self <= self)
.def(self > self)
.def(self < self)
.def(-self)
.def(+self)
.def(self + self)
.def(self - self)
.def(self % self)
.def(self * float())
2019-12-19 02:32:06 +08:00
2019-12-24 02:15:37 +08:00
.def("__abs__", &TimeDelta::abs)
.def("__rmul__", &TimeDelta::operator*)
.def("__truediv__", TimeDelta_div_1)
.def("__truediv__", TimeDelta_div_2)
2019-12-26 01:12:40 +08:00
.def("__floordiv__", &TimeDelta::floorDiv)
2019-12-18 02:04:54 +08:00
2019-12-15 01:25:00 +08:00
#if HKU_PYTHON_SUPPORT_PICKLE
.def_pickle(normal_pickle_suite<TimeDelta>())
#endif
;
2020-06-29 00:24:53 +08:00
def("Days", Days, R"(Days(days)
TimeDelta
:param int days: [-99999999, 99999999]
:rtype: TimeDelta)");
def("Hours", Hours, R"(Hours(hours)
TimeDelta
:param int hours:
:rtype: TimeDelta)");
def("Minutes", Minutes, R"(Minutes(mins)
TimeDelta
:param int mins:
:rtype: TimeDelta)");
def("Seconds", Seconds, R"(Seconds(secs)
TimeDelta
:param int secs:
:rtype: TimeDelta)");
def("Milliseconds", Milliseconds, R"(Milliseconds(milliseconds)
TimeDelta
:param int milliseconds:
:rtype: TimeDelta)");
def("Microseconds", Microseconds, R"(Microseconds(microsecs)
TimeDelta
:param int microsecs:
:rtype: TimeDelta)");
2019-12-15 01:25:00 +08:00
}