-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
qgsprovidermetadata.sip.in
119 lines (89 loc) · 3.75 KB
/
qgsprovidermetadata.sip.in
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsprovidermetadata.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsProviderMetadata
{
%Docstring
Holds data provider key, description, and associated shared library file or function pointer information.
Provider metadata refers either to providers which are loaded via libraries or
which are native providers that are included in the core QGIS installation
and accessed through function pointers.
For library based providers, the metadata class is used in a lazy load
implementation in QgsProviderRegistry. To save memory, data providers
are only actually loaded via QLibrary calls if they're to be used. (Though they're all
iteratively loaded once to get their metadata information, and then
unloaded when the QgsProviderRegistry is created.) QgsProviderMetadata
supplies enough information to be able to later load the associated shared
library object.
%End
%TypeHeaderCode
#include "qgsprovidermetadata.h"
%End
public:
QgsProviderMetadata( const QString &_key, const QString &_description, const QString &_library );
QgsProviderMetadata( const QString &key, const QString &description, SIP_PYCALLABLE / AllowNone / );
%Docstring
Metadata for provider with direct provider creation function pointer, where
no library is involved.
.. versionadded:: 3.0
.. note::
not available in Python bindings
%End
%MethodCode
// Make sure the callable doesn't get garbage collected
Py_INCREF( a2 );
Py_BEGIN_ALLOW_THREADS
sipCpp = new QgsProviderMetadata( *a0, *a1, [a2]( const QString &dataSource ) -> QgsDataProvider*
{
QgsDataProvider *provider;
provider = nullptr;
PyObject *sipResObj;
SIP_BLOCK_THREADS
sipResObj = sipCallMethod( NULL, a2, "N", new QString( dataSource ), sipType_QString, NULL );
Py_DECREF( a2 );
if ( sipResObj )
{
// Py_DECREF(sipResObj);
if ( sipCanConvertToType( sipResObj, sipType_QgsDataProvider, SIP_NOT_NONE ) )
{
int state0;
int sipIsErr = 0;
provider = reinterpret_cast<QgsDataProvider *>( sipConvertToType( sipResObj, sipType_QgsDataProvider, NULL, SIP_NOT_NONE, &state0, &sipIsErr ) );
if ( sipIsErr != 0 )
{
provider = nullptr;
}
}
}
SIP_UNBLOCK_THREADS
return provider;
} );
Py_END_ALLOW_THREADS
%End
QString key() const;
%Docstring
This returns the unique key associated with the provider
This key string is used for the associative container in :py:class:`QgsProviderRegistry`
%End
QString description() const;
%Docstring
This returns descriptive text for the provider
This is used to provide a descriptive list of available data providers.
%End
QString library() const;
%Docstring
This returns the library file name
This is used to QLibrary calls to load the data provider.
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/qgsprovidermetadata.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/