diff --git a/.cmake-format.yaml b/.cmake-format.yaml index c80494f1..b1465f47 100644 --- a/.cmake-format.yaml +++ b/.cmake-format.yaml @@ -10,9 +10,15 @@ parse: enable_iwyu: pargs: flags: + - QUIET + - REQUIRED - NO_FORWARD_DECLARATIONS - - QUOTED_INCLUDES_FIRST + - PCH_IN_CODE + - TRANSITIVE_INCLUDES_ONLY - NO_COMMENTS + - NO_FORWARD_DECLARATIONS + - CXX17_NAMESPACES + - QUOTED_INCLUDES_FIRST kwargs: MAPPING_FILE: 1 MAX_LINE_LENGTH: 1 diff --git a/cmake/include-what-you-use.cmake b/cmake/include-what-you-use.cmake index 2f3e69ed..f42bebc4 100644 --- a/cmake/include-what-you-use.cmake +++ b/cmake/include-what-you-use.cmake @@ -45,6 +45,7 @@ macro(_process_iwyu_arguments offset log_postfix) set(_options QUIET REQUIRED + ERROR NO_DEFAULT_MAPPINGS PCH_IN_CODE TRANSITIVE_INCLUDES_ONLY @@ -112,6 +113,7 @@ macro(_process_iwyu_arguments offset log_postfix) _iwyu_args_append("--max_line_length=${_enable_iwyu_MAX_LINE_LENGTH}") endif() + _iwyu_args_append_if_present(ERROR "--error") _iwyu_args_append_if_present(NO_DEFAULT_MAPPINGS "--no_default_mappings") _iwyu_args_append_if_present(PCH_IN_CODE "--pch_in_code") _iwyu_args_append_if_present(TRANSITIVE_INCLUDES_ONLY "--transitive_includes_only") diff --git a/example/avg_speed.cpp b/example/avg_speed.cpp index a31f6a1b..f7f5e611 100644 --- a/example/avg_speed.cpp +++ b/example/avg_speed.cpp @@ -33,8 +33,8 @@ import mp_units; #include #include #include -#include -#include +#include +#include #endif namespace { diff --git a/example/capacitor_time_curve.cpp b/example/capacitor_time_curve.cpp index 02bbc271..fc9f867b 100644 --- a/example/capacitor_time_curve.cpp +++ b/example/capacitor_time_curve.cpp @@ -24,7 +24,7 @@ #ifdef MP_UNITS_MODULES import mp_units; #else -#include // IWYU pragma: keep +#include #include #include #include diff --git a/example/conversion_factor.cpp b/example/conversion_factor.cpp index 308fb2a0..a4d577a8 100644 --- a/example/conversion_factor.cpp +++ b/example/conversion_factor.cpp @@ -16,15 +16,14 @@ */ #include +#include #include -#include +#include #ifdef MP_UNITS_MODULES import mp_units; #else #include -#include -#include -#include +#include #endif /* diff --git a/example/currency.cpp b/example/currency.cpp index cc935c5e..c81786fb 100644 --- a/example/currency.cpp +++ b/example/currency.cpp @@ -21,14 +21,16 @@ // SOFTWARE. #include +#include #include #include +#include +#include #ifdef MP_UNITS_MODULES import mp_units.core; #else +#include #include -#include -#include #endif using namespace mp_units; diff --git a/example/glide_computer_lib/include/glide_computer_lib.h b/example/glide_computer_lib/include/glide_computer_lib.h index b198dabf..5a1faaf7 100644 --- a/example/glide_computer_lib/include/glide_computer_lib.h +++ b/example/glide_computer_lib/include/glide_computer_lib.h @@ -36,8 +36,8 @@ #ifdef MP_UNITS_MODULES import mp_units; #else +#include #include // IWYU pragma: keep -#include #include #include #endif diff --git a/example/include/geographic.h b/example/include/geographic.h index e2b92124..06349d16 100644 --- a/example/include/geographic.h +++ b/example/include/geographic.h @@ -31,10 +31,8 @@ #ifdef MP_UNITS_MODULES import mp_units; #else -#include #include -#include -#include +#include #include #include #endif diff --git a/example/include/ranged_representation.h b/example/include/ranged_representation.h index 0f760c00..9fc493cd 100644 --- a/example/include/ranged_representation.h +++ b/example/include/ranged_representation.h @@ -23,7 +23,7 @@ #pragma once #include "validated_type.h" -#include +#include #include #include #include @@ -32,7 +32,7 @@ import mp_units.core; #else #include -#include +#include #endif template) auto Min, diff --git a/example/include/validated_type.h b/example/include/validated_type.h index 8be7c1a6..738c42e6 100644 --- a/example/include/validated_type.h +++ b/example/include/validated_type.h @@ -23,16 +23,17 @@ #pragma once #include -#include +#include #include +#include // IWYU pragma: export #include #include #ifdef MP_UNITS_MODULES import mp_units.core; #else -#include #include -#include +#include +#include #endif inline constexpr struct validated_tag { diff --git a/example/measurement.cpp b/example/measurement.cpp index 8a6a5948..52e991e7 100644 --- a/example/measurement.cpp +++ b/example/measurement.cpp @@ -20,17 +20,21 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +#include #include #include +#include // IWYU pragma: export +#include #include #include +#include #ifdef MP_UNITS_MODULES import mp_units; #else +#include #include #include -#include -#include +#include #endif namespace { diff --git a/example/storage_tank.cpp b/example/storage_tank.cpp index 74de7482..76f2af8e 100644 --- a/example/storage_tank.cpp +++ b/example/storage_tank.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #ifdef MP_UNITS_MODULES import mp_units; #else diff --git a/example/strong_angular_quantities.cpp b/example/strong_angular_quantities.cpp index 298a097e..585e5b01 100644 --- a/example/strong_angular_quantities.cpp +++ b/example/strong_angular_quantities.cpp @@ -24,10 +24,9 @@ #ifdef MP_UNITS_MODULES import mp_units; #else -#include #include #include -#include +#include #endif template diff --git a/example/total_energy.cpp b/example/total_energy.cpp index aea49059..64f93aa3 100644 --- a/example/total_energy.cpp +++ b/example/total_energy.cpp @@ -28,9 +28,9 @@ import mp_units; #include #include #include +#include #include -#include -#include +#include #endif template diff --git a/example/unmanned_aerial_vehicle.cpp b/example/unmanned_aerial_vehicle.cpp index e520fd4d..19b68922 100644 --- a/example/unmanned_aerial_vehicle.cpp +++ b/example/unmanned_aerial_vehicle.cpp @@ -27,8 +27,8 @@ #ifdef MP_UNITS_MODULES import mp_units; #else +#include #include -#include #include #include #include diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 329ec1ec..e893d85f 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -40,50 +40,51 @@ endif() add_mp_units_module( core mp-units-core DEPENDENCIES gsl::gsl-lite - HEADERS include/mp-units/bits/external/algorithm.h - include/mp-units/bits/external/fixed_string.h - include/mp-units/bits/external/hacks.h - include/mp-units/bits/external/math_concepts.h - include/mp-units/bits/external/prime.h - include/mp-units/bits/external/type_list.h - include/mp-units/bits/external/type_name.h - include/mp-units/bits/external/type_traits.h - include/mp-units/bits/core_gmf.h - include/mp-units/bits/dimension_concepts.h - include/mp-units/bits/expression_template.h + HEADERS include/mp-units/bits/core_gmf.h include/mp-units/bits/fmt.h include/mp-units/bits/get_associated_quantity.h include/mp-units/bits/get_common_base.h - include/mp-units/bits/magnitude.h + include/mp-units/bits/hacks.h + include/mp-units/bits/math_concepts.h include/mp-units/bits/module_macros.h - include/mp-units/bits/quantity_cast.h - include/mp-units/bits/quantity_concepts.h - include/mp-units/bits/quantity_point_concepts.h - include/mp-units/bits/quantity_spec_concepts.h include/mp-units/bits/ratio.h - include/mp-units/bits/reference_concepts.h - include/mp-units/bits/representation_concepts.h include/mp-units/bits/sudo_cast.h - include/mp-units/bits/symbol_text.h include/mp-units/bits/text_tools.h - include/mp-units/bits/unit_concepts.h - include/mp-units/bits/value_cast.h - include/mp-units/compare.h + include/mp-units/bits/type_list.h + include/mp-units/ext/algorithm.h + include/mp-units/ext/fixed_string.h + include/mp-units/ext/prime.h + include/mp-units/ext/type_name.h + include/mp-units/ext/type_traits.h + include/mp-units/framework/compare.h + include/mp-units/framework/customization_points.h + include/mp-units/framework/dimension.h + include/mp-units/framework/dimension_concepts.h + include/mp-units/framework/expression_template.h + include/mp-units/framework/magnitude.h + include/mp-units/framework/quantity.h + include/mp-units/framework/quantity_cast.h + include/mp-units/framework/quantity_concepts.h + include/mp-units/framework/quantity_point.h + include/mp-units/framework/quantity_point_concepts.h + include/mp-units/framework/quantity_spec.h + include/mp-units/framework/quantity_spec_concepts.h + include/mp-units/framework/reference.h + include/mp-units/framework/reference_concepts.h + include/mp-units/framework/representation_concepts.h + include/mp-units/framework/symbol_text.h + include/mp-units/framework/system_reference.h + include/mp-units/framework/unit.h + include/mp-units/framework/unit_concepts.h + include/mp-units/framework/value_cast.h include/mp-units/compat_macros.h include/mp-units/concepts.h include/mp-units/core.h - include/mp-units/customization_points.h - include/mp-units/dimension.h include/mp-units/format.h + include/mp-units/framework.h include/mp-units/math.h include/mp-units/ostream.h - include/mp-units/quantity.h - include/mp-units/quantity_point.h - include/mp-units/quantity_spec.h include/mp-units/random.h - include/mp-units/reference.h - include/mp-units/system_reference.h - include/mp-units/unit.h MODULE_INTERFACE_UNIT mp-units-core.cpp ) diff --git a/src/core/include/mp-units/bits/core_gmf.h b/src/core/include/mp-units/bits/core_gmf.h index 0c200a6c..261baca5 100644 --- a/src/core/include/mp-units/bits/core_gmf.h +++ b/src/core/include/mp-units/bits/core_gmf.h @@ -23,7 +23,7 @@ #pragma once #include -#include +#include #include #include #include diff --git a/src/core/include/mp-units/bits/get_associated_quantity.h b/src/core/include/mp-units/bits/get_associated_quantity.h index abaee2a3..2a474303 100644 --- a/src/core/include/mp-units/bits/get_associated_quantity.h +++ b/src/core/include/mp-units/bits/get_associated_quantity.h @@ -22,9 +22,9 @@ #pragma once -#include -#include -#include +#include +#include +#include namespace mp_units::detail { diff --git a/src/core/include/mp-units/bits/get_common_base.h b/src/core/include/mp-units/bits/get_common_base.h index 97ad5fbd..e703a41f 100644 --- a/src/core/include/mp-units/bits/get_common_base.h +++ b/src/core/include/mp-units/bits/get_common_base.h @@ -22,7 +22,7 @@ #pragma once -#include +#include namespace mp_units::detail { diff --git a/src/core/include/mp-units/bits/external/hacks.h b/src/core/include/mp-units/bits/hacks.h similarity index 100% rename from src/core/include/mp-units/bits/external/hacks.h rename to src/core/include/mp-units/bits/hacks.h diff --git a/src/core/include/mp-units/bits/external/math_concepts.h b/src/core/include/mp-units/bits/math_concepts.h similarity index 100% rename from src/core/include/mp-units/bits/external/math_concepts.h rename to src/core/include/mp-units/bits/math_concepts.h diff --git a/src/core/include/mp-units/bits/ratio.h b/src/core/include/mp-units/bits/ratio.h index 8ca88b58..872a82ce 100644 --- a/src/core/include/mp-units/bits/ratio.h +++ b/src/core/include/mp-units/bits/ratio.h @@ -22,12 +22,12 @@ #pragma once -#include +#include #include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include -#include +#include // IWYU pragma: export #include #include #endif diff --git a/src/core/include/mp-units/bits/sudo_cast.h b/src/core/include/mp-units/bits/sudo_cast.h index 65efb882..65e4ea2a 100644 --- a/src/core/include/mp-units/bits/sudo_cast.h +++ b/src/core/include/mp-units/bits/sudo_cast.h @@ -22,11 +22,11 @@ #pragma once -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace mp_units::detail { diff --git a/src/core/include/mp-units/bits/text_tools.h b/src/core/include/mp-units/bits/text_tools.h index 35ab0c4c..a2691b74 100644 --- a/src/core/include/mp-units/bits/text_tools.h +++ b/src/core/include/mp-units/bits/text_tools.h @@ -22,18 +22,16 @@ #pragma once -#include -#include #include -#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include #endif -namespace mp_units { - -namespace detail { +namespace mp_units::detail { template requires(0 <= Value) && (Value < 10) @@ -92,16 +90,6 @@ template return regular() + regular(); } -} // namespace detail - -MP_UNITS_EXPORT enum class text_encoding : std::int8_t { - unicode, // µs; m³; L²MT⁻³ - ascii, // us; m^3; L^2MT^-3 - default_encoding = unicode -}; - -namespace detail { - template Out> constexpr Out copy(const symbol_text& txt, text_encoding encoding, Out out) { @@ -159,6 +147,4 @@ constexpr Out copy_symbol_exponent(text_encoding encoding, bool negative_power, } } -} // namespace detail - -} // namespace mp_units +} // namespace mp_units::detail diff --git a/src/core/include/mp-units/bits/external/type_list.h b/src/core/include/mp-units/bits/type_list.h similarity index 99% rename from src/core/include/mp-units/bits/external/type_list.h rename to src/core/include/mp-units/bits/type_list.h index 90fec0b6..0f27c413 100644 --- a/src/core/include/mp-units/bits/external/type_list.h +++ b/src/core/include/mp-units/bits/type_list.h @@ -22,7 +22,7 @@ #pragma once -#include // IWYU pragma: keep +#include // IWYU pragma: keep #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/compat_macros.h b/src/core/include/mp-units/compat_macros.h index 0c3c9876..b9897338 100644 --- a/src/core/include/mp-units/compat_macros.h +++ b/src/core/include/mp-units/compat_macros.h @@ -20,9 +20,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +// IWYU pragma: always_keep + #pragma once -#include +#include #ifdef MP_UNITS_API_NO_CRTP diff --git a/src/core/include/mp-units/concepts.h b/src/core/include/mp-units/concepts.h index 1cd93c78..ebd5dee9 100644 --- a/src/core/include/mp-units/concepts.h +++ b/src/core/include/mp-units/concepts.h @@ -22,10 +22,12 @@ #pragma once -#include -#include -#include -#include -#include -#include -#include +// IWYU pragma: begin_exports +#include +#include +#include +#include +#include +#include +#include +// IWYU pragma: end_exports diff --git a/src/core/include/mp-units/core.h b/src/core/include/mp-units/core.h index d2d49551..02be2641 100644 --- a/src/core/include/mp-units/core.h +++ b/src/core/include/mp-units/core.h @@ -22,18 +22,12 @@ #pragma once -#include +// IWYU pragma: begin_exports #include #include -#include -#include #include +#include #include #include -#include -#include -#include #include -#include -#include -#include +// IWYU pragma: end_exports diff --git a/src/core/include/mp-units/bits/external/algorithm.h b/src/core/include/mp-units/ext/algorithm.h similarity index 99% rename from src/core/include/mp-units/bits/external/algorithm.h rename to src/core/include/mp-units/ext/algorithm.h index 4464efef..4161cbb9 100644 --- a/src/core/include/mp-units/bits/external/algorithm.h +++ b/src/core/include/mp-units/ext/algorithm.h @@ -22,7 +22,7 @@ #pragma once -#include // IWYU pragma: keep +#include // IWYU pragma: keep #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/external/fixed_string.h b/src/core/include/mp-units/ext/fixed_string.h similarity index 98% rename from src/core/include/mp-units/bits/external/fixed_string.h rename to src/core/include/mp-units/ext/fixed_string.h index 402140c1..7387fff5 100644 --- a/src/core/include/mp-units/bits/external/fixed_string.h +++ b/src/core/include/mp-units/ext/fixed_string.h @@ -23,13 +23,13 @@ #pragma once // TODO use when moved to C++20 modules (parsing takes too long for each translation unit) -#include #include #include // IWYU pragma: keep +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include -#include +#include // IWYU pragma: export #include #include #include diff --git a/src/core/include/mp-units/bits/external/prime.h b/src/core/include/mp-units/ext/prime.h similarity index 99% rename from src/core/include/mp-units/bits/external/prime.h rename to src/core/include/mp-units/ext/prime.h index 06d03dde..9e0baa08 100644 --- a/src/core/include/mp-units/bits/external/prime.h +++ b/src/core/include/mp-units/ext/prime.h @@ -22,7 +22,7 @@ #pragma once -#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/external/type_name.h b/src/core/include/mp-units/ext/type_name.h similarity index 100% rename from src/core/include/mp-units/bits/external/type_name.h rename to src/core/include/mp-units/ext/type_name.h diff --git a/src/core/include/mp-units/bits/external/type_traits.h b/src/core/include/mp-units/ext/type_traits.h similarity index 99% rename from src/core/include/mp-units/bits/external/type_traits.h rename to src/core/include/mp-units/ext/type_traits.h index 3322a790..244ae160 100644 --- a/src/core/include/mp-units/bits/external/type_traits.h +++ b/src/core/include/mp-units/ext/type_traits.h @@ -22,7 +22,7 @@ #pragma once -#include +#include #include #ifndef MP_UNITS_IN_MODULE_INTERFACE diff --git a/src/core/include/mp-units/format.h b/src/core/include/mp-units/format.h index f3ff7e50..44cda221 100644 --- a/src/core/include/mp-units/format.h +++ b/src/core/include/mp-units/format.h @@ -20,14 +20,16 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +// IWYU pragma: always_keep + #pragma once -#include #include #include -#include -#include -#include +#include +#include +#include +#include namespace mp_units::detail { diff --git a/src/core/include/mp-units/framework.h b/src/core/include/mp-units/framework.h new file mode 100644 index 00000000..7a61d351 --- /dev/null +++ b/src/core/include/mp-units/framework.h @@ -0,0 +1,46 @@ +// The MIT License (MIT) +// +// Copyright (c) 2018 Mateusz Pusz +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. + +#pragma once + +// IWYU pragma: begin_exports +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +// IWYU pragma: end_exports diff --git a/src/core/include/mp-units/compare.h b/src/core/include/mp-units/framework/compare.h similarity index 97% rename from src/core/include/mp-units/compare.h rename to src/core/include/mp-units/framework/compare.h index e2fb0deb..718e9c55 100644 --- a/src/core/include/mp-units/compare.h +++ b/src/core/include/mp-units/framework/compare.h @@ -22,6 +22,7 @@ #pragma once +// IWYU pragma: private, include #include #ifndef MP_UNITS_IN_MODULE_INTERFACE diff --git a/src/core/include/mp-units/customization_points.h b/src/core/include/mp-units/framework/customization_points.h similarity index 98% rename from src/core/include/mp-units/customization_points.h rename to src/core/include/mp-units/framework/customization_points.h index 99578ea4..4e19ae27 100644 --- a/src/core/include/mp-units/customization_points.h +++ b/src/core/include/mp-units/framework/customization_points.h @@ -22,8 +22,9 @@ #pragma once -#include +// IWYU pragma: private, include #include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/dimension.h b/src/core/include/mp-units/framework/dimension.h similarity index 97% rename from src/core/include/mp-units/dimension.h rename to src/core/include/mp-units/framework/dimension.h index ae5d233d..55968c4a 100644 --- a/src/core/include/mp-units/dimension.h +++ b/src/core/include/mp-units/framework/dimension.h @@ -22,13 +22,15 @@ #pragma once -#include -#include -#include -#include +// IWYU pragma: private, include +#include #include -#include #include +#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/dimension_concepts.h b/src/core/include/mp-units/framework/dimension_concepts.h similarity index 95% rename from src/core/include/mp-units/bits/dimension_concepts.h rename to src/core/include/mp-units/framework/dimension_concepts.h index b458ae5f..9826e1b0 100644 --- a/src/core/include/mp-units/bits/dimension_concepts.h +++ b/src/core/include/mp-units/framework/dimension_concepts.h @@ -22,10 +22,11 @@ #pragma once -#include -#include +// IWYU pragma: private, include #include -#include +#include +#include +#include namespace mp_units { diff --git a/src/core/include/mp-units/bits/expression_template.h b/src/core/include/mp-units/framework/expression_template.h similarity index 99% rename from src/core/include/mp-units/bits/expression_template.h rename to src/core/include/mp-units/framework/expression_template.h index 5ee18b62..c0eddbda 100644 --- a/src/core/include/mp-units/bits/expression_template.h +++ b/src/core/include/mp-units/framework/expression_template.h @@ -22,10 +22,10 @@ #pragma once -#include -#include -#include +#include #include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/magnitude.h b/src/core/include/mp-units/framework/magnitude.h similarity index 98% rename from src/core/include/mp-units/bits/magnitude.h rename to src/core/include/mp-units/framework/magnitude.h index 9a3f1cb1..29be6d88 100644 --- a/src/core/include/mp-units/bits/magnitude.h +++ b/src/core/include/mp-units/framework/magnitude.h @@ -22,17 +22,18 @@ #pragma once -#include -#include -#include -#include -#include -#include +// IWYU pragma: private, include +#include +#include #include #include -#include #include -#include +#include +#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/quantity.h b/src/core/include/mp-units/framework/quantity.h similarity index 97% rename from src/core/include/mp-units/quantity.h rename to src/core/include/mp-units/framework/quantity.h index 176cccc4..e759a86f 100644 --- a/src/core/include/mp-units/quantity.h +++ b/src/core/include/mp-units/framework/quantity.h @@ -23,27 +23,24 @@ #pragma once -#include +// IWYU pragma: private, include #include -#include -#include -#include -#include #include -#include -#include -#include +#include +#include +#include +#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include -#include +#include // IWYU pragma: export #include #endif -// the below is not used in this header but should be exposed with it -#include -#include - namespace mp_units { namespace detail { diff --git a/src/core/include/mp-units/bits/quantity_cast.h b/src/core/include/mp-units/framework/quantity_cast.h similarity index 93% rename from src/core/include/mp-units/bits/quantity_cast.h rename to src/core/include/mp-units/framework/quantity_cast.h index 0f1c30af..64d0154b 100644 --- a/src/core/include/mp-units/bits/quantity_cast.h +++ b/src/core/include/mp-units/framework/quantity_cast.h @@ -22,10 +22,11 @@ #pragma once +// IWYU pragma: private, include #include -#include -#include -#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/quantity_concepts.h b/src/core/include/mp-units/framework/quantity_concepts.h similarity index 92% rename from src/core/include/mp-units/bits/quantity_concepts.h rename to src/core/include/mp-units/framework/quantity_concepts.h index 4b7e9aef..6886b8a9 100644 --- a/src/core/include/mp-units/bits/quantity_concepts.h +++ b/src/core/include/mp-units/framework/quantity_concepts.h @@ -22,11 +22,12 @@ #pragma once +// IWYU pragma: private, include #include -#include -#include -#include -#include +#include +#include +#include +#include namespace mp_units { diff --git a/src/core/include/mp-units/quantity_point.h b/src/core/include/mp-units/framework/quantity_point.h similarity index 98% rename from src/core/include/mp-units/quantity_point.h rename to src/core/include/mp-units/framework/quantity_point.h index 19cb1d43..5b6699e3 100644 --- a/src/core/include/mp-units/quantity_point.h +++ b/src/core/include/mp-units/framework/quantity_point.h @@ -22,14 +22,15 @@ #pragma once +// IWYU pragma: private, include #include -#include -#include -#include -#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include // IWYU pragma: export #endif namespace mp_units { diff --git a/src/core/include/mp-units/bits/quantity_point_concepts.h b/src/core/include/mp-units/framework/quantity_point_concepts.h similarity index 95% rename from src/core/include/mp-units/bits/quantity_point_concepts.h rename to src/core/include/mp-units/framework/quantity_point_concepts.h index 0a2cc8fc..ee5ca8eb 100644 --- a/src/core/include/mp-units/bits/quantity_point_concepts.h +++ b/src/core/include/mp-units/framework/quantity_point_concepts.h @@ -22,12 +22,13 @@ #pragma once +// IWYU pragma: private, include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include namespace mp_units { diff --git a/src/core/include/mp-units/quantity_spec.h b/src/core/include/mp-units/framework/quantity_spec.h similarity index 99% rename from src/core/include/mp-units/quantity_spec.h rename to src/core/include/mp-units/framework/quantity_spec.h index 5d091b41..bbd4941c 100644 --- a/src/core/include/mp-units/quantity_spec.h +++ b/src/core/include/mp-units/framework/quantity_spec.h @@ -22,19 +22,20 @@ #pragma once -#include -#include -#include -#include -#include +// IWYU pragma: private, include #include +#include #include -#include -#include -#include -#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/quantity_spec_concepts.h b/src/core/include/mp-units/framework/quantity_spec_concepts.h similarity index 96% rename from src/core/include/mp-units/bits/quantity_spec_concepts.h rename to src/core/include/mp-units/framework/quantity_spec_concepts.h index d04e8bd7..920e9cf5 100644 --- a/src/core/include/mp-units/bits/quantity_spec_concepts.h +++ b/src/core/include/mp-units/framework/quantity_spec_concepts.h @@ -22,10 +22,11 @@ #pragma once -#include -#include -#include +// IWYU pragma: private, include +#include #include +#include +#include namespace mp_units { diff --git a/src/core/include/mp-units/reference.h b/src/core/include/mp-units/framework/reference.h similarity index 97% rename from src/core/include/mp-units/reference.h rename to src/core/include/mp-units/framework/reference.h index 7b37c4e9..b7636810 100644 --- a/src/core/include/mp-units/reference.h +++ b/src/core/include/mp-units/framework/reference.h @@ -22,11 +22,12 @@ #pragma once +// IWYU pragma: private, include #include #include -#include -#include -#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/reference_concepts.h b/src/core/include/mp-units/framework/reference_concepts.h similarity index 94% rename from src/core/include/mp-units/bits/reference_concepts.h rename to src/core/include/mp-units/framework/reference_concepts.h index 639fcbca..6ac2187b 100644 --- a/src/core/include/mp-units/bits/reference_concepts.h +++ b/src/core/include/mp-units/framework/reference_concepts.h @@ -22,9 +22,10 @@ #pragma once +// IWYU pragma: private, include #include -#include -#include +#include +#include namespace mp_units { diff --git a/src/core/include/mp-units/bits/representation_concepts.h b/src/core/include/mp-units/framework/representation_concepts.h similarity index 97% rename from src/core/include/mp-units/bits/representation_concepts.h rename to src/core/include/mp-units/framework/representation_concepts.h index 9f9bfa52..3528eea4 100644 --- a/src/core/include/mp-units/bits/representation_concepts.h +++ b/src/core/include/mp-units/framework/representation_concepts.h @@ -22,8 +22,9 @@ #pragma once +// IWYU pragma: private, include #include -#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/symbol_text.h b/src/core/include/mp-units/framework/symbol_text.h similarity index 93% rename from src/core/include/mp-units/bits/symbol_text.h rename to src/core/include/mp-units/framework/symbol_text.h index e28d4cde..b70b3d2f 100644 --- a/src/core/include/mp-units/bits/symbol_text.h +++ b/src/core/include/mp-units/framework/symbol_text.h @@ -22,15 +22,16 @@ #pragma once -// IWYU pragma: begin_exports -#include -#include +// IWYU pragma: private, include +#include #include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include -#include +#include // IWYU pragma: export #include +#include #endif #if __cpp_lib_text_encoding @@ -42,6 +43,12 @@ static_assert(std::text_encoding::literal().mib() == std::text_encoding::id::UTF namespace mp_units { +MP_UNITS_EXPORT enum class text_encoding : std::int8_t { + unicode, // µs; m³; L²MT⁻³ + ascii, // us; m^3; L^2MT^-3 + default_encoding = unicode +}; + namespace detail { constexpr bool is_basic_literal_character_set_char(char ch) diff --git a/src/core/include/mp-units/system_reference.h b/src/core/include/mp-units/framework/system_reference.h similarity index 93% rename from src/core/include/mp-units/system_reference.h rename to src/core/include/mp-units/framework/system_reference.h index 7bf30383..39f16bcf 100644 --- a/src/core/include/mp-units/system_reference.h +++ b/src/core/include/mp-units/framework/system_reference.h @@ -22,11 +22,12 @@ #pragma once -#include +// IWYU pragma: private, include +#include #include -#include -#include -#include +#include +#include +#include MP_UNITS_EXPORT namespace mp_units { diff --git a/src/core/include/mp-units/unit.h b/src/core/include/mp-units/framework/unit.h similarity index 98% rename from src/core/include/mp-units/unit.h rename to src/core/include/mp-units/framework/unit.h index b703d9e1..16d89822 100644 --- a/src/core/include/mp-units/unit.h +++ b/src/core/include/mp-units/framework/unit.h @@ -22,21 +22,22 @@ #pragma once -#include -#include -#include -#include -#include -#include +// IWYU pragma: private, include #include -#include +#include #include -#include -#include #include -#include #include -#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/bits/unit_concepts.h b/src/core/include/mp-units/framework/unit_concepts.h similarity index 96% rename from src/core/include/mp-units/bits/unit_concepts.h rename to src/core/include/mp-units/framework/unit_concepts.h index 29331c7a..c536e0b4 100644 --- a/src/core/include/mp-units/bits/unit_concepts.h +++ b/src/core/include/mp-units/framework/unit_concepts.h @@ -22,11 +22,12 @@ #pragma once -#include -#include +// IWYU pragma: private, include #include -#include -#include +#include +#include +#include +#include namespace mp_units { diff --git a/src/core/include/mp-units/bits/value_cast.h b/src/core/include/mp-units/framework/value_cast.h similarity index 95% rename from src/core/include/mp-units/bits/value_cast.h rename to src/core/include/mp-units/framework/value_cast.h index 7b2c6ddd..eaedbd17 100644 --- a/src/core/include/mp-units/bits/value_cast.h +++ b/src/core/include/mp-units/framework/value_cast.h @@ -22,13 +22,14 @@ #pragma once +// IWYU pragma: private, include #include -#include -#include -#include #include -#include -#include +#include +#include +#include +#include +#include MP_UNITS_EXPORT namespace mp_units { diff --git a/src/core/include/mp-units/math.h b/src/core/include/mp-units/math.h index cbd6bc2b..90a6539a 100644 --- a/src/core/include/mp-units/math.h +++ b/src/core/include/mp-units/math.h @@ -23,10 +23,10 @@ #pragma once #include -#include -#include -#include -#include +#include +#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/ostream.h b/src/core/include/mp-units/ostream.h index 4b36b065..e03bb33c 100644 --- a/src/core/include/mp-units/ostream.h +++ b/src/core/include/mp-units/ostream.h @@ -24,8 +24,8 @@ #pragma once #include -#include -#include +#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/core/include/mp-units/random.h b/src/core/include/mp-units/random.h index b66cfb22..aa097e80 100644 --- a/src/core/include/mp-units/random.h +++ b/src/core/include/mp-units/random.h @@ -23,7 +23,7 @@ #pragma once #include -#include +#include #ifndef MP_UNITS_IN_MODULE_INTERFACE #include diff --git a/src/systems/include/mp-units/systems/angular/angular.h b/src/systems/include/mp-units/systems/angular/angular.h index e9461440..326ea227 100644 --- a/src/systems/include/mp-units/systems/angular/angular.h +++ b/src/systems/include/mp-units/systems/angular/angular.h @@ -22,5 +22,11 @@ #pragma once +// IWYU pragma: begin_exports #include #include + +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif +// IWYU pragma: end_exports diff --git a/src/systems/include/mp-units/systems/angular/math.h b/src/systems/include/mp-units/systems/angular/math.h index 63a2d8f3..00e03b7a 100644 --- a/src/systems/include/mp-units/systems/angular/math.h +++ b/src/systems/include/mp-units/systems/angular/math.h @@ -26,10 +26,10 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include -#include -#include +#include +#include +#include +#include #include #endif diff --git a/src/systems/include/mp-units/systems/angular/units.h b/src/systems/include/mp-units/systems/angular/units.h index 0ca22c77..f0de3ead 100644 --- a/src/systems/include/mp-units/systems/angular/units.h +++ b/src/systems/include/mp-units/systems/angular/units.h @@ -25,9 +25,9 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include -#include +#include +#include +#include #endif MP_UNITS_EXPORT diff --git a/src/systems/include/mp-units/systems/cgs/cgs.h b/src/systems/include/mp-units/systems/cgs/cgs.h index ed7d4ccc..f3e58e54 100644 --- a/src/systems/include/mp-units/systems/cgs/cgs.h +++ b/src/systems/include/mp-units/systems/cgs/cgs.h @@ -25,9 +25,11 @@ #include #include +// IWYU pragma: begin_exports #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::cgs { diff --git a/src/systems/include/mp-units/systems/hep/hep.h b/src/systems/include/mp-units/systems/hep/hep.h index a2dd17bf..bddb2822 100644 --- a/src/systems/include/mp-units/systems/hep/hep.h +++ b/src/systems/include/mp-units/systems/hep/hep.h @@ -24,11 +24,13 @@ #include #include - -#ifndef MP_UNITS_IN_MODULE_INTERFACE -#include #include + +// IWYU pragma: begin_exports +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units { diff --git a/src/systems/include/mp-units/systems/iau/iau.h b/src/systems/include/mp-units/systems/iau/iau.h index bc4c50aa..abbe963d 100644 --- a/src/systems/include/mp-units/systems/iau/iau.h +++ b/src/systems/include/mp-units/systems/iau/iau.h @@ -26,9 +26,11 @@ #include #include +// IWYU pragma: begin_exports #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::iau { diff --git a/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h b/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h index 65a2e498..bfcc9b4f 100644 --- a/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h +++ b/src/systems/include/mp-units/systems/iec80000/binary_prefixes.h @@ -25,7 +25,7 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif namespace mp_units::iec80000 { diff --git a/src/systems/include/mp-units/systems/iec80000/iec80000.h b/src/systems/include/mp-units/systems/iec80000/iec80000.h index 9fd164b7..0b19046b 100644 --- a/src/systems/include/mp-units/systems/iec80000/iec80000.h +++ b/src/systems/include/mp-units/systems/iec80000/iec80000.h @@ -27,4 +27,8 @@ #include #include #include + +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif // IWYU pragma: end_exports diff --git a/src/systems/include/mp-units/systems/iec80000/quantities.h b/src/systems/include/mp-units/systems/iec80000/quantities.h index 1a8e319f..04f1191f 100644 --- a/src/systems/include/mp-units/systems/iec80000/quantities.h +++ b/src/systems/include/mp-units/systems/iec80000/quantities.h @@ -27,8 +27,8 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include +#include +#include #endif MP_UNITS_EXPORT diff --git a/src/systems/include/mp-units/systems/iec80000/units.h b/src/systems/include/mp-units/systems/iec80000/units.h index c8ec5aeb..9dd80c38 100644 --- a/src/systems/include/mp-units/systems/iec80000/units.h +++ b/src/systems/include/mp-units/systems/iec80000/units.h @@ -27,7 +27,7 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif MP_UNITS_EXPORT diff --git a/src/systems/include/mp-units/systems/imperial/imperial.h b/src/systems/include/mp-units/systems/imperial/imperial.h index 0b21434e..56c232cb 100644 --- a/src/systems/include/mp-units/systems/imperial/imperial.h +++ b/src/systems/include/mp-units/systems/imperial/imperial.h @@ -23,11 +23,14 @@ #pragma once #include + +// IWYU pragma: begin_exports #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::imperial { diff --git a/src/systems/include/mp-units/systems/international/international.h b/src/systems/include/mp-units/systems/international/international.h index ba37696f..0b680ce3 100644 --- a/src/systems/include/mp-units/systems/international/international.h +++ b/src/systems/include/mp-units/systems/international/international.h @@ -26,9 +26,11 @@ #include #include +// IWYU pragma: begin_exports #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::international { diff --git a/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h b/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h index 7bc3ca10..f5d1afae 100644 --- a/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h +++ b/src/systems/include/mp-units/systems/isq/atomic_and_nuclear_physics.h @@ -23,11 +23,14 @@ #pragma once #include + +// IWYU pragma: begin_exports #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/base_quantities.h b/src/systems/include/mp-units/systems/isq/base_quantities.h index 89bc15eb..6ed87f7c 100644 --- a/src/systems/include/mp-units/systems/isq/base_quantities.h +++ b/src/systems/include/mp-units/systems/isq/base_quantities.h @@ -25,9 +25,9 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include -#include +#include +#include +#include #endif MP_UNITS_EXPORT diff --git a/src/systems/include/mp-units/systems/isq/electromagnetism.h b/src/systems/include/mp-units/systems/isq/electromagnetism.h index c4722ec5..bdb5bc8b 100644 --- a/src/systems/include/mp-units/systems/isq/electromagnetism.h +++ b/src/systems/include/mp-units/systems/isq/electromagnetism.h @@ -23,13 +23,16 @@ #pragma once #include -#include #include #include +// IWYU pragma: begin_exports +#include + #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/light_and_radiation.h b/src/systems/include/mp-units/systems/isq/light_and_radiation.h index b558a12b..bfca2dbf 100644 --- a/src/systems/include/mp-units/systems/isq/light_and_radiation.h +++ b/src/systems/include/mp-units/systems/isq/light_and_radiation.h @@ -23,13 +23,16 @@ #pragma once #include -#include #include #include +// IWYU pragma: begin_exports +#include + #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/mechanics.h b/src/systems/include/mp-units/systems/isq/mechanics.h index 95e90a98..41157143 100644 --- a/src/systems/include/mp-units/systems/isq/mechanics.h +++ b/src/systems/include/mp-units/systems/isq/mechanics.h @@ -23,12 +23,15 @@ #pragma once #include -#include #include +// IWYU pragma: begin_exports +#include + #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/si_quantities.h b/src/systems/include/mp-units/systems/isq/si_quantities.h index 3d42bd53..9486c3e3 100644 --- a/src/systems/include/mp-units/systems/isq/si_quantities.h +++ b/src/systems/include/mp-units/systems/isq/si_quantities.h @@ -23,11 +23,14 @@ #pragma once #include + +// IWYU pragma: begin_exports #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/space_and_time.h b/src/systems/include/mp-units/systems/isq/space_and_time.h index e72cb9eb..2157a299 100644 --- a/src/systems/include/mp-units/systems/isq/space_and_time.h +++ b/src/systems/include/mp-units/systems/isq/space_and_time.h @@ -23,11 +23,14 @@ #pragma once #include + +// IWYU pragma: begin_exports #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq/thermodynamics.h b/src/systems/include/mp-units/systems/isq/thermodynamics.h index 75743e31..aed8edf9 100644 --- a/src/systems/include/mp-units/systems/isq/thermodynamics.h +++ b/src/systems/include/mp-units/systems/isq/thermodynamics.h @@ -24,12 +24,15 @@ #include #include -#include #include +// IWYU pragma: begin_exports +#include + #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq { diff --git a/src/systems/include/mp-units/systems/isq_angle/isq_angle.h b/src/systems/include/mp-units/systems/isq_angle/isq_angle.h index 2b4db46c..221719e7 100644 --- a/src/systems/include/mp-units/systems/isq_angle/isq_angle.h +++ b/src/systems/include/mp-units/systems/isq_angle/isq_angle.h @@ -23,13 +23,16 @@ #pragma once #include + +// IWYU pragma: begin_exports #include #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include +#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::isq_angle { diff --git a/src/systems/include/mp-units/systems/natural/natural.h b/src/systems/include/mp-units/systems/natural/natural.h index 0b534cbf..b56ee725 100644 --- a/src/systems/include/mp-units/systems/natural/natural.h +++ b/src/systems/include/mp-units/systems/natural/natural.h @@ -27,10 +27,11 @@ #include #include +// IWYU pragma: begin_exports #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::natural { diff --git a/src/systems/include/mp-units/systems/si/chrono.h b/src/systems/include/mp-units/systems/si/chrono.h index 7e7c87e7..b8bcc589 100644 --- a/src/systems/include/mp-units/systems/si/chrono.h +++ b/src/systems/include/mp-units/systems/si/chrono.h @@ -28,8 +28,8 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include +#include +#include #include #endif diff --git a/src/systems/include/mp-units/systems/si/constants.h b/src/systems/include/mp-units/systems/si/constants.h index 87ad4012..6f4afef6 100644 --- a/src/systems/include/mp-units/systems/si/constants.h +++ b/src/systems/include/mp-units/systems/si/constants.h @@ -26,7 +26,7 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif MP_UNITS_EXPORT diff --git a/src/systems/include/mp-units/systems/si/math.h b/src/systems/include/mp-units/systems/si/math.h index 371fb2f5..400a5a25 100644 --- a/src/systems/include/mp-units/systems/si/math.h +++ b/src/systems/include/mp-units/systems/si/math.h @@ -27,10 +27,10 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include -#include -#include +#include +#include +#include +#include #include #endif diff --git a/src/systems/include/mp-units/systems/si/prefixes.h b/src/systems/include/mp-units/systems/si/prefixes.h index 69077888..da2fb5b7 100644 --- a/src/systems/include/mp-units/systems/si/prefixes.h +++ b/src/systems/include/mp-units/systems/si/prefixes.h @@ -25,7 +25,7 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif namespace mp_units::si { diff --git a/src/systems/include/mp-units/systems/si/si.h b/src/systems/include/mp-units/systems/si/si.h index b2668de5..b9b374d7 100644 --- a/src/systems/include/mp-units/systems/si/si.h +++ b/src/systems/include/mp-units/systems/si/si.h @@ -22,9 +22,15 @@ #pragma once +// IWYU pragma: begin_exports #include #include #include #include #include #include + +#ifndef MP_UNITS_IN_MODULE_INTERFACE +#include +#endif +// IWYU pragma: end_exports diff --git a/src/systems/include/mp-units/systems/si/units.h b/src/systems/include/mp-units/systems/si/units.h index 360028e0..36d7772f 100644 --- a/src/systems/include/mp-units/systems/si/units.h +++ b/src/systems/include/mp-units/systems/si/units.h @@ -27,8 +27,8 @@ #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include -#include +#include +#include #endif MP_UNITS_EXPORT diff --git a/src/systems/include/mp-units/systems/typographic/typographic.h b/src/systems/include/mp-units/systems/typographic/typographic.h index 82186177..8f2b8563 100644 --- a/src/systems/include/mp-units/systems/typographic/typographic.h +++ b/src/systems/include/mp-units/systems/typographic/typographic.h @@ -25,9 +25,11 @@ #include #include +// IWYU pragma: begin_exports #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::typographic { diff --git a/src/systems/include/mp-units/systems/usc/usc.h b/src/systems/include/mp-units/systems/usc/usc.h index 7a1971fd..d8da48f2 100644 --- a/src/systems/include/mp-units/systems/usc/usc.h +++ b/src/systems/include/mp-units/systems/usc/usc.h @@ -23,11 +23,14 @@ #pragma once #include + +// IWYU pragma: begin_exports #include #ifndef MP_UNITS_IN_MODULE_INTERFACE -#include +#include #endif +// IWYU pragma: end_exports MP_UNITS_EXPORT namespace mp_units::usc { diff --git a/test/runtime/almost_equals.h b/test/runtime/almost_equals.h index 471f2b79..9a6f3bfd 100644 --- a/test/runtime/almost_equals.h +++ b/test/runtime/almost_equals.h @@ -27,7 +27,7 @@ import mp_units; #else #include -#include +#include #endif namespace mp_units { diff --git a/test/runtime/atomic_test.cpp b/test/runtime/atomic_test.cpp index ba382edf..182e55a4 100644 --- a/test/runtime/atomic_test.cpp +++ b/test/runtime/atomic_test.cpp @@ -20,11 +20,15 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include -#include -#include +#include #include +#ifdef MP_UNITS_MODULES +import mp_units; +#else +#include // IWYU pragma: keep +#include +#include +#endif using namespace mp_units; using namespace mp_units::si::unit_symbols; diff --git a/test/runtime/distribution_test.cpp b/test/runtime/distribution_test.cpp index d3786989..faa84271 100644 --- a/test/runtime/distribution_test.cpp +++ b/test/runtime/distribution_test.cpp @@ -22,16 +22,18 @@ #include #include +#include +#include #include #include #include #ifdef MP_UNITS_MODULES import mp_units; #else -#include +#include // IWYU pragma: keep #include -#include -#include +#include +#include #endif diff --git a/test/runtime/fmt_test.cpp b/test/runtime/fmt_test.cpp index d1a27028..54c9221d 100644 --- a/test/runtime/fmt_test.cpp +++ b/test/runtime/fmt_test.cpp @@ -30,9 +30,9 @@ #ifdef MP_UNITS_MODULES import mp_units; #else -#include #include -#include +#include +#include // IWYU pragma: keep #include #include #include diff --git a/test/runtime/linear_algebra_test.cpp b/test/runtime/linear_algebra_test.cpp index 5779fbb9..bbf584db 100644 --- a/test/runtime/linear_algebra_test.cpp +++ b/test/runtime/linear_algebra_test.cpp @@ -22,15 +22,14 @@ #include #include -#include #include +#include #ifdef MP_UNITS_MODULES import mp_units; #else -#include #include #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/test/runtime/math_test.cpp b/test/runtime/math_test.cpp index 7eab3fb1..578058e3 100644 --- a/test/runtime/math_test.cpp +++ b/test/runtime/math_test.cpp @@ -21,13 +21,14 @@ // SOFTWARE. #include "almost_equals.h" -#include +#include +#include #include #ifdef MP_UNITS_MODULES import mp_units; #else #include -#include +#include // IWYU pragma: keep #include #include #include diff --git a/test/static/cgs_test.cpp b/test/static/cgs_test.cpp index c58c5885..bcd927af 100644 --- a/test/static/cgs_test.cpp +++ b/test/static/cgs_test.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include template requires mp_units::is_scalar diff --git a/test/static/chrono_test.cpp b/test/static/chrono_test.cpp index ba881fa1..12319ea2 100644 --- a/test/static/chrono_test.cpp +++ b/test/static/chrono_test.cpp @@ -21,9 +21,12 @@ // SOFTWARE. #include "test_tools.h" -#include -#include +#include +#include // IWYU pragma: keep +#include #include +#include +#include #include namespace { diff --git a/test/static/compare_test.cpp b/test/static/compare_test.cpp index 5de812d9..422dd569 100644 --- a/test/static/compare_test.cpp +++ b/test/static/compare_test.cpp @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include // IWYU pragma: keep #include namespace { diff --git a/test/static/concepts_test.cpp b/test/static/concepts_test.cpp index e97a1df7..38d598f3 100644 --- a/test/static/concepts_test.cpp +++ b/test/static/concepts_test.cpp @@ -20,8 +20,6 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include #include #include #include @@ -29,6 +27,7 @@ #include #include #include +#include template inline constexpr bool mp_units::is_scalar> = true; diff --git a/test/static/custom_rep_test_min_impl.cpp b/test/static/custom_rep_test_min_impl.cpp index ef3ba8db..75e63330 100644 --- a/test/static/custom_rep_test_min_impl.cpp +++ b/test/static/custom_rep_test_min_impl.cpp @@ -20,7 +20,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include +#include +#include #include #include #include diff --git a/test/static/dimension_symbol_test.cpp b/test/static/dimension_symbol_test.cpp index 048ac692..f1ce708e 100644 --- a/test/static/dimension_symbol_test.cpp +++ b/test/static/dimension_symbol_test.cpp @@ -20,7 +20,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. +#include #include +#include namespace { diff --git a/test/static/dimension_test.cpp b/test/static/dimension_test.cpp index 808620d7..33f80262 100644 --- a/test/static/dimension_test.cpp +++ b/test/static/dimension_test.cpp @@ -21,11 +21,9 @@ // SOFTWARE. #include "test_tools.h" -#include -#include -#include -#include -#include +#include +#include +#include namespace { diff --git a/test/static/fixed_string_test.cpp b/test/static/fixed_string_test.cpp index 97f1c15f..93890a98 100644 --- a/test/static/fixed_string_test.cpp +++ b/test/static/fixed_string_test.cpp @@ -20,7 +20,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include +#include using namespace mp_units; diff --git a/test/static/fractional_exponent_quantity.cpp b/test/static/fractional_exponent_quantity.cpp index ce82795d..aca6f206 100644 --- a/test/static/fractional_exponent_quantity.cpp +++ b/test/static/fractional_exponent_quantity.cpp @@ -21,8 +21,10 @@ // SOFTWARE. #include +#include #include #include +#include #include namespace { diff --git a/test/static/hep_test.cpp b/test/static/hep_test.cpp index 93a95321..82e2a07d 100644 --- a/test/static/hep_test.cpp +++ b/test/static/hep_test.cpp @@ -22,7 +22,6 @@ #include #include -#include #include template diff --git a/test/static/iau_test.cpp b/test/static/iau_test.cpp index d05fc28e..ca298e98 100644 --- a/test/static/iau_test.cpp +++ b/test/static/iau_test.cpp @@ -20,7 +20,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include // IWYU pragma: keep #include #include #include diff --git a/test/static/iec80000_test.cpp b/test/static/iec80000_test.cpp index 2718758f..2b3b3828 100644 --- a/test/static/iec80000_test.cpp +++ b/test/static/iec80000_test.cpp @@ -20,10 +20,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include #include -#include +#include +#include /* ************** DERIVED DIMENSIONS THAT INCLUDE UNITS WITH SPECIAL NAMES **************** */ diff --git a/test/static/imperial_test.cpp b/test/static/imperial_test.cpp index 7b3b3a74..8809ca19 100644 --- a/test/static/imperial_test.cpp +++ b/test/static/imperial_test.cpp @@ -22,7 +22,6 @@ #include #include -#include namespace { diff --git a/test/static/isq_angle_test.cpp b/test/static/isq_angle_test.cpp index ef597076..09d0b9ee 100644 --- a/test/static/isq_angle_test.cpp +++ b/test/static/isq_angle_test.cpp @@ -21,7 +21,7 @@ // SOFTWARE. #include -#include +#include namespace { diff --git a/test/static/isq_test.cpp b/test/static/isq_test.cpp index 41cd4ec5..1cba2803 100644 --- a/test/static/isq_test.cpp +++ b/test/static/isq_test.cpp @@ -20,9 +20,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include #include -#include +#include namespace { diff --git a/test/static/math_test.cpp b/test/static/math_test.cpp index 68c87848..d27c4c02 100644 --- a/test/static/math_test.cpp +++ b/test/static/math_test.cpp @@ -22,9 +22,7 @@ #include // IWYU pragma: keep #include -#include -#include -#include +#include namespace { diff --git a/test/static/natural_test.cpp b/test/static/natural_test.cpp index 7880642b..06a2b597 100644 --- a/test/static/natural_test.cpp +++ b/test/static/natural_test.cpp @@ -21,6 +21,8 @@ // SOFTWARE. #include +#include +#include #include template diff --git a/test/static/prime_test.cpp b/test/static/prime_test.cpp index 0fd724bd..21a7b571 100644 --- a/test/static/prime_test.cpp +++ b/test/static/prime_test.cpp @@ -20,8 +20,9 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include +#include +#include +#include #include using namespace mp_units::detail; diff --git a/test/static/quantity_point_test.cpp b/test/static/quantity_point_test.cpp index f9d4e314..01e3a271 100644 --- a/test/static/quantity_point_test.cpp +++ b/test/static/quantity_point_test.cpp @@ -21,10 +21,13 @@ // SOFTWARE. #include "test_tools.h" -#include +#include +#include #include #include #include +#include +#include #include #include #include diff --git a/test/static/quantity_spec_test.cpp b/test/static/quantity_spec_test.cpp index 46c233fa..49a2d87a 100644 --- a/test/static/quantity_spec_test.cpp +++ b/test/static/quantity_spec_test.cpp @@ -21,10 +21,9 @@ // SOFTWARE. #include "test_tools.h" -#include -#include -#include -#include +#include +#include +#include namespace { diff --git a/test/static/quantity_test.cpp b/test/static/quantity_test.cpp index 5635622b..5dfacbb2 100644 --- a/test/static/quantity_test.cpp +++ b/test/static/quantity_test.cpp @@ -21,12 +21,17 @@ // SOFTWARE. #include "test_tools.h" -#include +#include +#include +#include #include #include #include +#include +#include #include #include +#include #include template<> diff --git a/test/static/reference_test.cpp b/test/static/reference_test.cpp index a1045ce3..4c4803a7 100644 --- a/test/static/reference_test.cpp +++ b/test/static/reference_test.cpp @@ -21,13 +21,10 @@ // SOFTWARE. #include "test_tools.h" -#include -#include -#include -#include -#include +#include #include -#include +#include +#include namespace { diff --git a/test/static/symbol_text_test.cpp b/test/static/symbol_text_test.cpp index f11d0789..10de7f92 100644 --- a/test/static/symbol_text_test.cpp +++ b/test/static/symbol_text_test.cpp @@ -20,7 +20,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include +#include using namespace mp_units; diff --git a/test/static/test_tools.h b/test/static/test_tools.h index 2c9bf801..73f79613 100644 --- a/test/static/test_tools.h +++ b/test/static/test_tools.h @@ -22,8 +22,8 @@ #pragma once -#include -#include +#include +#include #include template diff --git a/test/static/type_list_test.cpp b/test/static/type_list_test.cpp index 1c994f35..6733a231 100644 --- a/test/static/type_list_test.cpp +++ b/test/static/type_list_test.cpp @@ -20,8 +20,8 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include -#include +#include +#include #include namespace { diff --git a/test/static/unit_symbol_test.cpp b/test/static/unit_symbol_test.cpp index fcbebbdb..cec62112 100644 --- a/test/static/unit_symbol_test.cpp +++ b/test/static/unit_symbol_test.cpp @@ -23,6 +23,7 @@ #include #include #include +#include namespace { diff --git a/test/static/unit_test.cpp b/test/static/unit_test.cpp index 590a147f..2d4a6092 100644 --- a/test/static/unit_test.cpp +++ b/test/static/unit_test.cpp @@ -21,11 +21,10 @@ // SOFTWARE. #include "test_tools.h" -#include -#include -#include +#include +#include #include -#include +#include namespace { @@ -336,11 +335,11 @@ static_assert(is_of_type>); -static_assert(std::is_same_v); -static_assert(std::is_same_v); -static_assert(std::is_same_v); -static_assert(std::is_same_v); -static_assert(std::is_same_v); +static_assert(is_same_v); +static_assert(is_same_v); +static_assert(is_same_v); +static_assert(is_same_v); +static_assert(is_same_v); // derived unit normalization diff --git a/test/static/usc_test.cpp b/test/static/usc_test.cpp index 45248d24..3f05ec49 100644 --- a/test/static/usc_test.cpp +++ b/test/static/usc_test.cpp @@ -20,10 +20,11 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. -#include +#include #include #include -#include +#include +#include #include namespace {