Use std::string_view and fmtlib across all libraries (#3402)

- Twine, StringRef, Format, and NativeFormatting have been removed
- Logging now uses fmtlib style formatting
- Nearly all uses of wpi::outs/errs have been replaced with fmt::print() or
std::puts()/std::fputs() (for unformatted strings).
- A wpi/fmt/raw_ostream.h header has been added to enable
fmt::print() with wpi::raw_ostream
This commit is contained in:
Peter Johnson
2021-06-06 16:13:58 -07:00
committed by GitHub
parent 4f1cecb8e7
commit b2c3b2dd8e
441 changed files with 5061 additions and 9749 deletions

View File

@@ -14,6 +14,8 @@
#include <networktables/NetworkTable.h>
#include <wpi/StringMap.h>
#include "frc/Errors.h"
namespace frc {
/**
@@ -63,13 +65,14 @@ class MechanismObject2d {
template <typename T, typename... Args,
typename =
std::enable_if_t<std::is_convertible_v<T*, MechanismObject2d*>>>
T* Append(wpi::StringRef name, Args&&... args) {
T* Append(std::string_view name, Args&&... args) {
std::scoped_lock lock(m_mutex);
auto& obj = m_objects[name];
if (obj) {
throw std::runtime_error(("MechanismObject names must be unique! `" +
name + "` was inserted twice!")
.str());
throw FRC_MakeError(
err::Error,
"MechanismObject names must be unique! `{}` was inserted twice!",
name);
}
obj = std::make_unique<T>(name, std::forward<Args>(args)...);
T* ex = static_cast<T*>(obj.get());