swift
aircraftenginelist.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (C) 2014 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #ifndef SWIFT_MISC_AVIATION_AIRCRAFTENGINELIST_H
7 #define SWIFT_MISC_AVIATION_AIRCRAFTENGINELIST_H
8 
9 #include <initializer_list>
10 #include <tuple>
11 
12 #include <QJsonObject>
13 #include <QMetaType>
14 
16 #include "misc/collection.h"
17 #include "misc/json.h"
18 #include "misc/sequence.h"
19 #include "misc/swiftmiscexport.h"
20 
21 SWIFT_DECLARE_SEQUENCE_MIXINS(swift::misc::aviation, CAircraftEngine, CAircraftEngineList)
22 
23 namespace swift::misc::aviation
24 {
27  public CSequence<CAircraftEngine>,
28  public mixin::MetaType<CAircraftEngineList>,
29  public mixin::JsonOperators<CAircraftEngineList>
30  {
31  public:
34 
36  CAircraftEngineList() = default;
37 
39  CAircraftEngineList(std::initializer_list<bool> enginesOnOff);
40 
43 
46  CAircraftEngine getEngine(int engineNumber) const;
47 
50  bool isEngineOn(int engineNumber) const;
51 
54  void setEngineOn(int engineNumber, bool on);
55 
57  void setEngines(const CAircraftEngine &engine, int engineNumber);
58 
60  void initEngines(int engineNumber, bool on);
61 
63  bool isAnyEngineOn() const;
64 
66  QJsonObject toJson() const;
67 
69  void convertFromJson(const QJsonObject &json);
70  };
71 } // namespace swift::misc::aviation
72 
75 
76 #endif // SWIFT_MISC_AVIATION_AIRCRAFTENGINELIST_H
Generic ordered container with value semantics.
Definition: collection.h:107
Generic sequential container with value semantics.
Definition: sequence.h:86
CSequence()=default
Default constructor.
Value object encapsulating information about aircraft's engines.
Value object encapsulating a list of aircraft engines.
CAircraftEngineList()=default
Default constructor.
CRTP class template which will generate marshalling operators for a derived class with its own marsha...
Definition: mixinjson.h:37
CRTP class template from which a derived class can inherit common methods dealing with the metatype o...
Definition: mixinmetatype.h:29
#define SWIFT_MISC_DECLARE_USING_MIXIN_METATYPE(DERIVED)
When a derived class and a base class both inherit from mixin::MetaType, the derived class uses this ...
#define SWIFT_DECLARE_SEQUENCE_MIXINS(Namespace, T, List)
Explicit template declaration of mixins for a CSequence subclass to be placed near the top of the hea...
Definition: sequence.h:62
#define SWIFT_MISC_EXPORT
Export a class or function from the library.