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