build: Added an option to disable UDLs support

Now it is time to get rid of UDLs from tests and examples and then disable them by default.
This commit is contained in:
Mateusz Pusz
2021-04-01 09:36:55 +02:00
parent 309da80c32
commit 9054420d08
94 changed files with 371 additions and 13 deletions

View File

@@ -41,10 +41,12 @@ class UnitsConan(ConanFile):
"gsl-lite/0.37.0" "gsl-lite/0.37.0"
) )
options = { options = {
"udls": [True, False],
"downcast_mode": ["off", "on", "auto"], "downcast_mode": ["off", "on", "auto"],
"build_docs": [True, False] "build_docs": [True, False]
} }
default_options = { default_options = {
"udls": True,
"downcast_mode": "on", "downcast_mode": "on",
"build_docs": True "build_docs": True
} }
@@ -116,6 +118,7 @@ class UnitsConan(ConanFile):
def generate(self): def generate(self):
tc = CMakeToolchain(self) tc = CMakeToolchain(self)
tc.variables["UNITS_UDLS"] = self.options.udls
tc.variables["UNITS_DOWNCAST_MODE"] = str(self.options.downcast_mode).upper() tc.variables["UNITS_DOWNCAST_MODE"] = str(self.options.downcast_mode).upper()
# if self._run_tests: # TODO Enable this when environment is supported in the Conan toolchain # if self._run_tests: # TODO Enable this when environment is supported in the Conan toolchain
tc.variables["UNITS_BUILD_DOCS"] = self.options.build_docs tc.variables["UNITS_BUILD_DOCS"] = self.options.build_docs

View File

@@ -123,6 +123,15 @@ It also runs unit tests during Conan build.
Conan Options Conan Options
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
udls
++++
**Values**: ``True``/``False``
**Defaulted to**: ``True``
Determines if library should provide User Defined Literals (UDLs) for quantities of various units.
downcast_mode downcast_mode
+++++++++++++ +++++++++++++
@@ -149,6 +158,16 @@ Additionally, enables project documentation generation when the project is being
CMake Options CMake Options
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
UNITS_UDLS
+++++++++++++++++++
**Values**: ``ON``/``OFF``
**Defaulted to**: ``ON``
Equivalent to `udls`_.
UNITS_DOWNCAST_MODE UNITS_DOWNCAST_MODE
+++++++++++++++++++ +++++++++++++++++++

View File

@@ -27,15 +27,20 @@ project(mp-units
) )
option(UNITS_AS_SYSTEM_HEADERS "Exports library as system headers" OFF) option(UNITS_AS_SYSTEM_HEADERS "Exports library as system headers" OFF)
if(UNITS_AS_SYSTEM_HEADERS) option(UNITS_UDLS "Enables definitions of User Defined Literals (UDLs) provided for quantities of various units" ON)
set(units_as_system SYSTEM)
endif() message(STATUS "UNITS_AS_SYSTEM_HEADERS: ${UNITS_AS_SYSTEM_HEADERS}")
message(STATUS "UNITS_UDLS: ${UNITS_UDLS}")
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(AddUnitsModule) include(AddUnitsModule)
include(GNUInstallDirs) include(GNUInstallDirs)
if(UNITS_AS_SYSTEM_HEADERS)
set(units_as_system SYSTEM)
endif()
add_subdirectory(core) add_subdirectory(core)
add_subdirectory(core-fmt) add_subdirectory(core-fmt)
add_subdirectory(core-io) add_subdirectory(core-io)

View File

@@ -38,3 +38,14 @@ function(add_units_module name)
install(TARGETS mp-units-${name} EXPORT mp-unitsTargets) install(TARGETS mp-units-${name} EXPORT mp-unitsTargets)
install(DIRECTORY include/units TYPE INCLUDE) install(DIRECTORY include/units TYPE INCLUDE)
endfunction() endfunction()
#
# add_units_systems(ModuleName <depependencies>...)
#
function(add_units_system name)
add_units_module(${name} ${ARGN})
if(UNITS_UDLS)
target_compile_definitions(mp-units-${name} INTERFACE UNITS_UDLS=1)
endif()
endfunction()

View File

@@ -55,6 +55,10 @@ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
) )
endif() endif()
if(UNITS_UDLS)
target_compile_definitions(mp-units-core INTERFACE UNITS_UDLS=1)
endif()
if(DEFINED UNITS_DOWNCAST_MODE) if(DEFINED UNITS_DOWNCAST_MODE)
set(downcast_mode_options OFF ON AUTO) set(downcast_mode_options OFF ON AUTO)
list(FIND downcast_mode_options "${UNITS_DOWNCAST_MODE}" downcast_mode) list(FIND downcast_mode_options "${UNITS_DOWNCAST_MODE}" downcast_mode)

View File

