pw_bytes: ByteSpan and ConstByteSpan aliases

- Introduce ByteSpan and ConstByteSpan aliases for std::span<std::byte>
  and std::span<const std::byte>.
- Use the new aliases in pw_bytes/byte_builder.h.

Change-Id: Ifaf5e19c9b34cf7874b366300aa1e582ae1e5587
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12944
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/pw_bytes/BUILD b/pw_bytes/BUILD
index 8bfa841..baa3389 100644
--- a/pw_bytes/BUILD
+++ b/pw_bytes/BUILD
@@ -29,6 +29,7 @@
     ],
     hdrs = [
         "public/pw_bytes/byte_builder.h",
+        "public/pw_bytes/span.h",
     ],
     includes = ["public"],
     deps = [
@@ -45,4 +46,4 @@
         ":pw_bytes",
         "//pw_unit_test",
     ],
-)
\ No newline at end of file
+)
diff --git a/pw_bytes/BUILD.gn b/pw_bytes/BUILD.gn
index b7aa5ab..ab0ca28 100644
--- a/pw_bytes/BUILD.gn
+++ b/pw_bytes/BUILD.gn
@@ -21,16 +21,20 @@
 import("$dir_pw_unit_test/test.gni")
 config("default_config") {
   include_dirs = [ "public" ]
+  visibility = [ ":*" ]
 }
 
 pw_source_set("pw_bytes") {
   public_configs = [ ":default_config" ]
-  public = [ "public/pw_bytes/byte_builder.h" ]
+  public = [
+    "public/pw_bytes/byte_builder.h",
+    "public/pw_bytes/span.h",
+  ]
   sources = [ "byte_builder.cc" ]
   public_deps = [
-    "$dir_pw_preprocessor",
-    "$dir_pw_span",
-    "$dir_pw_status",
+    dir_pw_preprocessor,
+    dir_pw_span,
+    dir_pw_status,
   ]
 }
 
diff --git a/pw_bytes/byte_builder_test.cc b/pw_bytes/byte_builder_test.cc
index 7d8ce2d..ab4dba9 100644
--- a/pw_bytes/byte_builder_test.cc
+++ b/pw_bytes/byte_builder_test.cc
@@ -12,7 +12,7 @@
 // License for the specific language governing permissions and limitations under
 // the License.
 
-#include "pw_bytes//byte_builder.h"
+#include "pw_bytes/byte_builder.h"
 
 #include <array>
 #include <cstddef>
@@ -30,7 +30,7 @@
 namespace {
 
 TEST(ByteBuilder, EmptyBuffer_SizeAndMaxSizeAreCorrect) {
-  ByteBuilder bb(span<byte>{});
+  ByteBuilder bb(ByteSpan{});
 
   EXPECT_TRUE(bb.empty());
   EXPECT_EQ(0u, bb.size());
@@ -54,7 +54,7 @@
 }
 
 TEST(ByteBuilder, EmptyBuffer_Append) {
-  ByteBuilder bb(span<byte>{});
+  ByteBuilder bb(ByteSpan{});
   EXPECT_TRUE(bb.empty());
 
   auto bytesTestLiteral = MakeBytes(0x04, 0x05);
diff --git a/pw_bytes/public/pw_bytes/byte_builder.h b/pw_bytes/public/pw_bytes/byte_builder.h
index fb84347..49af984 100644
--- a/pw_bytes/public/pw_bytes/byte_builder.h
+++ b/pw_bytes/public/pw_bytes/byte_builder.h
@@ -18,8 +18,8 @@
 #include <cstddef>
 #include <cstring>
 
+#include "pw_bytes/span.h"
 #include "pw_preprocessor/compiler.h"
-#include "pw_span/span.h"
 #include "pw_status/status.h"
 #include "pw_status/status_with_size.h"
 
@@ -134,7 +134,7 @@
   using const_iterator = iterator;
 
   // Creates an empty ByteBuilder.
-  constexpr ByteBuilder(span<std::byte> buffer) : buffer_(buffer), size_(0) {}
+  constexpr ByteBuilder(ByteSpan buffer) : buffer_(buffer), size_(0) {}
 
   // Disallow copy/assign to avoid confusion about where the bytes is actually
   // stored. ByteBuffers may be copied into one another.
@@ -213,7 +213,7 @@
   ByteBuilder& append(const void* bytes, size_t count);
 
   // Appends bytes from a byte span that calls the pointer/length version.
-  ByteBuilder& append(span<std::byte> bytes) {
+  ByteBuilder& append(ConstByteSpan bytes) {
     return append(bytes.data(), bytes.size());
   }
 
@@ -280,7 +280,7 @@
 
  protected:
   // Functions to support ByteBuffer copies.
-  constexpr ByteBuilder(const span<std::byte>& buffer, const ByteBuilder& other)
+  constexpr ByteBuilder(const ByteSpan& buffer, const ByteBuilder& other)
       : buffer_(buffer), size_(other.size_), status_(other.status_) {}
 
   void CopySizeAndStatus(const ByteBuilder& other) {
@@ -295,7 +295,7 @@
   }
   size_t ResizeForAppend(size_t bytes_to_append);
 
-  const span<std::byte> buffer_;
+  const ByteSpan buffer_;
 
   size_t size_;
   Status status_;
diff --git a/pw_bytes/public/pw_bytes/span.h b/pw_bytes/public/pw_bytes/span.h
new file mode 100644
index 0000000..b3ebf56
--- /dev/null
+++ b/pw_bytes/public/pw_bytes/span.h
@@ -0,0 +1,26 @@
+// Copyright 2020 The Pigweed Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License"); you may not
+// use this file except in compliance with the License. You may obtain a copy of
+// the License at
+//
+//     https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+// License for the specific language governing permissions and limitations under
+// the License.
+#pragma once
+
+#include <cstddef>
+#include <span>
+
+namespace pw {
+
+// Aliases for spans of bytes.
+using ByteSpan = std::span<std::byte>;
+
+using ConstByteSpan = std::span<const std::byte>;
+
+}  // namespace pw