• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2020 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "span.h"
6 
7 #include <algorithm>
8 
9 namespace v8_crdtp {
10 
SpanLessThan(span<uint8_t> x,span<uint8_t> y)11 bool SpanLessThan(span<uint8_t> x, span<uint8_t> y) noexcept {
12   auto min_size = std::min(x.size(), y.size());
13   const int r = min_size == 0 ? 0 : memcmp(x.data(), y.data(), min_size);
14   return (r < 0) || (r == 0 && x.size() < y.size());
15 }
16 
SpanEquals(span<uint8_t> x,span<uint8_t> y)17 bool SpanEquals(span<uint8_t> x, span<uint8_t> y) noexcept {
18   auto len = x.size();
19   if (len != y.size())
20     return false;
21   return x.data() == y.data() || len == 0 ||
22          std::memcmp(x.data(), y.data(), len) == 0;
23 }
24 
SpanLessThan(span<char> x,span<char> y)25 bool SpanLessThan(span<char> x, span<char> y) noexcept {
26   auto min_size = std::min(x.size(), y.size());
27   const int r = min_size == 0 ? 0 : memcmp(x.data(), y.data(), min_size);
28   return (r < 0) || (r == 0 && x.size() < y.size());
29 }
30 
SpanEquals(span<char> x,span<char> y)31 bool SpanEquals(span<char> x, span<char> y) noexcept {
32   auto len = x.size();
33   if (len != y.size())
34     return false;
35   return x.data() == y.data() || len == 0 ||
36          std::memcmp(x.data(), y.data(), len) == 0;
37 }
38 
39 }  // namespace v8_crdtp
40