
The patch is based on D144994. D151030 added the module definitions for the module std. This patch wires in the module and enables the basic testing. Some notable features are missing: - There is no test that libc++ can be fully imported as a module. - This lacks the parts for the std.compat module. - The module is not shipped with libc++. Implements parts of - P2465R3 Standard Library Modules std and std.compat Reviewed By: ldionne, aaronmondal, #libc Differential Revision: https://reviews.llvm.org/D151814
86 lines
2.0 KiB
C++
86 lines
2.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 <string>
|
|
|
|
export module std:string;
|
|
export namespace std {
|
|
// [char.traits], character traits
|
|
using std::char_traits;
|
|
|
|
// [basic.string], basic_string
|
|
using std::basic_string;
|
|
|
|
using std::operator+;
|
|
using std::operator==;
|
|
using std::operator<=>;
|
|
|
|
// [string.special], swap
|
|
using std::swap;
|
|
|
|
// [string.io], inserters and extractors
|
|
using std::operator>>;
|
|
using std::operator<<;
|
|
using std::getline;
|
|
|
|
// [string.erasure], erasure
|
|
using std::erase;
|
|
using std::erase_if;
|
|
|
|
// basic_string typedef-names
|
|
using std::string;
|
|
using std::u16string;
|
|
using std::u32string;
|
|
using std::u8string;
|
|
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
|
|
using std::wstring;
|
|
#endif
|
|
|
|
// [string.conversions], numeric conversions
|
|
using std::stod;
|
|
using std::stof;
|
|
using std::stoi;
|
|
using std::stol;
|
|
using std::stold;
|
|
using std::stoll;
|
|
using std::stoul;
|
|
using std::stoull;
|
|
using std::to_string;
|
|
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
|
|
using std::to_wstring;
|
|
#endif
|
|
|
|
namespace pmr {
|
|
using std::pmr::basic_string;
|
|
using std::pmr::string;
|
|
using std::pmr::u16string;
|
|
using std::pmr::u32string;
|
|
using std::pmr::u8string;
|
|
#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS
|
|
using std::pmr::wstring;
|
|
#endif
|
|
} // namespace pmr
|
|
|
|
// [basic.string.hash], hash support
|
|
using std::hash;
|
|
|
|
// TODO MODULES is this a bug?
|
|
#if 1
|
|
using std::operator""s;
|
|
#else
|
|
inline namespace literals {
|
|
inline namespace string_literals {
|
|
// [basic.string.literals], suffix for basic_string literals
|
|
using std::literals::string_literals::operator""s;
|
|
} // namespace string_literals
|
|
} // namespace literals
|
|
#endif
|
|
} // namespace std
|