1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2021 Google LLC.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci#include "include/core/SkStringView.h"
8cb93a386Sopenharmony_ci
9cb93a386Sopenharmony_ci#include <algorithm>
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_cinamespace skstd {
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_cibool operator==(string_view left, string_view right) {
14cb93a386Sopenharmony_ci    if (left.length() != right.length()) {
15cb93a386Sopenharmony_ci        return false;
16cb93a386Sopenharmony_ci    }
17cb93a386Sopenharmony_ci    return !string_view::traits_type::compare(left.data(), right.data(), left.length());
18cb93a386Sopenharmony_ci}
19cb93a386Sopenharmony_ci
20cb93a386Sopenharmony_cibool operator!=(string_view left, string_view right) {
21cb93a386Sopenharmony_ci    return !(left == right);
22cb93a386Sopenharmony_ci}
23cb93a386Sopenharmony_ci
24cb93a386Sopenharmony_cibool operator<(string_view left, string_view right) {
25cb93a386Sopenharmony_ci    int result = string_view::traits_type::compare(left.data(), right.data(),
26cb93a386Sopenharmony_ci                                                   std::min(left.length(), right.length()));
27cb93a386Sopenharmony_ci    if (!result) {
28cb93a386Sopenharmony_ci        result = left.length() - right.length();
29cb93a386Sopenharmony_ci    }
30cb93a386Sopenharmony_ci    return result < 0;
31cb93a386Sopenharmony_ci}
32cb93a386Sopenharmony_ci
33cb93a386Sopenharmony_cibool operator<=(string_view left, string_view right) {
34cb93a386Sopenharmony_ci    return !(left > right);
35cb93a386Sopenharmony_ci}
36cb93a386Sopenharmony_ci
37cb93a386Sopenharmony_cibool operator>(string_view left, string_view right) {
38cb93a386Sopenharmony_ci    return right < left;
39cb93a386Sopenharmony_ci}
40cb93a386Sopenharmony_ci
41cb93a386Sopenharmony_cibool operator>=(string_view left, string_view right) {
42cb93a386Sopenharmony_ci    return !(left < right);
43cb93a386Sopenharmony_ci}
44cb93a386Sopenharmony_ci
45cb93a386Sopenharmony_ci} // namespace skstd
46