swift
webreaderflags.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "core/webreaderflags.h"
5 
6 using namespace swift::misc::network;
7 
8 namespace swift::core
9 {
10  CWebReaderFlags::WebReader CWebReaderFlags::entitiesToReaders(CEntityFlags::Entity entities)
11  {
12  WebReader f = None;
13  if (entities.testFlag(CEntityFlags::AircraftIcaoEntity) || entities.testFlag(CEntityFlags::AirlineIcaoEntity) ||
14  entities.testFlag(CEntityFlags::CountryEntity) || entities.testFlag(CEntityFlags::AircraftCategoryEntity))
15  {
16  f |= IcaoDataReader;
17  }
18 
19  if (entities.testFlag(CEntityFlags::ModelEntity) || entities.testFlag(CEntityFlags::DistributorEntity) ||
20  entities.testFlag(CEntityFlags::LiveryEntity))
21  {
22  f |= ModelReader;
23  }
24 
25  if (entities.testFlag(CEntityFlags::AirportEntity)) { f |= AirportReader; }
26 
27  if (entities.testFlag(CEntityFlags::DbInfoObjectEntity)) { f |= DbInfoDataReader; }
28  if (entities.testFlag(CEntityFlags::VatsimDataFile)) { f |= VatsimDataReader; }
29  if (entities.testFlag(CEntityFlags::VatsimStatusFile)) { f |= VatsimStatusReader; }
30  if (entities.testFlag(CEntityFlags::MetarEntity)) { f |= VatsimMetarReader; }
31 
32  return f;
33  }
34 
35  CWebReaderFlags::WebReader CWebReaderFlags::webReaderFlagToWebReader(CWebReaderFlags::WebReaderFlag flag)
36  {
37  return static_cast<WebReader>(flag);
38  }
39 
40  CEntityFlags::Entity CWebReaderFlags::allEntitiesForReaders(WebReader readers)
41  {
42  CEntityFlags::Entity entities = CEntityFlags::NoEntity;
43  if (readers.testFlag(IcaoDataReader)) { entities |= CEntityFlags::AllIcaoCountriesCategory; }
44  if (readers.testFlag(ModelReader)) { entities |= CEntityFlags::DistributorLiveryModel; }
45  if (readers.testFlag(AirportReader)) { entities |= CEntityFlags::AirportEntity; }
46  if (readers.testFlag(DbInfoDataReader)) { entities |= CEntityFlags::DbInfoObjectEntity; }
47  if (readers.testFlag(VatsimMetarReader)) { entities |= CEntityFlags::MetarEntity; }
48  if (readers.testFlag(VatsimDataReader)) { entities |= CEntityFlags::VatsimDataFile; }
49  if (readers.testFlag(VatsimStatusReader)) { entities |= CEntityFlags::VatsimStatusFile; }
50  return entities;
51  }
52 
53  // some strange Doxygen warning, added KB 2017-11
55  bool CWebReaderFlags::isFromSwiftDb(CEntityFlags::Entity entity)
56  {
57  Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity");
58  return CWebReaderFlags::isFromSwiftDb(entitiesToReaders(entity));
59  }
61 
62  bool CWebReaderFlags::isFromSwiftDb(WebReader reader)
63  {
64  return reader.testFlag(ModelReader) || reader.testFlag(IcaoDataReader) || reader.testFlag(DbInfoDataReader) ||
65  reader.testFlag(AirportReader);
66  }
67 
68  int CWebReaderFlags::numberOfReaders(WebReader readers)
69  {
70  int n = 0;
71  if (readers.testFlag(ModelReader)) { n++; }
72  if (readers.testFlag(IcaoDataReader)) { n++; }
73  if (readers.testFlag(AirportReader)) { n++; }
74  if (readers.testFlag(DbInfoDataReader)) { n++; }
75  return n;
76  }
77 
78  bool CWebReaderFlags::isSingleReader(WebReader readers) { return numberOfReaders(readers) == 1; }
79 } // namespace swift::core
WebReaderFlag
Which readers to init.
static bool isSingleEntity(CEntityFlags::Entity flag)
Representing single entity?
Definition: entityflags.cpp:64
@ AircraftCategoryEntity
aircraft category entities
Definition: entityflags.h:40
@ VatsimStatusFile
the VATSIM status file (URLs for data files etc.)
Definition: entityflags.h:38
@ DbInfoObjectEntity
info about DB data (kind of metadata)
Definition: entityflags.h:28
@ AirlineIcaoEntity
ICAO codes for airlines.
Definition: entityflags.h:31
@ AircraftIcaoEntity
ICAO codes for aircraft.
Definition: entityflags.h:30
@ AllIcaoCountriesCategory
includes category
Definition: entityflags.h:45
@ VatsimDataFile
the VATSIM data file (multiple data entities)
Definition: entityflags.h:37
Backend services of the swift project, like dealing with the network or the simulators.
Definition: actionbind.cpp:7