aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/root.build2
-rw-r--r--libbutl/b.cxx58
-rw-r--r--libbutl/b.hxx (renamed from libbutl/b.mxx)39
-rw-r--r--libbutl/backtrace.cxx22
-rw-r--r--libbutl/backtrace.hxx (renamed from libbutl/backtrace.mxx)19
-rw-r--r--libbutl/base64.cxx26
-rw-r--r--libbutl/base64.hxx (renamed from libbutl/base64.mxx)20
-rw-r--r--libbutl/buildfile19
-rw-r--r--libbutl/builtin.cxx55
-rw-r--r--libbutl/builtin.hxx (renamed from libbutl/builtin.mxx)31
-rw-r--r--libbutl/char-scanner.hxx (renamed from libbutl/char-scanner.mxx)21
-rw-r--r--libbutl/char-scanner.txx2
-rw-r--r--libbutl/command.cxx42
-rw-r--r--libbutl/command.hxx (renamed from libbutl/command.mxx)23
-rw-r--r--libbutl/const-ptr.hxx (renamed from libbutl/const-ptr.mxx)19
-rw-r--r--libbutl/curl.cxx34
-rw-r--r--libbutl/curl.hxx (renamed from libbutl/curl.mxx)35
-rw-r--r--libbutl/curl.ixx6
-rw-r--r--libbutl/curl.txx2
-rw-r--r--libbutl/default-options.hxx (renamed from libbutl/default-options.mxx)37
-rw-r--r--libbutl/default-options.ixx2
-rw-r--r--libbutl/default-options.txx10
-rw-r--r--libbutl/diagnostics.cxx37
-rw-r--r--libbutl/diagnostics.hxx (renamed from libbutl/diagnostics.mxx)17
-rw-r--r--libbutl/export.hxx8
-rw-r--r--libbutl/fdstream.cxx43
-rw-r--r--libbutl/fdstream.hxx (renamed from libbutl/fdstream.mxx)34
-rw-r--r--libbutl/fdstream.ixx2
-rw-r--r--libbutl/filesystem.cxx45
-rw-r--r--libbutl/filesystem.hxx (renamed from libbutl/filesystem.mxx)38
-rw-r--r--libbutl/filesystem.ixx3
-rw-r--r--libbutl/git.cxx40
-rw-r--r--libbutl/git.hxx (renamed from libbutl/git.mxx)28
-rw-r--r--libbutl/lz4-stream.cxx2
-rw-r--r--libbutl/lz4-stream.hxx2
-rw-r--r--libbutl/lz4.cxx2
-rw-r--r--libbutl/lz4.hxx4
-rw-r--r--libbutl/manifest-parser.cxx31
-rw-r--r--libbutl/manifest-parser.hxx (renamed from libbutl/manifest-parser.mxx)34
-rw-r--r--libbutl/manifest-rewriter.cxx36
-rw-r--r--libbutl/manifest-rewriter.hxx (renamed from libbutl/manifest-rewriter.mxx)28
-rw-r--r--libbutl/manifest-serializer.cxx37
-rw-r--r--libbutl/manifest-serializer.hxx (renamed from libbutl/manifest-serializer.mxx)23
-rw-r--r--libbutl/manifest-types.hxx (renamed from libbutl/manifest-types.mxx)22
-rw-r--r--libbutl/multi-index.hxx (renamed from libbutl/multi-index.mxx)21
-rw-r--r--libbutl/openssl.cxx27
-rw-r--r--libbutl/openssl.hxx (renamed from libbutl/openssl.mxx)34
-rw-r--r--libbutl/openssl.ixx5
-rw-r--r--libbutl/openssl.txx4
-rw-r--r--libbutl/optional.hxx (renamed from libbutl/optional.mxx)21
-rw-r--r--libbutl/pager.cxx40
-rw-r--r--libbutl/pager.hxx (renamed from libbutl/pager.mxx)26
-rw-r--r--libbutl/path-io.hxx (renamed from libbutl/path-io.mxx)24
-rw-r--r--libbutl/path-map.hxx (renamed from libbutl/path-map.mxx)27
-rw-r--r--libbutl/path-pattern.cxx33
-rw-r--r--libbutl/path-pattern.hxx (renamed from libbutl/path-pattern.mxx)27
-rw-r--r--libbutl/path.cxx29
-rw-r--r--libbutl/path.hxx (renamed from libbutl/path.mxx)31
-rw-r--r--libbutl/path.ixx2
-rw-r--r--libbutl/path.txx2
-rw-r--r--libbutl/prefix-map.hxx (renamed from libbutl/prefix-map.mxx)19
-rw-r--r--libbutl/prefix-map.txx2
-rw-r--r--libbutl/process-details.hxx5
-rw-r--r--libbutl/process-io.cxx29
-rw-r--r--libbutl/process-io.hxx (renamed from libbutl/process-io.mxx)23
-rw-r--r--libbutl/process-run.cxx27
-rw-r--r--libbutl/process-run.txx4
-rw-r--r--libbutl/process.cxx56
-rw-r--r--libbutl/process.hxx (renamed from libbutl/process.mxx)37
-rw-r--r--libbutl/process.ixx3
-rw-r--r--libbutl/project-name.cxx30
-rw-r--r--libbutl/project-name.hxx (renamed from libbutl/project-name.mxx)23
-rw-r--r--libbutl/prompt.cxx26
-rw-r--r--libbutl/prompt.hxx (renamed from libbutl/prompt.mxx)19
-rw-r--r--libbutl/regex.cxx31
-rw-r--r--libbutl/regex.hxx (renamed from libbutl/regex.mxx)29
-rw-r--r--libbutl/regex.ixx4
-rw-r--r--libbutl/regex.txx5
-rw-r--r--libbutl/semantic-version.cxx29
-rw-r--r--libbutl/semantic-version.hxx (renamed from libbutl/semantic-version.mxx)23
-rw-r--r--libbutl/sendmail.cxx27
-rw-r--r--libbutl/sendmail.hxx (renamed from libbutl/sendmail.mxx)31
-rw-r--r--libbutl/sendmail.ixx5
-rw-r--r--libbutl/sha1.cxx24
-rw-r--r--libbutl/sha1.hxx (renamed from libbutl/sha1.mxx)19
-rw-r--r--libbutl/sha256.cxx34
-rw-r--r--libbutl/sha256.hxx (renamed from libbutl/sha256.mxx)19
-rw-r--r--libbutl/small-allocator.hxx (renamed from libbutl/small-allocator.mxx)18
-rw-r--r--libbutl/small-forward-list.hxx (renamed from libbutl/small-forward-list.mxx)20
-rw-r--r--libbutl/small-list.hxx (renamed from libbutl/small-list.mxx)24
-rw-r--r--libbutl/small-vector-odb.hxx2
-rw-r--r--libbutl/small-vector.hxx (renamed from libbutl/small-vector.mxx)24
-rw-r--r--libbutl/standard-version.cxx33
-rw-r--r--libbutl/standard-version.hxx (renamed from libbutl/standard-version.mxx)23
-rw-r--r--libbutl/string-parser.cxx28
-rw-r--r--libbutl/string-parser.hxx (renamed from libbutl/string-parser.mxx)19
-rw-r--r--libbutl/string-table.hxx (renamed from libbutl/string-table.mxx)26
-rw-r--r--libbutl/string-table.txx3
-rw-r--r--libbutl/tab-parser.cxx31
-rw-r--r--libbutl/tab-parser.hxx (renamed from libbutl/tab-parser.mxx)20
-rw-r--r--libbutl/target-triplet.cxx26
-rw-r--r--libbutl/target-triplet.hxx (renamed from libbutl/target-triplet.mxx)22
-rw-r--r--libbutl/timestamp.cxx39
-rw-r--r--libbutl/timestamp.hxx (renamed from libbutl/timestamp.mxx)32
-rw-r--r--libbutl/unicode.cxx23
-rw-r--r--libbutl/unicode.hxx (renamed from libbutl/unicode.mxx)20
-rw-r--r--libbutl/url.hxx (renamed from libbutl/url.mxx)41
-rw-r--r--libbutl/url.ixx2
-rw-r--r--libbutl/url.txx7
-rw-r--r--libbutl/utf8.hxx (renamed from libbutl/utf8.mxx)22
-rw-r--r--libbutl/utility.cxx26
-rw-r--r--libbutl/utility.hxx (renamed from libbutl/utility.mxx)27
-rw-r--r--libbutl/utility.ixx2
-rw-r--r--libbutl/uuid-linux.cxx2
-rw-r--r--libbutl/vector-view.hxx (renamed from libbutl/vector-view.mxx)19
-rw-r--r--libbutl/win32-utility.cxx9
-rw-r--r--libbutl/win32-utility.hxx4
-rw-r--r--tests/b-info/driver.cxx22
-rw-r--r--tests/backtrace/driver.cxx21
-rw-r--r--tests/base64/driver.cxx14
-rw-r--r--tests/builtin/driver.cxx26
-rw-r--r--tests/command/driver.cxx29
-rw-r--r--tests/cpfile/driver.cxx20
-rw-r--r--tests/curl/driver.cxx31
-rw-r--r--tests/default-options/driver.cxx30
-rw-r--r--tests/dir-iterator/driver.cxx25
-rw-r--r--tests/entry-time/driver.cxx23
-rw-r--r--tests/fdstream/driver.cxx29
-rw-r--r--tests/link/driver.cxx26
-rw-r--r--tests/lz4/driver.cxx4
-rw-r--r--tests/manifest-parser/driver.cxx19
-rw-r--r--tests/manifest-rewriter/driver.cxx28
-rw-r--r--tests/manifest-roundtrip/driver.cxx23
-rw-r--r--tests/manifest-serializer/driver.cxx16
-rw-r--r--tests/mventry/driver.cxx20
-rw-r--r--tests/openssl/driver.cxx27
-rw-r--r--tests/optional/driver.cxx15
-rw-r--r--tests/pager/driver.cxx16
-rw-r--r--tests/path-entry/driver.cxx31
-rw-r--r--tests/path/driver.cxx17
-rw-r--r--tests/prefix-map/driver.cxx16
-rw-r--r--tests/process-run/driver.cxx26
-rw-r--r--tests/process-term/driver.cxx20
-rw-r--r--tests/process/driver.cxx31
-rw-r--r--tests/progress/driver.cxx26
-rw-r--r--tests/project-name/driver.cxx20
-rw-r--r--tests/regex/driver.cxx18
-rw-r--r--tests/semantic-version/driver.cxx14
-rw-r--r--tests/sendmail/driver.cxx27
-rw-r--r--tests/sha1/driver.cxx24
-rw-r--r--tests/sha256/driver.cxx24
-rw-r--r--tests/small-forward-list/driver.cxx16
-rw-r--r--tests/small-list/driver.cxx14
-rw-r--r--tests/small-vector/driver.cxx16
-rw-r--r--tests/standard-version/driver.cxx22
-rw-r--r--tests/strcase/driver.cxx13
-rw-r--r--tests/string-parser/driver.cxx19
-rw-r--r--tests/tab-parser/driver.cxx17
-rw-r--r--tests/target-triplet/driver.cxx16
-rw-r--r--tests/timestamp/driver.cxx14
-rw-r--r--tests/url/driver.cxx19
-rw-r--r--tests/utf8/driver.cxx18
-rw-r--r--tests/wildcard/driver.cxx26
163 files changed, 548 insertions, 2990 deletions
diff --git a/build/root.build b/build/root.build
index e867421..1526ef0 100644
--- a/build/root.build
+++ b/build/root.build
@@ -5,7 +5,7 @@ cxx.std = latest
using cxx
-hxx{*}: extension = hxx # We also have .mxx; see libbutl/buildfile.
+hxx{*}: extension = hxx
ixx{*}: extension = ixx
txx{*}: extension = txx
cxx{*}: extension = cxx
diff --git a/libbutl/b.cxx b/libbutl/b.cxx
index 86a87ff..74a430c 100644
--- a/libbutl/b.cxx
+++ b/libbutl/b.cxx
@@ -1,59 +1,19 @@
// file : libbutl/b.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/b.mxx>
-#endif
-
-// C includes.
+#include <libbutl/b.hxx>
+#include <ios> // ios::failure
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
-#include <cstddef>
-#include <cstdint>
-#include <stdexcept>
-#include <functional>
-
-#include <ios> // ios::failure
-#include <utility> // move()
+#include <utility> // move()
#include <sstream>
#include <algorithm>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.b;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.url;
-import butl.path;
-import butl.process;
-import butl.optional;
-import butl.project_name;
-import butl.standard_version;
-#endif
-
-import butl.utility; // next_word(), eof(), etc
-import butl.path_io;
-import butl.fdstream;
-import butl.process_io; // operator<<(ostream, process_path)
-import butl.small_vector;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/process-io.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+
+#include <libbutl/utility.hxx> // next_word(), eof(), etc
+#include <libbutl/path-io.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/process-io.hxx> // operator<<(ostream, process_path)
+#include <libbutl/small-vector.hxx>
using namespace std;
diff --git a/libbutl/b.mxx b/libbutl/b.hxx
index cca9696..cc3a309 100644
--- a/libbutl/b.mxx
+++ b/libbutl/b.hxx
@@ -1,13 +1,8 @@
-// file : libbutl/b.mxx -*- C++ -*-
+// file : libbutl/b.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <utility> // move()
@@ -15,33 +10,17 @@
#include <cstdint> // uint16_t
#include <stdexcept> // runtime_error
#include <functional>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.b;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.url;
-import butl.path;
-import butl.process;
-import butl.optional;
-import butl.project_name;
-import butl.standard_version;
-#else
-#include <libbutl/url.mxx>
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/project-name.mxx>
-#include <libbutl/standard-version.mxx>
-#endif
+
+#include <libbutl/url.hxx>
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/project-name.hxx>
+#include <libbutl/standard-version.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
class LIBBUTL_SYMEXPORT b_error: public std::runtime_error
{
diff --git a/libbutl/backtrace.cxx b/libbutl/backtrace.cxx
index 8c9c6ae..c0cf472 100644
--- a/libbutl/backtrace.cxx
+++ b/libbutl/backtrace.cxx
@@ -1,9 +1,7 @@
// file : libbutl/backtrace.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/backtrace.mxx>
-#endif
+#include <libbutl/backtrace.hxx>
// We only enable backtrace during bootstrap if we can do it without any
// complications of the build scripts/makefiles.
@@ -35,30 +33,12 @@
#include <cassert>
-#ifndef __cpp_lib_modules_ts
-#include <string>
-
#ifdef LIBBUTL_BACKTRACE
# include <memory> // unique_ptr
# include <cstddef> // size_t
#endif
#include <exception>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.backtrace;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
-
-#endif
using namespace std;
diff --git a/libbutl/backtrace.mxx b/libbutl/backtrace.hxx
index f5a63d5..6afb6ea 100644
--- a/libbutl/backtrace.mxx
+++ b/libbutl/backtrace.hxx
@@ -1,28 +1,13 @@
-// file : libbutl/backtrace.mxx -*- C++ -*-
+// file : libbutl/backtrace.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.backtrace;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Return the calling thread's backtrace or empty string if this
// functionality is not supported or an error has occurred. The exact
diff --git a/libbutl/base64.cxx b/libbutl/base64.cxx
index 527c6af..4466f24 100644
--- a/libbutl/base64.cxx
+++ b/libbutl/base64.cxx
@@ -1,37 +1,13 @@
// file : libbutl/base64.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/base64.mxx>
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
+#include <libbutl/base64.hxx>
#include <cstddef> // size_t
#include <istream>
#include <ostream>
#include <iterator> // {istreambuf, ostreambuf, back_insert}_iterator
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.base64;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
-#endif
using namespace std;
diff --git a/libbutl/base64.mxx b/libbutl/base64.hxx
index 698b7e2..f38e62f 100644
--- a/libbutl/base64.mxx
+++ b/libbutl/base64.hxx
@@ -1,31 +1,15 @@
-// file : libbutl/base64.mxx -*- C++ -*-
+// file : libbutl/base64.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <iosfwd>
#include <string>
#include <vector>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.base64;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Base64-encode a stream or a buffer. Split the output into 76 char-long
// lines (new line is the 77th). If reading from a stream, check if it has
diff --git a/libbutl/buildfile b/libbutl/buildfile
index 5398f71..ff7344e 100644
--- a/libbutl/buildfile
+++ b/libbutl/buildfile
@@ -1,22 +1,13 @@
# file : libbutl/buildfile
# license : MIT; see accompanying LICENSE file
-# This library was modularized using the Modules TS semantics (with support
-# for dual, module/header consumption) which was subsequently partially
-# dismantled. We, however, kept some of the changes in anticipation that they
-# would be useful when attempting to modularize using the merged modules
-# semantics. Specifically, there are currently headers with both .mxx and .hxx
-# extensions and the code is littered with the `#if __cpp_[lib_]modules_ts`
-# blocks. Note that it's important for the auto-generated header support
-# that the default extension for hxx{} is .hxx.
-#
# @@ If/when going back to using mxx{}, make sure to cleanup explicit .mxx.
#
-lib{butl}: {hxx ixx txx cxx}{** -uuid-* +uuid-io \
- -win32-utility \
- -version \
- -builtin-options} \
- hxx{**.mxx} {hxx}{version} {hxx ixx cxx}{builtin-options}
+lib{butl}: {hxx ixx txx cxx}{** -uuid-* +uuid-io \
+ -win32-utility \
+ -version \
+ -builtin-options} \
+ {hxx}{version} {hxx ixx cxx}{builtin-options}
tclass = $cxx.target.class
tsys = $cxx.target.system
diff --git a/libbutl/builtin.cxx b/libbutl/builtin.cxx
index 61df568..4d6b60d 100644
--- a/libbutl/builtin.cxx
+++ b/libbutl/builtin.cxx
@@ -1,28 +1,16 @@
// file : libbutl/builtin.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/builtin.mxx>
-#endif
+#include <libbutl/builtin.hxx>
#ifdef _WIN32
# include <libbutl/win32-utility.hxx>
#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <map>
-#include <string>
-#include <vector>
-#include <thread>
-#include <utility> // move(), forward()
-#include <cstdint> // uint*_t
-#include <functional>
-
#include <ios>
#include <chrono>
#include <cerrno>
+#include <cassert>
#include <ostream>
#include <sstream>
#include <cstdlib> // strtoull()
@@ -30,41 +18,16 @@
#include <exception>
#include <system_error>
-#endif
+#include <libbutl/regex.hxx>
+#include <libbutl/path-io.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream,exception),
+ // throw_generic_error()
+#include <libbutl/optional.hxx>
+#include <libbutl/filesystem.hxx>
+#include <libbutl/small-vector.hxx>
#include <libbutl/builtin-options.hxx>
-#ifdef __cpp_modules_ts
-module butl.builtin;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-import std.threading;
-#endif
-import butl.path;
-import butl.fdstream;
-import butl.timestamp;
-#endif
-
-import butl.regex;
-import butl.path_io;
-import butl.utility; // operator<<(ostream,exception),
- // throw_generic_error()
-import butl.optional;
-import butl.filesystem;
-import butl.small_vector;
-#else
-#include <libbutl/regex.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/filesystem.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
-
// Strictly speaking a builtin which reads/writes from/to standard streams
// must be asynchronous so that the caller can communicate with it through
// pipes without being blocked on I/O operations. However, as an optimization,
diff --git a/libbutl/builtin.mxx b/libbutl/builtin.hxx
index a99d6f4..2398c84 100644
--- a/libbutl/builtin.mxx
+++ b/libbutl/builtin.hxx
@@ -1,13 +1,8 @@
-// file : libbutl/builtin.mxx -*- C++ -*-
+// file : libbutl/builtin.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <map>
#include <mutex>
#include <string>
@@ -20,28 +15,14 @@
#include <cstdint> // uint8_t
#include <functional>
#include <condition_variable>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.builtin;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.threading;
-#endif
-import butl.path;
-import butl.fdstream;
-import butl.timestamp;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/timestamp.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/timestamp.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// A process/thread-like object representing a running builtin.
//
diff --git a/libbutl/char-scanner.mxx b/libbutl/char-scanner.hxx
index 27f692b..b7ea14b 100644
--- a/libbutl/char-scanner.mxx
+++ b/libbutl/char-scanner.hxx
@@ -1,36 +1,21 @@
-// file : libbutl/char-scanner.mxx -*- C++ -*-
+// file : libbutl/char-scanner.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <string> // char_traits
+#include <cassert>
#include <cstddef> // size_t
#include <cstdint> // uint64_t
#include <climits> // INT_*
#include <utility> // pair, make_pair()
#include <istream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.char_scanner;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#else
#include <libbutl/bufstreambuf.hxx>
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Refer to utf8_validator for details.
//
diff --git a/libbutl/char-scanner.txx b/libbutl/char-scanner.txx
index 63389f0..6e0063a 100644
--- a/libbutl/char-scanner.txx
+++ b/libbutl/char-scanner.txx
@@ -1,9 +1,7 @@
// file : libbutl/char-scanner.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <utility> // move
-#endif
namespace butl
{
diff --git a/libbutl/command.cxx b/libbutl/command.cxx
index c23dfd5..6f8c0f1 100644
--- a/libbutl/command.cxx
+++ b/libbutl/command.cxx
@@ -1,48 +1,18 @@
// file : libbutl/command.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/command.mxx>
-#endif
-
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <map>
-#include <string>
-#include <cstddef>
-#include <functional>
+#include <libbutl/command.hxx>
#include <ios> // ios::failure
#include <vector>
+#include <cassert>
#include <utility> // move()
#include <stdexcept> // invalid_argument
#include <system_error>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.command;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.process;
-import butl.optional;
-#endif
-
-import butl.builtin;
-import butl.fdstream;
-import butl.string_parser;
-#else
-#include <libbutl/builtin.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/string-parser.mxx>
-#endif
+
+#include <libbutl/builtin.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/string-parser.hxx>
using namespace std;
diff --git a/libbutl/command.mxx b/libbutl/command.hxx
index 143d406..fb7258f 100644
--- a/libbutl/command.mxx
+++ b/libbutl/command.hxx
@@ -1,34 +1,19 @@
-// file : libbutl/command.mxx -*- C++ -*-
+// file : libbutl/command.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#ifndef __cpp_lib_modules_ts
#include <map>
#include <string>
#include <cstddef> // size_t
#include <functional>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.command;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.process;
-import butl.optional;
-#else
-#include <libbutl/process.mxx>
-#include <libbutl/optional.mxx>
-#endif
+#include <libbutl/process.hxx>
+#include <libbutl/optional.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Run a process or a builtin, interpreting the command line as
// whitespace-separated, potentially quoted program path/builtin name,
diff --git a/libbutl/const-ptr.mxx b/libbutl/const-ptr.hxx
index 343ecf6..f0ff706 100644
--- a/libbutl/const-ptr.mxx
+++ b/libbutl/const-ptr.hxx
@@ -1,28 +1,13 @@
-// file : libbutl/const-ptr.mxx -*- C++ -*-
+// file : libbutl/const-ptr.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <cstddef> // nullptr_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.const_ptr;
-#ifdef __cpp_lib_modules_ts
-import std.core; // @@ MOD std.fundamental.
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Const-propagating pointer.
//
diff --git a/libbutl/curl.cxx b/libbutl/curl.cxx
index ac3d0cb..addba81 100644
--- a/libbutl/curl.cxx
+++ b/libbutl/curl.cxx
@@ -1,41 +1,13 @@
// file : libbutl/curl.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/curl.mxx>
-#endif
-
-// C includes.
+#include <libbutl/curl.hxx>
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-
#include <utility> // move()
#include <exception> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.curl;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.process;
-import butl.fdstream;
-import butl.small_vector;
-#endif
-
-import butl.utility; // icasecmp()
-#else
-#include <libbutl/utility.mxx>
-#endif
+
+#include <libbutl/utility.hxx>
using namespace std;
diff --git a/libbutl/curl.mxx b/libbutl/curl.hxx
index 03aac99..cd4ebd0 100644
--- a/libbutl/curl.mxx
+++ b/libbutl/curl.hxx
@@ -1,42 +1,19 @@
-// file : libbutl/curl.mxx -*- C++ -*-
+// file : libbutl/curl.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <type_traits>
-#include <cstddef> // size_t
-#include <utility> // forward()
-#include <exception> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.curl;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.process; //@@ MOD TODO: should we re-export?
-import butl.fdstream;
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/small-vector.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Perform a method (GET, POST, PUT) on a URL using the curl(1) program.
// Throw process_error and io_error (both derive from system_error) in case
diff --git a/libbutl/curl.ixx b/libbutl/curl.ixx
index 61a4ff5..b7f6496 100644
--- a/libbutl/curl.ixx
+++ b/libbutl/curl.ixx
@@ -1,7 +1,11 @@
// file : libbutl/curl.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <cstddef> // size_t
+#include <utility> // forward()
+#include <exception> // invalid_argument
+
+namespace butl
{
template <typename I,
typename O,
diff --git a/libbutl/curl.txx b/libbutl/curl.txx
index 0c07d35..ee08145 100644
--- a/libbutl/curl.txx
+++ b/libbutl/curl.txx
@@ -1,7 +1,7 @@
// file : libbutl/curl.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+namespace butl
{
template <typename I>
typename std::enable_if<curl::is_other<I>::value, I>::type curl::
diff --git a/libbutl/default-options.mxx b/libbutl/default-options.hxx
index 1694d48..1d363b6 100644
--- a/libbutl/default-options.mxx
+++ b/libbutl/default-options.hxx
@@ -1,45 +1,18 @@
-// file : libbutl/default-options.mxx -*- C++ -*-
+// file : libbutl/default-options.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
-#include <utility> // move(), forward(), make_pair()
-#include <algorithm> // reverse()
-#include <stdexcept> // invalid_argument
-#include <system_error>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.default_options;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.optional;
-import butl.small_vector;
-
-import butl.git;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/small-vector.mxx>
-
-#include <libbutl/git.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/small-vector.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Default options files helper implementation.
//
diff --git a/libbutl/default-options.ixx b/libbutl/default-options.ixx
index 4a551ac..7248d7d 100644
--- a/libbutl/default-options.ixx
+++ b/libbutl/default-options.ixx
@@ -1,7 +1,7 @@
// file : libbutl/default-options.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+namespace butl
{
template <typename O>
inline O
diff --git a/libbutl/default-options.txx b/libbutl/default-options.txx
index 0c2501c..aa254b2 100644
--- a/libbutl/default-options.txx
+++ b/libbutl/default-options.txx
@@ -1,7 +1,15 @@
// file : libbutl/default-options.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <utility> // move(), forward(), make_pair()
+#include <algorithm> // reverse()
+#include <stdexcept> // invalid_argument
+#include <system_error>
+
+#include <libbutl/git.hxx>
+#include <libbutl/filesystem.hxx>
+
+namespace butl
{
inline bool
options_dir_exists (const dir_path& d)
diff --git a/libbutl/diagnostics.cxx b/libbutl/diagnostics.cxx
index b038e5d..8525d60 100644
--- a/libbutl/diagnostics.cxx
+++ b/libbutl/diagnostics.cxx
@@ -1,9 +1,7 @@
// file : libbutl/diagnostics.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/diagnostics.mxx>
-#endif
+#include <libbutl/diagnostics.hxx>
#ifndef _WIN32
# include <unistd.h> // write()
@@ -12,41 +10,16 @@
# include <io.h> //_write()
#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <utility>
-#include <exception>
-
#include <ios> // ios::failure
#include <mutex>
#include <string>
+#include <cassert>
#include <cstddef> // size_t
#include <iostream> // cerr
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-module butl.diagnostics;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
-import std.threading;
-import butl.utility;
-import butl.optional;
-import butl.fdstream; // stderr_fd(), fdterm()
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/utility.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
using namespace std;
diff --git a/libbutl/diagnostics.mxx b/libbutl/diagnostics.hxx
index d41ba74..712de0c 100644
--- a/libbutl/diagnostics.mxx
+++ b/libbutl/diagnostics.hxx
@@ -1,32 +1,19 @@
-// file : libbutl/diagnostics.mxx -*- C++ -*-
+// file : libbutl/diagnostics.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <ostream>
#include <sstream>
#include <utility> // move(), forward()
#include <exception> // uncaught_exception[s]()
-#endif
#include <libbutl/ft/exception.hxx> // uncaught_exceptions
-#ifdef __cpp_modules_ts
-export module butl.diagnostics;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Diagnostic facility base infrastructure.
//
diff --git a/libbutl/export.hxx b/libbutl/export.hxx
index 3353ca8..dc04f85 100644
--- a/libbutl/export.hxx
+++ b/libbutl/export.hxx
@@ -3,14 +3,6 @@
#pragma once
-// If modules are available, setup the module export.
-//
-#ifdef __cpp_modules_ts
-# define LIBBUTL_MODEXPORT export
-#else
-# define LIBBUTL_MODEXPORT
-#endif
-
// Normally we don't export class templates (but do complete specializations),
// inline functions, and classes with only inline member functions. Exporting
// classes that inherit from non-exported/imported bases (e.g., std::string)
diff --git a/libbutl/fdstream.cxx b/libbutl/fdstream.cxx
index eb0ec7b..85459de 100644
--- a/libbutl/fdstream.cxx
+++ b/libbutl/fdstream.cxx
@@ -1,9 +1,7 @@
// file : libbutl/fdstream.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/fdstream.hxx>
#include <errno.h> // errno, E*
@@ -39,52 +37,21 @@
# include <algorithm> // count()
#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <vector>
-#include <string>
-#include <chrono>
-#include <istream>
-#include <ostream>
-#include <utility>
-#include <cstdint>
-#include <cstddef>
-
#include <ios> // ios_base::openmode, ios_base::failure
#include <new> // bad_alloc
#include <limits> // numeric_limits
+#include <cassert>
#include <cstring> // memcpy(), memmove()
#include <iostream> // cin, cout
#include <exception> // uncaught_exception[s]()
#include <stdexcept> // invalid_argument
#include <system_error>
-#endif
-#include <libbutl/ft/exception.hxx> // uncaught_exceptions
+#include <libbutl/ft/exception.hxx> // uncaught_exceptions
#include <libbutl/process-details.hxx>
-#ifdef __cpp_modules_ts
-module butl.fdstream;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-import std.threading; // Clang wants it in purview (see process-details.hxx).
-#endif
-import butl.path;
-import butl.filesystem;
-import butl.small_vector;
-#endif
-
-import butl.utility; // throw_*_ios_failure(), function_cast()
-import butl.timestamp;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/timestamp.mxx>
-#endif
+#include <libbutl/utility.hxx> // throw_*_ios_failure(), function_cast()
+#include <libbutl/timestamp.hxx>
using namespace std;
diff --git a/libbutl/fdstream.mxx b/libbutl/fdstream.hxx
index 0d3fd86..4dc89a3 100644
--- a/libbutl/fdstream.mxx
+++ b/libbutl/fdstream.hxx
@@ -1,13 +1,8 @@
-// file : libbutl/fdstream.mxx -*- C++ -*-
+// file : libbutl/fdstream.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-#include <cassert>
-#ifndef __cpp_lib_modules_ts
#include <ios> // streamsize
#include <vector>
#include <string>
@@ -18,30 +13,14 @@
#include <cstdint> // uint16_t, uint64_t
#include <cstddef> // size_t
-#include <iterator>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.fdstream;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.filesystem; // permissions, entry_stat
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/filesystem.mxx>
-#include <libbutl/small-vector.mxx>
+#include <libbutl/path.hxx>
+#include <libbutl/filesystem.hxx> // permissions, entry_stat
+#include <libbutl/small-vector.hxx>
#include <libbutl/bufstreambuf.hxx>
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// RAII type for file descriptors. Note that failure to close the descriptor
// is silently ignored by both the destructor and reset().
@@ -55,9 +34,6 @@ LIBBUTL_MODEXPORT namespace butl
constexpr operator int () const {return -1;}
};
-#if defined(__cpp_modules_ts) && defined(__clang__) //@@ MOD Clang duplicate sym.
- inline
-#endif
constexpr nullfd_t nullfd (-1);
class LIBBUTL_SYMEXPORT auto_fd
diff --git a/libbutl/fdstream.ixx b/libbutl/fdstream.ixx
index 9ec9e06..08e317c 100644
--- a/libbutl/fdstream.ixx
+++ b/libbutl/fdstream.ixx
@@ -1,6 +1,8 @@
// file : libbutl/fdstream.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
+#include <cassert>
+
namespace butl
{
// auto_fd
diff --git a/libbutl/filesystem.cxx b/libbutl/filesystem.cxx
index 3427ee9..0a3d260 100644
--- a/libbutl/filesystem.cxx
+++ b/libbutl/filesystem.cxx
@@ -1,9 +1,7 @@
// file : libbutl/filesystem.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/filesystem.hxx>
#include <errno.h> // errno, E*
@@ -34,46 +32,17 @@
# include <cstring> // strncmp()
#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstddef>
-#include <cstdint>
-#include <utility>
-#include <iterator>
-#include <functional>
-
+#include <chrono>
#include <vector>
#include <memory> // unique_ptr
+#include <cassert>
#include <algorithm> // find(), copy()
#include <system_error>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-module butl.filesystem;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.timestamp;
-import butl.path_pattern;
-#endif
-
-import butl.utility; // throw_generic_error()
-import butl.fdstream;
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // throw_generic_error()
+#include <libbutl/fdstream.hxx>
+#include <libbutl/small-vector.hxx>
#ifndef _WIN32
# ifndef PATH_MAX
diff --git a/libbutl/filesystem.mxx b/libbutl/filesystem.hxx
index eb03ab2..8804b04 100644
--- a/libbutl/filesystem.mxx
+++ b/libbutl/filesystem.hxx
@@ -1,9 +1,7 @@
-// file : libbutl/filesystem.mxx -*- C++ -*-
+// file : libbutl/filesystem.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
#include <errno.h> // E*
@@ -22,7 +20,6 @@
using mode_t = int;
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstddef> // ptrdiff_t
#include <cstdint> // uint16_t, etc
@@ -30,35 +27,14 @@
#include <iterator> // input_iterator_tag
#include <functional>
-#include <chrono> //@@ MOD needed by timestamp module (no re-export).
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.filesystem;
-
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-
-import butl.path;
-import butl.optional;
-import butl.timestamp;
-import butl.path_pattern; // path_match_flags
-
-import butl.utility; // operator<<(ostream,exception), throw_generic_error()
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/timestamp.mxx>
-#include <libbutl/path-pattern.mxx>
-
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/timestamp.hxx>
+#include <libbutl/path-pattern.hxx> // path_match_flags
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Return true if the path is to an existing regular file. Note that by
// default this function follows symlinks. Underlying OS errors are reported
@@ -780,7 +756,7 @@ LIBBUTL_MODEXPORT namespace butl
// Wildcard pattern search (aka glob).
//
- // For details on the wildcard patterns see <libbutl/path-pattern.mxx>
+ // For details on the wildcard patterns see <libbutl/path-pattern.hxx>
// Search for paths matching the pattern calling the specified function for
// each matching path (see below for details).
diff --git a/libbutl/filesystem.ixx b/libbutl/filesystem.ixx
index 8cd8456..763d311 100644
--- a/libbutl/filesystem.ixx
+++ b/libbutl/filesystem.ixx
@@ -1,6 +1,9 @@
// file : libbutl/filesystem.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
+#include <libbutl/utility.hxx> // operator<<(ostream,exception),
+ // throw_generic_error()
+
namespace butl
{
inline bool
diff --git a/libbutl/git.cxx b/libbutl/git.cxx
index b9dd9bc..cc10c91 100644
--- a/libbutl/git.cxx
+++ b/libbutl/git.cxx
@@ -1,43 +1,11 @@
// file : libbutl/git.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/git.mxx>
-#endif
+#include <libbutl/git.hxx>
-// C includes.
-
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-
-#include <cstddef> // size_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.git;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.optional;
-import butl.semantic_version
-#endif
-
-import butl.utility; // digit()
-import butl.filesystem; // entry_exists()
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/filesystem.mxx>
-#include <libbutl/semantic-version.mxx>
-#endif
+#include <libbutl/optional.hxx>
+#include <libbutl/filesystem.hxx> // entry_exists()
+#include <libbutl/semantic-version.hxx>
using namespace std;
diff --git a/libbutl/git.mxx b/libbutl/git.hxx
index 3f003be..add721e 100644
--- a/libbutl/git.mxx
+++ b/libbutl/git.hxx
@@ -1,35 +1,17 @@
-// file : libbutl/git.mxx -*- C++ -*-
+// file : libbutl/git.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.git;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.optional;
-import butl.semantic_version;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/semantic-version.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/semantic-version.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Return true if the specified directory is a git repository root (contains
// the .git filesystem entry).
diff --git a/libbutl/lz4-stream.cxx b/libbutl/lz4-stream.cxx
index 9d0ac99..8001770 100644
--- a/libbutl/lz4-stream.cxx
+++ b/libbutl/lz4-stream.cxx
@@ -6,7 +6,7 @@
#include <cstring> // memcpy()
#include <stdexcept> // invalid_argument
-#include <libbutl/utility.mxx> // eof()
+#include <libbutl/utility.hxx> // eof()
using namespace std;
diff --git a/libbutl/lz4-stream.hxx b/libbutl/lz4-stream.hxx
index 5d25670..b11c0a2 100644
--- a/libbutl/lz4-stream.hxx
+++ b/libbutl/lz4-stream.hxx
@@ -12,7 +12,7 @@
#include <cassert>
#include <libbutl/lz4.hxx>
-#include <libbutl/optional.mxx>
+#include <libbutl/optional.hxx>
#include <libbutl/bufstreambuf.hxx>
#include <libbutl/export.hxx>
diff --git a/libbutl/lz4.cxx b/libbutl/lz4.cxx
index a627b06..2db7af2 100644
--- a/libbutl/lz4.cxx
+++ b/libbutl/lz4.cxx
@@ -26,7 +26,7 @@
#include <cassert>
#include <stdexcept> // invalid_argument, logic_error
-#include <libbutl/utility.mxx> // eos()
+#include <libbutl/utility.hxx> // eos()
#if 0
#include <libbutl/lz4-stream.hxx>
diff --git a/libbutl/lz4.hxx b/libbutl/lz4.hxx
index cfe9967..7886788 100644
--- a/libbutl/lz4.hxx
+++ b/libbutl/lz4.hxx
@@ -6,8 +6,8 @@
#include <cstdint>
#include <cstddef>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
#include <libbutl/export.hxx>
diff --git a/libbutl/manifest-parser.cxx b/libbutl/manifest-parser.cxx
index 9514bbd..c208eb1 100644
--- a/libbutl/manifest-parser.cxx
+++ b/libbutl/manifest-parser.cxx
@@ -1,39 +1,10 @@
// file : libbutl/manifest-parser.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/manifest-parser.mxx>
-#endif
+#include <libbutl/manifest-parser.hxx>
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
-#include <cstdint>
-#include <utility>
-#include <stdexcept>
-
#include <sstream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.manifest_parser;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.optional;
-import butl.char_scanner;
-import butl.manifest_types;
-#endif
-
-#endif
using namespace std;
diff --git a/libbutl/manifest-parser.mxx b/libbutl/manifest-parser.hxx
index 77addff..d53eb42 100644
--- a/libbutl/manifest-parser.mxx
+++ b/libbutl/manifest-parser.hxx
@@ -1,13 +1,8 @@
-// file : libbutl/manifest-parser.mxx -*- C++ -*-
+// file : libbutl/manifest-parser.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <iosfwd>
@@ -15,30 +10,15 @@
#include <utility> // pair, move()
#include <stdexcept> // runtime_error
#include <functional>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.manifest_parser;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utf8;
-import butl.optional;
-import butl.char_scanner;
-import butl.manifest_types;
-#else
-#include <libbutl/utf8.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/char-scanner.mxx>
-#include <libbutl/manifest-types.mxx>
-#endif
+
+#include <libbutl/utf8.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/char-scanner.hxx>
+#include <libbutl/manifest-types.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
class LIBBUTL_SYMEXPORT manifest_parsing: public std::runtime_error
{
diff --git a/libbutl/manifest-rewriter.cxx b/libbutl/manifest-rewriter.cxx
index 46bf239..3bddd37 100644
--- a/libbutl/manifest-rewriter.cxx
+++ b/libbutl/manifest-rewriter.cxx
@@ -1,41 +1,15 @@
// file : libbutl/manifest-rewriter.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/manifest-rewriter.mxx>
-#endif
+#include <libbutl/manifest-rewriter.hxx>
-#include <cassert>
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
+#include <cassert>
#include <cstdint> // uint64_t
#include <cstddef> // size_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.manifest_rewriter;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.fdstream;
-import butl.manifest_types;
-#endif
-
-import butl.utility; // utf8_length()
-import butl.manifest_serializer;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/manifest-serializer.mxx>
-#endif
+
+#include <libbutl/utility.hxx> // utf8_length()
+#include <libbutl/manifest-serializer.hxx>
using namespace std;
diff --git a/libbutl/manifest-rewriter.mxx b/libbutl/manifest-rewriter.hxx
index 907c990..02a533a 100644
--- a/libbutl/manifest-rewriter.mxx
+++ b/libbutl/manifest-rewriter.hxx
@@ -1,33 +1,15 @@
-// file : libbutl/manifest-rewriter.mxx -*- C++ -*-
+// file : libbutl/manifest-rewriter.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.manifest_rewriter;
-#ifdef __cpp_lib_modules_ts
-#endif
-import butl.path;
-import butl.fdstream;
-import butl.manifest_types;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/manifest-types.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/manifest-types.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Rewrite a hand-written manifest file preserving formatting, comments,
// etc., of the unaffected parts. The general workflow is as follows:
diff --git a/libbutl/manifest-serializer.cxx b/libbutl/manifest-serializer.cxx
index 6a26a15..05cdae5 100644
--- a/libbutl/manifest-serializer.cxx
+++ b/libbutl/manifest-serializer.cxx
@@ -1,41 +1,12 @@
// file : libbutl/manifest-serializer.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/manifest-serializer.mxx>
-#endif
-
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
-#include <cstddef>
-#include <stdexcept>
+#include <libbutl/manifest-serializer.hxx>
#include <ostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.manifest_serializer;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.manifest_types;
-#endif
-
-import butl.utf8;
-import butl.utility;
-#else
-#include <libbutl/utf8.mxx>
-#include <libbutl/utility.mxx>
-#endif
+
+#include <libbutl/utf8.hxx>
+#include <libbutl/utility.hxx>
using namespace std;
diff --git a/libbutl/manifest-serializer.mxx b/libbutl/manifest-serializer.hxx
index b73c255..dfe37da 100644
--- a/libbutl/manifest-serializer.mxx
+++ b/libbutl/manifest-serializer.hxx
@@ -1,37 +1,20 @@
-// file : libbutl/manifest-serializer.mxx -*- C++ -*-
+// file : libbutl/manifest-serializer.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <iosfwd>
#include <cstddef> // size_t
#include <stdexcept> // runtime_error
#include <functional>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.manifest_serializer;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.manifest_types;
-#else
-#include <libbutl/manifest-types.mxx>
-#endif
+#include <libbutl/manifest-types.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
class LIBBUTL_SYMEXPORT manifest_serialization: public std::runtime_error
{
diff --git a/libbutl/manifest-types.mxx b/libbutl/manifest-types.hxx
index 93f6fc6..23318f0 100644
--- a/libbutl/manifest-types.mxx
+++ b/libbutl/manifest-types.hxx
@@ -1,30 +1,14 @@
-// file : libbutl/manifest-types.mxx -*- C++ -*-
+// file : libbutl/manifest-types.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
-#include <cstdint> // uint64_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.manifest_types;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#else
-#endif
+#include <cstdint> // uint64_t
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
class manifest_name_value
{
diff --git a/libbutl/multi-index.mxx b/libbutl/multi-index.hxx
index d51bdfc..a6754cd 100644
--- a/libbutl/multi-index.mxx
+++ b/libbutl/multi-index.hxx
@@ -1,29 +1,14 @@
-// file : libbutl/multi-index.mxx -*- C++ -*-
+// file : libbutl/multi-index.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <utility> // declval()
#include <functional> // hash
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.multi_index;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Google the "Emulating Boost.MultiIndex with Standard Containers" blog
// post for details.
@@ -57,7 +42,7 @@ LIBBUTL_MODEXPORT namespace butl
};
}
-LIBBUTL_MODEXPORT namespace std
+namespace std
{
template <typename T>
struct hash<butl::map_key<T>>: hash<T>
diff --git a/libbutl/openssl.cxx b/libbutl/openssl.cxx
index 8741b35..f9df2e7 100644
--- a/libbutl/openssl.cxx
+++ b/libbutl/openssl.cxx
@@ -1,35 +1,10 @@
// file : libbutl/openssl.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/openssl.mxx>
-#endif
+#include <libbutl/openssl.hxx>
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-
#include <utility> // move()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.openssl;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.process;
-import butl.fdstream;
-import butl.small_vector;
-#endif
-
-#endif
using namespace std;
diff --git a/libbutl/openssl.mxx b/libbutl/openssl.hxx
index 6a0907e..58e38f8 100644
--- a/libbutl/openssl.mxx
+++ b/libbutl/openssl.hxx
@@ -1,41 +1,19 @@
-// file : libbutl/openssl.mxx -*- C++ -*-
+// file : libbutl/openssl.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <type_traits>
-#include <cstddef> // size_t
-#include <utility> // move(), forward()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.openssl;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.process; //@@ MOD TODO: should we re-export?
-import butl.fdstream;
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/small-vector.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Perform a crypto operation using the openssl(1) program. Throw
// process_error and io_error (both derive from system_error) in case of
diff --git a/libbutl/openssl.ixx b/libbutl/openssl.ixx
index c685b65..1435dcb 100644
--- a/libbutl/openssl.ixx
+++ b/libbutl/openssl.ixx
@@ -1,7 +1,10 @@
// file : libbutl/openssl.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <cstddef> // size_t
+#include <utility> // forward()
+
+namespace butl
{
template <typename I,
typename O,
diff --git a/libbutl/openssl.txx b/libbutl/openssl.txx
index 3a2c579..f198c22 100644
--- a/libbutl/openssl.txx
+++ b/libbutl/openssl.txx
@@ -1,7 +1,9 @@
// file : libbutl/openssl.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <utility> // forward()
+
+namespace butl
{
template <typename I>
typename std::enable_if<openssl::is_other<I>::value, I>::type openssl::
diff --git a/libbutl/optional.mxx b/libbutl/optional.hxx
index d32e14b..28aa95a 100644
--- a/libbutl/optional.mxx
+++ b/libbutl/optional.hxx
@@ -1,11 +1,7 @@
-// file : libbutl/optional.mxx -*- C++ -*-
+// file : libbutl/optional.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-// C includes.
// Note: the Clang check must come before GCC since it also defines __GNUC__.
//
@@ -54,7 +50,6 @@
# endif
#endif
-#ifndef __cpp_lib_modules_ts
#ifdef LIBBUTL_STD_OPTIONAL
# include <optional>
#else
@@ -62,21 +57,11 @@
# include <functional> // hash
# include <type_traits> // is_*
#endif
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.optional;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
#ifdef LIBBUTL_STD_OPTIONAL
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
template <typename T>
using optional = std::optional<T>;
@@ -86,7 +71,7 @@ LIBBUTL_MODEXPORT namespace butl
}
#else
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Simple optional class template while waiting for std::optional.
//
diff --git a/libbutl/pager.cxx b/libbutl/pager.cxx
index 44aa83e..e647948 100644
--- a/libbutl/pager.cxx
+++ b/libbutl/pager.cxx
@@ -1,9 +1,7 @@
// file : libbutl/pager.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/pager.mxx>
-#endif
+#include <libbutl/pager.hxx>
#include <errno.h> // E*
@@ -14,46 +12,20 @@
# include <libbutl/win32-utility.hxx>
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
-#include <iostream>
-
+#include <cstddef> // size_t
#include <cstring> // strchr()
#include <utility> // move()
+
#ifndef _WIN32
# include <chrono>
# include <thread> // this_thread::sleep_for()
#endif
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.pager;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.process;
-import butl.fdstream;
-#endif
-#ifndef _WIN32
-import std.threading;
-#endif
-
-import butl.utility; // operator<<(ostream, exception), throw_generic_error()
-import butl.optional;
-import butl.fdstream; // fdclose()
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/utility.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
using namespace std;
diff --git a/libbutl/pager.mxx b/libbutl/pager.hxx
index a1f640f..12a6670 100644
--- a/libbutl/pager.mxx
+++ b/libbutl/pager.hxx
@@ -1,36 +1,18 @@
-// file : libbutl/pager.mxx -*- C++ -*-
+// file : libbutl/pager.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <iostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.pager;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.process;
-import butl.fdstream;
-#else
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Try to run the output through a pager program, such as more or less (no
// pun intended, less is used by default). If the default pager program is
diff --git a/libbutl/path-io.mxx b/libbutl/path-io.hxx
index 6b6dbcf..a60527d 100644
--- a/libbutl/path-io.mxx
+++ b/libbutl/path-io.hxx
@@ -1,34 +1,16 @@
-// file : libbutl/path-io.mxx -*- C++ -*-
+// file : libbutl/path-io.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-// C includes.
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <ostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.path_io;
-#ifdef __cpp_lib_modules_ts
-import std.core; //@@ MOD TMP (should not be needed).
-import std.io;
-#endif
-import butl.path;
-#else
-#include <libbutl/path.mxx>
-#endif
+#include <libbutl/path.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// This is the default path IO implementation. It is separate to allow
// custom implementations. For example, we may want to print paths as
diff --git a/libbutl/path-map.mxx b/libbutl/path-map.hxx
index daaf0a4..a7b3870 100644
--- a/libbutl/path-map.mxx
+++ b/libbutl/path-map.hxx
@@ -1,33 +1,16 @@
-// file : libbutl/path-map.mxx -*- C++ -*-
+// file : libbutl/path-map.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <algorithm> // min()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.path_map;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.prefix_map;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/prefix-map.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/prefix-map.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// prefix_map for filesystem paths
//
diff --git a/libbutl/path-pattern.cxx b/libbutl/path-pattern.cxx
index cea5aa7..ed36eb5 100644
--- a/libbutl/path-pattern.cxx
+++ b/libbutl/path-pattern.cxx
@@ -1,41 +1,14 @@
// file : libbutl/path-pattern.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/path-pattern.mxx>
-#endif
+#include <libbutl/path-pattern.hxx>
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstdint>
-#include <cstddef>
#include <iterator> // reverse_iterator
-
#include <algorithm> // find()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.path_pattern;
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.optional;
-#endif
-
-import butl.utility; // lcase()[_WIN32]
-import butl.filesystem; // path_search()
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/utility.hxx> // lcase()[_WIN32]
+#include <libbutl/filesystem.hxx> // path_search()
using namespace std;
diff --git a/libbutl/path-pattern.mxx b/libbutl/path-pattern.hxx
index 6d9684a..f6e01be 100644
--- a/libbutl/path-pattern.mxx
+++ b/libbutl/path-pattern.hxx
@@ -1,37 +1,20 @@
-// file : libbutl/path-pattern.mxx -*- C++ -*-
+// file : libbutl/path-pattern.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <string>
+#include <cassert>
#include <cstdint> // uint16_t
#include <cstddef> // ptrdiff_t, size_t
#include <iterator> // input_iterator_tag
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.path_pattern;
-
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.optional;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Wildcard pattern match (aka glob).
//
diff --git a/libbutl/path.cxx b/libbutl/path.cxx
index 3b04730..e4f373e 100644
--- a/libbutl/path.cxx
+++ b/libbutl/path.cxx
@@ -1,9 +1,7 @@
// file : libbutl/path.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/path.mxx>
-#endif
+#include <libbutl/path.hxx>
#ifdef _WIN32
# include <libbutl/win32-utility.hxx>
@@ -25,32 +23,11 @@
#endif
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstddef>
-#include <utility>
-
#include <atomic>
#include <cstring> // strcpy()
-#endif
-
-#ifdef __cpp_modules_ts
-module butl.path;
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
-
-import butl.utility; // throw_*_error()
-import butl.process; // process::current_id()
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/process.mxx>
-#endif
+#include <libbutl/utility.hxx> // throw_*_error()
+#include <libbutl/process.hxx> // process::current_id()
#include <libbutl/export.hxx>
diff --git a/libbutl/path.mxx b/libbutl/path.hxx
index 5a41ddc..8276130 100644
--- a/libbutl/path.mxx
+++ b/libbutl/path.hxx
@@ -1,13 +1,8 @@
-// file : libbutl/path.mxx -*- C++ -*-
+// file : libbutl/path.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-#include <cassert>
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <ostream>
#include <cstddef> // ptrdiff_t
@@ -21,31 +16,17 @@
#ifdef _WIN32
#include <algorithm> // replace()
#endif
-#endif
-// Other includes.
+#include <libbutl/optional.hxx>
+#include <libbutl/small-vector.hxx>
-#ifdef __cpp_modules_ts
-export module butl.path;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.optional;
-import butl.small_vector;
#ifdef _WIN32
-import butl.utility;
-#endif
-#else
-#include <libbutl/optional.mxx>
-#include <libbutl/small-vector.mxx>
-#ifdef _WIN32
-#include <libbutl/utility.mxx> // *case*()
-#endif
+#include <libbutl/utility.hxx> // *case*()
#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Wish list/ideas for improvements.
//
@@ -1516,7 +1497,7 @@ LIBBUTL_MODEXPORT namespace butl
};
}
-LIBBUTL_MODEXPORT namespace std
+namespace std
{
template <typename C, typename K>
struct hash<butl::basic_path<C, K>>: hash<basic_string<C>>
diff --git a/libbutl/path.ixx b/libbutl/path.ixx
index 9c96cfc..2e4df2c 100644
--- a/libbutl/path.ixx
+++ b/libbutl/path.ixx
@@ -1,7 +1,7 @@
// file : libbutl/path.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+namespace butl
{
// path_abnormality
//
diff --git a/libbutl/path.txx b/libbutl/path.txx
index 84fc038..60e0f1a 100644
--- a/libbutl/path.txx
+++ b/libbutl/path.txx
@@ -1,7 +1,7 @@
// file : libbutl/path.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+namespace butl
{
template <typename C, typename K>
basic_path<C, K> basic_path<C, K>::
diff --git a/libbutl/prefix-map.mxx b/libbutl/prefix-map.hxx
index 634b8da..9706ebd 100644
--- a/libbutl/prefix-map.mxx
+++ b/libbutl/prefix-map.hxx
@@ -1,31 +1,16 @@
-// file : libbutl/prefix-map.mxx -*- C++ -*-
+// file : libbutl/prefix-map.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <map>
#include <string>
#include <utility> // move()
#include <algorithm> // min()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.prefix_map;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// A map of hierarchical "paths", e.g., 'foo.bar' or 'foo/bar' with the
// ability to retrieve a range of entries that have a specific prefix as
diff --git a/libbutl/prefix-map.txx b/libbutl/prefix-map.txx
index edab8e1..502119a 100644
--- a/libbutl/prefix-map.txx
+++ b/libbutl/prefix-map.txx
@@ -1,7 +1,7 @@
// file : libbutl/prefix-map.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+namespace butl
{
template <typename M>
auto prefix_map_common<M>::
diff --git a/libbutl/process-details.hxx b/libbutl/process-details.hxx
index cf7624d..571c750 100644
--- a/libbutl/process-details.hxx
+++ b/libbutl/process-details.hxx
@@ -5,15 +5,10 @@
#include <libbutl/ft/shared_mutex.hxx>
-#ifdef __cpp_lib_modules_ts
-import std.core; //@@ MOD TMP (dummy std.threading).
-import std.threading;
-#else
#include <mutex>
#if defined(__cpp_lib_shared_mutex) || defined(__cpp_lib_shared_timed_mutex)
# include <shared_mutex>
#endif
-#endif
namespace butl
{
diff --git a/libbutl/process-io.cxx b/libbutl/process-io.cxx
index c29bbc0..0be3a77 100644
--- a/libbutl/process-io.cxx
+++ b/libbutl/process-io.cxx
@@ -1,36 +1,11 @@
// file : libbutl/process-io.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/process-io.mxx>
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <ostream>
+#include <libbutl/process-io.hxx>
#include <cstring> // strchr()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.process_io;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.process;
-#endif
-import butl.path-io;
-#else
-#include <libbutl/path-io.mxx>
-#endif
+#include <libbutl/path-io.hxx>
using namespace std;
diff --git a/libbutl/process-io.mxx b/libbutl/process-io.hxx
index d07a212..29d6d8b 100644
--- a/libbutl/process-io.mxx
+++ b/libbutl/process-io.hxx
@@ -1,32 +1,15 @@
-// file : libbutl/process-io.mxx -*- C++ -*-
+// file : libbutl/process-io.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <ostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.process_io;
-#ifdef __cpp_lib_modules_ts
-import std.core; //@@ MOD TMP (should not be needed).
-import std.io;
-#endif
-import butl.process;
-#else
-#include <libbutl/process.mxx>
-#endif
+#include <libbutl/process.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
inline std::ostream&
operator<< (std::ostream& o, const process_path& p)
diff --git a/libbutl/process-run.cxx b/libbutl/process-run.cxx
index c26c20d..a5014f6 100644
--- a/libbutl/process-run.cxx
+++ b/libbutl/process-run.cxx
@@ -1,35 +1,12 @@
// file : libbutl/process-run.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/process.mxx>
-#endif
+#include <libbutl/process.hxx>
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <cstdlib> // exit()
#include <iostream> // cerr
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.process;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-#endif
-import butl.utility; // operator<<(ostream,exception)
-#else
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/utility.hxx> // operator<<(ostream,exception)
using namespace std;
diff --git a/libbutl/process-run.txx b/libbutl/process-run.txx
index aa1e381..8e6ca57 100644
--- a/libbutl/process-run.txx
+++ b/libbutl/process-run.txx
@@ -1,7 +1,9 @@
// file : libbutl/process-run.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <utility> // forward(), index_sequence
+
+namespace butl
{
template <typename V>
void process_env::
diff --git a/libbutl/process.cxx b/libbutl/process.cxx
index f6433fb..92a70c4 100644
--- a/libbutl/process.cxx
+++ b/libbutl/process.cxx
@@ -1,9 +1,7 @@
// file : libbutl/process.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/process.mxx>
-#endif
+#include <libbutl/process.hxx>
#include <errno.h>
@@ -87,29 +85,19 @@
# endif // _MSC_VER
#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
-#include <chrono>
-#include <cstdint>
-#include <cstddef>
-#include <system_error>
-
#include <ios> // ios_base::failure
#include <cstring> // strlen(), strchr(), strpbrk(), strncmp()
#include <utility> // move()
#include <ostream>
+#include <cassert>
#ifndef _WIN32
-#include <thread> // this_thread::sleep_for()
+# include <thread> // this_thread::sleep_for()
#else
-#include <map>
-#include <ratio> // milli
-#include <cstdlib> // __argv[]
-#include <algorithm> // find()
-#endif
+# include <map>
+# include <ratio> // milli
+# include <cstdlib> // __argv[]
+# include <algorithm> // find()
#endif
#include <libbutl/process-details.hxx>
@@ -119,32 +107,8 @@ namespace butl
shared_mutex process_spawn_mutex; // Out of module purview.
}
-#ifdef __cpp_modules_ts
-module butl.process;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-import std.threading; // Clang wants it in purview (see process-details.hxx).
-#endif
-import butl.path;
-import butl.fdstream;
-import butl.vector_view;
-import butl.small_vector;
-#endif
-
-#ifndef _WIN32
-import std.threading;
-#endif
-
-import butl.utility; // icasecmp()
-import butl.fdstream; // fdopen_null()
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/utility.hxx> // icasecmp()
+#include <libbutl/fdstream.hxx> // fdopen_null()
using namespace std;
@@ -1898,7 +1862,7 @@ namespace butl
return PeekNamedPipe (h, &c, 1, &n, nullptr, nullptr) && n == 1;
};
- // Hidden by butl::duration that is introduced via fdstream.mxx.
+ // Hidden by butl::duration that is introduced via fdstream.hxx.
//
using milli_duration = chrono::duration<DWORD, milli>;
diff --git a/libbutl/process.mxx b/libbutl/process.hxx
index 0677525..47cc507 100644
--- a/libbutl/process.mxx
+++ b/libbutl/process.hxx
@@ -1,17 +1,12 @@
-// file : libbutl/process.mxx -*- C++ -*-
+// file : libbutl/process.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
#ifndef _WIN32
# include <sys/types.h> // pid_t
#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <chrono>
@@ -20,33 +15,15 @@
#include <cstdint> // uint32_t
#include <system_error>
-#include <utility> // move(), forward(), index_sequence
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.process;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.optional;
-import butl.fdstream; // auto_fd, fdpipe
-import butl.vector_view;
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/vector-view.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx> // auto_fd, fdpipe
+#include <libbutl/vector-view.hxx>
+#include <libbutl/small-vector.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
struct process_error: std::system_error
{
diff --git a/libbutl/process.ixx b/libbutl/process.ixx
index 7676ce3..256454b 100644
--- a/libbutl/process.ixx
+++ b/libbutl/process.ixx
@@ -1,6 +1,9 @@
// file : libbutl/process.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
+#include <cassert>
+#include <utility> // move()
+
namespace butl
{
// process_path
diff --git a/libbutl/project-name.cxx b/libbutl/project-name.cxx
index 7a14b49..a7ed8a8 100644
--- a/libbutl/project-name.cxx
+++ b/libbutl/project-name.cxx
@@ -1,38 +1,16 @@
// file : libbutl/project-name.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/project-name.mxx>
-#endif
+#include <libbutl/project-name.hxx>
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <utility> // move()
#include <algorithm> // find()
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.project_name;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility;
-#endif
-
-import butl.path; // path::traits
-import butl.utility; // alpha(), alnum()
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#endif
+
+#include <libbutl/path.hxx> // path::traits
+#include <libbutl/utility.hxx> // alpha(), alnum()
using namespace std;
diff --git a/libbutl/project-name.mxx b/libbutl/project-name.hxx
index 1117e28..6e1f925 100644
--- a/libbutl/project-name.mxx
+++ b/libbutl/project-name.hxx
@@ -1,34 +1,17 @@
-// file : libbutl/project-name.mxx -*- C++ -*-
+// file : libbutl/project-name.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <utility> // move()
#include <ostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.project_name;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility; // icasecmp(), sanitize_identifier()
-#else
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/utility.hxx> // icasecmp(), sanitize_identifier()
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Build system project name.
//
diff --git a/libbutl/prompt.cxx b/libbutl/prompt.cxx
index 1c0820a..2e42dd5 100644
--- a/libbutl/prompt.cxx
+++ b/libbutl/prompt.cxx
@@ -1,33 +1,11 @@
// file : libbutl/prompt.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/prompt.mxx>
-#endif
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
+#include <libbutl/prompt.hxx>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.prompt;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-import butl.diagnostics;
-#else
-#include <libbutl/diagnostics.mxx> // diag_stream
-#endif
+#include <libbutl/diagnostics.hxx> // diag_stream
using namespace std;
diff --git a/libbutl/prompt.mxx b/libbutl/prompt.hxx
index 2489b2f..90b8dbf 100644
--- a/libbutl/prompt.mxx
+++ b/libbutl/prompt.hxx
@@ -1,28 +1,13 @@
-// file : libbutl/prompt.mxx -*- C++ -*-
+// file : libbutl/prompt.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.prompt;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// The Y/N prompt. The def argument, if specified, should be either 'y' or
// 'n'. It is used as the default answer, in case the user just hits enter.
diff --git a/libbutl/regex.cxx b/libbutl/regex.cxx
index 83e296c..34536f2 100644
--- a/libbutl/regex.cxx
+++ b/libbutl/regex.cxx
@@ -1,42 +1,17 @@
// file : libbutl/regex.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/regex.mxx>
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <regex>
-#include <string>
+#include <libbutl/regex.hxx>
#include <ostream>
#include <sstream>
#include <stdexcept> // runtime_error
+
#if defined(_MSC_VER) && _MSC_VER < 2000
# include <cstring> // strstr()
#endif
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-module butl.regex;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-import std.regex;
-#endif
-#endif
-
-import butl.utility; // operator<<(ostream, exception)
-#else
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
namespace std
{
diff --git a/libbutl/regex.mxx b/libbutl/regex.hxx
index b1ba1b9..9b31075 100644
--- a/libbutl/regex.mxx
+++ b/libbutl/regex.hxx
@@ -1,23 +1,13 @@
-// file : libbutl/regex.mxx -*- C++ -*-
+// file : libbutl/regex.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-// C includes.
-#ifndef __cpp_lib_modules_ts
#include <regex>
#include <iosfwd>
#include <string>
#include <utility> // pair
-
-#include <locale>
-#include <cstddef> // size_t
-#include <utility> // move(), make_pair()
-#include <stdexcept> // invalid_argument
-#endif
+#include <cstddef> // size_t
#if defined(__clang__)
# if __has_include(<__config>)
@@ -25,20 +15,9 @@
# endif
#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.regex;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-import std.regex; // @@ MOD TODO should probably be re-exported.
-#endif
-#endif
-
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// The regex semantics for the following functions is like that of
// std::regex_replace() extended the standard ECMA-262 substitution escape
@@ -141,7 +120,7 @@ LIBBUTL_MODEXPORT namespace butl
regex_replace_parse (const C*, size_t, size_t& end);
}
-LIBBUTL_MODEXPORT namespace std
+namespace std
{
// Print regex error description but only if it is meaningful (this is also
// why we have to print leading colon).
diff --git a/libbutl/regex.ixx b/libbutl/regex.ixx
index f55cb07..08962cf 100644
--- a/libbutl/regex.ixx
+++ b/libbutl/regex.ixx
@@ -1,7 +1,9 @@
// file : libbutl/regex.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <utility> // move(), make_pair()
+
+namespace butl
{
template <typename C>
inline std::pair<std::basic_string<C>, bool>
diff --git a/libbutl/regex.txx b/libbutl/regex.txx
index 8fe5308..214d949 100644
--- a/libbutl/regex.txx
+++ b/libbutl/regex.txx
@@ -1,7 +1,10 @@
// file : libbutl/regex.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <locale>
+#include <stdexcept> // invalid_argument
+
+namespace butl
{
template <typename C>
std::basic_string<C>
diff --git a/libbutl/semantic-version.cxx b/libbutl/semantic-version.cxx
index 445890d..3be382f 100644
--- a/libbutl/semantic-version.cxx
+++ b/libbutl/semantic-version.cxx
@@ -1,38 +1,11 @@
// file : libbutl/semantic-version.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/semantic-version.mxx>
-#endif
-
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstddef>
-#include <cstdint>
-#include <ostream>
+#include <libbutl/semantic-version.hxx>
#include <cstring> // strchr()
#include <utility> // move()
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.semantic_version;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.optional;
-#endif
-#else
-#endif
using namespace std;
diff --git a/libbutl/semantic-version.mxx b/libbutl/semantic-version.hxx
index 566d192..16f3d56 100644
--- a/libbutl/semantic-version.mxx
+++ b/libbutl/semantic-version.hxx
@@ -1,32 +1,15 @@
-// file : libbutl/semantic-version.mxx -*- C++ -*-
+// file : libbutl/semantic-version.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-// C includes.
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstddef> // size_t
#include <cstdint> // uint*_t
#include <utility> // move()
#include <ostream>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.semantic_version;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.optional;
-#else
-#include <libbutl/optional.mxx>
-#endif
+#include <libbutl/optional.hxx>
#include <libbutl/export.hxx>
@@ -40,7 +23,7 @@ import butl.optional;
# undef minor
#endif
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Semantic or semantic-like version.
//
diff --git a/libbutl/sendmail.cxx b/libbutl/sendmail.cxx
index 1038cf4..5fec1a6 100644
--- a/libbutl/sendmail.cxx
+++ b/libbutl/sendmail.cxx
@@ -1,32 +1,7 @@
// file : libbutl/sendmail.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/sendmail.mxx>
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.sendmail;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.process;
-import butl.fdstream;
-import butl.small_vector;
-#endif
-
-#endif
+#include <libbutl/sendmail.hxx>
using namespace std;
diff --git a/libbutl/sendmail.mxx b/libbutl/sendmail.hxx
index 0d5b239..97a4d82 100644
--- a/libbutl/sendmail.mxx
+++ b/libbutl/sendmail.hxx
@@ -1,38 +1,17 @@
-// file : libbutl/sendmail.mxx -*- C++ -*-
+// file : libbutl/sendmail.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
-#include <cstddef> // size_t
-#include <utility> // move(), forward()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.sendmail;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.process;
-import butl.fdstream;
-import butl.small_vector;
-#else
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/small-vector.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Send email using the sendmail(1) program.
//
diff --git a/libbutl/sendmail.ixx b/libbutl/sendmail.ixx
index 105c1af..35b5c47 100644
--- a/libbutl/sendmail.ixx
+++ b/libbutl/sendmail.ixx
@@ -1,7 +1,10 @@
// file : libbutl/sendmail.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <cstddef> // size_t
+#include <utility> // move(), forward()
+
+namespace butl
{
template <typename E, typename... O>
inline sendmail::
diff --git a/libbutl/sha1.cxx b/libbutl/sha1.cxx
index f4a6bad..e546922 100644
--- a/libbutl/sha1.cxx
+++ b/libbutl/sha1.cxx
@@ -1,9 +1,7 @@
// file : libbutl/sha1.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/sha1.mxx>
-#endif
+#include <libbutl/sha1.hxx>
// C interface for sha1c.
//
@@ -42,29 +40,9 @@ extern "C"
#define SHA1_Final(x, y) sha1_result((y), (char(&)[20])(x))
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstddef>
-#include <cstdint>
-
#include <istream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.sha1;
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
-#else
#include <libbutl/bufstreambuf.hxx>
-#endif
using namespace std;
diff --git a/libbutl/sha1.mxx b/libbutl/sha1.hxx
index f6fafc0..62710f4 100644
--- a/libbutl/sha1.mxx
+++ b/libbutl/sha1.hxx
@@ -1,32 +1,17 @@
-// file : libbutl/sha1.mxx -*- C++ -*-
+// file : libbutl/sha1.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <iosfwd> // istream
#include <string>
#include <cstddef> // size_t
#include <cstdint>
#include <cstring> // strlen()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.sha1;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// SHA1 checksum calculator.
//
diff --git a/libbutl/sha256.cxx b/libbutl/sha256.cxx
index 8a34402..95987ec 100644
--- a/libbutl/sha256.cxx
+++ b/libbutl/sha256.cxx
@@ -1,9 +1,7 @@
// file : libbutl/sha256.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/sha256.mxx>
-#endif
+#include <libbutl/sha256.hxx>
// C interface for sha256c.
//
@@ -26,39 +24,13 @@ extern "C"
#include "sha256c.c"
}
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstddef>
-#include <cstdint>
-
#include <cctype> // isxdigit()
+#include <cassert>
#include <istream>
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.sha256;
-
-// Only imports additional to interface.
-#ifdef __cpp_lib_modules_ts
-import std.io;
-#endif
-
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
-import butl.utility; // *case()
-#else
-#include <libbutl/utility.mxx>
+#include <libbutl/utility.hxx> // *case()
#include <libbutl/bufstreambuf.hxx>
-#endif
using namespace std;
diff --git a/libbutl/sha256.mxx b/libbutl/sha256.hxx
index d5128b1..566068f 100644
--- a/libbutl/sha256.mxx
+++ b/libbutl/sha256.hxx
@@ -1,33 +1,18 @@
-// file : libbutl/sha256.mxx -*- C++ -*-
+// file : libbutl/sha256.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iosfwd> // istream
#include <cstddef> // size_t
#include <cstdint>
#include <cstring> // strlen(), memcpy()
#include <type_traits> // enable_if, is_integral
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.sha256;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// SHA256 checksum calculator.
//
diff --git a/libbutl/small-allocator.mxx b/libbutl/small-allocator.hxx
index 5ef74be..429ba41 100644
--- a/libbutl/small-allocator.mxx
+++ b/libbutl/small-allocator.hxx
@@ -1,30 +1,16 @@
-// file : libbutl/small-allocator.mxx -*- C++ -*-
+// file : libbutl/small-allocator.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <cstddef> // size_t
#include <utility> // move()
#include <type_traits> // true_type, is_same
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.small_allocator;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Implementation of the allocator (and its buffer) for small containers.
//
diff --git a/libbutl/small-forward-list.mxx b/libbutl/small-forward-list.hxx
index 6aa4986..1278dc2 100644
--- a/libbutl/small-forward-list.mxx
+++ b/libbutl/small-forward-list.hxx
@@ -1,31 +1,17 @@
-// file : libbutl/small-forward-list.mxx -*- C++ -*-
+// file : libbutl/small-forward-list.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#ifndef __cpp_lib_modules_ts
#include <cstddef> // size_t
#include <utility> // move()
#include <forward_list>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.small_forward_list;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.small_allocator;
-#else
-#include <libbutl/small-allocator.mxx>
-#endif
+#include <libbutl/small-allocator.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Issues and limitations.
//
diff --git a/libbutl/small-list.mxx b/libbutl/small-list.hxx
index ff62192..aaeef22 100644
--- a/libbutl/small-list.mxx
+++ b/libbutl/small-list.hxx
@@ -1,31 +1,17 @@
-// file : libbutl/small-list.mxx -*- C++ -*-
+// file : libbutl/small-list.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#ifndef __cpp_lib_modules_ts
#include <list>
-#include <cstddef> // size_t
-#include <utility> // move()
-#endif
-
-// Other includes.
+#include <cstddef> // size_t
+#include <utility> // move()
-#ifdef __cpp_modules_ts
-export module butl.small_list;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.small_allocator;
-#else
-#include <libbutl/small-allocator.mxx>
-#endif
+#include <libbutl/small-allocator.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Issues and limitations.
//
diff --git a/libbutl/small-vector-odb.hxx b/libbutl/small-vector-odb.hxx
index af9d96c..289ca38 100644
--- a/libbutl/small-vector-odb.hxx
+++ b/libbutl/small-vector-odb.hxx
@@ -5,7 +5,7 @@
#include <odb/pre.hxx>
-#include <libbutl/small-vector.mxx>
+#include <libbutl/small-vector.hxx>
#include <odb/container-traits.hxx>
diff --git a/libbutl/small-vector.mxx b/libbutl/small-vector.hxx
index 7f9bb1e..f0594b1 100644
--- a/libbutl/small-vector.mxx
+++ b/libbutl/small-vector.hxx
@@ -1,31 +1,17 @@
-// file : libbutl/small-vector.mxx -*- C++ -*-
+// file : libbutl/small-vector.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#ifndef __cpp_lib_modules_ts
#include <vector>
-#include <cstddef> // size_t
-#include <utility> // move()
-#endif
-
-// Other includes.
+#include <cstddef> // size_t
+#include <utility> // move()
-#ifdef __cpp_modules_ts
-export module butl.small_vector;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.small_allocator;
-#else
-#include <libbutl/small-allocator.mxx>
-#endif
+#include <libbutl/small-allocator.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Issues and limitations.
//
diff --git a/libbutl/standard-version.cxx b/libbutl/standard-version.cxx
index 863cb29..36f4830 100644
--- a/libbutl/standard-version.cxx
+++ b/libbutl/standard-version.cxx
@@ -1,41 +1,14 @@
// file : libbutl/standard-version.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/standard-version.mxx>
-#endif
+#include <libbutl/standard-version.hxx>
#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstdint>
-#include <cstddef>
-#include <ostream>
-
#include <cstdlib> // strtoull()
#include <utility> // move()
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.standard_version;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.optional;
-#endif
-
-import butl.utility;
-#else
-#include <libbutl/utility.mxx> // alnum()
-#endif
+
+#include <libbutl/utility.hxx> // alnum()
using namespace std;
diff --git a/libbutl/standard-version.mxx b/libbutl/standard-version.hxx
index b86e3a9..5810e13 100644
--- a/libbutl/standard-version.mxx
+++ b/libbutl/standard-version.hxx
@@ -1,31 +1,14 @@
-// file : libbutl/standard-version.mxx -*- C++ -*-
+// file : libbutl/standard-version.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-
-// C includes.
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstdint> // uint*_t
#include <cstddef> // size_t
#include <ostream>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.standard_version;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.optional;
-#else
-#include <libbutl/optional.mxx>
-#endif
+#include <libbutl/optional.hxx>
#include <libbutl/export.hxx>
@@ -39,7 +22,7 @@ import butl.optional;
# undef minor
#endif
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// The build2 "standard version" (normal, earliest, and stub):
//
diff --git a/libbutl/string-parser.cxx b/libbutl/string-parser.cxx
index 5d5ec47..aea1338 100644
--- a/libbutl/string-parser.cxx
+++ b/libbutl/string-parser.cxx
@@ -1,33 +1,7 @@
// file : libbutl/string-parser.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/string-parser.mxx>
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
-#include <cstddef>
-#include <utility> // move()
-#include <stdexcept>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.string_parser;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
-
-#endif
+#include <libbutl/string-parser.hxx>
using namespace std;
diff --git a/libbutl/string-parser.mxx b/libbutl/string-parser.hxx
index 4ff1590..9fc20c0 100644
--- a/libbutl/string-parser.mxx
+++ b/libbutl/string-parser.hxx
@@ -1,32 +1,17 @@
-// file : libbutl/string-parser.mxx -*- C++ -*-
+// file : libbutl/string-parser.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <cstddef> // size_t
#include <utility> // pair
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.string_parser;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
namespace string_parser
{
diff --git a/libbutl/string-table.mxx b/libbutl/string-table.hxx
index 78c6cd6..010fb01 100644
--- a/libbutl/string-table.mxx
+++ b/libbutl/string-table.hxx
@@ -1,36 +1,18 @@
-// file : libbutl/string-table.mxx -*- C++ -*-
+// file : libbutl/string-table.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
+#include <cassert>
#include <unordered_map>
-#include <limits> // numeric_limits
-#include <cstddef> // size_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.string_table;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.multi_index;
-#else
-#include <libbutl/multi-index.mxx>
-#endif
+#include <libbutl/multi-index.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// A pool of strings and, optionally, other accompanying data in which each
// entry is assigned an individual index (or id) of type I (e.g., uint8_t,
diff --git a/libbutl/string-table.txx b/libbutl/string-table.txx
index 4db0a6b..8416b48 100644
--- a/libbutl/string-table.txx
+++ b/libbutl/string-table.txx
@@ -1,6 +1,9 @@
// file : libbutl/string-table.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
+#include <limits> // numeric_limits
+#include <cstddef> // size_t
+
namespace butl
{
template <typename I, typename D>
diff --git a/libbutl/tab-parser.cxx b/libbutl/tab-parser.cxx
index cca2792..d7e5a14 100644
--- a/libbutl/tab-parser.cxx
+++ b/libbutl/tab-parser.cxx
@@ -1,39 +1,12 @@
// file : libbutl/tab-parser.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/tab-parser.mxx>
-#endif
-
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <vector>
-#include <cstdint>
-#include <stdexcept>
+#include <libbutl/tab-parser.hxx>
#include <istream>
#include <sstream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.tab_parser;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-import butl.string_parser;
-#else
-#include <libbutl/string-parser.mxx>
-#endif
+#include <libbutl/string-parser.hxx>
using namespace std;
diff --git a/libbutl/tab-parser.mxx b/libbutl/tab-parser.hxx
index a7f7e01..2dc612b 100644
--- a/libbutl/tab-parser.mxx
+++ b/libbutl/tab-parser.hxx
@@ -1,33 +1,17 @@
-// file : libbutl/tab-parser.mxx -*- C++ -*-
+// file : libbutl/tab-parser.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <iosfwd>
#include <string>
#include <vector>
#include <cstdint> // uint64_t
#include <stdexcept> // runtime_error
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.tab_parser;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
class LIBBUTL_SYMEXPORT tab_parsing: public std::runtime_error
{
diff --git a/libbutl/target-triplet.cxx b/libbutl/target-triplet.cxx
index 611b758..209f75e 100644
--- a/libbutl/target-triplet.cxx
+++ b/libbutl/target-triplet.cxx
@@ -1,33 +1,9 @@
// file : libbutl/target-triplet.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/target-triplet.mxx>
-#endif
-
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <ostream>
+#include <libbutl/target-triplet.hxx>
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.target_triplet;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
-#endif
using namespace std;
diff --git a/libbutl/target-triplet.mxx b/libbutl/target-triplet.hxx
index 3861809..45db457 100644
--- a/libbutl/target-triplet.mxx
+++ b/libbutl/target-triplet.hxx
@@ -1,30 +1,14 @@
-// file : libbutl/target-triplet.mxx -*- C++ -*-
+// file : libbutl/target-triplet.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <ostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.target_triplet;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// This is the ubiquitous 'target triplet' that loosely has the CPU-VENDOR-OS
// form which, these days, quite often takes the CPU-VENDOR-OS-ABI form. Plus
@@ -164,7 +148,7 @@ LIBBUTL_MODEXPORT namespace butl
explicit
target_triplet (const std::string&);
- target_triplet () {} // = default; @@ MOD VC
+ target_triplet () = default;
};
inline bool
diff --git a/libbutl/timestamp.cxx b/libbutl/timestamp.cxx
index 589c29c..260fbef 100644
--- a/libbutl/timestamp.cxx
+++ b/libbutl/timestamp.cxx
@@ -1,9 +1,7 @@
// file : libbutl/timestamp.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/timestamp.mxx>
-#endif
+#include <libbutl/timestamp.hxx>
#include <time.h> // localtime_{r,s}(), gmtime_{r,s}(), strptime(), timegm()
#include <errno.h> // EINVAL
@@ -25,17 +23,13 @@
#ifdef __GLIBCXX__
extern "C"
{
-#include "strptime.c"
+# include "strptime.c"
}
#else
-#include <locale.h> // LC_ALL
+# include <locale.h> // LC_ALL
#endif
#endif
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <chrono>
-
#include <ctime> // tm, time_t, mktime(), strftime()[libstdc++]
#include <cstdlib> // strtoull()
#include <sstream> // ostringstream, stringstream[VC]
@@ -49,31 +43,14 @@ extern "C"
//
#ifdef _WIN32
#ifndef __GLIBCXX__
-#include <ios>
-#include <locale>
-#include <clocale>
-#include <iomanip>
-#endif
-#endif
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-module butl.timestamp;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
+# include <ios>
+# include <locale>
+# include <clocale>
+# include <iomanip>
#endif
#endif
-import butl.utility;
-#else
-#include <libbutl/utility.mxx> // throw_generic_error()
-#endif
+#include <libbutl/utility.hxx> // throw_generic_error()
using namespace std;
diff --git a/libbutl/timestamp.mxx b/libbutl/timestamp.hxx
index 141e13d..2714a0d 100644
--- a/libbutl/timestamp.mxx
+++ b/libbutl/timestamp.hxx
@@ -1,34 +1,15 @@
-// file : libbutl/timestamp.mxx -*- C++ -*-
+// file : libbutl/timestamp.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <iosfwd>
#include <string>
#include <chrono>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.timestamp;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
-//@@ MOD TODO: should't we re-export chrono (for somparison operator, etc)?
-// or ADL should kick in?
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// On all three main platforms that we target (GNU/Linux, Windows (both
// VC++ and GCC/MinGW64), and MacOS X) with recent C++ runtimes,
@@ -61,21 +42,12 @@ LIBBUTL_MODEXPORT namespace butl
// unreal and all of them are less than any non-special value (strictly
// speaking unreal is no greater (older) than any real value).
//
-#if defined(__cpp_modules_ts) && defined(__clang__) //@@ MOD Clang duplicate sym.
- inline const timestamp::rep timestamp_unknown_rep = -1;
- inline const timestamp timestamp_unknown = timestamp (duration (-1));
- inline const timestamp::rep timestamp_nonexistent_rep = 0;
- inline const timestamp timestamp_nonexistent = timestamp (duration (0));
- inline const timestamp::rep timestamp_unreal_rep = 1;
- inline const timestamp timestamp_unreal = timestamp (duration (1));
-#else
const timestamp::rep timestamp_unknown_rep = -1;
const timestamp timestamp_unknown = timestamp (duration (-1));
const timestamp::rep timestamp_nonexistent_rep = 0;
const timestamp timestamp_nonexistent = timestamp (duration (0));
const timestamp::rep timestamp_unreal_rep = 1;
const timestamp timestamp_unreal = timestamp (duration (1));
-#endif
// Print human-readable representation of the timestamp.
//
diff --git a/libbutl/unicode.cxx b/libbutl/unicode.cxx
index 4219846..294bb3f 100644
--- a/libbutl/unicode.cxx
+++ b/libbutl/unicode.cxx
@@ -1,32 +1,11 @@
// file : libbutl/unicode.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/unicode.mxx>
-#endif
-
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <ostream>
-#include <cstdint>
+#include <libbutl/unicode.hxx>
#include <cstddef> // size_t
#include <utility> // pair
#include <algorithm> // lower_bound()
-#endif
-
-#ifdef __cpp_modules_ts
-module butl.unicode;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
-#endif
using namespace std;
diff --git a/libbutl/unicode.mxx b/libbutl/unicode.hxx
index b846476..8d99d0e 100644
--- a/libbutl/unicode.mxx
+++ b/libbutl/unicode.hxx
@@ -1,31 +1,15 @@
-// file : libbutl/unicode.mxx -*- C++ -*-
+// file : libbutl/unicode.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <ostream>
#include <cstdint> // uint16_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.unicode;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Note that the Unicode Standard requires the surrogates ([D800 DFFF]) to
// only be used in the context of the UTF-16 character encoding form. Thus,
diff --git a/libbutl/url.mxx b/libbutl/url.hxx
index 713bc3e..5721cfd 100644
--- a/libbutl/url.mxx
+++ b/libbutl/url.hxx
@@ -1,50 +1,23 @@
-// file : libbutl/url.mxx -*- C++ -*-
+// file : libbutl/url.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#include <cassert>
-
-#ifndef __cpp_lib_modules_ts
#include <string>
+#include <cassert>
+#include <cstddef> // size_t
#include <cstdint> // uint*_t
#include <utility> // move()
#include <ostream>
#include <iterator> // back_inserter
-#include <cstddef> // size_t
-#include <stdexcept> // invalid_argument
-#include <algorithm> // find(), find_if()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.url;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.utility;
-import butl.optional;
-
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-
-#include <libbutl/small-vector.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx>
+#include <libbutl/optional.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// RFC3986 Uniform Resource Locator (URL).
//
diff --git a/libbutl/url.ixx b/libbutl/url.ixx
index b823ee7..19d54c7 100644
--- a/libbutl/url.ixx
+++ b/libbutl/url.ixx
@@ -1,7 +1,7 @@
// file : libbutl/url.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+namespace butl
{
// url_traits
//
diff --git a/libbutl/url.txx b/libbutl/url.txx
index 0951e80..b2caa37 100644
--- a/libbutl/url.txx
+++ b/libbutl/url.txx
@@ -1,7 +1,12 @@
// file : libbutl/url.txx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-LIBBUTL_MODEXPORT namespace butl //@@ MOD Clang needs this for some reason.
+#include <stdexcept> // invalid_argument
+#include <algorithm> // find(), find_if()
+
+#include <libbutl/small-vector.hxx>
+
+namespace butl
{
// Convenience functions.
//
diff --git a/libbutl/utf8.mxx b/libbutl/utf8.hxx
index 15e8ded..697f77a 100644
--- a/libbutl/utf8.mxx
+++ b/libbutl/utf8.hxx
@@ -1,33 +1,17 @@
-// file : libbutl/utf8.mxx -*- C++ -*-
+// file : libbutl/utf8.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstdint> // uint8_t
#include <utility> // pair
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-export module butl.utf8;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.unicode;
-#else
-#include <libbutl/unicode.mxx>
-#endif
+#include <libbutl/unicode.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Here and below we will refer to bytes that encode a singe Unicode
// codepoint as "UTF-8 byte sequence" ("UTF-8 sequence" or "byte sequence"
diff --git a/libbutl/utility.cxx b/libbutl/utility.cxx
index a891fc2..78abbd8 100644
--- a/libbutl/utility.cxx
+++ b/libbutl/utility.cxx
@@ -1,9 +1,7 @@
// file : libbutl/utility.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/utility.hxx>
#ifdef _WIN32
#include <libbutl/win32-utility.hxx>
@@ -11,35 +9,15 @@
#include <stdlib.h> // getenv(), setenv(), unsetenv(), _putenv()
-#ifndef __cpp_lib_modules_ts
-#include <string>
-#include <cstddef>
-#include <utility>
-
#include <cstring> // strncmp(), strlen()
#include <ostream>
#include <type_traits> // enable_if, is_base_of
#include <system_error>
-#endif
#include <libbutl/ft/lang.hxx>
#include <libbutl/ft/exception.hxx>
-#ifdef __cpp_modules_ts
-module butl.utility;
-
-// Only imports additional to interface.
-#ifdef __clang__
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-#endif
-
-import butl.utf8;
-#else
-#include <libbutl/utf8.mxx>
-#endif
+#include <libbutl/utf8.hxx>
namespace butl
{
diff --git a/libbutl/utility.mxx b/libbutl/utility.hxx
index bd24ffd..49b61b3 100644
--- a/libbutl/utility.mxx
+++ b/libbutl/utility.hxx
@@ -1,9 +1,7 @@
-// file : libbutl/utility.mxx -*- C++ -*-
+// file : libbutl/utility.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
#ifndef _WIN32
# include <strings.h> // strcasecmp(), strncasecmp()
@@ -11,7 +9,6 @@
# include <string.h> // _stricmp(), _strnicmp()
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iosfwd> // ostream
#include <istream>
@@ -20,29 +17,17 @@
#include <cstring> // strcmp(), strlen()
#include <exception> // exception, uncaught_exception[s]()
//#include <functional> // hash
-#endif
#include <libbutl/ft/lang.hxx> // thread_local
#include <libbutl/ft/exception.hxx> // uncaught_exceptions
-#ifdef __cpp_modules_ts
-export module butl.utility;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utf8;
-import butl.unicode;
-import butl.optional;
-#else
-#include <libbutl/utf8.mxx>
-#include <libbutl/unicode.mxx>
-#include <libbutl/optional.mxx>
-#endif
+#include <libbutl/utf8.hxx>
+#include <libbutl/unicode.hxx>
+#include <libbutl/optional.hxx>
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// Throw std::system_error with generic_category or system_category,
// respectively.
@@ -540,7 +525,7 @@ LIBBUTL_MODEXPORT namespace butl
#endif
}
-LIBBUTL_MODEXPORT namespace std
+namespace std
{
// Sanitize the exception description before printing. This includes:
//
diff --git a/libbutl/utility.ixx b/libbutl/utility.ixx
index 6501bf7..4180ad7 100644
--- a/libbutl/utility.ixx
+++ b/libbutl/utility.ixx
@@ -1,12 +1,10 @@
// file : libbutl/utility.ixx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <cctype> // toupper(), tolower(), is*()
#include <cwctype> // isw*()
#include <algorithm> // for_each()
#include <stdexcept> // invalid_argument
-#endif
namespace butl
{
diff --git a/libbutl/uuid-linux.cxx b/libbutl/uuid-linux.cxx
index 7689088..82af2e9 100644
--- a/libbutl/uuid-linux.cxx
+++ b/libbutl/uuid-linux.cxx
@@ -13,7 +13,7 @@
#include <utility> // move()
#include <system_error>
-#include <libbutl/utility.mxx> // function_cast()
+#include <libbutl/utility.hxx> // function_cast()
using namespace std;
diff --git a/libbutl/vector-view.mxx b/libbutl/vector-view.hxx
index 7924371..16ab08e 100644
--- a/libbutl/vector-view.mxx
+++ b/libbutl/vector-view.hxx
@@ -1,32 +1,17 @@
-// file : libbutl/vector-view.mxx -*- C++ -*-
+// file : libbutl/vector-view.hxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_modules_ts
#pragma once
-#endif
-// C includes.
-
-#ifndef __cpp_lib_modules_ts
#include <vector>
#include <cstddef> // size_t, ptrdiff_t
#include <utility> // swap()
#include <iterator> // reverse_iterator
#include <stdexcept> // out_of_range
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-export module butl.vector_view;
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-#endif
#include <libbutl/export.hxx>
-LIBBUTL_MODEXPORT namespace butl
+namespace butl
{
// In our version a const view allows the modification of the elements
// unless T is made const (the same semantics as in smart pointers).
diff --git a/libbutl/win32-utility.cxx b/libbutl/win32-utility.cxx
index 3b44d60..c69842b 100644
--- a/libbutl/win32-utility.cxx
+++ b/libbutl/win32-utility.cxx
@@ -8,16 +8,9 @@
//
#ifdef _WIN32
-#ifndef __cpp_lib_modules_ts
-#include <string>
#include <memory> // unique_ptr
-#include <libbutl/utility.mxx> // throw_system_error()
-#else
-import std.core;
-
-import butl.utility;
-#endif
+#include <libbutl/utility.hxx> // throw_system_error()
using namespace std;
diff --git a/libbutl/win32-utility.hxx b/libbutl/win32-utility.hxx
index b71eb1a..9bed647 100644
--- a/libbutl/win32-utility.hxx
+++ b/libbutl/win32-utility.hxx
@@ -31,11 +31,7 @@
# endif
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
-#else
-import std.core;
-#endif
#include <libbutl/export.hxx>
diff --git a/tests/b-info/driver.cxx b/tests/b-info/driver.cxx
index 963d4e3..6832aaa 100644
--- a/tests/b-info/driver.cxx
+++ b/tests/b-info/driver.cxx
@@ -1,26 +1,12 @@
// file : tests/b-info/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.b;
-import butl.path;
-import butl.utility; // operator<<(ostream,exception)
-#else
-#include <libbutl/b.mxx>
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#endif
+
+#include <libbutl/b.hxx>
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream,exception)
#undef NDEBUG
#include <cassert>
diff --git a/tests/backtrace/driver.cxx b/tests/backtrace/driver.cxx
index a8ae99a..ecfa58e 100644
--- a/tests/backtrace/driver.cxx
+++ b/tests/backtrace/driver.cxx
@@ -5,29 +5,14 @@
# include <sys/resource.h> // setrlimit()
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
#include <exception> // set_terminate(), terminate_handler
#include <system_error>
-#else
-import std.io;
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.process;
-import butl.fdstream;
-import butl.backtrace;
-#else
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/backtrace.mxx>
-#endif
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/backtrace.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/base64/driver.cxx b/tests/base64/driver.cxx
index d6a95b3..a37a238 100644
--- a/tests/base64/driver.cxx
+++ b/tests/base64/driver.cxx
@@ -1,23 +1,11 @@
// file : tests/base64/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <sstream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.base64;
-#else
-#include <libbutl/base64.mxx>
-#endif
+#include <libbutl/base64.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/builtin/driver.cxx b/tests/builtin/driver.cxx
index 7a32d8e..7a0193f 100644
--- a/tests/builtin/driver.cxx
+++ b/tests/builtin/driver.cxx
@@ -5,7 +5,6 @@
# include <libbutl/win32-utility.hxx>
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <chrono>
@@ -16,27 +15,12 @@
#ifndef _WIN32
# include <thread> // this_thread::sleep_for()
#endif
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.utility; // eof()
-import butl.builtin;
-import butl.optional;
-import butl.timestamp; // to_stream(duration)
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/builtin.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/timestamp.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // eof()
+#include <libbutl/builtin.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/timestamp.hxx> // to_stream(duration)
#undef NDEBUG
#include <cassert>
diff --git a/tests/command/driver.cxx b/tests/command/driver.cxx
index e2fe41a..9194c13 100644
--- a/tests/command/driver.cxx
+++ b/tests/command/driver.cxx
@@ -1,36 +1,19 @@
// file : tests/command/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <ios>
#include <string>
#include <vector>
#include <iostream>
#include <stdexcept> // invalid_argument
#include <system_error>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.path_io;
-import butl.process; // process::print()
-import butl.command;
-import butl.utility;
-import butl.optional;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/command.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/path-io.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/command.hxx>
+#include <libbutl/utility.hxx>
+#include <libbutl/optional.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/cpfile/driver.cxx b/tests/cpfile/driver.cxx
index 8891d58..fe01bdd 100644
--- a/tests/cpfile/driver.cxx
+++ b/tests/cpfile/driver.cxx
@@ -1,27 +1,13 @@
// file : tests/cpfile/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <ios>
#include <string>
#include <system_error>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.fdstream;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/curl/driver.cxx b/tests/curl/driver.cxx
index 3b0ea43..72faf52 100644
--- a/tests/curl/driver.cxx
+++ b/tests/curl/driver.cxx
@@ -1,33 +1,14 @@
// file : tests/curl/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <iostream>
#include <system_error>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.curl;
-import butl.path;
-import butl.process;
-import butl.utility; // operator<<(ostream, exception)
-import butl.fdstream;
-
-import butl.optional; // @@ MOD Clang should not be necessary.
-import butl.small_vector; // @@ MOD Clang should not be necessary.
-#else
-#include <libbutl/curl.mxx>
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+
+#include <libbutl/curl.hxx>
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/fdstream.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/default-options/driver.cxx b/tests/default-options/driver.cxx
index 94ad189..766dca8 100644
--- a/tests/default-options/driver.cxx
+++ b/tests/default-options/driver.cxx
@@ -1,35 +1,19 @@
// file : tests/default-options/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <limits>
#include <string>
#include <vector>
#include <iostream>
#include <exception>
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.path_io;
-import butl.optional;
-import butl.fdstream;
-import butl.default_options;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/utility.mxx> // eof()
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/default-options.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/path-io.hxx>
+#include <libbutl/utility.hxx> // eof()
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/default-options.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/dir-iterator/driver.cxx b/tests/dir-iterator/driver.cxx
index 0c19037..4a2ff53 100644
--- a/tests/dir-iterator/driver.cxx
+++ b/tests/dir-iterator/driver.cxx
@@ -1,28 +1,13 @@
// file : tests/dir-iterator/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <cstddef> // size_t
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.path_io;
-import butl.utility;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/utility.mxx> // operator<<(ostream, exception)
-#include <libbutl/filesystem.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/path-io.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/entry-time/driver.cxx b/tests/entry-time/driver.cxx
index 0da7fe9..c29837d 100644
--- a/tests/entry-time/driver.cxx
+++ b/tests/entry-time/driver.cxx
@@ -1,29 +1,14 @@
// file : tests/entry-time/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <chrono>
#include <iostream>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.filesystem;
-
-import butl.optional; // @@ MOD Clang should not be necessary.
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/timestamp.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/timestamp.hxx>
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/fdstream/driver.cxx b/tests/fdstream/driver.cxx
index dc657e7..254a03e 100644
--- a/tests/fdstream/driver.cxx
+++ b/tests/fdstream/driver.cxx
@@ -5,7 +5,6 @@
# include <libbutl/win32-utility.hxx>
#endif
-#ifndef __cpp_lib_modules_ts
#ifndef _WIN32
# include <chrono>
#endif
@@ -20,30 +19,12 @@
#include <utility> // move()
#include <iostream>
#include <exception>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#ifndef _WIN32
-import std.threading;
-#endif
-#endif
-import butl.path;
-import butl.process;
-import butl.fdstream;
-import butl.timestamp;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/timestamp.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/timestamp.hxx>
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/link/driver.cxx b/tests/link/driver.cxx
index 6b898f5..db9c195 100644
--- a/tests/link/driver.cxx
+++ b/tests/link/driver.cxx
@@ -1,32 +1,16 @@
// file : tests/link/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <set>
#include <utility> // pair
#include <iostream> // cerr
#include <system_error>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.path_io;
-import butl.utility;
-import butl.fdstream;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/path-io.hxx>
+#include <libbutl/utility.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/lz4/driver.cxx b/tests/lz4/driver.cxx
index 9004b56..8139c34 100644
--- a/tests/lz4/driver.cxx
+++ b/tests/lz4/driver.cxx
@@ -5,8 +5,8 @@
#include <exception>
#include <libbutl/lz4.hxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/filesystem.mxx> // entry_stat, path_entry()
+#include <libbutl/fdstream.hxx>
+#include <libbutl/filesystem.hxx> // entry_stat, path_entry()
#undef NDEBUG
#include <cassert>
diff --git a/tests/manifest-parser/driver.cxx b/tests/manifest-parser/driver.cxx
index 859e275..6924321 100644
--- a/tests/manifest-parser/driver.cxx
+++ b/tests/manifest-parser/driver.cxx
@@ -1,27 +1,14 @@
// file : tests/manifest-parser/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <vector>
#include <string>
#include <utility> // pair, move()
#include <sstream>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.optional;
-import butl.manifest_parser;
-#else
-#include <libbutl/optional.mxx>
-#include <libbutl/manifest-parser.mxx>
-#endif
+
+#include <libbutl/optional.hxx>
+#include <libbutl/manifest-parser.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/manifest-rewriter/driver.cxx b/tests/manifest-rewriter/driver.cxx
index d08a6c8..3e8fecb 100644
--- a/tests/manifest-rewriter/driver.cxx
+++ b/tests/manifest-rewriter/driver.cxx
@@ -1,34 +1,18 @@
// file : tests/manifest-rewriter/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <vector>
#include <string>
#include <cstdint> // uint64_t
#include <utility> // move()
#include <iostream>
#include <exception>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.optional;
-import butl.fdstream;
-import butl.manifest_parser;
-import butl.manifest_rewriter;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/manifest-parser.mxx>
-#include <libbutl/manifest-rewriter.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/manifest-parser.hxx>
+#include <libbutl/manifest-rewriter.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/manifest-roundtrip/driver.cxx b/tests/manifest-roundtrip/driver.cxx
index d0bcab9..4cf35e9 100644
--- a/tests/manifest-roundtrip/driver.cxx
+++ b/tests/manifest-roundtrip/driver.cxx
@@ -1,28 +1,13 @@
// file : tests/manifest-roundtrip/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility; // operator<<(ostream, exception)
-import butl.fdstream;
-import butl.manifest_parser;
-import butl.manifest_serializer;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/manifest-parser.mxx>
-#include <libbutl/manifest-serializer.mxx>
-#endif
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/fdstream.hxx>
+#include <libbutl/manifest-parser.hxx>
+#include <libbutl/manifest-serializer.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/manifest-serializer/driver.cxx b/tests/manifest-serializer/driver.cxx
index 59b8ddd..4c09038 100644
--- a/tests/manifest-serializer/driver.cxx
+++ b/tests/manifest-serializer/driver.cxx
@@ -1,25 +1,13 @@
// file : tests/manifest-serializer/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <vector>
#include <string>
#include <utility> // pair
#include <sstream>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.manifest_serializer;
-#else
-#include <libbutl/manifest-serializer.mxx>
-#endif
+
+#include <libbutl/manifest-serializer.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/mventry/driver.cxx b/tests/mventry/driver.cxx
index dc2e2f7..e895ad6 100644
--- a/tests/mventry/driver.cxx
+++ b/tests/mventry/driver.cxx
@@ -1,26 +1,12 @@
// file : tests/mventry/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <iostream>
#include <system_error>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.utility; // operator<<(ostream, exception)
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/openssl/driver.cxx b/tests/openssl/driver.cxx
index 450a547..d671c00 100644
--- a/tests/openssl/driver.cxx
+++ b/tests/openssl/driver.cxx
@@ -1,34 +1,15 @@
// file : tests/openssl/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <vector>
#include <iostream>
#include <iterator>
#include <system_error>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.utility; // operator<<(ostream, exception)
-import butl.openssl;
-import butl.process;
-import butl.fdstream; // nullfd
-
-import butl.optional; // @@ MOD Clang should not be necessary.
-import butl.small_vector; // @@ MOD Clang should not be necessary.
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/openssl.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/openssl.hxx>
+#include <libbutl/fdstream.hxx> // nullfd
#undef NDEBUG
#include <cassert>
diff --git a/tests/optional/driver.cxx b/tests/optional/driver.cxx
index e73f03e..da09cf5 100644
--- a/tests/optional/driver.cxx
+++ b/tests/optional/driver.cxx
@@ -1,21 +1,10 @@
// file : tests/optional/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <vector>
#include <utility> // move()
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.optional;
-#else
-#include <libbutl/optional.mxx>
-#endif
+
+#include <libbutl/optional.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/pager/driver.cxx b/tests/pager/driver.cxx
index 0d6e1e6..c807ed0 100644
--- a/tests/pager/driver.cxx
+++ b/tests/pager/driver.cxx
@@ -1,26 +1,14 @@
// file : tests/pager/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <ios> // ios_base::failure
#include <vector>
#include <string>
#include <utility> // move()
#include <sstream>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.pager;
-#else
-#include <libbutl/pager.mxx>
-#endif
+
+#include <libbutl/pager.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/path-entry/driver.cxx b/tests/path-entry/driver.cxx
index 13914cd..d9ea2be 100644
--- a/tests/path-entry/driver.cxx
+++ b/tests/path-entry/driver.cxx
@@ -1,34 +1,17 @@
// file : tests/path-entry/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
#include <stdexcept> // invalid_argument
#include <system_error>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.path-io;
-import butl.utility; // operator<<(ostream, exception)
-import butl.optional;
-import butl.timestamp;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/path-io.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/timestamp.mxx>
-#include <libbutl/filesystem.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/path-io.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/optional.hxx>
+#include <libbutl/timestamp.hxx>
+#include <libbutl/filesystem.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/path/driver.cxx b/tests/path/driver.cxx
index 9f85d6b..3124c13 100644
--- a/tests/path/driver.cxx
+++ b/tests/path/driver.cxx
@@ -1,25 +1,12 @@
// file : tests/path/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <sstream>
#include <iostream>
#include <type_traits>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-//import butl.path_io;
-#else
-#include <libbutl/path.mxx>
-//#include <libbutl/path-io.mxx>
-#endif
+#include <libbutl/path.hxx>
+//#include <libbutl/path-io.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/prefix-map/driver.cxx b/tests/prefix-map/driver.cxx
index 0628abf..8ed35ea 100644
--- a/tests/prefix-map/driver.cxx
+++ b/tests/prefix-map/driver.cxx
@@ -1,22 +1,10 @@
// file : tests/prefix-map/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.prefix_map;
-#else
-#include <libbutl/prefix-map.mxx>
-#endif
+
+#include <libbutl/prefix-map.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/process-run/driver.cxx b/tests/process-run/driver.cxx
index c851666..032f890 100644
--- a/tests/process-run/driver.cxx
+++ b/tests/process-run/driver.cxx
@@ -1,29 +1,13 @@
// file : tests/process-run/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.process;
-import butl.optional; // @@ MOD Clang shouldn't be needed.
-import butl.fdstream;
-import butl.small_vector;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/small-vector.mxx>
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/small-vector.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/process-term/driver.cxx b/tests/process-term/driver.cxx
index 90afc96..799757c 100644
--- a/tests/process-term/driver.cxx
+++ b/tests/process-term/driver.cxx
@@ -10,7 +10,6 @@
# include <libbutl/win32-utility.hxx>
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cerrno> // ERANGE
#include <utility> // move()
@@ -21,23 +20,10 @@
#ifndef _WIN32
# include <chrono>
#endif
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.process;
-import butl.optional;
-import butl.fdstream;
-#else
-#include <libbutl/process.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#endif
+#include <libbutl/process.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/process/driver.cxx b/tests/process/driver.cxx
index ab5006a..1ee5710 100644
--- a/tests/process/driver.cxx
+++ b/tests/process/driver.cxx
@@ -1,7 +1,6 @@
// file : tests/process/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <ios>
#include <string>
#include <vector>
@@ -10,30 +9,14 @@
#include <iterator> // istreambuf_iterator, ostream_iterator
#include <algorithm> // copy()
#include <iostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.utility; // setenv(), getenv()
-import butl.process;
-import butl.optional;
-import butl.fdstream;
-import butl.timestamp;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/process-io.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/timestamp.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // setenv(), getenv()
+#include <libbutl/process.hxx>
+#include <libbutl/process-io.hxx>
+#include <libbutl/optional.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/timestamp.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/progress/driver.cxx b/tests/progress/driver.cxx
index 68952a7..f1a257c 100644
--- a/tests/progress/driver.cxx
+++ b/tests/progress/driver.cxx
@@ -8,36 +8,16 @@
# include <io.h> //_write()
#endif
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstddef> // size_t
#include <iostream>
#ifndef _WIN32
# include <thread> // this_thread::sleep_for()
#endif
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#ifndef _WIN32
-import std.threading;
-#endif
-#endif
-import butl.process;
-import butl.fdstream;
-import butl.diagnostics;
-import butl.optional; // @@ MOD Clang should not be necessary.
-import butl.small_vector; // @@ MOD Clang should not be necessary.
-#else
-#include <libbutl/process.mxx>
-#include <libbutl/fdstream.mxx> // fdopen_null(), stderr_fd()
-#include <libbutl/diagnostics.mxx>
-#endif
+#include <libbutl/process.hxx>
+#include <libbutl/fdstream.hxx> // fdopen_null(), stderr_fd()
+#include <libbutl/diagnostics.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/project-name/driver.cxx b/tests/project-name/driver.cxx
index 8c5b206..ac1c898 100644
--- a/tests/project-name/driver.cxx
+++ b/tests/project-name/driver.cxx
@@ -1,26 +1,14 @@
// file : tests/project-name/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <ios> // ios::*bit
#include <string>
#include <iostream>
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility; // operator<<(ostream,exception), eof(), *case()
-import butl.project_name;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/project-name.mxx>
-#endif
+
+#include <libbutl/utility.hxx> // operator<<(ostream,exception), eof(),
+ // *case()
+#include <libbutl/project-name.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/regex/driver.cxx b/tests/regex/driver.cxx
index ce707b8..f8363e1 100644
--- a/tests/regex/driver.cxx
+++ b/tests/regex/driver.cxx
@@ -1,29 +1,15 @@
// file : tests/regex/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <regex>
#include <string>
#include <utility> // pair
#include <iostream>
#include <stdexcept> // invalid_argument
#include <exception>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-import std.regex; // @@ MOD TODO: shouldn't be necessary (re-export).
-#endif
-import butl.regex;
-import butl.utility; // operator<<(ostream, exception)
-#else
-#include <libbutl/regex.mxx>
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/regex.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
#undef NDEBUG
#include <cassert>
diff --git a/tests/semantic-version/driver.cxx b/tests/semantic-version/driver.cxx
index ac6bf33..2bdd415 100644
--- a/tests/semantic-version/driver.cxx
+++ b/tests/semantic-version/driver.cxx
@@ -1,21 +1,9 @@
// file : tests/semantic-version/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <iostream>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.semantic_version;
-#else
-#include <libbutl/semantic-version.mxx>
-#endif
+#include <libbutl/semantic-version.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/sendmail/driver.cxx b/tests/sendmail/driver.cxx
index a29650c..3b97202 100644
--- a/tests/sendmail/driver.cxx
+++ b/tests/sendmail/driver.cxx
@@ -1,32 +1,13 @@
// file : tests/sendmail/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <iostream>
#include <system_error>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.process;
-import butl.utility; // operator<<(ostream, exception)
-import butl.sendmail;
-import butl.fdstream;
-
-import butl.optional; // @@ MOD Clang should not be necessary.
-import butl.small_vector; // @@ MOD Clang should not be necessary.
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/process.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/sendmail.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/process.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/sendmail.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/sha1/driver.cxx b/tests/sha1/driver.cxx
index cb648db..1e8e254 100644
--- a/tests/sha1/driver.cxx
+++ b/tests/sha1/driver.cxx
@@ -1,27 +1,13 @@
// file : tests/sha1/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstddef> // size_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.sha1;
-import butl.path;
-import butl.fdstream;
-import butl.filesystem;
-#else
-#include <libbutl/sha1.mxx>
-#include <libbutl/path.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/filesystem.mxx> // auto_rmfile
-#endif
+
+#include <libbutl/sha1.hxx>
+#include <libbutl/path.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/filesystem.hxx> // auto_rmfile
#undef NDEBUG
#include <cassert>
diff --git a/tests/sha256/driver.cxx b/tests/sha256/driver.cxx
index 3d2f69e..30dfa49 100644
--- a/tests/sha256/driver.cxx
+++ b/tests/sha256/driver.cxx
@@ -1,27 +1,13 @@
// file : tests/sha256/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <cstddef> // size_t
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.path;
-import butl.sha256;
-import butl.fdstream;
-import butl.filesystem;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/sha256.mxx>
-#include <libbutl/fdstream.mxx>
-#include <libbutl/filesystem.mxx> // auto_rmfile
-#endif
+
+#include <libbutl/path.hxx>
+#include <libbutl/sha256.hxx>
+#include <libbutl/fdstream.hxx>
+#include <libbutl/filesystem.hxx> // auto_rmfile
#undef NDEBUG
#include <cassert>
diff --git a/tests/small-forward-list/driver.cxx b/tests/small-forward-list/driver.cxx
index 1b8a14f..1cfea77 100644
--- a/tests/small-forward-list/driver.cxx
+++ b/tests/small-forward-list/driver.cxx
@@ -1,22 +1,10 @@
// file : tests/small-forward-list/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.small_forward_list;
-#else
-#include <libbutl/small-forward-list.mxx>
-#endif
+
+#include <libbutl/small-forward-list.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/small-list/driver.cxx b/tests/small-list/driver.cxx
index cced91d..8e2fb6e 100644
--- a/tests/small-list/driver.cxx
+++ b/tests/small-list/driver.cxx
@@ -1,22 +1,10 @@
// file : tests/small-list/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.small_list;
-#else
-#include <libbutl/small-list.mxx>
-#endif
+#include <libbutl/small-list.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/small-vector/driver.cxx b/tests/small-vector/driver.cxx
index be8e6d8..cc012fc 100644
--- a/tests/small-vector/driver.cxx
+++ b/tests/small-vector/driver.cxx
@@ -1,22 +1,10 @@
// file : tests/small-vector/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.small_vector;
-#else
-#include <libbutl/small-vector.mxx>
-#endif
+
+#include <libbutl/small-vector.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/standard-version/driver.cxx b/tests/standard-version/driver.cxx
index dbd24fc..29cad54 100644
--- a/tests/standard-version/driver.cxx
+++ b/tests/standard-version/driver.cxx
@@ -1,29 +1,15 @@
// file : tests/standard-version/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <ios> // ios::failbit, ios::badbit
#include <string>
#include <cstdint> // uint*_t
#include <iostream>
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility; // operator<<(ostream,exception), eof()
-import butl.optional;
-import butl.standard_version;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/standard-version.mxx>
-#endif
+
+#include <libbutl/utility.hxx> // operator<<(ostream,exception), eof()
+#include <libbutl/optional.hxx>
+#include <libbutl/standard-version.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/strcase/driver.cxx b/tests/strcase/driver.cxx
index 48e77f2..8e964a6 100644
--- a/tests/strcase/driver.cxx
+++ b/tests/strcase/driver.cxx
@@ -1,20 +1,9 @@
// file : tests/strcase/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.utility;
-#else
-#include <libbutl/utility.mxx>
-#endif
+#include <libbutl/utility.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/string-parser/driver.cxx b/tests/string-parser/driver.cxx
index 2e47e4a..8cba912 100644
--- a/tests/string-parser/driver.cxx
+++ b/tests/string-parser/driver.cxx
@@ -1,25 +1,12 @@
// file : tests/string-parser/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <vector>
#include <iostream>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility; // operator<<(ostream,exception)
-import butl.string_parser;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/string-parser.mxx>
-#endif
+
+#include <libbutl/utility.hxx> // operator<<(ostream,exception)
+#include <libbutl/string-parser.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/tab-parser/driver.cxx b/tests/tab-parser/driver.cxx
index e9cd36f..99c19d9 100644
--- a/tests/tab-parser/driver.cxx
+++ b/tests/tab-parser/driver.cxx
@@ -1,24 +1,11 @@
// file : tests/tab-parser/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
-#endif
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.utility; // operator<<(ostream,exception)
-import butl.tab_parser;
-#else
-#include <libbutl/utility.mxx>
-#include <libbutl/tab-parser.mxx>
-#endif
+#include <libbutl/utility.hxx> // operator<<(ostream,exception)
+#include <libbutl/tab-parser.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/target-triplet/driver.cxx b/tests/target-triplet/driver.cxx
index 9cd7c2b..6dcb77e 100644
--- a/tests/target-triplet/driver.cxx
+++ b/tests/target-triplet/driver.cxx
@@ -1,23 +1,11 @@
// file : tests/target-triplet/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <iostream>
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.target_triplet;
-#else
-#include <libbutl/target-triplet.mxx>
-#endif
+
+#include <libbutl/target-triplet.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/timestamp/driver.cxx b/tests/timestamp/driver.cxx
index 0ea2b38..11f328a 100644
--- a/tests/timestamp/driver.cxx
+++ b/tests/timestamp/driver.cxx
@@ -3,26 +3,14 @@
#include <time.h> // tzset() (POSIX), _tzset() (Windows)
-#ifndef __cpp_lib_modules_ts
#include <chrono>
#include <locale>
#include <clocale>
#include <sstream>
#include <iomanip>
#include <system_error>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.timestamp;
-#else
-#include <libbutl/timestamp.mxx>
-#endif
+#include <libbutl/timestamp.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/url/driver.cxx b/tests/url/driver.cxx
index 02bb5b8..869eed5 100644
--- a/tests/url/driver.cxx
+++ b/tests/url/driver.cxx
@@ -1,27 +1,14 @@
// file : tests/url/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
#include <utility> // move()
#include <iostream>
#include <iterator> // back_inserter
#include <stdexcept> // invalid_argument
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.url;
-import butl.utility; // operator<<(ostream, exception)
-#else
-#include <libbutl/url.mxx>
-#include <libbutl/utility.mxx>
-#endif
+
+#include <libbutl/url.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
#undef NDEBUG
#include <cassert>
diff --git a/tests/utf8/driver.cxx b/tests/utf8/driver.cxx
index db98aa6..ccc2870 100644
--- a/tests/utf8/driver.cxx
+++ b/tests/utf8/driver.cxx
@@ -1,22 +1,10 @@
// file : tests/utf8/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <string>
-#endif
-
-// Other includes.
-
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-#endif
-import butl.utf8;
-import butl.utility;
-#else
-#include <libbutl/utf8.mxx>
-#include <libbutl/utility.mxx>
-#endif
+
+#include <libbutl/utf8.hxx>
+#include <libbutl/utility.hxx>
#undef NDEBUG
#include <cassert>
diff --git a/tests/wildcard/driver.cxx b/tests/wildcard/driver.cxx
index bd6a00d..9419a79 100644
--- a/tests/wildcard/driver.cxx
+++ b/tests/wildcard/driver.cxx
@@ -1,34 +1,18 @@
// file : tests/wildcard/driver.cxx -*- C++ -*-
// license : MIT; see accompanying LICENSE file
-#ifndef __cpp_lib_modules_ts
#include <map>
#include <string>
#include <vector>
#include <algorithm> // sort()
#include <exception>
#include <iostream>
-#endif
-
-// Other includes.
-#ifdef __cpp_modules_ts
-#ifdef __cpp_lib_modules_ts
-import std.core;
-import std.io;
-#endif
-import butl.path;
-import butl.utility; // operator<<(ostream, exception)
-import butl.optional;
-import butl.filesystem;
-import butl.path_pattern;
-#else
-#include <libbutl/path.mxx>
-#include <libbutl/utility.mxx>
-#include <libbutl/optional.mxx>
-#include <libbutl/filesystem.mxx>
-#include <libbutl/path-pattern.mxx>
-#endif
+#include <libbutl/path.hxx>
+#include <libbutl/utility.hxx> // operator<<(ostream, exception)
+#include <libbutl/optional.hxx>
+#include <libbutl/filesystem.hxx>
+#include <libbutl/path-pattern.hxx>
#undef NDEBUG
#include <cassert>