MPD: lib/icu/Compare.hxx Source File

MPD 0.20.18

Compare.hxx
Go to the documentation of this file.
1 /*
2 * Copyright 2003-2017 The Music Player Daemon Project
3 * http://www.musicpd.org
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19
20 #ifndef MPD_ICU_COMPARE_HXX
21 #define MPD_ICU_COMPARE_HXX
22
23 #include "check.h"
24 #include "Compiler.h"
25 #include "util/AllocatedString.hxx"
26
32 class IcuCompare {
33 AllocatedString<> needle;
34
35 public:
36 IcuCompare():needle(nullptr) {}
37
38 explicit IcuCompare(const char *needle) noexcept;
39
40 IcuCompare(const IcuCompare &src) noexcept
41 :needle(src
42 ? AllocatedString<>::Duplicate(src.needle.c_str())
43 : nullptr) {}
44
45 IcuCompare &operator=(const IcuCompare &src) noexcept {
46 needle = src
47 ? AllocatedString<>::Duplicate(src.needle.c_str())
48 : nullptr;
49 return *this;
50 }
51
52 IcuCompare(IcuCompare &&) = default;
53 IcuCompare &operator=(IcuCompare &&) = default;
54
55 gcc_pure
56 operator bool() const noexcept {
57 return !needle.IsNull();
58 }
59
60 gcc_pure
61 bool operator==(const char *haystack) const noexcept;
62
63 gcc_pure
64 bool IsIn(const char *haystack) const noexcept;
65 };
66
67 #endif
check.h
IcuCompare::operator=
IcuCompare & operator=(const IcuCompare &src) noexcept
Definition: Compare.hxx:45
AllocatedString.hxx
AllocatedString::IsNull
constexpr bool IsNull() const
Definition: AllocatedString.hxx:114
IcuCompare::operator==
gcc_pure bool operator==(const char *haystack) const noexcept
IcuCompare
This class can compare one string ("needle") with lots of other strings ("haystacks") efficiently...
Definition: Compare.hxx:32
IcuCompare::IcuCompare
IcuCompare()
Definition: Compare.hxx:36
Compiler.h
AllocatedString::Duplicate
static AllocatedString Duplicate(const_pointer_type src)
AllocatedString
A string pointer whose memory is managed by this class.
Definition: Util.hxx:29
IcuCompare::IcuCompare
IcuCompare(const IcuCompare &src) noexcept
Definition: Compare.hxx:40
IcuCompare::IsIn
gcc_pure bool IsIn(const char *haystack) const noexcept
gcc_pure
#define gcc_pure
Definition: Compiler.h:116