summaryrefslogtreecommitdiffstats
path: root/xbmc/pvr/channels/PVRChannelNumber.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 18:07:22 +0000
commitc04dcc2e7d834218ef2d4194331e383402495ae1 (patch)
tree7333e38d10d75386e60f336b80c2443c1166031d /xbmc/pvr/channels/PVRChannelNumber.h
parentInitial commit. (diff)
downloadkodi-c04dcc2e7d834218ef2d4194331e383402495ae1.tar.xz
kodi-c04dcc2e7d834218ef2d4194331e383402495ae1.zip
Adding upstream version 2:20.4+dfsg.upstream/2%20.4+dfsg
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'xbmc/pvr/channels/PVRChannelNumber.h')
-rw-r--r--xbmc/pvr/channels/PVRChannelNumber.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/xbmc/pvr/channels/PVRChannelNumber.h b/xbmc/pvr/channels/PVRChannelNumber.h
new file mode 100644
index 0000000..b6e2efc
--- /dev/null
+++ b/xbmc/pvr/channels/PVRChannelNumber.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2017-2018 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include <string>
+
+namespace PVR
+{
+ class CPVRChannelNumber
+ {
+ public:
+ CPVRChannelNumber() = default;
+
+ constexpr CPVRChannelNumber(unsigned int iChannelNumber, unsigned int iSubChannelNumber)
+ : m_iChannelNumber(iChannelNumber), m_iSubChannelNumber(iSubChannelNumber) {}
+
+ constexpr bool operator ==(const CPVRChannelNumber& right) const
+ {
+ return (m_iChannelNumber == right.m_iChannelNumber &&
+ m_iSubChannelNumber == right.m_iSubChannelNumber);
+ }
+
+ constexpr bool operator !=(const CPVRChannelNumber& right) const
+ {
+ return !(*this == right);
+ }
+
+ constexpr bool operator <(const CPVRChannelNumber& right) const
+ {
+ return m_iChannelNumber == right.m_iChannelNumber
+ ? m_iSubChannelNumber < right.m_iSubChannelNumber
+ : m_iChannelNumber < right.m_iChannelNumber;
+ }
+
+ /*!
+ * @brief Check whether this channel number is valid (main channel number > 0).
+ * @return True if valid, false otherwise..
+ */
+ constexpr bool IsValid() const { return m_iChannelNumber > 0; }
+
+ /*!
+ * @brief Set the primary channel number.
+ * @return The channel number.
+ */
+ constexpr unsigned int GetChannelNumber() const
+ {
+ return m_iChannelNumber;
+ }
+
+ /*!
+ * @brief Set the sub channel number.
+ * @return The sub channel number (ATSC).
+ */
+ constexpr unsigned int GetSubChannelNumber() const
+ {
+ return m_iSubChannelNumber;
+ }
+
+ /*!
+ * @brief The character used to separate channel and subchannel number.
+ */
+ static const char SEPARATOR; // '.'
+
+ /*!
+ * @brief Get a string representation for the channel number.
+ * @return The formatted string in the form <channel>SEPARATOR<subchannel>.
+ */
+ std::string FormattedChannelNumber() const;
+
+ /*!
+ * @brief Get a string representation for the channel number that can be used for SortItems.
+ * @return The sortable string in the form <channel> <subchannel>.
+ */
+ std::string SortableChannelNumber() const;
+
+ private:
+ std::string ToString(char separator) const;
+
+ unsigned int m_iChannelNumber = 0;
+ unsigned int m_iSubChannelNumber = 0;
+ };
+}