diff --git a/wpimath/src/main/native/include/units/base.h b/wpimath/src/main/native/include/units/base.h index 1900abf28c..b0ae1b89b3 100644 --- a/wpimath/src/main/native/include/units/base.h +++ b/wpimath/src/main/native/include/units/base.h @@ -75,7 +75,8 @@ #include #include #include -#else +#endif +#if !defined(UNIT_LIB_DISABLE_FMT) #include #include #include @@ -175,7 +176,7 @@ namespace units * @param abbrev - abbreviated unit name, e.g. 'm' * @note When UNIT_LIB_ENABLE_IOSTREAM isn't defined, the macro does not generate any code */ -#if !defined(UNIT_LIB_ENABLE_IOSTREAM) +#if !defined(UNIT_LIB_DISABLE_FMT) #define UNIT_ADD_IO(namespaceName, nameSingular, abbrev)\ }\ template <>\ @@ -200,7 +201,8 @@ namespace units return units::detail::to_string(obj()) + std::string(" "#abbrev);\ }\ } -#else +#endif +#if defined(UNIT_LIB_ENABLE_IOSTREAM) #define UNIT_ADD_IO(namespaceName, nameSingular, abbrev)\ namespace namespaceName\ {\ @@ -2864,13 +2866,15 @@ namespace units namespace dimensionless { typedef unit_t dB_t; -#if defined(UNIT_LIB_ENABLE_IOSTREAM) - inline std::ostream& operator<<(std::ostream& os, const dB_t& obj) { os << obj() << " dB"; return os; } typedef dB_t dBi_t; } -#else -} +#if defined(UNIT_LIB_ENABLE_IOSTREAM) + namespace dimensionless + inline std::ostream& operator<<(std::ostream& os, const dB_t& obj) { os << obj() << " dB"; return os; } + } +#endif } +#if !defined(UNIT_LIB_DISABLE_FMT) template <> struct fmt::formatter : fmt::formatter { @@ -2883,13 +2887,9 @@ struct fmt::formatter : fmt::formatter return fmt::format_to(out, " dB"); } }; - -namespace units { -namespace dimensionless { - typedef dB_t dBi_t; - } #endif +namespace units { //------------------------------ // DECIBEL ARITHMETIC //------------------------------ @@ -3439,4 +3439,6 @@ namespace units::literals {} using namespace units::literals; #endif // UNIT_HAS_LITERAL_SUPPORT +#if !defined(UNIT_LIB_DISABLE_FMT) #include "frc/fmt/Units.h" +#endif diff --git a/wpimath/src/test/native/cpp/UnitsTest.cpp b/wpimath/src/test/native/cpp/UnitsTest.cpp index 6f70d83a7e..1059260f05 100644 --- a/wpimath/src/test/native/cpp/UnitsTest.cpp +++ b/wpimath/src/test/native/cpp/UnitsTest.cpp @@ -1420,6 +1420,7 @@ TEST_F(UnitContainer, cout) { } #endif +#if !defined(UNIT_LIB_DISABLE_FMT) TEST_F(UnitContainer, fmtlib) { testing::internal::CaptureStdout(); fmt::print("{}", degree_t(349.87)); @@ -1500,6 +1501,7 @@ TEST_F(UnitContainer, fmtlib) { EXPECT_STREQ("5.670367e-08 kg s^-3 K^-4", output.c_str()); #endif } +#endif TEST_F(UnitContainer, to_string) { foot_t a(3.5);