mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-24 07:55:35 +08:00
80 lines
3.4 KiB
C++
80 lines
3.4 KiB
C++
// SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
|
|
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
|
|
|
|
#include "core/webreaderflags.h"
|
|
|
|
using namespace swift::misc::network;
|
|
|
|
namespace swift::core
|
|
{
|
|
CWebReaderFlags::WebReader CWebReaderFlags::entitiesToReaders(CEntityFlags::Entity entities)
|
|
{
|
|
WebReader f = None;
|
|
if (entities.testFlag(CEntityFlags::AircraftIcaoEntity) || entities.testFlag(CEntityFlags::AirlineIcaoEntity) ||
|
|
entities.testFlag(CEntityFlags::CountryEntity) || entities.testFlag(CEntityFlags::AircraftCategoryEntity))
|
|
{
|
|
f |= IcaoDataReader;
|
|
}
|
|
|
|
if (entities.testFlag(CEntityFlags::ModelEntity) || entities.testFlag(CEntityFlags::DistributorEntity) ||
|
|
entities.testFlag(CEntityFlags::LiveryEntity))
|
|
{
|
|
f |= ModelReader;
|
|
}
|
|
|
|
if (entities.testFlag(CEntityFlags::AirportEntity)) { f |= AirportReader; }
|
|
|
|
if (entities.testFlag(CEntityFlags::DbInfoObjectEntity)) { f |= DbInfoDataReader; }
|
|
if (entities.testFlag(CEntityFlags::VatsimDataFile)) { f |= VatsimDataReader; }
|
|
if (entities.testFlag(CEntityFlags::VatsimStatusFile)) { f |= VatsimStatusReader; }
|
|
if (entities.testFlag(CEntityFlags::MetarEntity)) { f |= VatsimMetarReader; }
|
|
|
|
return f;
|
|
}
|
|
|
|
CWebReaderFlags::WebReader CWebReaderFlags::webReaderFlagToWebReader(CWebReaderFlags::WebReaderFlag flag)
|
|
{
|
|
return static_cast<WebReader>(flag);
|
|
}
|
|
|
|
CEntityFlags::Entity CWebReaderFlags::allEntitiesForReaders(WebReader readers)
|
|
{
|
|
CEntityFlags::Entity entities = CEntityFlags::NoEntity;
|
|
if (readers.testFlag(IcaoDataReader)) { entities |= CEntityFlags::AllIcaoCountriesCategory; }
|
|
if (readers.testFlag(ModelReader)) { entities |= CEntityFlags::DistributorLiveryModel; }
|
|
if (readers.testFlag(AirportReader)) { entities |= CEntityFlags::AirportEntity; }
|
|
if (readers.testFlag(DbInfoDataReader)) { entities |= CEntityFlags::DbInfoObjectEntity; }
|
|
if (readers.testFlag(VatsimMetarReader)) { entities |= CEntityFlags::MetarEntity; }
|
|
if (readers.testFlag(VatsimDataReader)) { entities |= CEntityFlags::VatsimDataFile; }
|
|
if (readers.testFlag(VatsimStatusReader)) { entities |= CEntityFlags::VatsimStatusFile; }
|
|
return entities;
|
|
}
|
|
|
|
// some strange Doxygen warning, added KB 2017-11
|
|
//! \cond PRIVATE
|
|
bool CWebReaderFlags::isFromSwiftDb(CEntityFlags::Entity entity)
|
|
{
|
|
Q_ASSERT_X(CEntityFlags::isSingleEntity(entity), Q_FUNC_INFO, "Need single entity");
|
|
return CWebReaderFlags::isFromSwiftDb(entitiesToReaders(entity));
|
|
}
|
|
//! \endcond
|
|
|
|
bool CWebReaderFlags::isFromSwiftDb(WebReader reader)
|
|
{
|
|
return reader.testFlag(ModelReader) || reader.testFlag(IcaoDataReader) || reader.testFlag(DbInfoDataReader) ||
|
|
reader.testFlag(AirportReader);
|
|
}
|
|
|
|
int CWebReaderFlags::numberOfReaders(WebReader readers)
|
|
{
|
|
int n = 0;
|
|
if (readers.testFlag(ModelReader)) { n++; }
|
|
if (readers.testFlag(IcaoDataReader)) { n++; }
|
|
if (readers.testFlag(AirportReader)) { n++; }
|
|
if (readers.testFlag(DbInfoDataReader)) { n++; }
|
|
return n;
|
|
}
|
|
|
|
bool CWebReaderFlags::isSingleReader(WebReader readers) { return numberOfReaders(readers) == 1; }
|
|
} // namespace swift::core
|