| 
329
 | 
     1 module;
 | 
| 
 | 
     2 
 | 
| 
 | 
     3 // Put all implementation-provided headers into the global module fragment
 | 
| 
 | 
     4 // to prevent attachment to this module.
 | 
| 
 | 
     5 #include <algorithm>
 | 
| 
 | 
     6 #include <cerrno>
 | 
| 
 | 
     7 #include <chrono>
 | 
| 
 | 
     8 #include <climits>
 | 
| 
 | 
     9 #include <cmath>
 | 
| 
 | 
    10 #include <cstddef>
 | 
| 
 | 
    11 #include <cstdint>
 | 
| 
 | 
    12 #include <cstdio>
 | 
| 
 | 
    13 #include <cstdlib>
 | 
| 
 | 
    14 #include <cstring>
 | 
| 
 | 
    15 #include <ctime>
 | 
| 
 | 
    16 #include <exception>
 | 
| 
 | 
    17 #include <filesystem>
 | 
| 
 | 
    18 #include <fstream>
 | 
| 
 | 
    19 #include <functional>
 | 
| 
 | 
    20 #include <iterator>
 | 
| 
 | 
    21 #include <limits>
 | 
| 
 | 
    22 #include <locale>
 | 
| 
 | 
    23 #include <memory>
 | 
| 
 | 
    24 #include <optional>
 | 
| 
 | 
    25 #include <ostream>
 | 
| 
 | 
    26 #include <stdexcept>
 | 
| 
 | 
    27 #include <string>
 | 
| 
 | 
    28 #include <string_view>
 | 
| 
 | 
    29 #include <system_error>
 | 
| 
 | 
    30 #include <thread>
 | 
| 
 | 
    31 #include <type_traits>
 | 
| 
 | 
    32 #include <typeinfo>
 | 
| 
 | 
    33 #include <utility>
 | 
| 
 | 
    34 #include <variant>
 | 
| 
 | 
    35 #include <vector>
 | 
| 
 | 
    36 #include <version>
 | 
| 
 | 
    37 
 | 
| 
 | 
    38 #if __has_include(<cxxabi.h>)
 | 
| 
 | 
    39 #  include <cxxabi.h>
 | 
| 
 | 
    40 #endif
 | 
| 
 | 
    41 #if defined(_MSC_VER) || defined(__MINGW32__)
 | 
| 
 | 
    42 #  include <intrin.h>
 | 
| 
 | 
    43 #endif
 | 
| 
 | 
    44 #if defined __APPLE__ || defined(__FreeBSD__)
 | 
| 
 | 
    45 #  include <xlocale.h>
 | 
| 
 | 
    46 #endif
 | 
| 
 | 
    47 #if __has_include(<winapifamily.h>)
 | 
| 
 | 
    48 #  include <winapifamily.h>
 | 
| 
 | 
    49 #endif
 | 
| 
 | 
    50 #if (__has_include(<fcntl.h>) || defined(__APPLE__) || \
 | 
| 
 | 
    51      defined(__linux__)) &&                            \
 | 
| 
 | 
    52     (!defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP))
 | 
| 
 | 
    53 #  include <fcntl.h>
 | 
| 
 | 
    54 #  include <sys/stat.h>
 | 
| 
 | 
    55 #  include <sys/types.h>
 | 
| 
 | 
    56 #  ifndef _WIN32
 | 
| 
 | 
    57 #    include <unistd.h>
 | 
| 
 | 
    58 #  else
 | 
| 
 | 
    59 #    include <io.h>
 | 
| 
 | 
    60 #  endif
 | 
| 
 | 
    61 #endif
 | 
| 
 | 
    62 #ifdef _WIN32
 | 
| 
 | 
    63 #  if defined(__GLIBCXX__)
 | 
| 
 | 
    64 #    include <ext/stdio_filebuf.h>
 | 
| 
 | 
    65 #    include <ext/stdio_sync_filebuf.h>
 | 
| 
 | 
    66 #  endif
 | 
| 
 | 
    67 #  define WIN32_LEAN_AND_MEAN
 | 
| 
 | 
    68 #  include <windows.h>
 | 
| 
 | 
    69 #endif
 | 
| 
 | 
    70 
 | 
| 
 | 
    71 export module fmt;
 | 
| 
 | 
    72 
 | 
| 
 | 
    73 #define FMT_EXPORT export
 | 
| 
 | 
    74 #define FMT_BEGIN_EXPORT export {
 | 
| 
 | 
    75 #define FMT_END_EXPORT }
 | 
| 
 | 
    76 
 | 
| 
 | 
    77 // If you define FMT_ATTACH_TO_GLOBAL_MODULE
 | 
| 
 | 
    78 //  - all declarations are detached from module 'fmt'
 | 
| 
 | 
    79 //  - the module behaves like a traditional static library, too
 | 
| 
 | 
    80 //  - all library symbols are mangled traditionally
 | 
| 
 | 
    81 //  - you can mix TUs with either importing or #including the {fmt} API
 | 
| 
 | 
    82 #ifdef FMT_ATTACH_TO_GLOBAL_MODULE
 | 
| 
 | 
    83 extern "C++" {
 | 
| 
 | 
    84 #endif
 | 
| 
 | 
    85 
 | 
| 
 | 
    86 // All library-provided declarations and definitions must be in the module
 | 
| 
 | 
    87 // purview to be exported.
 | 
| 
 | 
    88 #include "fmt/args.h"
 | 
| 
 | 
    89 #include "fmt/chrono.h"
 | 
| 
 | 
    90 #include "fmt/color.h"
 | 
| 
 | 
    91 #include "fmt/compile.h"
 | 
| 
 | 
    92 #include "fmt/format.h"
 | 
| 
 | 
    93 #include "fmt/os.h"
 | 
| 
 | 
    94 #include "fmt/printf.h"
 | 
| 
 | 
    95 #include "fmt/std.h"
 | 
| 
 | 
    96 #include "fmt/xchar.h"
 | 
| 
 | 
    97 
 | 
| 
 | 
    98 #ifdef FMT_ATTACH_TO_GLOBAL_MODULE
 | 
| 
 | 
    99 }
 | 
| 
 | 
   100 #endif
 | 
| 
 | 
   101 
 | 
| 
 | 
   102 // gcc doesn't yet implement private module fragments
 | 
| 
 | 
   103 #if !FMT_GCC_VERSION
 | 
| 
 | 
   104 module :private;
 | 
| 
 | 
   105 #endif
 | 
| 
 | 
   106 
 | 
| 
 | 
   107 #include "format.cc"
 | 
| 
 | 
   108 #include "os.cc"
 |