Enable log macros to work with no args (#4475)

This is enabled by the C++20 __VA_OPT__ feature.
Uses of "{}" format string were updated.
Some warning suppressions were required for older clang versions.
Also improve codegen of wpi::Logger::Log(), frc::ReportError(), and frc::MakeError();
these generate better and less redundant code if they use fmt::string_view for the
format string instead of templating on it.
This commit is contained in:
Tyler Veness
2022-10-19 10:49:27 -07:00
committed by GitHub
parent 878cc8defb
commit 1fc098e696
70 changed files with 373 additions and 338 deletions

View File

@@ -31,10 +31,10 @@ Encoder::Encoder(DigitalSource* aSource, DigitalSource* bSource,
: m_aSource(aSource, wpi::NullDeleter<DigitalSource>()),
m_bSource(bSource, wpi::NullDeleter<DigitalSource>()) {
if (!m_aSource) {
throw FRC_MakeError(err::NullParameter, "{}", "aSource");
throw FRC_MakeError(err::NullParameter, "aSource");
}
if (!m_bSource) {
throw FRC_MakeError(err::NullParameter, "{}", "bSource");
throw FRC_MakeError(err::NullParameter, "bSource");
}
InitEncoder(reverseDirection, encodingType);
}
@@ -51,10 +51,10 @@ Encoder::Encoder(std::shared_ptr<DigitalSource> aSource,
EncodingType encodingType)
: m_aSource(std::move(aSource)), m_bSource(std::move(bSource)) {
if (!m_aSource) {
throw FRC_MakeError(err::NullParameter, "{}", "aSource");
throw FRC_MakeError(err::NullParameter, "aSource");
}
if (!m_bSource) {
throw FRC_MakeError(err::NullParameter, "{}", "bSource");
throw FRC_MakeError(err::NullParameter, "bSource");
}
InitEncoder(reverseDirection, encodingType);
}
@@ -62,100 +62,100 @@ Encoder::Encoder(std::shared_ptr<DigitalSource> aSource,
Encoder::~Encoder() {
int32_t status = 0;
HAL_FreeEncoder(m_encoder, &status);
FRC_ReportError(status, "{}", "FreeEncoder");
FRC_ReportError(status, "FreeEncoder");
}
int Encoder::Get() const {
int32_t status = 0;
int value = HAL_GetEncoder(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "Get");
FRC_CheckErrorStatus(status, "Get");
return value;
}
void Encoder::Reset() {
int32_t status = 0;
HAL_ResetEncoder(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "Reset");
FRC_CheckErrorStatus(status, "Reset");
}
units::second_t Encoder::GetPeriod() const {
int32_t status = 0;
double value = HAL_GetEncoderPeriod(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetPeriod");
FRC_CheckErrorStatus(status, "GetPeriod");
return units::second_t{value};
}
void Encoder::SetMaxPeriod(units::second_t maxPeriod) {
int32_t status = 0;
HAL_SetEncoderMaxPeriod(m_encoder, maxPeriod.value(), &status);
FRC_CheckErrorStatus(status, "{}", "SetMaxPeriod");
FRC_CheckErrorStatus(status, "SetMaxPeriod");
}
bool Encoder::GetStopped() const {
int32_t status = 0;
bool value = HAL_GetEncoderStopped(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetStopped");
FRC_CheckErrorStatus(status, "GetStopped");
return value;
}
bool Encoder::GetDirection() const {
int32_t status = 0;
bool value = HAL_GetEncoderDirection(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetDirection");
FRC_CheckErrorStatus(status, "GetDirection");
return value;
}
int Encoder::GetRaw() const {
int32_t status = 0;
int value = HAL_GetEncoderRaw(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetRaw");
FRC_CheckErrorStatus(status, "GetRaw");
return value;
}
int Encoder::GetEncodingScale() const {
int32_t status = 0;
int val = HAL_GetEncoderEncodingScale(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetEncodingScale");
FRC_CheckErrorStatus(status, "GetEncodingScale");
return val;
}
double Encoder::GetDistance() const {
int32_t status = 0;
double value = HAL_GetEncoderDistance(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetDistance");
FRC_CheckErrorStatus(status, "GetDistance");
return value;
}
double Encoder::GetRate() const {
int32_t status = 0;
double value = HAL_GetEncoderRate(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetRate");
FRC_CheckErrorStatus(status, "GetRate");
return value;
}
void Encoder::SetMinRate(double minRate) {
int32_t status = 0;
HAL_SetEncoderMinRate(m_encoder, minRate, &status);
FRC_CheckErrorStatus(status, "{}", "SetMinRate");
FRC_CheckErrorStatus(status, "SetMinRate");
}
void Encoder::SetDistancePerPulse(double distancePerPulse) {
int32_t status = 0;
HAL_SetEncoderDistancePerPulse(m_encoder, distancePerPulse, &status);
FRC_CheckErrorStatus(status, "{}", "SetDistancePerPulse");
FRC_CheckErrorStatus(status, "SetDistancePerPulse");
}
double Encoder::GetDistancePerPulse() const {
int32_t status = 0;
double distancePerPulse = HAL_GetEncoderDistancePerPulse(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetDistancePerPulse");
FRC_CheckErrorStatus(status, "GetDistancePerPulse");
return distancePerPulse;
}
void Encoder::SetReverseDirection(bool reverseDirection) {
int32_t status = 0;
HAL_SetEncoderReverseDirection(m_encoder, reverseDirection, &status);
FRC_CheckErrorStatus(status, "{}", "SetReverseDirection");
FRC_CheckErrorStatus(status, "SetReverseDirection");
}
void Encoder::SetSamplesToAverage(int samplesToAverage) {
@@ -167,13 +167,13 @@ void Encoder::SetSamplesToAverage(int samplesToAverage) {
}
int32_t status = 0;
HAL_SetEncoderSamplesToAverage(m_encoder, samplesToAverage, &status);
FRC_CheckErrorStatus(status, "{}", "SetSamplesToAverage");
FRC_CheckErrorStatus(status, "SetSamplesToAverage");
}
int Encoder::GetSamplesToAverage() const {
int32_t status = 0;
int result = HAL_GetEncoderSamplesToAverage(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetSamplesToAverage");
FRC_CheckErrorStatus(status, "GetSamplesToAverage");
return result;
}
@@ -192,7 +192,7 @@ void Encoder::SetIndexSource(const DigitalSource& source,
source.GetAnalogTriggerTypeForRouting()),
static_cast<HAL_EncoderIndexingType>(type),
&status);
FRC_CheckErrorStatus(status, "{}", "SetIndexSource");
FRC_CheckErrorStatus(status, "SetIndexSource");
}
void Encoder::SetSimDevice(HAL_SimDeviceHandle device) {
@@ -202,14 +202,14 @@ void Encoder::SetSimDevice(HAL_SimDeviceHandle device) {
int Encoder::GetFPGAIndex() const {
int32_t status = 0;
int val = HAL_GetEncoderFPGAIndex(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetFPGAIndex");
FRC_CheckErrorStatus(status, "GetFPGAIndex");
return val;
}
void Encoder::InitSendable(wpi::SendableBuilder& builder) {
int32_t status = 0;
HAL_EncoderEncodingType type = HAL_GetEncoderEncodingType(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetEncodingType");
FRC_CheckErrorStatus(status, "GetEncodingType");
if (type == HAL_EncoderEncodingType::HAL_Encoder_k4X) {
builder.SetSmartDashboardType("Quadrature Encoder");
} else {
@@ -236,7 +236,7 @@ void Encoder::InitEncoder(bool reverseDirection, EncodingType encodingType) {
m_bSource->GetAnalogTriggerTypeForRouting()),
reverseDirection, static_cast<HAL_EncoderEncodingType>(encodingType),
&status);
FRC_CheckErrorStatus(status, "{}", "InitEncoder");
FRC_CheckErrorStatus(status, "InitEncoder");
HAL_Report(HALUsageReporting::kResourceType_Encoder, GetFPGAIndex() + 1,
encodingType);
@@ -246,6 +246,6 @@ void Encoder::InitEncoder(bool reverseDirection, EncodingType encodingType) {
double Encoder::DecodingScaleFactor() const {
int32_t status = 0;
double val = HAL_GetEncoderDecodingScaleFactor(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "DecodingScaleFactor");
FRC_CheckErrorStatus(status, "DecodingScaleFactor");
return val;
}