QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
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 , mLock{}
53 {
54 other.mLock.lockForRead();
55 mSourceDestDatumTransforms = other.mSourceDestDatumTransforms;
56 other.mLock.unlock();
57 }
58
62 class OperationDetails
63 {
64 public:
65 QString operation;
66 bool allowFallback = true;
67
68 // TODO c++20 - replace with = default
69 bool operator==( const OperationDetails &other ) const
70 {
71 return operation == other.operation && allowFallback == other.allowFallback;
72 }
73 };
74 QMap< QPair< QgsCoordinateReferenceSystem, QgsCoordinateReferenceSystem >, OperationDetails > mSourceDestDatumTransforms;
75
77 mutable QReadWriteLock mLock{};
78
79 private:
80 QgsCoordinateTransformContextPrivate &operator= ( const QgsCoordinateTransformContextPrivate & ) = delete;
81};
82
83
85
86
87#endif // QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
88
89
90
91
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)