swift
simulatorinfolist.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <tuple>
7 
8 #include <QList>
9 
10 SWIFT_DEFINE_SEQUENCE_MIXINS(swift::misc::simulation, CSimulatorInfo, CSimulatorInfoList)
11 
12 namespace swift::misc::simulation
13 {
15 
17  {
18  if (this->isEmpty()) { return {}; }
19  QList<int> simIndexes;
20  CSimulatorInfoList newList;
21  for (const CSimulatorInfo &simulator : *this)
22  {
23  const int i = static_cast<int>(simulator.getSimulator());
24  if (simIndexes.contains(i)) { continue; }
25  newList.push_back(simulator);
26  simIndexes.append(i);
27  }
28  return newList;
29  }
30 
32  {
33  if (this->isEmpty()) { return {}; }
34  CSimulatorInfoList newList;
35  for (const CSimulatorInfo &simulator : *this)
36  {
37  if (simulator.isUnspecified() || simulator.isNoSimulator()) { continue; }
38  if (simulator.isSingleSimulator()) { newList.push_back(simulator); }
39  else { newList.push_back(splitIntoSingleSimulators(simulator)); }
40  }
41  return newList;
42  }
43 
45  {
46  CSimulatorInfoList sims;
47  if (sim.isFS9()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::FS9)); }
48  if (sim.isFSX()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::FSX)); }
49  if (sim.isP3D()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::P3D)); }
50  if (sim.isMSFS()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::MSFS)); }
51  if (sim.isMSFS2024()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::MSFS2024)); }
52  if (sim.isXPlane()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::XPLANE)); }
53  return sims;
54  }
55 } // namespace swift::misc::simulation
void push_back(const T &value)
Appends an element at the end of the sequence.
Definition: sequence.h:305
bool isEmpty() const
Synonym for empty.
Definition: sequence.h:285
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
bool isSingleSimulator() const
Single simulator selected.
bool isNoSimulator() const
No simulator?
bool isUnspecified() const
Unspecified simulator.
Simulator getSimulator() const
Simulator.
Value object encapsulating a list of distributors.
CSimulatorInfoList()=default
Default constructor.
CSimulatorInfoList withNoDuplicates() const
Find by id or alias.
CSimulatorInfoList splitIntoSingleSimulators() const
Split into single simulators, unknown simulators are ignored.
void append(QList< T > &&value)
bool contains(const AT &value) const const
#define SWIFT_DEFINE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template definition of mixins for a CSequence subclass.
Definition: sequence.h:63