@@ -43,6 +43,8 @@ concept Angle = QuantityOfT<T, dim_angle>;
template<UnitOf<dim_angle<>> U, Representation Rep = double> template<UnitOf<dim_angle<>> U, Representation Rep = double>
using angle = quantity<dim_angle<>, U, Rep>; using angle = quantity<dim_angle<>, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// rad // rad
@@ -51,6 +53,8 @@ constexpr auto operator"" _q_rad(long double l) { return angle<radian, long doub
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto rad = reference<dim_angle<>, radian>{}; inline constexpr auto rad = reference<dim_angle<>, radian>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(isq-iec80000 mp-units::si) add_units_system(isq-iec80000 mp-units::si)

View File

@@ -50,6 +50,8 @@ using dim_modulation_rate = si::dim_frequency;
template<UnitOf<dim_modulation_rate> U, Representation Rep = double> template<UnitOf<dim_modulation_rate> U, Representation Rep = double>
using modulation_rate = quantity<dim_modulation_rate, U, Rep>; using modulation_rate = quantity<dim_modulation_rate, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
constexpr auto operator"" _q_Bd(unsigned long long l) { gsl_ExpectsAudit(std::in_range<std::int64_t>(l)); return modulation_rate<baud, std::int64_t>(static_cast<std::int64_t>(l)); } constexpr auto operator"" _q_Bd(unsigned long long l) { gsl_ExpectsAudit(std::in_range<std::int64_t>(l)); return modulation_rate<baud, std::int64_t>(static_cast<std::int64_t>(l)); }
@@ -64,6 +66,8 @@ constexpr auto operator"" _q_YBd(unsigned long long l) { gsl_ExpectsAudit(std::i
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Bd = reference<dim_modulation_rate, baud>{}; inline constexpr auto Bd = reference<dim_modulation_rate, baud>{};

View File

@@ -79,6 +79,8 @@ concept StorageCapacity = QuantityOf<T, dim_storage_capacity>;
template<UnitOf<dim_storage_capacity> U, Representation Rep = double> template<UnitOf<dim_storage_capacity> U, Representation Rep = double>
using storage_capacity = quantity<dim_storage_capacity, U, Rep>; using storage_capacity = quantity<dim_storage_capacity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// bits // bits
@@ -121,6 +123,8 @@ constexpr auto operator"" _q_PiB(unsigned long long l) { gsl_ExpectsAudit(std::i
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
// bits // bits

View File

@@ -43,12 +43,16 @@ concept TrafficIntensity = QuantityOf<T, dim_traffic_intensity>;
template<UnitOf<dim_traffic_intensity> U, Representation Rep = double> template<UnitOf<dim_traffic_intensity> U, Representation Rep = double>
using traffic_intensity = quantity<dim_traffic_intensity, U, Rep>; using traffic_intensity = quantity<dim_traffic_intensity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
constexpr auto operator"" _q_E(unsigned long long l) { gsl_ExpectsAudit(std::in_range<std::int64_t>(l)); return traffic_intensity<erlang, std::int64_t>(static_cast<std::int64_t>(l)); } constexpr auto operator"" _q_E(unsigned long long l) { gsl_ExpectsAudit(std::in_range<std::int64_t>(l)); return traffic_intensity<erlang, std::int64_t>(static_cast<std::int64_t>(l)); }
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto E = reference<dim_traffic_intensity, erlang>{}; inline constexpr auto E = reference<dim_traffic_intensity, erlang>{};

View File

@@ -52,6 +52,8 @@ concept TransferRate = QuantityOf<T, dim_transfer_rate>;
template<UnitOf<dim_transfer_rate> U, Representation Rep = double> template<UnitOf<dim_transfer_rate> U, Representation Rep = double>
using transfer_rate = quantity<dim_transfer_rate, U, Rep>; using transfer_rate = quantity<dim_transfer_rate, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
constexpr auto operator"" _q_B_per_s(unsigned long long l) { gsl_ExpectsAudit(std::in_range<std::int64_t>(l)); return transfer_rate<byte_per_second, std::int64_t>(static_cast<std::int64_t>(l)); } constexpr auto operator"" _q_B_per_s(unsigned long long l) { gsl_ExpectsAudit(std::in_range<std::int64_t>(l)); return transfer_rate<byte_per_second, std::int64_t>(static_cast<std::int64_t>(l)); }
@@ -66,4 +68,6 @@ constexpr auto operator"" _q_YB_per_s(unsigned long long l) { gsl_ExpectsAudit(s
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::iec80000 } // namespace units::isq::iec80000

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(isq-natural mp-units::isq) add_units_system(isq-natural mp-units::isq)

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-cgs mp-units::si) add_units_system(si-cgs mp-units::si)

View File

@@ -40,6 +40,8 @@ struct dim_acceleration : isq::dim_acceleration<dim_acceleration, gal, dim_lengt
template<UnitOf<dim_acceleration> U, Representation Rep = double> template<UnitOf<dim_acceleration> U, Representation Rep = double>
using acceleration = quantity<dim_acceleration, U, Rep>; using acceleration = quantity<dim_acceleration, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Gal // Gal
@@ -48,6 +50,8 @@ constexpr auto operator"" _q_Gal(long double l) { return acceleration<gal, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Gal = reference<dim_acceleration, gal>{}; inline constexpr auto Gal = reference<dim_acceleration, gal>{};

View File

@@ -42,6 +42,8 @@ struct dim_area : isq::dim_area<dim_area, square_centimetre, dim_length> {};
template<UnitOf<dim_area> U, Representation Rep = double> template<UnitOf<dim_area> U, Representation Rep = double>
using area = quantity<dim_area, U, Rep>; using area = quantity<dim_area, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// cm2 // cm2
@@ -50,6 +52,8 @@ constexpr auto operator"" _q_cm2(long double l) { return area<square_centimetre,
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto cm2 = reference<dim_area, square_centimetre>{}; inline constexpr auto cm2 = reference<dim_area, square_centimetre>{};

View File

@@ -42,6 +42,8 @@ struct dim_energy : isq::dim_energy<dim_energy, erg, dim_force, dim_length> {};
template<UnitOf<dim_energy> U, Representation Rep = double> template<UnitOf<dim_energy> U, Representation Rep = double>
using energy = quantity<dim_energy, U, Rep>; using energy = quantity<dim_energy, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// erg // erg
@@ -50,6 +52,8 @@ constexpr auto operator"" _q_erg(long double l) { return energy<erg, long double
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto erg = reference<dim_energy, cgs::erg>{}; inline constexpr auto erg = reference<dim_energy, cgs::erg>{};

View File

@@ -43,6 +43,8 @@ struct dim_force : isq::dim_force<dim_force, dyne, dim_mass, dim_acceleration> {
template<UnitOf<dim_force> U, Representation Rep = double> template<UnitOf<dim_force> U, Representation Rep = double>
using force = quantity<dim_force, U, Rep>; using force = quantity<dim_force, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// dyn // dyn
@@ -51,6 +53,8 @@ constexpr auto operator"" _q_dyn(long double l) { return force<dyne, long double
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto dyn = reference<dim_force, dyne>{}; inline constexpr auto dyn = reference<dim_force, dyne>{};

View File

@@ -41,6 +41,8 @@ struct dim_length : isq::dim_length<centimetre> {};
template<UnitOf<dim_length> U, Representation Rep = double> template<UnitOf<dim_length> U, Representation Rep = double>
using length = quantity<dim_length, U, Rep>; using length = quantity<dim_length, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// cm // cm
@@ -49,6 +51,8 @@ constexpr auto operator"" _q_cm(long double l) { return length<centimetre, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto cm = reference<dim_length, centimetre>{}; inline constexpr auto cm = reference<dim_length, centimetre>{};

View File

@@ -41,6 +41,8 @@ struct dim_mass : isq::dim_mass<gram> {};
template<UnitOf<dim_mass> U, Representation Rep = double> template<UnitOf<dim_mass> U, Representation Rep = double>
using mass = quantity<dim_mass, U, Rep>; using mass = quantity<dim_mass, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// g // g
@@ -49,6 +51,8 @@ constexpr auto operator"" _q_g(long double l) { return mass<gram, long double>(l
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto g = reference<dim_mass, gram>{}; inline constexpr auto g = reference<dim_mass, gram>{};

View File

@@ -41,6 +41,8 @@ struct dim_power : isq::dim_power<dim_power, erg_per_second, dim_energy, dim_tim
template<UnitOf<dim_power> U, Representation Rep = double> template<UnitOf<dim_power> U, Representation Rep = double>
using power = quantity<dim_power, U, Rep>; using power = quantity<dim_power, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// erg/s // erg/s
@@ -49,4 +51,6 @@ constexpr auto operator"" _q_erg_per_s(long double l) { return power<erg_per_sec
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si::cgs } // namespace units::isq::si::cgs

View File

@@ -43,6 +43,8 @@ struct dim_pressure : isq::dim_pressure<dim_pressure, barye, dim_force, dim_area
template<UnitOf<dim_pressure> U, Representation Rep = double> template<UnitOf<dim_pressure> U, Representation Rep = double>
using pressure = quantity<dim_pressure, U, Rep>; using pressure = quantity<dim_pressure, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Ba // Ba
@@ -51,6 +53,8 @@ constexpr auto operator"" _q_Ba(long double l) { return pressure<barye, long dou
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Ba = reference<dim_pressure, barye>{}; inline constexpr auto Ba = reference<dim_pressure, barye>{};

View File

@@ -40,6 +40,8 @@ struct dim_speed : isq::dim_speed<dim_speed, centimetre_per_second, dim_length,
template<UnitOf<dim_speed> U, Representation Rep = double> template<UnitOf<dim_speed> U, Representation Rep = double>
using speed = quantity<dim_speed, U, Rep>; using speed = quantity<dim_speed, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// cm/s // cm/s
@@ -48,4 +50,6 @@ constexpr auto operator"" _q_cm_per_s(long double l) { return speed<centimetre_p
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si::cgs } // namespace units::isq::si::cgs

View File

@@ -37,12 +37,16 @@ using si::second;
using si::dim_time; using si::dim_time;
using si::time; using si::time;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
using si::literals::operator"" _q_s; using si::literals::operator"" _q_s;
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
using si::references::s; using si::references::s;

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-fps mp-units::si) add_units_system(si-fps mp-units::si)

View File

@@ -39,6 +39,8 @@ struct dim_acceleration : isq::dim_acceleration<dim_acceleration, foot_per_secon
template<UnitOf<dim_acceleration> U, Representation Rep = double> template<UnitOf<dim_acceleration> U, Representation Rep = double>
using acceleration = quantity<dim_acceleration, U, Rep>; using acceleration = quantity<dim_acceleration, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft/s2 // ft/s2
@@ -47,4 +49,6 @@ constexpr auto operator"" _q_ft_per_s2(long double l) { return acceleration<foot
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si::fps } // namespace units::isq::si::fps

View File

@@ -41,6 +41,8 @@ struct dim_area : isq::dim_area<dim_area, square_foot, dim_length> {};
template<UnitOf<dim_area> U, Representation Rep = double> template<UnitOf<dim_area> U, Representation Rep = double>
using area = quantity<dim_area, U, Rep>; using area = quantity<dim_area, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft2 // ft2
@@ -49,6 +51,8 @@ constexpr auto operator"" _q_ft2(long double l) { return area<square_foot, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ft2 = reference<dim_area, square_foot>{}; inline constexpr auto ft2 = reference<dim_area, square_foot>{};

View File

@@ -41,6 +41,8 @@ struct dim_density : isq::dim_density<dim_density, pound_per_foot_cub, dim_mass,
template<UnitOf<dim_density> U, Representation Rep = double> template<UnitOf<dim_density> U, Representation Rep = double>
using density = quantity<dim_density, U, Rep>; using density = quantity<dim_density, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// lb/ft³ // lb/ft³
@@ -49,4 +51,6 @@ constexpr auto operator"" _q_lb_per_ft3(long double l) { return density<pound_pe
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si::fps } // namespace units::isq::si::fps

View File

@@ -45,6 +45,8 @@ struct foot_pound_force : noble_deduced_unit<foot_pound_force, dim_energy, pound
template<UnitOf<dim_energy> U, Representation Rep = double> template<UnitOf<dim_energy> U, Representation Rep = double>
using energy = quantity<dim_energy, U, Rep>; using energy = quantity<dim_energy, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// foot poundal // foot poundal
@@ -57,4 +59,6 @@ constexpr auto operator"" _q_ft_lbf(long double l) { return energy<foot_pound_fo
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si::fps } // namespace units::isq::si::fps

View File

@@ -52,6 +52,8 @@ struct dim_force : isq::dim_force<dim_force, poundal, dim_mass, dim_acceleration
template<UnitOf<dim_force> U, Representation Rep = double> template<UnitOf<dim_force> U, Representation Rep = double>
using force = quantity<dim_force, U, Rep>; using force = quantity<dim_force, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// poundal // poundal
@@ -68,6 +70,8 @@ constexpr auto operator"" _q_klbf(long double l) { return force<kilopound_force,
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto pdl = reference<dim_force, poundal>{}; inline constexpr auto pdl = reference<dim_force, poundal>{};

View File

@@ -59,6 +59,8 @@ struct dim_length : isq::dim_length<foot> {};
template<UnitOf<dim_length> U, Representation Rep = double> template<UnitOf<dim_length> U, Representation Rep = double>
using length = quantity<dim_length, U, Rep>; using length = quantity<dim_length, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Thousandth // Thousandth
@@ -98,6 +100,8 @@ constexpr auto operator"" _q_naut_mi(long double l) { return length<nautical_mil
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto thou = reference<dim_length, thousandth>{}; inline constexpr auto thou = reference<dim_length, thousandth>{};

View File

@@ -58,6 +58,8 @@ struct short_ton : named_scaled_unit<short_ton, "ton (short)", no_prefix, ratio(
struct long_ton : named_scaled_unit<long_ton, "ton (long)", no_prefix, ratio(2'240, 1), pound>{}; struct long_ton : named_scaled_unit<long_ton, "ton (long)", no_prefix, ratio(2'240, 1), pound>{};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Grain // Grain
@@ -98,6 +100,8 @@ constexpr auto operator"" _q_lton(long double l) { return mass<long_ton, long do
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto gr = reference<dim_mass, grain>{}; inline constexpr auto gr = reference<dim_mass, grain>{};

View File

@@ -46,6 +46,8 @@ struct horse_power : named_scaled_unit<horse_power, "hp", no_prefix, ratio(550),
template<UnitOf<dim_power> U, Representation Rep = double> template<UnitOf<dim_power> U, Representation Rep = double>
using power = quantity<dim_power, U, Rep>; using power = quantity<dim_power, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// foot pound force per second // foot pound force per second
@@ -62,6 +64,8 @@ constexpr auto operator"" _q_hp(long double l) { return power<horse_power, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto hp = reference<dim_power, horse_power>{}; inline constexpr auto hp = reference<dim_power, horse_power>{};

View File

@@ -49,6 +49,8 @@ struct pound_force_per_inch_sq : named_scaled_unit<pound_force_per_inch_sq, "psi
struct kilopound_force_per_inch_sq : prefixed_unit<kilopound_force_per_inch_sq, si::kilo, pound_force_per_inch_sq> {}; struct kilopound_force_per_inch_sq : prefixed_unit<kilopound_force_per_inch_sq, si::kilo, pound_force_per_inch_sq> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Poundal per square foot // Poundal per square foot
@@ -65,6 +67,8 @@ constexpr auto operator"" _q_kpsi(long double l) { return pressure<kilopound_for
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto psi = reference<dim_pressure, pound_force_per_inch_sq>{}; inline constexpr auto psi = reference<dim_pressure, pound_force_per_inch_sq>{};

View File

@@ -48,6 +48,8 @@ struct nautical_mile_per_hour : named_deduced_unit<nautical_mile_per_hour, dim_s
struct knot : alias_unit<nautical_mile_per_hour, "knot", no_prefix> {}; struct knot : alias_unit<nautical_mile_per_hour, "knot", no_prefix> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft/s // ft/s
@@ -64,6 +66,8 @@ constexpr auto operator"" _q_knot(long double l) { return speed<knot, long doubl
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto mph = reference<dim_speed, mile_per_hour>{}; inline constexpr auto mph = reference<dim_speed, mile_per_hour>{};

View File

@@ -41,12 +41,16 @@ using si::hour;
using si::dim_time; using si::dim_time;
using si::time; using si::time;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
using si::literals::operator"" _q_s; using si::literals::operator"" _q_s;
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
using si::references::s; using si::references::s;

View File

@@ -42,6 +42,8 @@ struct cubic_yard : deduced_unit<cubic_yard, dim_volume, yard> {};
template<UnitOf<dim_volume> U, Representation Rep = double> template<UnitOf<dim_volume> U, Representation Rep = double>
using volume = quantity<dim_volume, U, Rep>; using volume = quantity<dim_volume, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft3 // ft3
@@ -54,6 +56,8 @@ constexpr auto operator"" _q_yd3(long double l) { return volume<cubic_yard, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ft3 = reference<dim_volume, cubic_foot>{}; inline constexpr auto ft3 = reference<dim_volume, cubic_foot>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-iau mp-units::si) add_units_system(si-iau mp-units::si)

View File

@@ -44,6 +44,8 @@ struct parsec : named_scaled_unit<parsec, "pc", si::prefix, ratio(30'856'775'814
// https://en.wikipedia.org/wiki/Angstrom // https://en.wikipedia.org/wiki/Angstrom
struct angstrom : named_scaled_unit<angstrom, "angstrom", no_prefix, ratio(1, 1, -10), si::metre> {}; struct angstrom : named_scaled_unit<angstrom, "angstrom", no_prefix, ratio(1, 1, -10), si::metre> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ly // ly
@@ -60,6 +62,8 @@ constexpr auto operator"" _q_angstrom(long double l) { return si::length<angstro
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ly = reference<si::dim_length, light_year>{}; inline constexpr auto ly = reference<si::dim_length, light_year>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-imperial mp-units::si) add_units_system(si-imperial mp-units::si)

View File

@@ -40,6 +40,8 @@ struct chain : named_scaled_unit<chain, "ch", no_prefix, ratio(22, 1), si::inter
// https://en.wikipedia.org/wiki/Rod_(unit) // https://en.wikipedia.org/wiki/Rod_(unit)
struct rod : named_scaled_unit<rod, "rd", no_prefix, ratio(1, 4), chain> {}; struct rod : named_scaled_unit<rod, "rd", no_prefix, ratio(1, 4), chain> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ch // ch
@@ -52,6 +54,8 @@ constexpr auto operator"" _q_rd(long double l) { return si::length<rod, long dou
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ch = reference<si::dim_length, chain>{}; inline constexpr auto ch = reference<si::dim_length, chain>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-international mp-units::si) add_units_system(si-international mp-units::si)

View File

@@ -37,6 +37,8 @@ namespace units::isq::si::international {
struct square_foot : deduced_unit<square_foot, si::dim_area, si::international::foot> {}; struct square_foot : deduced_unit<square_foot, si::dim_area, si::international::foot> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft2 // ft2
@@ -45,6 +47,8 @@ constexpr auto operator"" _q_ft2(long double l) { return si::area<square_foot, l
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ft2 = reference<si::dim_area, square_foot>{}; inline constexpr auto ft2 = reference<si::dim_area, square_foot>{};

View File

@@ -66,6 +66,8 @@ struct thou : named_scaled_unit<thou, "thou", no_prefix, ratio(1, 1000), inch> {
// https://en.wikipedia.org/wiki/Thousandth_of_an_inch // https://en.wikipedia.org/wiki/Thousandth_of_an_inch
using mil = thou; using mil = thou;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// yd // yd
@@ -102,6 +104,8 @@ constexpr auto operator"" _q_mil(long double l) { return si::length<mil, long do
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto yd = reference<si::dim_length, yard>{}; inline constexpr auto yd = reference<si::dim_length, yard>{};

View File

@@ -36,6 +36,8 @@ namespace units::isq::si::international {
struct mile_per_hour : deduced_unit<mile_per_hour, si::dim_speed, si::international::mile, si::hour> {}; struct mile_per_hour : deduced_unit<mile_per_hour, si::dim_speed, si::international::mile, si::hour> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// mi/h // mi/h
@@ -44,4 +46,6 @@ constexpr auto operator"" _q_mi_per_h(long double l) { return si::speed<mile_per
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si::international } // namespace units::isq::si::international

View File

@@ -37,6 +37,8 @@ namespace units::isq::si::international {
struct cubic_foot : deduced_unit<cubic_foot, si::dim_volume, si::international::foot> {}; struct cubic_foot : deduced_unit<cubic_foot, si::dim_volume, si::international::foot> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft3 // ft3
@@ -45,6 +47,8 @@ constexpr auto operator"" _q_ft3(long double l) { return si::volume<cubic_foot,
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ft3 = reference<si::dim_volume, cubic_foot>{}; inline constexpr auto ft3 = reference<si::dim_volume, cubic_foot>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-typographic mp-units::si) add_units_system(si-typographic mp-units::si)

View File

@@ -41,6 +41,8 @@ struct pica_prn : named_scaled_unit<pica_prn, "pica(prn)", no_prefix, ratio(2108
struct point_comp : named_scaled_unit<point_comp, "point(comp)", no_prefix, ratio(1763889, 500000, -4), si::metre> {}; struct point_comp : named_scaled_unit<point_comp, "point(comp)", no_prefix, ratio(1763889, 500000, -4), si::metre> {};
struct point_prn : named_scaled_unit<point_prn, "point(prn)", no_prefix, ratio(1757299, 500000, -4), si::metre> {}; struct point_prn : named_scaled_unit<point_prn, "point(prn)", no_prefix, ratio(1757299, 500000, -4), si::metre> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// pica comp // pica comp
@@ -61,6 +63,8 @@ constexpr auto operator"" _q_point_prn(long double l) { return si::length<point_
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto pica_comp = reference<si::dim_length, typographic::pica_comp>{}; inline constexpr auto pica_comp = reference<si::dim_length, typographic::pica_comp>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si-us mp-units::si) add_units_system(si-us mp-units::si)

View File

@@ -45,6 +45,8 @@ struct fathom : named_scaled_unit<fathom, "fathom(us)", no_prefix, ratio(6), foo
// https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors#B6 // https://www.nist.gov/pml/special-publication-811/nist-guide-si-appendix-b-conversion-factors#B6
struct mile : named_scaled_unit<mile, "mi(us)", no_prefix, ratio(5280), foot> {}; struct mile : named_scaled_unit<mile, "mi(us)", no_prefix, ratio(5280), foot> {};
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ft // ft
@@ -61,6 +63,8 @@ constexpr auto operator"" _q_mi_us(long double l) { return si::length<units::isq
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ft = reference<si::dim_length, us::foot>{}; inline constexpr auto ft = reference<si::dim_length, us::foot>{};

View File

@@ -22,4 +22,4 @@
cmake_minimum_required(VERSION 3.15) cmake_minimum_required(VERSION 3.15)
add_units_module(si mp-units::isq) add_units_system(si mp-units::isq)

View File

@@ -62,6 +62,8 @@ struct dim_absorbed_dose : isq::dim_absorbed_dose<dim_absorbed_dose, gray, dim_e
template<UnitOf<dim_absorbed_dose> U, Representation Rep = double> template<UnitOf<dim_absorbed_dose> U, Representation Rep = double>
using absorbed_dose = quantity<dim_absorbed_dose, U, Rep>; using absorbed_dose = quantity<dim_absorbed_dose, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Gy // Gy
@@ -150,6 +152,8 @@ constexpr auto operator"" _q_YGy(long double l) { return absorbed_dose<yottagray
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Gy = reference<dim_absorbed_dose, gray>{}; inline constexpr auto Gy = reference<dim_absorbed_dose, gray>{};

View File

@@ -39,6 +39,8 @@ struct dim_acceleration : isq::dim_acceleration<dim_acceleration, metre_per_seco
template<UnitOf<dim_acceleration> U, Representation Rep = double> template<UnitOf<dim_acceleration> U, Representation Rep = double>
using acceleration = quantity<dim_acceleration, U, Rep>; using acceleration = quantity<dim_acceleration, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// m/s2 // m/s2
@@ -47,4 +49,6 @@ constexpr auto operator"" _q_m_per_s2(long double l) { return acceleration<metre
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -41,6 +41,8 @@ struct dim_amount_of_substance : isq::dim_amount_of_substance<mole> {};
template<UnitOf<dim_amount_of_substance> U, Representation Rep = double> template<UnitOf<dim_amount_of_substance> U, Representation Rep = double>
using amount_of_substance = quantity<dim_amount_of_substance, U, Rep>; using amount_of_substance = quantity<dim_amount_of_substance, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// mol // mol
@@ -49,6 +51,8 @@ constexpr auto operator"" _q_mol(long double l) { return amount_of_substance<mol
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto mol = reference<dim_amount_of_substance, mole>{}; inline constexpr auto mol = reference<dim_amount_of_substance, mole>{};

View File

@@ -41,6 +41,8 @@ struct dim_angular_velocity : isq::dim_angular_velocity<dim_angular_velocity, ra
template<UnitOf<dim_angular_velocity> U, Representation Rep = double> template<UnitOf<dim_angular_velocity> U, Representation Rep = double>
using angular_velocity = quantity<dim_angular_velocity, U, Rep>; using angular_velocity = quantity<dim_angular_velocity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// rad / s // rad / s
@@ -49,4 +51,6 @@ constexpr auto operator"" _q_rad_per_s(long double l) { return angular_velocity<
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -63,6 +63,8 @@ struct hectare : alias_unit<square_hectometre, "ha", no_prefix> {};
template<UnitOf<dim_area> U, Representation Rep = double> template<UnitOf<dim_area> U, Representation Rep = double>
using area = quantity<dim_area, U, Rep>; using area = quantity<dim_area, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// m2 // m2
@@ -155,6 +157,8 @@ constexpr auto operator"" _q_ha(long double l) { return area<hectare, long doubl
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto m2 = reference<dim_area, square_metre>{}; inline constexpr auto m2 = reference<dim_area, square_metre>{};

View File

@@ -63,6 +63,8 @@ struct dim_capacitance : isq::dim_capacitance<dim_capacitance, farad, dim_electr
template<UnitOf<dim_capacitance> U, Representation Rep = double> template<UnitOf<dim_capacitance> U, Representation Rep = double>
using capacitance = quantity<dim_capacitance, U, Rep>; using capacitance = quantity<dim_capacitance, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// F // F
@@ -151,6 +153,8 @@ constexpr auto operator"" _q_YF(long double l) { return capacitance<yottafarad,
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto F = reference<dim_capacitance, farad>{}; inline constexpr auto F = reference<dim_capacitance, farad>{};

View File

@@ -65,6 +65,8 @@ struct dim_catalytic_activity : isq::dim_catalytic_activity<dim_catalytic_activi
template<UnitOf<dim_catalytic_activity> U, Representation Rep = double> template<UnitOf<dim_catalytic_activity> U, Representation Rep = double>
using catalytic_activity = quantity<dim_catalytic_activity, U, Rep>; using catalytic_activity = quantity<dim_catalytic_activity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// kat // kat
@@ -157,6 +159,8 @@ constexpr auto operator"" _q_U(long double l) { return catalytic_activity<enzyme
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto kat = reference<dim_catalytic_activity, katal>{}; inline constexpr auto kat = reference<dim_catalytic_activity, katal>{};

View File

@@ -47,6 +47,8 @@ using charge_density = quantity<dim_charge_density, U, Rep>;
template<UnitOf<dim_surface_charge_density> U, Representation Rep = double> template<UnitOf<dim_surface_charge_density> U, Representation Rep = double>
using surface_charge_density = quantity<dim_surface_charge_density, U, Rep>; using surface_charge_density = quantity<dim_surface_charge_density, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// C/m³ // C/m³
@@ -59,4 +61,6 @@ constexpr auto operator"" _q_C_per_m2(long double l) { return surface_charge_den
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -40,6 +40,8 @@ struct dim_concentration : isq::dim_concentration<dim_concentration, mol_per_met
template<UnitOf<dim_concentration> U, Representation Rep = double> template<UnitOf<dim_concentration> U, Representation Rep = double>
using concentration = quantity<dim_concentration, U, Rep>; using concentration = quantity<dim_concentration, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// mol/m³ // mol/m³
@@ -48,5 +50,7 @@ constexpr auto operator"" _q_mol_per_m3(long double l) { return concentration<mo
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -58,6 +58,8 @@ struct dim_conductance : isq::dim_conductance<dim_conductance, siemens, dim_resi
template<UnitOf<dim_conductance> U, Representation Rep = double> template<UnitOf<dim_conductance> U, Representation Rep = double>
using conductance = quantity<dim_conductance, U, Rep>; using conductance = quantity<dim_conductance, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// R // R
@@ -130,6 +132,8 @@ constexpr auto operator"" _q_YS(long double l) { return conductance<yottasiemens
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto S = reference<dim_conductance, siemens>{}; inline constexpr auto S = reference<dim_conductance, siemens>{};

View File

@@ -42,6 +42,8 @@ struct dim_current_density : isq::dim_current_density<dim_current_density, amper
template<UnitOf<dim_current_density> U, Representation Rep = double> template<UnitOf<dim_current_density> U, Representation Rep = double>
using current_density = quantity<dim_current_density, U, Rep>; using current_density = quantity<dim_current_density, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// A / m² // A / m²
@@ -50,4 +52,6 @@ constexpr auto operator"" _q_A_per_m2(long double l) { return current_density<am
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -42,6 +42,8 @@ struct dim_density : isq::dim_density<dim_density, kilogram_per_metre_cub, dim_m
template<UnitOf<dim_density> U, Representation Rep = double> template<UnitOf<dim_density> U, Representation Rep = double>
using density = quantity<dim_density, U, Rep>; using density = quantity<dim_density, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// kg / m³ // kg / m³
@@ -50,4 +52,6 @@ constexpr auto operator"" _q_kg_per_m3(long double l) { return density<kilogram_
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -40,6 +40,8 @@ struct dim_dynamic_viscosity : isq::dim_dynamic_viscosity<dim_dynamic_viscosity,
template<UnitOf<dim_dynamic_viscosity> U, Representation Rep = double> template<UnitOf<dim_dynamic_viscosity> U, Representation Rep = double>
using dynamic_viscosity = quantity<dim_dynamic_viscosity, U, Rep>; using dynamic_viscosity = quantity<dim_dynamic_viscosity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Pa·s // Pa·s
@@ -48,5 +50,7 @@ constexpr auto operator"" _q_Pa_s(long double l) { return dynamic_viscosity<pasc
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -42,6 +42,8 @@ struct dim_electric_charge : isq::dim_electric_charge<dim_electric_charge, coulo
template<UnitOf<dim_electric_charge> U, Representation Rep = double> template<UnitOf<dim_electric_charge> U, Representation Rep = double>
using electric_charge = quantity<dim_electric_charge, U, Rep>; using electric_charge = quantity<dim_electric_charge, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// C // C
@@ -50,6 +52,8 @@ constexpr auto operator"" _q_C(long double l) { return electric_charge<coulomb,
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto C = reference<dim_electric_charge, coulomb>{}; inline constexpr auto C = reference<dim_electric_charge, coulomb>{};

View File

@@ -61,6 +61,8 @@ struct dim_electric_current : isq::dim_electric_current<ampere> {};
template<UnitOf<dim_electric_current> U, Representation Rep = double> template<UnitOf<dim_electric_current> U, Representation Rep = double>
using electric_current = quantity<dim_electric_current, U, Rep>; using electric_current = quantity<dim_electric_current, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// A // A
@@ -149,6 +151,8 @@ constexpr auto operator"" _q_YA(long double l) { return electric_current<yottaam
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto A = reference<dim_electric_current, ampere>{}; inline constexpr auto A = reference<dim_electric_current, ampere>{};

View File

@@ -39,6 +39,8 @@ struct dim_electric_field_strength : isq::dim_electric_field_strength<dim_electr
template<UnitOf<dim_electric_field_strength> U, Representation Rep = double> template<UnitOf<dim_electric_field_strength> U, Representation Rep = double>
using electric_field_strength = quantity<dim_electric_field_strength, U, Rep>; using electric_field_strength = quantity<dim_electric_field_strength, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// V/m // V/m
@@ -47,4 +49,6 @@ constexpr auto operator"" _q_V_per_m(long double l) { return electric_field_stre
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -61,6 +61,8 @@ struct dim_energy : isq::dim_energy<dim_energy, joule, dim_force, dim_length> {}
template<UnitOf<dim_energy> U, Representation Rep = double> template<UnitOf<dim_energy> U, Representation Rep = double>
using energy = quantity<dim_energy, U, Rep>; using energy = quantity<dim_energy, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// J // J
@@ -141,6 +143,8 @@ constexpr auto operator"" _q_GeV(long double l) { return energy<gigaelectronvolt
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto J = reference<dim_energy, joule>{}; inline constexpr auto J = reference<dim_energy, joule>{};

View File

@@ -40,6 +40,8 @@ struct dim_energy_density : isq::dim_energy_density<dim_energy_density, joule_pe
template<UnitOf<dim_energy_density> U, Representation Rep = double> template<UnitOf<dim_energy_density> U, Representation Rep = double>
using energy_density = quantity<dim_energy_density, U, Rep>; using energy_density = quantity<dim_energy_density, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// N/m // N/m
@@ -48,4 +50,6 @@ constexpr auto operator"" _q_J_per_m3(long double l) { return energy_density<jou
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -63,6 +63,8 @@ struct dim_force : isq::dim_force<dim_force, newton, dim_mass, dim_acceleration>
template<UnitOf<dim_force> U, Representation Rep = double> template<UnitOf<dim_force> U, Representation Rep = double>
using force = quantity<dim_force, U, Rep>; using force = quantity<dim_force, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// N // N
@@ -151,6 +153,8 @@ constexpr auto operator"" _q_YN(long double l) { return force<yottanewton, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto N = reference<dim_force, newton>{}; inline constexpr auto N = reference<dim_force, newton>{};

View File

@@ -57,6 +57,8 @@ struct dim_frequency : isq::dim_frequency<dim_frequency, hertz, dim_time> {};
template<UnitOf<dim_frequency> U, Representation Rep = double> template<UnitOf<dim_frequency> U, Representation Rep = double>
using frequency = quantity<dim_frequency, U, Rep>; using frequency = quantity<dim_frequency, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Hz // Hz
@@ -129,6 +131,8 @@ constexpr auto operator"" _q_YHz(long double l) { return frequency<yottahertz, l
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Hz = reference<dim_frequency, hertz>{}; inline constexpr auto Hz = reference<dim_frequency, hertz>{};

View File

@@ -53,6 +53,8 @@ using specific_heat_capacity = quantity<dim_specific_heat_capacity, U, Rep>;
template<UnitOf<dim_molar_heat_capacity> U, Representation Rep = double> template<UnitOf<dim_molar_heat_capacity> U, Representation Rep = double>
using molar_heat_capacity = quantity<dim_molar_heat_capacity, U, Rep>; using molar_heat_capacity = quantity<dim_molar_heat_capacity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// J/K // J/K
@@ -69,5 +71,7 @@ constexpr auto operator"" _q_J_per_mol_K(long double l) { return molar_heat_capa
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -59,6 +59,8 @@ struct dim_inductance : isq::dim_inductance<dim_inductance, henry, dim_magnetic_
template<UnitOf<dim_inductance> U, Representation Rep = double> template<UnitOf<dim_inductance> U, Representation Rep = double>
using inductance = quantity<dim_inductance, U, Rep>; using inductance = quantity<dim_inductance, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// H // H
@@ -131,6 +133,8 @@ constexpr auto operator"" _q_YH(long double l) { return inductance<yottahenry, l
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto H = reference<dim_inductance, henry>{}; inline constexpr auto H = reference<dim_inductance, henry>{};

View File

@@ -63,6 +63,8 @@ struct dim_length : isq::dim_length<metre> {};
template<UnitOf<dim_length> U, Representation Rep = double> template<UnitOf<dim_length> U, Representation Rep = double>
using length = quantity<dim_length, U, Rep>; using length = quantity<dim_length, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// m // m
@@ -155,6 +157,8 @@ constexpr auto operator"" _q_au(long double l) { return length<astronomical_unit
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto m = reference<dim_length, metre>{}; inline constexpr auto m = reference<dim_length, metre>{};

View File

@@ -40,6 +40,8 @@ struct dim_luminance : isq::dim_luminance<dim_luminance, candela_per_metre_sq, d
template<UnitOf<dim_luminance> U, Representation Rep = double> template<UnitOf<dim_luminance> U, Representation Rep = double>
using luminance = quantity<dim_luminance, U, Rep>; using luminance = quantity<dim_luminance, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// cd/m² // cd/m²
@@ -48,5 +50,7 @@ constexpr auto operator"" _q_cd_per_m2(long double l) { return luminance<candela
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -61,6 +61,8 @@ struct dim_luminous_intensity : isq::dim_luminous_intensity<candela> {};
template<UnitOf<dim_luminous_intensity> U, Representation Rep = double> template<UnitOf<dim_luminous_intensity> U, Representation Rep = double>
using luminous_intensity = quantity<dim_luminous_intensity, U, Rep>; using luminous_intensity = quantity<dim_luminous_intensity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// cd // cd
@@ -149,6 +151,8 @@ constexpr auto operator"" _q_Ycd(long double l) { return luminous_intensity<yott
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto cd = reference<dim_luminous_intensity, candela>{}; inline constexpr auto cd = reference<dim_luminous_intensity, candela>{};

View File

@@ -59,6 +59,8 @@ struct dim_magnetic_flux : isq::dim_magnetic_flux<dim_magnetic_flux, weber, dim_
template<UnitOf<dim_magnetic_flux> U, Representation Rep = double> template<UnitOf<dim_magnetic_flux> U, Representation Rep = double>
using magnetic_flux = quantity<dim_magnetic_flux, U, Rep>; using magnetic_flux = quantity<dim_magnetic_flux, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Wb // Wb
@@ -131,6 +133,8 @@ constexpr auto operator"" _q_YWb(long double l) { return magnetic_flux<yottawebe
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Wb = reference<dim_magnetic_flux, weber>{}; inline constexpr auto Wb = reference<dim_magnetic_flux, weber>{};

View File

@@ -63,6 +63,8 @@ struct dim_magnetic_induction : isq::dim_magnetic_induction<dim_magnetic_inducti
template<UnitOf<dim_magnetic_induction> U, Representation Rep = double> template<UnitOf<dim_magnetic_induction> U, Representation Rep = double>
using magnetic_induction = quantity<dim_magnetic_induction, U, Rep>; using magnetic_induction = quantity<dim_magnetic_induction, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// T // T
@@ -139,6 +141,8 @@ constexpr auto operator"" _q_G(long double l) { return magnetic_induction<gauss,
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto T = reference<dim_magnetic_induction, tesla>{}; inline constexpr auto T = reference<dim_magnetic_induction, tesla>{};

View File

@@ -85,6 +85,8 @@ struct dim_mass : isq::dim_mass<kilogram> {};
template<UnitOf<dim_mass> U, Representation Rep = double> template<UnitOf<dim_mass> U, Representation Rep = double>
using mass = quantity<dim_mass, U, Rep>; using mass = quantity<dim_mass, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// g // g
@@ -261,6 +263,8 @@ constexpr auto operator"" _q_Da(long double l) { return mass<dalton, long double
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto g = reference<dim_mass, gram>{}; inline constexpr auto g = reference<dim_mass, gram>{};

View File

@@ -42,6 +42,8 @@ struct dim_molar_energy : isq::dim_molar_energy<dim_molar_energy, joule_per_mole
template<UnitOf<dim_molar_energy> U, Representation Rep = double> template<UnitOf<dim_molar_energy> U, Representation Rep = double>
using molar_energy = quantity<dim_molar_energy, U, Rep>; using molar_energy = quantity<dim_molar_energy, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// J/mol // J/mol
@@ -50,4 +52,6 @@ constexpr auto operator"" _q_J_per_mol(long double l) { return molar_energy<joul
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -40,6 +40,8 @@ struct dim_momentum : isq::dim_momentum<dim_momentum, kilogram_metre_per_second,
template<UnitOf<dim_momentum> U, Representation Rep = double> template<UnitOf<dim_momentum> U, Representation Rep = double>
using momentum = quantity<dim_momentum, U, Rep>; using momentum = quantity<dim_momentum, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// kg*m/s // kg*m/s
@@ -48,4 +50,6 @@ constexpr auto operator"" _q_kg_m_per_s(long double l) { return momentum<kilogra
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -41,6 +41,8 @@ struct dim_permeability : isq::dim_permeability<dim_permeability, henry_per_metr
template<UnitOf<dim_permeability> U, Representation Rep = double> template<UnitOf<dim_permeability> U, Representation Rep = double>
using permeability = quantity<dim_permeability, U, Rep>; using permeability = quantity<dim_permeability, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// H/m // H/m
@@ -49,5 +51,7 @@ constexpr auto operator"" _q_H_per_m(long double l) { return permeability<henry_
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -41,6 +41,8 @@ struct dim_permittivity : isq::dim_permittivity<dim_permittivity, farad_per_metr
template<UnitOf<dim_permittivity> U, Representation Rep = double> template<UnitOf<dim_permittivity> U, Representation Rep = double>
using permittivity = quantity<dim_permittivity, U, Rep>; using permittivity = quantity<dim_permittivity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// F/m // F/m
@@ -49,5 +51,7 @@ constexpr auto operator"" _q_F_per_m(long double l) { return permittivity<farad_
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -58,6 +58,8 @@ struct dim_power : isq::dim_power<dim_power, watt, dim_energy, dim_time> {};
template<UnitOf<dim_power> U, Representation Rep = double> template<UnitOf<dim_power> U, Representation Rep = double>
using power = quantity<dim_power, U, Rep>; using power = quantity<dim_power, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// W // W
@@ -130,6 +132,8 @@ constexpr auto operator"" _q_YW(long double l) { return power<yottawatt, long do
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto W = reference<dim_power, watt>{}; inline constexpr auto W = reference<dim_power, watt>{};

View File

@@ -63,6 +63,8 @@ struct dim_pressure : isq::dim_pressure<dim_pressure, pascal, dim_force, dim_are
template<UnitOf<dim_pressure> U, Representation Rep = double> template<UnitOf<dim_pressure> U, Representation Rep = double>
using pressure = quantity<dim_pressure, U, Rep>; using pressure = quantity<dim_pressure, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Pa // Pa
@@ -151,6 +153,8 @@ constexpr auto operator"" _q_YPa(long double l) { return pressure<yottapascal, l
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Pa = reference<dim_pressure, pascal>{}; inline constexpr auto Pa = reference<dim_pressure, pascal>{};

View File

@@ -61,6 +61,8 @@ struct dim_radioactivity : isq::dim_radioactivity<dim_radioactivity, becquerel,
template<UnitOf<dim_radioactivity> U, Representation Rep = double> template<UnitOf<dim_radioactivity> U, Representation Rep = double>
using radioactivity = quantity<dim_radioactivity, U, Rep>; using radioactivity = quantity<dim_radioactivity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Bq // Bq
@@ -149,6 +151,8 @@ constexpr auto operator"" _q_YBq(long double l) { return radioactivity<yottabecq
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto Bq = reference<dim_radioactivity, becquerel>{}; inline constexpr auto Bq = reference<dim_radioactivity, becquerel>{};

View File

@@ -59,6 +59,8 @@ struct dim_resistance : isq::dim_resistance<dim_resistance, ohm, dim_voltage, di
template<UnitOf<dim_resistance> U, Representation Rep = double> template<UnitOf<dim_resistance> U, Representation Rep = double>
using resistance = quantity<dim_resistance, U, Rep>; using resistance = quantity<dim_resistance, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// R // R
@@ -131,6 +133,8 @@ constexpr auto operator"" _q_YR(long double l) { return resistance<yottaohm, lon
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto R = reference<dim_resistance, ohm>{}; inline constexpr auto R = reference<dim_resistance, ohm>{};

View File

@@ -42,6 +42,8 @@ struct kilometre_per_hour : deduced_unit<kilometre_per_hour, dim_speed, kilometr
template<UnitOf<dim_speed> U, Representation Rep = double> template<UnitOf<dim_speed> U, Representation Rep = double>
using speed = quantity<dim_speed, U, Rep>; using speed = quantity<dim_speed, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// m/s // m/s
@@ -54,4 +56,6 @@ constexpr auto operator"" _q_km_per_h(long double l) { return speed<kilometre_pe
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -40,6 +40,8 @@ struct dim_surface_tension : isq::dim_surface_tension<dim_surface_tension, newto
template<UnitOf<dim_surface_tension> U, Representation Rep = double> template<UnitOf<dim_surface_tension> U, Representation Rep = double>
using surface_tension = quantity<dim_surface_tension, U, Rep>; using surface_tension = quantity<dim_surface_tension, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// N/m // N/m
@@ -48,4 +50,6 @@ constexpr auto operator"" _q_N_per_m(long double l) { return surface_tension<new
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -41,6 +41,8 @@ struct dim_thermal_conductivity : isq::dim_thermal_conductivity<dim_thermal_cond
template<UnitOf<dim_thermal_conductivity> U, Representation Rep = double> template<UnitOf<dim_thermal_conductivity> U, Representation Rep = double>
using thermal_conductivity = quantity<dim_thermal_conductivity, U, Rep>; using thermal_conductivity = quantity<dim_thermal_conductivity, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// W/(m K) // W/(m K)
@@ -49,4 +51,6 @@ constexpr auto operator"" _q_W_per_m_K(long double l) { return thermal_conductiv
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -40,6 +40,8 @@ struct dim_thermodynamic_temperature : isq::dim_thermodynamic_temperature<kelvin
template<UnitOf<dim_thermodynamic_temperature> U, Representation Rep = double> template<UnitOf<dim_thermodynamic_temperature> U, Representation Rep = double>
using thermodynamic_temperature = quantity<dim_thermodynamic_temperature, U, Rep>; using thermodynamic_temperature = quantity<dim_thermodynamic_temperature, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// K // K
@@ -48,6 +50,8 @@ constexpr auto operator"" _q_K(long double l) { return thermodynamic_temperature
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto K = reference<dim_thermodynamic_temperature, kelvin>{}; inline constexpr auto K = reference<dim_thermodynamic_temperature, kelvin>{};

View File

@@ -52,6 +52,8 @@ struct dim_time : isq::dim_time<second> {};
template<UnitOf<dim_time> U, Representation Rep = double> template<UnitOf<dim_time> U, Representation Rep = double>
using time = quantity<dim_time, U, Rep>; using time = quantity<dim_time, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// ys // ys
@@ -104,6 +106,8 @@ constexpr auto operator"" _q_d(long double l) { return time<day, long double>(l)
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto ys = reference<dim_time, yoctosecond>{}; inline constexpr auto ys = reference<dim_time, yoctosecond>{};

View File

@@ -42,6 +42,8 @@ struct dim_torque : isq::dim_torque<dim_torque, newton_metre_per_radian, dim_for
template<UnitOf<dim_torque> U, Representation Rep = double> template<UnitOf<dim_torque> U, Representation Rep = double>
using torque = quantity<dim_torque, U, Rep>; using torque = quantity<dim_torque, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// Nm // Nm
@@ -50,4 +52,6 @@ constexpr auto operator"" _q_Nm_per_rad(long double l) { return torque<newton_me
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
} // namespace units::isq::si } // namespace units::isq::si

View File

@@ -63,6 +63,8 @@ struct dim_voltage : isq::dim_voltage<dim_voltage, volt, dim_power, dim_electric
template<UnitOf<dim_voltage> U, Representation Rep = double> template<UnitOf<dim_voltage> U, Representation Rep = double>
using voltage = quantity<dim_voltage, U, Rep>; using voltage = quantity<dim_voltage, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// V // V
@@ -151,6 +153,8 @@ constexpr auto operator"" _q_YV(long double l) { return voltage<yottavolt, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto V = reference<dim_voltage, volt>{}; inline constexpr auto V = reference<dim_voltage, volt>{};

View File

@@ -83,6 +83,8 @@ struct yottalitre : prefixed_unit<yottalitre, yotta, litre> {};
template<UnitOf<dim_volume> U, Representation Rep = double> template<UnitOf<dim_volume> U, Representation Rep = double>
using volume = quantity<dim_volume, U, Rep>; using volume = quantity<dim_volume, U, Rep>;
#if UNITS_UDLS
inline namespace literals { inline namespace literals {
// m3 // m3
@@ -255,6 +257,8 @@ constexpr auto operator"" _q_Yl(long double l) { return volume<yottalitre, long
} // namespace literals } // namespace literals
#endif // UNITS_UDLS
namespace references { namespace references {
inline constexpr auto m3 = reference<dim_volume, cubic_metre>{}; inline constexpr auto m3 = reference<dim_volume, cubic_metre>{};