summaryrefslogtreecommitdiffstats
path: root/xbmc/guilib/guiinfo/GUIInfo.h
blob: c5bffe8704ff772952838b07687f11572ce79acb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
 *  Copyright (C) 2005-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 <stdint.h>
#include <string>

namespace KODI
{
namespace GUILIB
{
namespace GUIINFO
{

// class to hold multiple integer data
// for storage referenced from a single integer
class CGUIInfo
{
public:
  CGUIInfo(int info, uint32_t data1, int data2, uint32_t flag, const std::string& data3, int data4)
  : m_info(info),
    m_data1(data1),
    m_data2(data2),
    m_data3(data3),
    m_data4(data4)
  {
    if (flag)
      SetInfoFlag(flag);
  }

  explicit CGUIInfo(int info, uint32_t data1 = 0, int data2 = 0, uint32_t flag = 0)
  : m_info(info),
    m_data1(data1),
    m_data2(data2),
    m_data4(0)
  {
    if (flag)
      SetInfoFlag(flag);
  }

  CGUIInfo(int info, uint32_t data1, int data2, const std::string& data3)
    : m_info(info), m_data1(data1), m_data2(data2), m_data3(data3), m_data4(0)
  {
  }

  CGUIInfo(int info, uint32_t data1, const std::string& data3)
  : m_info(info),
    m_data1(data1),
    m_data2(0),
    m_data3(data3),
    m_data4(0)
  {
  }

  CGUIInfo(int info, const std::string& data3)
  : m_info(info),
    m_data1(0),
    m_data2(0),
    m_data3(data3),
    m_data4(0)
  {
  }

  CGUIInfo(int info, const std::string& data3, int data2)
  : m_info(info),
    m_data1(0),
    m_data2(data2),
    m_data3(data3),
    m_data4(0)
  {
  }

  CGUIInfo(int info, const std::string& data3, const std::string& data5)
    : m_info(info), m_data1(0), m_data3(data3), m_data4(0), m_data5(data5)
  {
  }

  bool operator ==(const CGUIInfo &right) const
  {
    return (m_info == right.m_info && m_data1 == right.m_data1 && m_data2 == right.m_data2 &&
            m_data3 == right.m_data3 && m_data4 == right.m_data4 && m_data5 == right.m_data5);
  }

  uint32_t GetInfoFlag() const;
  uint32_t GetData1() const;
  int GetData2() const { return m_data2; }
  const std::string& GetData3() const { return m_data3; }
  int GetData4() const { return m_data4; }
  const std::string& GetData5() const { return m_data5; }

  int m_info;
private:
  void SetInfoFlag(uint32_t flag);

  uint32_t m_data1;
  int m_data2;
  std::string m_data3;
  int m_data4;
  std::string m_data5;
};

} // namespace GUIINFO
} // namespace GUILIB
} // namespace KODI