Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsfeature_p.h 3 : : --------------- 4 : : Date : May-2015 5 : : Copyright : (C) 2015 by Nyall Dawson 6 : : email : nyall dot dawson at gmail dot com 7 : : *************************************************************************** 8 : : * * 9 : : * This program is free software; you can redistribute it and/or modify * 10 : : * it under the terms of the GNU General Public License as published by * 11 : : * the Free Software Foundation; either version 2 of the License, or * 12 : : * (at your option) any later version. * 13 : : * * 14 : : ***************************************************************************/ 15 : : 16 : : #ifndef QGSFEATURE_PRIVATE_H 17 : : #define QGSFEATURE_PRIVATE_H 18 : : 19 : : /// @cond PRIVATE 20 : : 21 : : // 22 : : // W A R N I N G 23 : : // ------------- 24 : : // 25 : : // This file is not part of the QGIS API. It exists purely as an 26 : : // implementation detail. This header file may change from version to 27 : : // version without notice, or even be removed. 28 : : // 29 : : 30 : : /*************************************************************************** 31 : : * This class is considered CRITICAL and any change MUST be accompanied with 32 : : * full unit tests in testqgsfeature.cpp. 33 : : * See details in QEP #17 34 : : ****************************************************************************/ 35 : : 36 : : #include "qgsfields.h" 37 : : 38 : : #include "qgsgeometry.h" 39 : : #include "qgssymbol.h" 40 : : 41 : : class QgsFeaturePrivate : public QSharedData 42 : : { 43 : : public: 44 : : 45 : 2108 : explicit QgsFeaturePrivate( QgsFeatureId id ) 46 : 2108 : : fid( id ) 47 : 2108 : , valid( false ) 48 : 2108 : { 49 : 2108 : } 50 : : 51 : 1058 : QgsFeaturePrivate( const QgsFeaturePrivate &other ) 52 : 1058 : : QSharedData( other ) 53 : 1058 : , fid( other.fid ) 54 : 1058 : , attributes( other.attributes ) 55 : 1058 : , geometry( other.geometry ) 56 : 1058 : , valid( other.valid ) 57 : 1058 : , fields( other.fields ) 58 : 1058 : , symbol( other.symbol ? other.symbol->clone() : nullptr ) 59 : 1058 : { 60 : 1058 : } 61 : : 62 : 3105 : ~QgsFeaturePrivate() 63 : : { 64 : 3105 : } 65 : : 66 : : //! Feature ID 67 : : QgsFeatureId fid; 68 : : 69 : : //! Attributes accessed by field index 70 : : QgsAttributes attributes; 71 : : 72 : : //! Geometry, may be empty if feature has no geometry 73 : : QgsGeometry geometry; 74 : : 75 : : //! Flag to indicate if this feature is valid 76 : : bool valid; 77 : : 78 : : //! Optional field map for name-based attribute lookups 79 : : QgsFields fields; 80 : : 81 : : std::unique_ptr< QgsSymbol > symbol; 82 : : 83 : : private: 84 : : QgsFeaturePrivate &operator=( const QgsFeaturePrivate & ) = delete; 85 : : 86 : : }; 87 : : 88 : : /// @endcond 89 : : 90 : : #endif //QGSFEATURE_PRIVATE_H