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 
19  {
20  if (this->isEmpty()) { return CSimulatorInfoList(); }
21  QList<int> simIndexes;
22  CSimulatorInfoList newList;
23  for (const CSimulatorInfo &simulator : *this)
24  {
25  const int i = static_cast<int>(simulator.getSimulator());
26  if (simIndexes.contains(i)) { continue; }
27  newList.push_back(simulator);
28  simIndexes.append(i);
29  }
30  return newList;
31  }
32 
34  {
35  if (this->isEmpty()) { return CSimulatorInfoList(); }
36  CSimulatorInfoList newList;
37  for (const CSimulatorInfo &simulator : *this)
38  {
39  if (simulator.isUnspecified() || simulator.isNoSimulator()) { continue; }
40  if (simulator.isSingleSimulator()) { newList.push_back(simulator); }
41  else { newList.push_back(splitIntoSingleSimulators(simulator)); }
42  }
43  return newList;
44  }
45 
47  {
48  CSimulatorInfoList sims;
49  if (sim.isFS9()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::FS9)); }
50  if (sim.isFSX()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::FSX)); }
51  if (sim.isP3D()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::P3D)); }
52  if (sim.isMSFS()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::MSFS)); }
53  if (sim.isMSFS2024()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::MSFS2024)); }
54  if (sim.isXPlane()) { sims.push_back(CSimulatorInfo(CSimulatorInfo::XPLANE)); }
55  return sims;
56  }
57 } // 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 withNoDuplicates() const
Find by id or alias.
CSimulatorInfoList splitIntoSingleSimulators() const
Split into single simulators, unknown simulators are ignored.
#define SWIFT_DEFINE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template definition of mixins for a CSequence subclass.
Definition: sequence.h:63