QGIS API Documentation 3.29.0-Master (006c3c0232)
qgsoptional.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsoptional.h - QgsOptional
3
4 ---------------------
5 begin : 7.9.2016
6 copyright : (C) 2016 by Matthias Kuhn
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#ifndef QGSOPTIONAL_H
17#define QGSOPTIONAL_H
18
19#include "qgis_core.h"
20
21
35template<typename T>
36class CORE_EXPORT QgsOptional
37{
38 public:
39
43 QgsOptional() = default;
44
48 QgsOptional( const T &data )
49 : mEnabled( true )
50 , mData( data )
51 {
52 }
53
57 QgsOptional( const T &data, bool enabled )
58 : mEnabled( enabled )
59 , mData( data )
60 {
61 }
62
71 bool operator== ( const QgsOptional<T> &other ) const
72 {
73 return mEnabled == other.mEnabled && mData == other.mData;
74 }
75
79 operator bool() const
80 {
81 return mEnabled;
82 }
83
89 bool enabled() const
90 {
91 return mEnabled;
92 }
93
99 void setEnabled( bool enabled )
100 {
101 mEnabled = enabled;
102 }
103
109 const T *operator->() const
110 {
111 return &mData;
112 }
113
119 T data() const
120 {
121 return mData;
122 }
123
129 void setData( const T &data )
130 {
131 mData = data;
132 }
133
134 private:
135 bool mEnabled = false;
136 T mData;
137};
138
139#endif // QGSOPTIONAL_H
QgsOptional is a container for other classes and adds an additional enabled/disabled flag.
Definition: qgsoptional.h:37
bool enabled() const
Check if this optional is enabled.
Definition: qgsoptional.h:89
QgsOptional(const T &data, bool enabled)
A QgsOptional constructed with enabled status and data.
Definition: qgsoptional.h:57
void setData(const T &data)
Set the payload data.
Definition: qgsoptional.h:129
void setEnabled(bool enabled)
Set if this optional is enabled.
Definition: qgsoptional.h:99
T data() const
Access the payload data.
Definition: qgsoptional.h:119
const T * operator->() const
Access the payload data.
Definition: qgsoptional.h:109
QgsOptional(const T &data)
A QgsOptional is enabled by default if constructed with payload.
Definition: qgsoptional.h:48
QgsOptional()=default
A QgsOptional is disabled by default if default constructed.
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)