xref: /freebsd/contrib/llvm-project/libcxx/modules/std/chrono.inc (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
15f757f3fSDimitry Andric// -*- C++ -*-
25f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
35f757f3fSDimitry Andric//
45f757f3fSDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
55f757f3fSDimitry Andric// See https://llvm.org/LICENSE.txt for license information.
65f757f3fSDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
75f757f3fSDimitry Andric//
85f757f3fSDimitry Andric//===----------------------------------------------------------------------===//
95f757f3fSDimitry Andric
105f757f3fSDimitry Andricexport namespace std {
115f757f3fSDimitry Andric
125f757f3fSDimitry Andric  namespace chrono {
135f757f3fSDimitry Andric    using std::chrono::duration;
145f757f3fSDimitry Andric    using std::chrono::time_point;
155f757f3fSDimitry Andric
165f757f3fSDimitry Andric  } // namespace chrono
175f757f3fSDimitry Andric
185f757f3fSDimitry Andric  using std::common_type;
195f757f3fSDimitry Andric
205f757f3fSDimitry Andric  namespace chrono {
215f757f3fSDimitry Andric
225f757f3fSDimitry Andric    // [time.traits], customization traits
235f757f3fSDimitry Andric    using std::chrono::treat_as_floating_point;
245f757f3fSDimitry Andric    using std::chrono::treat_as_floating_point_v;
255f757f3fSDimitry Andric
265f757f3fSDimitry Andric    using std::chrono::duration_values;
275f757f3fSDimitry Andric
285f757f3fSDimitry Andric    // using std::chrono::is_clock;
295f757f3fSDimitry Andric    // using std::chrono::is_clock_v;
305f757f3fSDimitry Andric
315f757f3fSDimitry Andric    // [time.duration.nonmember], duration arithmetic
325f757f3fSDimitry Andric    using std::chrono::operator+;
335f757f3fSDimitry Andric    using std::chrono::operator-;
345f757f3fSDimitry Andric    using std::chrono::operator*;
355f757f3fSDimitry Andric    using std::chrono::operator/;
365f757f3fSDimitry Andric    using std::chrono::operator%;
375f757f3fSDimitry Andric
385f757f3fSDimitry Andric    // [time.duration.comparisons], duration comparisons
395f757f3fSDimitry Andric    using std::chrono::operator==;
405f757f3fSDimitry Andric    using std::chrono::operator<;
415f757f3fSDimitry Andric    using std::chrono::operator>;
425f757f3fSDimitry Andric    using std::chrono::operator<=;
435f757f3fSDimitry Andric    using std::chrono::operator>=;
445f757f3fSDimitry Andric    using std::chrono::operator<=>;
455f757f3fSDimitry Andric
465f757f3fSDimitry Andric    // [time.duration.cast], conversions
475f757f3fSDimitry Andric    using std::chrono::ceil;
485f757f3fSDimitry Andric    using std::chrono::duration_cast;
495f757f3fSDimitry Andric    using std::chrono::floor;
505f757f3fSDimitry Andric    using std::chrono::round;
515f757f3fSDimitry Andric
525f757f3fSDimitry Andric    // [time.duration.io], duration I/O
535f757f3fSDimitry Andric#ifndef _LIBCPP_HAS_NO_LOCALIZATION
545f757f3fSDimitry Andric    using std::chrono::operator<<;
555f757f3fSDimitry Andric#endif
565f757f3fSDimitry Andric    // using std::chrono::from_stream;
575f757f3fSDimitry Andric
585f757f3fSDimitry Andric    // convenience typedefs
595f757f3fSDimitry Andric    using std::chrono::days;
605f757f3fSDimitry Andric    using std::chrono::hours;
615f757f3fSDimitry Andric    using std::chrono::microseconds;
625f757f3fSDimitry Andric    using std::chrono::milliseconds;
635f757f3fSDimitry Andric    using std::chrono::minutes;
645f757f3fSDimitry Andric    using std::chrono::months;
655f757f3fSDimitry Andric    using std::chrono::nanoseconds;
665f757f3fSDimitry Andric    using std::chrono::seconds;
675f757f3fSDimitry Andric    using std::chrono::weeks;
685f757f3fSDimitry Andric    using std::chrono::years;
695f757f3fSDimitry Andric
705f757f3fSDimitry Andric    // [time.point.nonmember], time_point arithmetic
715f757f3fSDimitry Andric
725f757f3fSDimitry Andric    // [time.point.comparisons], time_point comparisons
735f757f3fSDimitry Andric
745f757f3fSDimitry Andric    // [time.point.cast], conversions
755f757f3fSDimitry Andric    using std::chrono::time_point_cast;
765f757f3fSDimitry Andric
775f757f3fSDimitry Andric    // [time.duration.alg], specialized algorithms
785f757f3fSDimitry Andric    using std::chrono::abs;
795f757f3fSDimitry Andric
805f757f3fSDimitry Andric    // [time.clock.system], class system_clock
815f757f3fSDimitry Andric    using std::chrono::system_clock;
825f757f3fSDimitry Andric
835f757f3fSDimitry Andric    using std::chrono::sys_days;
845f757f3fSDimitry Andric    using std::chrono::sys_seconds;
855f757f3fSDimitry Andric    using std::chrono::sys_time;
865f757f3fSDimitry Andric
875f757f3fSDimitry Andric#if 0
885f757f3fSDimitry Andric    // [time.clock.utc], class utc_clock
895f757f3fSDimitry Andric    using std::chrono::utc_clock;
905f757f3fSDimitry Andric
915f757f3fSDimitry Andric    using std::chrono::utc_seconds;
925f757f3fSDimitry Andric    using std::chrono::utc_time;
935f757f3fSDimitry Andric
945f757f3fSDimitry Andric    using std::chrono::leap_second_info;
955f757f3fSDimitry Andric
965f757f3fSDimitry Andric    using std::chrono::get_leap_second_info;
975f757f3fSDimitry Andric    // [time.clock.tai], class tai_clock
985f757f3fSDimitry Andric    using std::chrono::tai_clock;
995f757f3fSDimitry Andric
1005f757f3fSDimitry Andric    using std::chrono::tai_seconds;
1015f757f3fSDimitry Andric    using std::chrono::tai_time;
1025f757f3fSDimitry Andric
1035f757f3fSDimitry Andric    // [time.clock.gps], class gps_clock
1045f757f3fSDimitry Andric    using std::chrono::gps_clock;
1055f757f3fSDimitry Andric
1065f757f3fSDimitry Andric    using std::chrono::gps_seconds;
1075f757f3fSDimitry Andric    using std::chrono::gps_time;
1085f757f3fSDimitry Andric#endif
1095f757f3fSDimitry Andric    // [time.clock.file], type file_clock
1105f757f3fSDimitry Andric    using std::chrono::file_clock;
1115f757f3fSDimitry Andric
1125f757f3fSDimitry Andric    using std::chrono::file_time;
1135f757f3fSDimitry Andric
1145f757f3fSDimitry Andric#ifndef _LIBCPP_HAS_NO_MONOTONIC_CLOCK
1155f757f3fSDimitry Andric    // [time.clock.steady], class steady_clock
1165f757f3fSDimitry Andric    using std::chrono::steady_clock;
1175f757f3fSDimitry Andric#endif
1185f757f3fSDimitry Andric
1195f757f3fSDimitry Andric    // [time.clock.hires], class high_resolution_clock
1205f757f3fSDimitry Andric    using std::chrono::high_resolution_clock;
1215f757f3fSDimitry Andric
1225f757f3fSDimitry Andric    // [time.clock.local], local time
1235f757f3fSDimitry Andric    using std::chrono::local_days;
1245f757f3fSDimitry Andric    using std::chrono::local_seconds;
1255f757f3fSDimitry Andric    using std::chrono::local_t;
1265f757f3fSDimitry Andric    using std::chrono::local_time;
1275f757f3fSDimitry Andric
1285f757f3fSDimitry Andric    // [time.clock.cast], time_point conversions
1295f757f3fSDimitry Andric    // using std::chrono::clock_time_conversion;
1305f757f3fSDimitry Andric
1315f757f3fSDimitry Andric    // using std::chrono::clock_cast;
1325f757f3fSDimitry Andric
1335f757f3fSDimitry Andric    // [time.cal.last], class last_spec
1345f757f3fSDimitry Andric    using std::chrono::last_spec;
1355f757f3fSDimitry Andric
1365f757f3fSDimitry Andric    // [time.cal.day], class day
1375f757f3fSDimitry Andric    using std::chrono::day;
1385f757f3fSDimitry Andric
1395f757f3fSDimitry Andric    // [time.cal.month], class month
1405f757f3fSDimitry Andric    using std::chrono::month;
1415f757f3fSDimitry Andric
1425f757f3fSDimitry Andric    // [time.cal.year], class year
1435f757f3fSDimitry Andric    using std::chrono::year;
1445f757f3fSDimitry Andric
1455f757f3fSDimitry Andric    // [time.cal.wd], class weekday
1465f757f3fSDimitry Andric    using std::chrono::weekday;
1475f757f3fSDimitry Andric
1485f757f3fSDimitry Andric    // [time.cal.wdidx], class weekday_indexed
1495f757f3fSDimitry Andric    using std::chrono::weekday_indexed;
1505f757f3fSDimitry Andric
1515f757f3fSDimitry Andric    // [time.cal.wdlast], class weekday_last
1525f757f3fSDimitry Andric    using std::chrono::weekday_last;
1535f757f3fSDimitry Andric
1545f757f3fSDimitry Andric    // [time.cal.md], class month_day
1555f757f3fSDimitry Andric    using std::chrono::month_day;
1565f757f3fSDimitry Andric
1575f757f3fSDimitry Andric    // [time.cal.mdlast], class month_day_last
1585f757f3fSDimitry Andric    using std::chrono::month_day_last;
1595f757f3fSDimitry Andric
1605f757f3fSDimitry Andric    // [time.cal.mwd], class month_weekday
1615f757f3fSDimitry Andric    using std::chrono::month_weekday;
1625f757f3fSDimitry Andric
1635f757f3fSDimitry Andric    // [time.cal.mwdlast], class month_weekday_last
1645f757f3fSDimitry Andric    using std::chrono::month_weekday_last;
1655f757f3fSDimitry Andric
1665f757f3fSDimitry Andric    // [time.cal.ym], class year_month
1675f757f3fSDimitry Andric    using std::chrono::year_month;
1685f757f3fSDimitry Andric
1695f757f3fSDimitry Andric    // [time.cal.ymd], class year_month_day
1705f757f3fSDimitry Andric    using std::chrono::year_month_day;
1715f757f3fSDimitry Andric
1725f757f3fSDimitry Andric    // [time.cal.ymdlast], class year_month_day_last
1735f757f3fSDimitry Andric    using std::chrono::year_month_day_last;
1745f757f3fSDimitry Andric
1755f757f3fSDimitry Andric    // [time.cal.ymwd], class year_month_weekday
1765f757f3fSDimitry Andric    using std::chrono::year_month_weekday;
1775f757f3fSDimitry Andric
1785f757f3fSDimitry Andric    // [time.cal.ymwdlast], class year_month_weekday_last
1795f757f3fSDimitry Andric    using std::chrono::year_month_weekday_last;
1805f757f3fSDimitry Andric
1815f757f3fSDimitry Andric    // [time.cal.operators], civil calendar conventional syntax operators
1825f757f3fSDimitry Andric
1835f757f3fSDimitry Andric    // [time.hms], class template hh_mm_ss
1845f757f3fSDimitry Andric    using std::chrono::hh_mm_ss;
1855f757f3fSDimitry Andric
1865f757f3fSDimitry Andric    // [time.12], 12/24 hour functions
1875f757f3fSDimitry Andric    using std::chrono::is_am;
1885f757f3fSDimitry Andric    using std::chrono::is_pm;
1895f757f3fSDimitry Andric    using std::chrono::make12;
1905f757f3fSDimitry Andric    using std::chrono::make24;
1915f757f3fSDimitry Andric
192*0fca6ea1SDimitry Andric#ifdef _LIBCPP_ENABLE_EXPERIMENTAL
193*0fca6ea1SDimitry Andric
1945f757f3fSDimitry Andric#  if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) &&                            \
1955f757f3fSDimitry Andric      !defined(_LIBCPP_HAS_NO_LOCALIZATION)
1965f757f3fSDimitry Andric
1975f757f3fSDimitry Andric    // [time.zone.db], time zone database
1985f757f3fSDimitry Andric    using std::chrono::tzdb;
1995f757f3fSDimitry Andric    using std::chrono::tzdb_list;
2005f757f3fSDimitry Andric
2015f757f3fSDimitry Andric    // [time.zone.db.access], time zone database access
202*0fca6ea1SDimitry Andric    using std::chrono::current_zone;
2035f757f3fSDimitry Andric    using std::chrono::get_tzdb;
2045f757f3fSDimitry Andric    using std::chrono::get_tzdb_list;
205*0fca6ea1SDimitry Andric    using std::chrono::locate_zone;
2065f757f3fSDimitry Andric
2075f757f3fSDimitry Andric    // [time.zone.db.remote], remote time zone database support
2085f757f3fSDimitry Andric    using std::chrono::reload_tzdb;
2095f757f3fSDimitry Andric    using std::chrono::remote_version;
2105f757f3fSDimitry Andric
2115f757f3fSDimitry Andric#  endif //  !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) &&
2125f757f3fSDimitry Andric         //  !defined(_LIBCPP_HAS_NO_LOCALIZATION)
2135f757f3fSDimitry Andric
2145f757f3fSDimitry Andric    // [time.zone.exception], exception classes
2155f757f3fSDimitry Andric    using std::chrono::ambiguous_local_time;
2165f757f3fSDimitry Andric    using std::chrono::nonexistent_local_time;
2175f757f3fSDimitry Andric
2185f757f3fSDimitry Andric    // [time.zone.info], information classes
219*0fca6ea1SDimitry Andric    using std::chrono::local_info;
2205f757f3fSDimitry Andric    using std::chrono::sys_info;
2215f757f3fSDimitry Andric
222*0fca6ea1SDimitry Andric#  if !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) &&                            \
223*0fca6ea1SDimitry Andric      !defined(_LIBCPP_HAS_NO_LOCALIZATION)
224*0fca6ea1SDimitry Andric
2255f757f3fSDimitry Andric    // [time.zone.timezone], class time_zone
2265f757f3fSDimitry Andric    using std::chrono::choose;
2275f757f3fSDimitry Andric    using std::chrono::time_zone;
2285f757f3fSDimitry Andric
2295f757f3fSDimitry Andric    // [time.zone.zonedtraits], class template zoned_traits
2305f757f3fSDimitry Andric    using std::chrono::zoned_traits;
2315f757f3fSDimitry Andric
2325f757f3fSDimitry Andric    // [time.zone.zonedtime], class template zoned_time
2335f757f3fSDimitry Andric    using std::chrono::zoned_time;
2345f757f3fSDimitry Andric
2355f757f3fSDimitry Andric    using std::chrono::zoned_seconds;
2365f757f3fSDimitry Andric
2375f757f3fSDimitry Andric    // [time.zone.leap], leap second support
2385f757f3fSDimitry Andric    using std::chrono::leap_second;
2395f757f3fSDimitry Andric
2405f757f3fSDimitry Andric    // [time.zone.link], class time_zone_link
2415f757f3fSDimitry Andric    using std::chrono::time_zone_link;
2425f757f3fSDimitry Andric
243*0fca6ea1SDimitry Andric#    if 0
2445f757f3fSDimitry Andric    // [time.format], formatting
2455f757f3fSDimitry Andric    using std::chrono::local_time_format;
2465f757f3fSDimitry Andric#    endif
247*0fca6ea1SDimitry Andric#  endif //  !defined(_LIBCPP_HAS_NO_TIME_ZONE_DATABASE) && !defined(_LIBCPP_HAS_NO_FILESYSTEM) &&
248*0fca6ea1SDimitry Andric         //  !defined(_LIBCPP_HAS_NO_LOCALIZATION)
2495f757f3fSDimitry Andric#endif   // _LIBCPP_ENABLE_EXPERIMENTAL
250*0fca6ea1SDimitry Andric
2515f757f3fSDimitry Andric  } // namespace chrono
2525f757f3fSDimitry Andric
2535f757f3fSDimitry Andric#ifndef _LIBCPP_HAS_NO_LOCALIZATION
2545f757f3fSDimitry Andric  using std::formatter;
2555f757f3fSDimitry Andric#endif // _LIBCPP_HAS_NO_LOCALIZATION
2565f757f3fSDimitry Andric
2575f757f3fSDimitry Andric  namespace chrono {
2585f757f3fSDimitry Andric    // using std::chrono::parse;
2595f757f3fSDimitry Andric
2605f757f3fSDimitry Andric    // calendrical constants
2615f757f3fSDimitry Andric    using std::chrono::last;
2625f757f3fSDimitry Andric
2635f757f3fSDimitry Andric    using std::chrono::Friday;
2645f757f3fSDimitry Andric    using std::chrono::Monday;
2655f757f3fSDimitry Andric    using std::chrono::Saturday;
2665f757f3fSDimitry Andric    using std::chrono::Sunday;
2675f757f3fSDimitry Andric    using std::chrono::Thursday;
2685f757f3fSDimitry Andric    using std::chrono::Tuesday;
2695f757f3fSDimitry Andric    using std::chrono::Wednesday;
2705f757f3fSDimitry Andric
2715f757f3fSDimitry Andric    using std::chrono::April;
2725f757f3fSDimitry Andric    using std::chrono::August;
2735f757f3fSDimitry Andric    using std::chrono::December;
2745f757f3fSDimitry Andric    using std::chrono::February;
2755f757f3fSDimitry Andric    using std::chrono::January;
2765f757f3fSDimitry Andric    using std::chrono::July;
2775f757f3fSDimitry Andric    using std::chrono::June;
2785f757f3fSDimitry Andric    using std::chrono::March;
2795f757f3fSDimitry Andric    using std::chrono::May;
2805f757f3fSDimitry Andric    using std::chrono::November;
2815f757f3fSDimitry Andric    using std::chrono::October;
2825f757f3fSDimitry Andric    using std::chrono::September;
2835f757f3fSDimitry Andric
2845f757f3fSDimitry Andric  } // namespace chrono
2855f757f3fSDimitry Andric
2865f757f3fSDimitry Andric} // namespace std
2875f757f3fSDimitry Andricexport namespace std::inline literals::inline chrono_literals {
2885f757f3fSDimitry Andric  // [time.duration.literals], suffixes for duration literals
2895f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""h;
2905f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""min;
2915f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""s;
2925f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""ms;
2935f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""us;
2945f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""ns;
2955f757f3fSDimitry Andric
2965f757f3fSDimitry Andric  // [using std::literals::chrono_literals::.cal.day.nonmembers], non-member functions
2975f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""d;
2985f757f3fSDimitry Andric
2995f757f3fSDimitry Andric  // [using std::literals::chrono_literals::.cal.year.nonmembers], non-member functions
3005f757f3fSDimitry Andric  using std::literals::chrono_literals::operator""y;
3015f757f3fSDimitry Andric} // namespace std::inline literals::inline chrono_literals
302