File indexing completed on 2024-05-19 05:57:23

0001 // SPDX-FileCopyrightText: 2022 Plata Hill <plata.hill@kdemail.net>
0002 // SPDX-License-Identifier: LGPL-2.1-or-later
0003 
0004 #pragma once
0005 
0006 #include <QString>
0007 
0008 struct ChannelTag {
0009 };
0010 struct GroupTag {
0011 };
0012 struct ProgramTag {
0013 };
0014 
0015 template<class Tag>
0016 struct QStringId {
0017     explicit QStringId(const QString &id)
0018         : m_id(id)
0019     {
0020     }
0021     QStringId()
0022         : m_id()
0023     {
0024     }
0025 
0026     const QString &value() const
0027     {
0028         return m_id;
0029     }
0030 
0031 private:
0032     QString m_id;
0033 
0034     friend bool operator==(const QStringId &l, const QStringId &r)
0035     {
0036         return l.m_id == r.m_id;
0037     }
0038 
0039     friend bool operator!=(const QStringId &l, const QStringId &r)
0040     {
0041         return !(l == r);
0042     }
0043 
0044     friend bool operator<(const QStringId &l, const QStringId &r)
0045     {
0046         return l.m_id < r.m_id;
0047     }
0048 };
0049 
0050 using ChannelId = QStringId<ChannelTag>;
0051 using GroupId = QStringId<GroupTag>;
0052 using ProgramId = QStringId<ProgramTag>;
0053 
0054 class Error
0055 {
0056 public:
0057     Error()
0058         : m_id(0)
0059         , m_message("")
0060     {
0061     }
0062 
0063     explicit Error(const QString &message)
0064         : m_id(0)
0065         , m_message(message)
0066     {
0067     }
0068 
0069     Error(int id, const QString &message)
0070         : m_id(id)
0071         , m_message(message)
0072     {
0073     }
0074 
0075     void reset()
0076     {
0077         m_id = 0;
0078         m_message = "";
0079     }
0080 
0081     int m_id;
0082     QString m_message;
0083 };