// file : libstd-modules/std-core.mxx -*- C++ -*- // copyright : Copyright (c) 2014-2018 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file // For some standard library implementations we need to pre-include certain // headers to prevent their exporting. #include #if defined(_MSC_VER) /* # include # include # include # include # include // struct tm; */ #elif defined(__GLIBCXX__) # include # include # include // struct tm forward declaration. # include # include # include # include # include # include // Names with internal linkage. #elif defined(_LIBCPP_VERSION) #endif export module std.core; export { // These are defined in which we have pre-included. // #ifdef __GLIBCXX__ namespace std { typedef __SIZE_TYPE__ size_t; typedef __PTRDIFF_TYPE__ ptrdiff_t; typedef decltype(nullptr) nullptr_t; } #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include } export { #include #include #include #include #include // @@ Not in the proposal. #include #include #include #include #include #include #include #include #include } #if defined(_MSC_VER) || defined(__clang__) export { #include #include #include #include #include #include #include #include #include #include #ifndef __GLIBCXX__ # include #else // Contents of without static __ioinit. // namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; static inline ios_base::Init __ioinit; _GLIBCXX_END_NAMESPACE_VERSION } #endif } #endif // std.threading // export { #include #include #include #include }