This adds the cppm files of D144994. These files by themselves will do nothing. The goal is to reduce the size of D144994 and making it easier to review the real changes of the patch. Implements parts of - P2465R3 Standard Library Modules std and std.compat Reviewed By: ldionne, ChuanqiXu, aaronmondal, #libc Differential Revision: https://reviews.llvm.org/D151030
287 lines
8.0 KiB
C++
287 lines
8.0 KiB
C++
// -*- C++ -*-
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
module;
|
|
#include <chrono>
|
|
|
|
export module std:chrono;
|
|
export namespace std {
|
|
|
|
namespace chrono {
|
|
using std::chrono::duration;
|
|
using std::chrono::time_point;
|
|
|
|
} // namespace chrono
|
|
|
|
using std::common_type;
|
|
|
|
namespace chrono {
|
|
|
|
// [time.traits], customization traits
|
|
using std::chrono::treat_as_floating_point;
|
|
using std::chrono::treat_as_floating_point_v;
|
|
|
|
using std::chrono::duration_values;
|
|
|
|
// using std::chrono::is_clock;
|
|
// using std::chrono::is_clock_v;
|
|
|
|
// [time.duration.nonmember], duration arithmetic
|
|
using std::chrono::operator+;
|
|
using std::chrono::operator-;
|
|
using std::chrono::operator*;
|
|
using std::chrono::operator/;
|
|
using std::chrono::operator%;
|
|
|
|
// [time.duration.comparisons], duration comparisons
|
|
using std::chrono::operator==;
|
|
using std::chrono::operator!=;
|
|
using std::chrono::operator<;
|
|
using std::chrono::operator>;
|
|
using std::chrono::operator<=;
|
|
using std::chrono::operator>=;
|
|
using std::chrono::operator<=>;
|
|
|
|
// [time.duration.cast], conversions
|
|
using std::chrono::ceil;
|
|
using std::chrono::duration_cast;
|
|
using std::chrono::floor;
|
|
using std::chrono::round;
|
|
|
|
// [time.duration.io], duration I/O
|
|
#if !defined(_LIBCPP_HAS_NO_INCOMPLETE_FORMAT) && !defined(_LIBCPP_HAS_NO_LOCALIZATION)
|
|
using std::chrono::operator<<;
|
|
#endif
|
|
// using std::chrono::from_stream;
|
|
|
|
// convenience typedefs
|
|
using std::chrono::days;
|
|
using std::chrono::hours;
|
|
using std::chrono::microseconds;
|
|
using std::chrono::milliseconds;
|
|
using std::chrono::minutes;
|
|
using std::chrono::months;
|
|
using std::chrono::nanoseconds;
|
|
using std::chrono::seconds;
|
|
using std::chrono::weeks;
|
|
using std::chrono::years;
|
|
|
|
// [time.point.nonmember], time_point arithmetic
|
|
|
|
// [time.point.comparisons], time_point comparisons
|
|
|
|
// [time.point.cast], conversions
|
|
using std::chrono::time_point_cast;
|
|
|
|
// [time.duration.alg], specialized algorithms
|
|
using std::chrono::abs;
|
|
|
|
// [time.clock.system], class system_clock
|
|
using std::chrono::system_clock;
|
|
|
|
using std::chrono::sys_days;
|
|
using std::chrono::sys_seconds;
|
|
using std::chrono::sys_time;
|
|
|
|
#if 0
|
|
// [time.clock.utc], class utc_clock
|
|
using std::chrono::utc_clock;
|
|
|
|
using std::chrono::utc_seconds;
|
|
using std::chrono::utc_time;
|
|
|
|
using std::chrono::leap_second_info;
|
|
|
|
using std::chrono::get_leap_second_info;
|
|
// [time.clock.tai], class tai_clock
|
|
using std::chrono::tai_clock;
|
|
|
|
using std::chrono::tai_seconds;
|
|
using std::chrono::tai_time;
|
|
|
|
// [time.clock.gps], class gps_clock
|
|
using std::chrono::gps_clock;
|
|
|
|
using std::chrono::gps_seconds;
|
|
using std::chrono::gps_time;
|
|
#endif
|
|
// [time.clock.file], type file_clock
|
|
using std::chrono::file_clock;
|
|
|
|
using std::chrono::file_time;
|
|
|
|
// [time.clock.steady], class steady_clock
|
|
using std::chrono::steady_clock;
|
|
|
|
// [time.clock.hires], class high_resolution_clock
|
|
using std::chrono::high_resolution_clock;
|
|
|
|
// [time.clock.local], local time
|
|
using std::chrono::local_days;
|
|
using std::chrono::local_seconds;
|
|
using std::chrono::local_t;
|
|
using std::chrono::local_time;
|
|
|
|
// [time.clock.cast], time_point conversions
|
|
// using std::chrono::clock_time_conversion;
|
|
|
|
// using std::chrono::clock_cast;
|
|
|
|
// [time.cal.last], class last_spec
|
|
using std::chrono::last_spec;
|
|
|
|
// [time.cal.day], class day
|
|
using std::chrono::day;
|
|
|
|
// [time.cal.month], class month
|
|
using std::chrono::month;
|
|
|
|
// [time.cal.year], class year
|
|
using std::chrono::year;
|
|
|
|
// [time.cal.wd], class weekday
|
|
using std::chrono::weekday;
|
|
|
|
// [time.cal.wdidx], class weekday_indexed
|
|
using std::chrono::weekday_indexed;
|
|
|
|
// [time.cal.wdlast], class weekday_last
|
|
using std::chrono::weekday_last;
|
|
|
|
// [time.cal.md], class month_day
|
|
using std::chrono::month_day;
|
|
|
|
// [time.cal.mdlast], class month_day_last
|
|
using std::chrono::month_day_last;
|
|
|
|
// [time.cal.mwd], class month_weekday
|
|
using std::chrono::month_weekday;
|
|
|
|
// [time.cal.mwdlast], class month_weekday_last
|
|
using std::chrono::month_weekday_last;
|
|
|
|
// [time.cal.ym], class year_month
|
|
using std::chrono::year_month;
|
|
|
|
// [time.cal.ymd], class year_month_day
|
|
using std::chrono::year_month_day;
|
|
|
|
// [time.cal.ymdlast], class year_month_day_last
|
|
using std::chrono::year_month_day_last;
|
|
|
|
// [time.cal.ymwd], class year_month_weekday
|
|
using std::chrono::year_month_weekday;
|
|
|
|
// [time.cal.ymwdlast], class year_month_weekday_last
|
|
using std::chrono::year_month_weekday_last;
|
|
|
|
// [time.cal.operators], civil calendar conventional syntax operators
|
|
|
|
// [time.hms], class template hh_mm_ss
|
|
using std::chrono::hh_mm_ss;
|
|
|
|
// [time.12], 12/24 hour functions
|
|
using std::chrono::is_am;
|
|
using std::chrono::is_pm;
|
|
using std::chrono::make12;
|
|
using std::chrono::make24;
|
|
|
|
#if 0
|
|
// [time.zone.db], time zone database
|
|
using std::chrono::tzdb;
|
|
using std::chrono::tzdb_list;
|
|
|
|
// [time.zone.db.access], time zone database access
|
|
using std::chrono::current_zone;
|
|
using std::chrono::get_tzdb;
|
|
using std::chrono::get_tzdb_list;
|
|
using std::chrono::locate_zone;
|
|
|
|
// [time.zone.db.remote], remote time zone database support
|
|
using std::chrono::reload_tzdb;
|
|
using std::chrono::remote_version;
|
|
|
|
// [time.zone.exception], exception classes
|
|
using std::chrono::ambiguous_local_time;
|
|
using std::chrono::nonexistent_local_time;
|
|
|
|
// [time.zone.info], information classes
|
|
using std::chrono::sys_info;
|
|
|
|
// [time.zone.timezone], class time_zone
|
|
using std::chrono::choose;
|
|
using std::chrono::time_zone;
|
|
|
|
// [time.zone.zonedtraits], class template zoned_traits
|
|
using std::chrono::zoned_traits;
|
|
|
|
// [time.zone.zonedtime], class template zoned_time
|
|
using std::chrono::zoned_time;
|
|
|
|
using std::chrono::zoned_seconds;
|
|
|
|
// [time.zone.leap], leap second support
|
|
using std::chrono::leap_second;
|
|
|
|
// [time.zone.link], class time_zone_link
|
|
using std::chrono::time_zone_link;
|
|
|
|
// [time.format], formatting
|
|
using std::chrono::local_time_format;
|
|
#endif
|
|
} // namespace chrono
|
|
|
|
using std::formatter;
|
|
|
|
namespace chrono {
|
|
// using std::chrono::parse;
|
|
|
|
// calendrical constants
|
|
using std::chrono::last;
|
|
|
|
using std::chrono::Friday;
|
|
using std::chrono::Monday;
|
|
using std::chrono::Saturday;
|
|
using std::chrono::Sunday;
|
|
using std::chrono::Thursday;
|
|
using std::chrono::Tuesday;
|
|
using std::chrono::Wednesday;
|
|
|
|
using std::chrono::April;
|
|
using std::chrono::August;
|
|
using std::chrono::December;
|
|
using std::chrono::February;
|
|
using std::chrono::January;
|
|
using std::chrono::July;
|
|
using std::chrono::June;
|
|
using std::chrono::March;
|
|
using std::chrono::May;
|
|
using std::chrono::November;
|
|
using std::chrono::October;
|
|
using std::chrono::September;
|
|
|
|
} // namespace chrono
|
|
|
|
} // namespace std
|
|
export namespace std::inline literals::inline chrono_literals {
|
|
// [time.duration.literals], suffixes for duration literals
|
|
using std::literals::chrono_literals::operator""h;
|
|
using std::literals::chrono_literals::operator""min;
|
|
using std::literals::chrono_literals::operator""s;
|
|
using std::literals::chrono_literals::operator""ms;
|
|
using std::literals::chrono_literals::operator""us;
|
|
using std::literals::chrono_literals::operator""ns;
|
|
|
|
// [using std::literals::chrono_literals::.cal.day.nonmembers], non-member functions
|
|
using std::literals::chrono_literals::operator""d;
|
|
|
|
// [using std::literals::chrono_literals::.cal.year.nonmembers], non-member functions
|
|
using std::literals::chrono_literals::operator""y;
|
|
} // namespace std::inline literals::inline chrono_literals
|