Finish converting GSL to absl::Span
One less dependency.
Change-Id: Iaac25a3c1312a21a8a2b77b8cfee2463bdb51196
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/motors/print/BUILD b/motors/print/BUILD
index df27ce2..93f54f9 100644
--- a/motors/print/BUILD
+++ b/motors/print/BUILD
@@ -8,7 +8,7 @@
deps = [
"//aos/containers:sized_array",
"//motors/core",
- "//third_party/GSL",
+ "@com_google_absl//absl/types:span",
],
)
diff --git a/motors/print/itm.cc b/motors/print/itm.cc
index 0e3c38c..6f9164e 100644
--- a/motors/print/itm.cc
+++ b/motors/print/itm.cc
@@ -1,12 +1,16 @@
#include "motors/print/itm.h"
+#include <cstring>
+
+#include "absl/types/span.h"
#include "motors/core/itm.h"
namespace frc971 {
namespace motors {
namespace {
-template<int kPort> void WriteToPort(gsl::span<const char> buffer) {
+template <int kPort>
+void WriteToPort(absl::Span<const char> buffer) {
// This ignores memory barriers etc, because it will be called by
// CreatePrinting which must be called before any interrupts are enabled. That
// means the only thing we need to worry about is actually getting it
@@ -70,7 +74,7 @@
}
extern "C" int _write(const int /*file*/, char *const ptr, const int len) {
- WriteToPort<0>(gsl::span<const char>(ptr, len));
+ WriteToPort<0>(absl::Span<const char>(ptr, len));
return len;
}
@@ -81,12 +85,12 @@
_write(0, nullptr, 0);
}
-int ItmPrinting::WriteStdout(gsl::span<const char> buffer) {
+int ItmPrinting::WriteStdout(absl::Span<const char> buffer) {
WriteToPort<0>(buffer);
return buffer.size();
}
-int ItmPrinting::WriteDebug(gsl::span<const char> buffer) {
+int ItmPrinting::WriteDebug(absl::Span<const char> buffer) {
WriteToPort<1>(buffer);
return buffer.size();
}
diff --git a/motors/print/itm.h b/motors/print/itm.h
index 1ff0bd1..edcb798 100644
--- a/motors/print/itm.h
+++ b/motors/print/itm.h
@@ -1,6 +1,7 @@
#ifndef MOTORS_PRINT_ITM_
#define MOTORS_PRINT_ITM_
+#include "absl/types/span.h"
#include "motors/print/print.h"
namespace frc971 {
@@ -21,9 +22,9 @@
void Initialize() override {}
// This goes to stimulus port 0.
- int WriteStdout(gsl::span<const char> buffer) override;
+ int WriteStdout(absl::Span<const char> buffer) override;
// This goes to stimulus port 1.
- int WriteDebug(gsl::span<const char> buffer) override;
+ int WriteDebug(absl::Span<const char> buffer) override;
};
} // namespace motors
diff --git a/motors/print/print.h b/motors/print/print.h
index 89da913..34ba983 100644
--- a/motors/print/print.h
+++ b/motors/print/print.h
@@ -3,9 +3,9 @@
#include <memory>
+#include "absl/types/span.h"
#include "aos/containers/sized_array.h"
#include "motors/core/kinetis.h"
-#include "third_party/GSL/include/gsl/gsl"
namespace frc971 {
namespace teensy {
@@ -26,10 +26,12 @@
virtual void Initialize() = 0;
// Writes something directly to stdout/stderr (they are treated as the same).
- virtual int WriteStdout(gsl::span<const char> buffer) = 0;
+ virtual int WriteStdout(absl::Span<const char> buffer) = 0;
// Writes something to a separate debug stream. Some implementations will
// always ignore this, and others will ignore it under some conditions.
- virtual int WriteDebug(gsl::span<const char> buffer) { return buffer.size(); }
+ virtual int WriteDebug(absl::Span<const char> buffer) {
+ return buffer.size();
+ }
// Reads any characters which are available (never blocks).
//
@@ -46,7 +48,7 @@
~NopPrinting() override = default;
void Initialize() override {}
- int WriteStdout(gsl::span<const char> buffer) override {
+ int WriteStdout(absl::Span<const char> buffer) override {
return buffer.size();
}
};
diff --git a/motors/print/semihosting.cc b/motors/print/semihosting.cc
index 799b928..13bd78b 100644
--- a/motors/print/semihosting.cc
+++ b/motors/print/semihosting.cc
@@ -1,5 +1,6 @@
#include "motors/print/semihosting.h"
+#include "absl/types/span.h"
#include "motors/core/semihosting.h"
namespace frc971 {
@@ -11,11 +12,12 @@
}
extern "C" int _write(const int /*file*/, char *const ptr, const int len) {
- semihosting::Write operation{2 /* stderr */, gsl::span<const char>(ptr, len)};
+ semihosting::Write operation{2 /* stderr */,
+ absl::Span<const char>(ptr, len)};
return len - operation.Execute();
}
-int SemihostingPrinting::WriteStdout(gsl::span<const char> buffer) {
+int SemihostingPrinting::WriteStdout(absl::Span<const char> buffer) {
semihosting::Write operation{2 /* stderr */, buffer};
return buffer.size() - operation.Execute();
}
diff --git a/motors/print/semihosting.h b/motors/print/semihosting.h
index 6ea6c3b..d323a7a 100644
--- a/motors/print/semihosting.h
+++ b/motors/print/semihosting.h
@@ -1,6 +1,7 @@
#ifndef MOTORS_PRINT_SEMIHOSTING_H_
#define MOTORS_PRINT_SEMIHOSTING_H_
+#include "absl/types/span.h"
#include "motors/print/print.h"
namespace frc971 {
@@ -23,7 +24,7 @@
void Initialize() override {}
- int WriteStdout(gsl::span<const char> buffer) override;
+ int WriteStdout(absl::Span<const char> buffer) override;
// Could easily implement an optional WriteDebug which goes to a separate
// file if the name is filled out in the parameters.
diff --git a/motors/print/uart.cc b/motors/print/uart.cc
index 84b33cd..b635d23 100644
--- a/motors/print/uart.cc
+++ b/motors/print/uart.cc
@@ -51,7 +51,7 @@
NVIC_ENABLE_IRQ(stdout_status_interrupt_);
}
-int UartPrinting::WriteStdout(gsl::span<const char> buffer) {
+int UartPrinting::WriteStdout(absl::Span<const char> buffer) {
stdout_uart_.Write(buffer);
return buffer.size();
}
@@ -60,7 +60,7 @@
teensy::InterruptBufferedUart *const tty =
global_stdout.load(::std::memory_order_acquire);
if (tty != nullptr) {
- tty->Write(gsl::make_span(ptr, len));
+ tty->Write(absl::MakeSpan(ptr, len));
}
return len;
}
diff --git a/motors/print/uart.h b/motors/print/uart.h
index f4a61c8..7d81577 100644
--- a/motors/print/uart.h
+++ b/motors/print/uart.h
@@ -18,7 +18,7 @@
void Initialize() override;
- int WriteStdout(gsl::span<const char> buffer) override;
+ int WriteStdout(absl::Span<const char> buffer) override;
private:
teensy::InterruptBufferedUart stdout_uart_;
diff --git a/motors/print/usb.h b/motors/print/usb.h
index 981c5d3..1ed1bee 100644
--- a/motors/print/usb.h
+++ b/motors/print/usb.h
@@ -17,11 +17,11 @@
void Initialize() override;
- int WriteStdout(gsl::span<const char> buffer) override {
+ int WriteStdout(absl::Span<const char> buffer) override {
return stdout_tty_->Write(buffer.data(), buffer.size());
}
- int WriteDebug(gsl::span<const char> buffer) override {
+ int WriteDebug(absl::Span<const char> buffer) override {
if (debug_tty_ == nullptr) {
return buffer.size();
}
@@ -48,11 +48,11 @@
void Initialize() override;
- int WriteStdout(gsl::span<const char> buffer) override {
+ int WriteStdout(absl::Span<const char> buffer) override {
return stdout_tty_.Write(buffer.data(), buffer.size());
}
- int WriteDebug(gsl::span<const char> buffer) override {
+ int WriteDebug(absl::Span<const char> buffer) override {
return debug_tty_.Write(buffer.data(), buffer.size());
}