QGIS API Documentation 3.29.0-Master (8c80f25a4f)
qgscoordinatetransformcontext_p.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscoordinatetransformcontext_p.h
3 -------------------------------
4 begin : November 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
19#define QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
20
22
23//
24// W A R N I N G
25// -------------
26//
27// This file is not part of the QGIS API. It exists purely as an
28// implementation detail. This header file may change from version to
29// version without notice, or even be removed.
30//
31
32/***************************************************************************
33 * This class is considered CRITICAL and any change MUST be accompanied with
34 * full unit tests in testqgsfeature.cpp.
35 * See details in QEP #17
36 ****************************************************************************/
37
38#define SIP_NO_FILE
39
41#include "qgsdatumtransform.h"
42
43class QgsCoordinateTransformContextPrivate : public QSharedData
44{
45
46 public:
47
48 QgsCoordinateTransformContextPrivate() = default;
49
50 QgsCoordinateTransformContextPrivate( const QgsCoordinateTransformContextPrivate &other )
51 : QSharedData( other )
52 {
53 other.mLock.lockForRead();
54 mSourceDestDatumTransforms = other.mSourceDestDatumTransforms;
55 other.mLock.unlock();
56 }
57
61 class OperationDetails
62 {
63 public:
64 QString operation;
65 bool allowFallback = true;
66
67 // TODO c++20 - replace with = default
68 bool operator==( const OperationDetails &other ) const
69 {
70 return operation == other.operation && allowFallback == other.allowFallback;
71 }
72 };
73 QMap< QPair< QgsCoordinateReferenceSystem, QgsCoordinateReferenceSystem >, OperationDetails > mSourceDestDatumTransforms;
74
76 mutable QReadWriteLock mLock{};
77
78 private:
79 QgsCoordinateTransformContextPrivate &operator= ( const QgsCoordinateTransformContextPrivate & ) = delete;
80};
81
82
84
85
86#endif // QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
87
88
89
90
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)