38#ifndef INCLUDED_BLPAPI_DATETIME
39#define INCLUDED_BLPAPI_DATETIME
105struct blpapi_Datetime_tag {
106 blpapi_UChar_t parts;
107 blpapi_UChar_t hours;
108 blpapi_UChar_t minutes;
109 blpapi_UChar_t seconds;
110 blpapi_UInt16_t milliSeconds;
111 blpapi_UChar_t month;
113 blpapi_UInt16_t year;
114 blpapi_Int16_t offset;
123struct blpapi_HighPrecisionDatetime_tag {
124 blpapi_Datetime_t datetime;
125 blpapi_UInt32_t picoseconds;
129typedef struct blpapi_HighPrecisionDatetime_tag blpapi_HighPrecisionDatetime_t;
147int blpapi_Datetime_compare(blpapi_Datetime_t lhs, blpapi_Datetime_t rhs);
165int blpapi_Datetime_print(
const blpapi_Datetime_t *datetime,
166 blpapi_StreamWriter_t streamWriter,
185int blpapi_HighPrecisionDatetime_compare(
186 const blpapi_HighPrecisionDatetime_t *lhs,
187 const blpapi_HighPrecisionDatetime_t *rhs);
207int blpapi_HighPrecisionDatetime_print(
208 const blpapi_HighPrecisionDatetime_t *datetime,
209 blpapi_StreamWriter_t streamWriter,
228int blpapi_HighPrecisionDatetime_fromTimePoint(
229 blpapi_HighPrecisionDatetime_t *datetime,
230 const blpapi_TimePoint_t *timePoint,
268 YEAR = BLPAPI_DATETIME_YEAR_PART,
270 DAY = BLPAPI_DATETIME_DAY_PART,
281 DATE = BLPAPI_DATETIME_DATE_PART,
284 TIME = BLPAPI_DATETIME_TIME_PART,
317 blpapi_HighPrecisionDatetime_t d_value;
319 static bool isLeapYear(
int year);
375 explicit Offset(
short minutesAheadOfUTC);
841 Datetime&
operator=(
const Datetime& rhs);
929 void setDay(
unsigned value);
1034 unsigned parts()
const;
1041 unsigned year()
const;
1047 unsigned month()
const;
1053 unsigned day()
const;
1059 unsigned hours()
const;
1124 const blpapi_Datetime_t&
rawValue()
const;
1156 std::ostream&
print(
1157 std::ostream& stream,
int level = 0,
int spacesPerLevel = 4)
const;
1266inline bool Datetime::isLeapYear(
int y)
1268 return 0 == y % 4 && (y <= 1752 || 0 != y % 100 || 0 == y % 400);
1272 unsigned newHours,
unsigned newMinutes,
unsigned newSeconds, TimeTag)
1274 std::memset(&d_value, 0,
sizeof(d_value));
1275 setTime(newHours, newMinutes, newSeconds);
1306 || (
day <= 0) || (
day > 31)) {
1338 if (isLeapYear(
year)) {
1344 }
else if (
day > 28) {
1381 && (fractionOfSecond.
d_usec >= 0)
1382 && (fractionOfSecond.
d_usec < 1000 * 1000);
1390 && (fractionOfSecond.
d_nsec >= 0)
1391 && (fractionOfSecond.
d_nsec < 1000 * 1000 * 1000);
1399 && (fractionOfSecond.
d_psec >= 0)
1400 && (fractionOfSecond.
d_psec < 1000LL * 1000 * 1000 * 1000);
1650 std::memset(&d_value, 0,
sizeof(d_value));
1651 d_value.datetime.year = 1;
1652 d_value.datetime.month = 1;
1653 d_value.datetime.day = 1;
1657 : d_value(original.d_value)
1663 d_value.datetime = newRawValue;
1664 d_value.picoseconds = 0;
1668 : d_value(newRawValue)
1676 unsigned newMinutes,
1677 unsigned newSeconds)
1679 d_value.datetime.offset = 0;
1680 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1681 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1682 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1683 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1684 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1685 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1686 d_value.datetime.milliSeconds = 0;
1687 d_value.picoseconds = 0;
1695 unsigned newMinutes,
1696 unsigned newSeconds,
1697 unsigned newMilliSeconds)
1699 d_value.datetime.offset = 0;
1700 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1701 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1702 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1703 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1704 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1705 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1706 d_value.datetime.milliSeconds
1707 =
static_cast<blpapi_UInt16_t
>(newMilliSeconds);
1708 d_value.picoseconds = 0;
1709 d_value.datetime.parts
1717 unsigned newMinutes,
1718 unsigned newSeconds,
1721 d_value.datetime.offset = 0;
1722 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1723 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1724 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1725 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1726 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1727 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1728 d_value.datetime.milliSeconds
1729 =
static_cast<blpapi_UInt16_t
>(fractionOfSecond.
d_msec);
1730 d_value.picoseconds = 0;
1731 d_value.datetime.parts
1739 unsigned newMinutes,
1740 unsigned newSeconds,
1743 d_value.datetime.offset = 0;
1744 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1745 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1746 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1747 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1748 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1749 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1750 d_value.datetime.milliSeconds
1751 =
static_cast<blpapi_UInt16_t
>(fractionOfSecond.
d_usec / 1000);
1752 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
1753 (fractionOfSecond.
d_usec % 1000) * 1000 * 1000);
1754 d_value.datetime.parts
1762 unsigned newMinutes,
1763 unsigned newSeconds,
1766 d_value.datetime.offset = 0;
1767 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1768 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1769 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1770 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1771 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1772 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1773 d_value.datetime.milliSeconds =
static_cast<blpapi_UInt16_t
>(
1774 fractionOfSecond.
d_nsec / 1000 / 1000);
1775 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
1776 (fractionOfSecond.
d_nsec % (1000 * 1000)) * 1000);
1777 d_value.datetime.parts
1785 unsigned newMinutes,
1786 unsigned newSeconds,
1789 d_value.datetime.offset = 0;
1790 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1791 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1792 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1793 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1794 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1795 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1796 d_value.datetime.milliSeconds =
static_cast<blpapi_UInt16_t
>(
1797 fractionOfSecond.
d_psec / 1000 / 1000 / 1000);
1798 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
1799 fractionOfSecond.
d_psec % (1000 * 1000 * 1000));
1800 d_value.datetime.parts
1806 std::memset(&d_value, 0,
sizeof(d_value));
1807 setDate(newYear, newMonth, newDay);
1811 unsigned newMinutes,
1812 unsigned newSeconds,
1813 unsigned newMilliSeconds)
1815 std::memset(&d_value, 0,
sizeof(d_value));
1816 setTime(newHours, newMinutes, newSeconds, newMilliSeconds);
1820 unsigned newMinutes,
1821 unsigned newSeconds,
1824 std::memset(&d_value, 0,
sizeof(d_value));
1825 setTime(newHours, newMinutes, newSeconds, fractionOfSecond);
1829 unsigned newMinutes,
1830 unsigned newSeconds,
1833 std::memset(&d_value, 0,
sizeof(d_value));
1834 setTime(newHours, newMinutes, newSeconds, fractionOfSecond);
1838 unsigned newMinutes,
1839 unsigned newSeconds,
1842 std::memset(&d_value, 0,
sizeof(d_value));
1843 setTime(newHours, newMinutes, newSeconds, fractionOfSecond);
1847 unsigned newMinutes,
1848 unsigned newSeconds,
1851 std::memset(&d_value, 0,
sizeof(d_value));
1852 setTime(newHours, newMinutes, newSeconds, fractionOfSecond);
1857 d_value = rhs.d_value;
1862 unsigned newYear,
unsigned newMonth,
unsigned newDay)
1864 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(newDay);
1865 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(newMonth);
1866 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(newYear);
1871 unsigned newHours,
unsigned newMinutes,
unsigned newSeconds)
1873 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1874 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1875 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1876 d_value.datetime.milliSeconds = 0;
1877 d_value.picoseconds = 0;
1878 d_value.datetime.parts =
static_cast<blpapi_UChar_t
>(
1884 unsigned newMinutes,
1885 unsigned newSeconds,
1886 unsigned newMilliSeconds)
1888 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1889 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1890 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1891 d_value.datetime.milliSeconds
1892 =
static_cast<blpapi_UInt16_t
>(newMilliSeconds);
1893 d_value.picoseconds = 0;
1898 unsigned newMinutes,
1899 unsigned newSeconds,
1902 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1903 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1904 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1905 d_value.datetime.milliSeconds
1906 =
static_cast<blpapi_UInt16_t
>(fractionOfSecond.
d_msec);
1907 d_value.picoseconds = 0;
1912 unsigned newMinutes,
1913 unsigned newSeconds,
1916 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1917 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1918 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1919 d_value.datetime.milliSeconds
1920 =
static_cast<blpapi_UInt16_t
>(fractionOfSecond.
d_usec / 1000);
1921 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
1922 fractionOfSecond.
d_usec % 1000 * 1000 * 1000);
1927 unsigned newMinutes,
1928 unsigned newSeconds,
1931 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1932 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1933 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1934 d_value.datetime.milliSeconds =
static_cast<blpapi_UInt16_t
>(
1935 fractionOfSecond.
d_nsec / 1000 / 1000);
1936 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
1937 fractionOfSecond.
d_nsec % (1000 * 1000) * 1000);
1942 unsigned newMinutes,
1943 unsigned newSeconds,
1946 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(newHours);
1947 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(newMinutes);
1948 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(newSeconds);
1949 d_value.datetime.milliSeconds =
static_cast<blpapi_UInt16_t
>(
1950 fractionOfSecond.
d_psec / 1000 / 1000 / 1000);
1951 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
1952 fractionOfSecond.
d_psec % (1000 * 1000 * 1000));
1958 d_value.datetime.offset = value;
1964 d_value.datetime.year =
static_cast<blpapi_UInt16_t
>(value);
1970 d_value.datetime.month =
static_cast<blpapi_UChar_t
>(value);
1976 d_value.datetime.day =
static_cast<blpapi_UChar_t
>(value);
1982 d_value.datetime.hours =
static_cast<blpapi_UChar_t
>(value);
1988 d_value.datetime.minutes =
static_cast<blpapi_UChar_t
>(value);
1994 d_value.datetime.seconds =
static_cast<blpapi_UChar_t
>(value);
2000 d_value.datetime.milliSeconds =
static_cast<blpapi_UInt16_t
>(value);
2001 d_value.picoseconds = 0;
2007 d_value.datetime.milliSeconds =
static_cast<blpapi_UInt16_t
>(value.
d_msec);
2008 d_value.picoseconds = 0;
2014 d_value.datetime.milliSeconds
2015 =
static_cast<blpapi_UInt16_t
>(value.
d_usec / 1000);
2017 =
static_cast<blpapi_UInt32_t
>(value.
d_usec % 1000 * 1000 * 1000);
2023 d_value.datetime.milliSeconds
2024 =
static_cast<blpapi_UInt16_t
>(value.
d_nsec / 1000 / 1000);
2025 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
2026 value.
d_nsec % (1000 * 1000) * 1000);
2032 d_value.datetime.milliSeconds
2033 =
static_cast<blpapi_UInt16_t
>(value.
d_psec / 1000 / 1000 / 1000);
2034 d_value.picoseconds =
static_cast<blpapi_UInt32_t
>(
2035 value.
d_psec % (1000 * 1000 * 1000));
2048 return newParts == (d_value.datetime.parts & newParts);
2067 return d_value.datetime.milliSeconds;
2072 return d_value.datetime.milliSeconds;
2077 return d_value.datetime.milliSeconds * 1000
2078 + d_value.picoseconds / 1000 / 1000;
2083 return d_value.datetime.milliSeconds * 1000 * 1000
2084 + d_value.picoseconds / 1000;
2089 return d_value.datetime.milliSeconds * 1000LLU * 1000U * 1000U
2090 + d_value.picoseconds;
2097 return d_value.datetime;
2100inline const blpapi_HighPrecisionDatetime_t&
2116 static_cast<int>(
month()),
2117 static_cast<int>(
day()))) {
2130 && (
picoseconds() >= 1000LL * 1000 * 1000 * 1000)) {
2137 std::ostream& stream,
int level,
int spacesPerLevel)
const
2139 BLPAPI_CALL_HIGHPRECISIONDATETIME_PRINT(&d_value,
2150 return (BLPAPI_CALL_HIGHPRECISIONDATETIME_COMPARE(
2160 return !(lhs == rhs);
2165 return (BLPAPI_CALL_HIGHPRECISIONDATETIME_COMPARE(
2172 return !(rhs < lhs);
2182 return !(lhs < rhs);
2187 return datetime.
print(stream, 0, -1);
2197 blpapi_HighPrecisionDatetime_t highPrecisionDatetime;
2198 BLPAPI_CALL_HIGHPRECISIONDATETIME_FROMTIMEPOINT(
2200 return Datetime(highPrecisionDatetime);
2224 return "FRACSECONDS";
2230 return "TIMEFRACSECONDS";
Provide functions for dispatchtbl.
Common definitions used by the library.
Defines Exceptions that can be thrown by the blpapi library.
A signature for callback on print and default C++ implementation.
Provide a time point with respect to an epoch.
Definition blpapi_datetime.h:315
void setOffset(short minutesAheadOfUTC)
Definition blpapi_datetime.h:1956
bool hasParts(unsigned parts) const
Definition blpapi_datetime.h:2046
unsigned microseconds() const
Definition blpapi_datetime.h:2075
static bool isValidTime(int hours, int minutes, int seconds)
Definition blpapi_datetime.h:1356
void setDate(unsigned year, unsigned month, unsigned day)
Definition blpapi_datetime.h:1861
unsigned month() const
Definition blpapi_datetime.h:2055
short offset() const
Definition blpapi_datetime.h:2093
void setHours(unsigned value)
Definition blpapi_datetime.h:1980
blpapi_HighPrecisionDatetime_t & rawHighPrecisionValue()
Definition blpapi_datetime.h:2041
unsigned milliSeconds() const
Definition blpapi_datetime.h:2065
blpapi_HighPrecisionDatetime_t HighPrecision
Definition blpapi_datetime.h:341
unsigned nanoseconds() const
Definition blpapi_datetime.h:2081
void setFractionOfSecond(Milliseconds value)
Definition blpapi_datetime.h:2005
unsigned long long picoseconds() const
Definition blpapi_datetime.h:2087
void setMonth(unsigned value)
Definition blpapi_datetime.h:1968
void setYear(unsigned value)
Definition blpapi_datetime.h:1962
unsigned minutes() const
Definition blpapi_datetime.h:2061
Datetime & operator=(const Datetime &rhs)
Definition blpapi_datetime.h:1855
blpapi_Datetime_t & rawValue()
Definition blpapi_datetime.h:2039
unsigned day() const
Definition blpapi_datetime.h:2057
static Datetime createDate(unsigned year, unsigned month, unsigned day)
Definition blpapi_datetime.h:1530
bool isValid() const
Definition blpapi_datetime.h:2111
std::ostream & print(std::ostream &stream, int level=0, int spacesPerLevel=4) const
Definition blpapi_datetime.h:2136
unsigned milliseconds() const
Definition blpapi_datetime.h:2070
unsigned parts() const
Definition blpapi_datetime.h:2051
void setDay(unsigned value)
Definition blpapi_datetime.h:1974
static Datetime createDatetime(unsigned year, unsigned month, unsigned day, unsigned hours, unsigned minutes, unsigned seconds)
Definition blpapi_datetime.h:1403
Datetime()
Definition blpapi_datetime.h:1648
unsigned year() const
Definition blpapi_datetime.h:2053
static Datetime createTime(unsigned hours, unsigned minutes, unsigned seconds)
Definition blpapi_datetime.h:1536
const HighPrecision & highPrecisionValue() const
Definition blpapi_datetime.h:2106
void setMilliseconds(unsigned milliseconds)
Definition blpapi_datetime.h:1998
void setMinutes(unsigned value)
Definition blpapi_datetime.h:1986
unsigned seconds() const
Definition blpapi_datetime.h:2063
unsigned hours() const
Definition blpapi_datetime.h:2059
void setTime(unsigned hours, unsigned minutes, unsigned seconds)
Definition blpapi_datetime.h:1870
static bool isValidDate(int year, int month, int day)
Definition blpapi_datetime.h:1303
void setSeconds(unsigned value)
Definition blpapi_datetime.h:1992
constexpr const char * to_string(CorrelationId::ValueType valueType)
Definition blpapi_correlationid.h:830
blpapi_TimePoint_t TimePoint
Time point type alias.
Definition blpapi_timepoint.h:162
Definition blpapi_correlationid.h:499
Definition blpapi_abstractsession.h:448
bool operator==(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:749
bool operator>(const Datetime &lhs, const Datetime &rhs)
Definition blpapi_datetime.h:2175
bool operator<=(const Datetime &lhs, const Datetime &rhs)
Definition blpapi_datetime.h:2170
bool operator>=(const Datetime &lhs, const Datetime &rhs)
Definition blpapi_datetime.h:2180
std::ostream & operator<<(std::ostream &os, const CorrelationId &correlator)
Definition blpapi_correlationid.h:792
bool operator!=(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:772
bool operator<(const CorrelationId &lhs, const CorrelationId &rhs)
Definition blpapi_correlationid.h:777
Definition blpapi_abstractsession.h:447
Definition blpapi_datetime.h:259
Value
Definition blpapi_datetime.h:266
@ DATE
year, month, and day are set
Definition blpapi_datetime.h:281
@ MILLISECONDS
MILLISECONDS is a (legacy) synonym for FRACSECONDS
Definition blpapi_datetime.h:278
@ MINUTES
minutes is set
Definition blpapi_datetime.h:273
@ HOURS
hours is set
Definition blpapi_datetime.h:272
@ SECONDS
seconds is set
Definition blpapi_datetime.h:274
@ DAY
day is set
Definition blpapi_datetime.h:270
@ MONTH
month is set
Definition blpapi_datetime.h:269
@ OFFSET
offset is set
Definition blpapi_datetime.h:271
@ YEAR
year is set
Definition blpapi_datetime.h:268
@ FRACSECONDS
fraction-of-second (both millisecond and picosecond) is set
Definition blpapi_datetime.h:275
@ TIMEFRACSECONDS
hours, minutes, seconds, and fraction-of-second are set
Definition blpapi_datetime.h:287
@ TIME
hours, minutes, and seconds are set
Definition blpapi_datetime.h:284
@ TIMEMILLI
TIMEMILLI is a (legacy) synonym for TIMEFRACSECONDS
Definition blpapi_datetime.h:290
Definition blpapi_datetime.h:1181
static Datetime fromTimePoint(const TimePoint &timePoint, Datetime::Offset offset=Datetime::Offset(0))
Definition blpapi_datetime.h:2194
Definition blpapi_datetime.h:349
Microseconds(int microseconds)
Definition blpapi_datetime.h:1283
int d_usec
Definition blpapi_datetime.h:350
Definition blpapi_datetime.h:342
int d_msec
Definition blpapi_datetime.h:343
Milliseconds(int milliseconds)
Definition blpapi_datetime.h:1278
Definition blpapi_datetime.h:357
int d_nsec
Definition blpapi_datetime.h:358
Nanoseconds(int nanoseconds)
Definition blpapi_datetime.h:1288
Definition blpapi_datetime.h:373
Offset(short minutesAheadOfUTC)
Definition blpapi_datetime.h:1298
short d_minutesAheadOfUTC
Definition blpapi_datetime.h:374
Definition blpapi_datetime.h:365
long long d_psec
Definition blpapi_datetime.h:366
Picoseconds(long long picoseconds)
Definition blpapi_datetime.h:1293
static int writeToStream(const char *data, int length, void *stream)
Definition blpapi_streamproxy.h:108