QGIS API Documentation  3.8.0-Zanzibar (11aff65)
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
7  email : matthias@opengis.ch
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 
35 template<typename T>
36 class 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
bool enabled() const
Check if this optional is enabled.
Definition: qgsoptional.h:89
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)
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
QgsOptional(const T &data)
A QgsOptional is enabled by default if constructed with payload.
Definition: qgsoptional.h:48
QgsOptional is a container for other classes and adds an additional enabled/disabled flag...
Definition: qgsoptional.h:36
T data() const
Access the payload data.
Definition: qgsoptional.h:119
void setEnabled(bool enabled)
Set if this optional is enabled.
Definition: qgsoptional.h:99
const T * operator->() const
Access the payload data.
Definition: qgsoptional.h:109