mirror of
https://github.com/shadps4-emu/ext-fmt.git
synced 2024-11-23 09:49:42 +00:00
144 lines
3.0 KiB
C++
144 lines
3.0 KiB
C++
module;
|
|
|
|
// Put all implementation-provided headers into the global module fragment
|
|
// to prevent attachment to this module.
|
|
#ifndef FMT_IMPORT_STD
|
|
# include <algorithm>
|
|
# include <bitset>
|
|
# include <chrono>
|
|
# include <cmath>
|
|
# include <complex>
|
|
# include <cstddef>
|
|
# include <cstdint>
|
|
# include <cstdio>
|
|
# include <cstdlib>
|
|
# include <cstring>
|
|
# include <ctime>
|
|
# include <exception>
|
|
# include <expected>
|
|
# include <filesystem>
|
|
# include <fstream>
|
|
# include <functional>
|
|
# include <iterator>
|
|
# include <limits>
|
|
# include <locale>
|
|
# include <memory>
|
|
# include <optional>
|
|
# include <ostream>
|
|
# include <source_location>
|
|
# include <stdexcept>
|
|
# include <string>
|
|
# include <string_view>
|
|
# include <system_error>
|
|
# include <thread>
|
|
# include <type_traits>
|
|
# include <typeinfo>
|
|
# include <utility>
|
|
# include <variant>
|
|
# include <vector>
|
|
#else
|
|
# include <limits.h>
|
|
# include <stdint.h>
|
|
# include <stdio.h>
|
|
# include <time.h>
|
|
#endif
|
|
#include <cerrno>
|
|
#include <climits>
|
|
#include <version>
|
|
|
|
#if __has_include(<cxxabi.h>)
|
|
# include <cxxabi.h>
|
|
#endif
|
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
|
# include <intrin.h>
|
|
#endif
|
|
#if defined __APPLE__ || defined(__FreeBSD__)
|
|
# include <xlocale.h>
|
|
#endif
|
|
#if __has_include(<winapifamily.h>)
|
|
# include <winapifamily.h>
|
|
#endif
|
|
#if (__has_include(<fcntl.h>) || defined(__APPLE__) || \
|
|
defined(__linux__)) && \
|
|
(!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
|
|
# include <fcntl.h>
|
|
# include <sys/stat.h>
|
|
# include <sys/types.h>
|
|
# ifndef _WIN32
|
|
# include <unistd.h>
|
|
# else
|
|
# include <io.h>
|
|
# endif
|
|
#endif
|
|
#ifdef _WIN32
|
|
# if defined(__GLIBCXX__)
|
|
# include <ext/stdio_filebuf.h>
|
|
# include <ext/stdio_sync_filebuf.h>
|
|
# endif
|
|
# define WIN32_LEAN_AND_MEAN
|
|
# include <windows.h>
|
|
#endif
|
|
|
|
export module fmt;
|
|
|
|
#ifdef FMT_IMPORT_STD
|
|
import std;
|
|
#endif
|
|
|
|
#define FMT_EXPORT export
|
|
#define FMT_BEGIN_EXPORT export {
|
|
#define FMT_END_EXPORT }
|
|
|
|
// If you define FMT_ATTACH_TO_GLOBAL_MODULE
|
|
// - all declarations are detached from module 'fmt'
|
|
// - the module behaves like a traditional static library, too
|
|
// - all library symbols are mangled traditionally
|
|
// - you can mix TUs with either importing or #including the {fmt} API
|
|
#ifdef FMT_ATTACH_TO_GLOBAL_MODULE
|
|
extern "C++" {
|
|
#endif
|
|
|
|
#ifndef FMT_OS
|
|
# define FMT_OS 1
|
|
#endif
|
|
|
|
// All library-provided declarations and definitions must be in the module
|
|
// purview to be exported.
|
|
#include "fmt/args.h"
|
|
#include "fmt/chrono.h"
|
|
#include "fmt/color.h"
|
|
#include "fmt/compile.h"
|
|
#include "fmt/format.h"
|
|
#if FMT_OS
|
|
# include "fmt/os.h"
|
|
#endif
|
|
#include "fmt/ostream.h"
|
|
#include "fmt/printf.h"
|
|
#include "fmt/ranges.h"
|
|
#include "fmt/std.h"
|
|
#include "fmt/xchar.h"
|
|
|
|
#ifdef FMT_ATTACH_TO_GLOBAL_MODULE
|
|
}
|
|
#endif
|
|
|
|
// gcc doesn't yet implement private module fragments
|
|
#if !FMT_GCC_VERSION
|
|
module :private;
|
|
#endif
|
|
|
|
#ifdef FMT_ATTACH_TO_GLOBAL_MODULE
|
|
extern "C++" {
|
|
#endif
|
|
|
|
#if FMT_HAS_INCLUDE("format.cc")
|
|
# include "format.cc"
|
|
#endif
|
|
#if FMT_OS && FMT_HAS_INCLUDE("os.cc")
|
|
# include "os.cc"
|
|
#endif
|
|
|
|
#ifdef FMT_ATTACH_TO_GLOBAL_MODULE
|
|
}
|
|
#endif
|