-
-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathref-intf.txt
More file actions
152 lines (123 loc) · 4.64 KB
/
Copy pathref-intf.txt
File metadata and controls
152 lines (123 loc) · 4.64 KB
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
.. module:: firebird.driver.interfaces
:synopsis: Interface wrappers for Firebird new API
==========================
firebird.driver.interfaces
==========================
This module contains interface wrappers for Firebird new API.
.. important::
1. Firebird OO API interfaces use inheritance, i.e. they could be inherited from other
interface. In fact, all interfaces returned by Firebird are inherited from `IVersioned`
interface.
2. Firebird OO API interfaces are versioned. Any addition to particular interface
increases its version number. Application developers are responsible to check the
version of returned interface to verify that it supports methods they want to use.
If you want to use Firebird OO API interfaces directly in you application, read next
section very carefuly.
In Python driver, interfaces are represented as instances of interface wrapper classes
that expose the methods provided by particular Firebird interface version. The wrapper
class hierarchy thus represent not only inheritabce between Firebird interfaces, but also
between versions of particular Firebird interface.
Because all interfaces returned by Firebird are inherited from `IVersioned` interface,
all wrapper classes have `VERSION` class attribute that contain version number of wrapped
interface.
Each Firebird interface has it's "canonical" Python wrapper with coresponding name. For
example interface `IService` has wrapper class `.iService`. However, if there are multiple
public versions of Firebird interface, there are multiple wrapper classes for each published
interface version (interim, non-public versions used during Firebird development are skipped).
These wrapper classes have names based on their canonical name with suffix that represent
the interface version they wrap. It means that canonical wrapper **always** represents
the highest interface version.
Whenever Firebird interface is returned from Firebird OO API call, it's wrapped to its
Python wrapper class according to interface type and version. The Python driver ensures
that correct wrapper class is used according to returned interface version.
However, this architecture has several important consequences:
1. The interface wrapper classes may change between driver releases as new interface versions
are introduced. For example, driver versions up to 1.5.2 had only canonical `.iService`
(version 3), but in version 1.6.0 it was renamed to `.iService_v3`, new wrappers
`.iService_v4` and (new canonical) `.iService` (version 5) were added.
2. Instead using `isinstance` to check interface versions, you should always use
`VERSION` attribute on wrapper class instance.
Metaclasses
===========
.. autoclass:: iVersionedMeta
Firebird API Interface wrappers
===============================
Base interfaces
---------------
.. autoclass:: iVersioned
.. autoclass:: iReferenceCounted
.. autoclass:: iDisposable
.. autoclass:: iStatus
.. autoclass:: iPluginBase
.. autoclass:: iMaster
Configuration
-------------
.. autoclass:: iConfigEntry
.. autoclass:: iConfig
.. autoclass:: iFirebirdConf_v3
.. autoclass:: iFirebirdConf
.. autoclass:: iConfigManager_v2
.. autoclass:: iConfigManager
Database and service attachments
--------------------------------
.. autoclass:: iProvider
.. autoclass:: iAttachment_v3
.. autoclass:: iAttachment_v4
.. autoclass:: iAttachment
.. autoclass:: iService_v3
.. autoclass:: iService_v4
.. autoclass:: iService
.. autoclass:: iXpbBuilder
Blobs
-----
.. autoclass:: iBlob_v3
.. autoclass:: iBlob
Transactions
------------
.. autoclass:: iTransaction_v3
.. autoclass:: iTransaction
.. autoclass:: iDtcStart
.. autoclass:: iDtc
Metadata
--------
.. autoclass:: iMessageMetadata_v3
.. autoclass:: iMessageMetadata
.. autoclass:: iMetadataBuilder_v3
.. autoclass:: iMetadataBuilder
SQL execution
-------------
.. autoclass:: iStatement_v3
.. autoclass:: iStatement_v4
.. autoclass:: iStatement
.. autoclass:: iResultSet_v3
.. autoclass:: iResultSet
.. autoclass:: iBatch_v3
.. autoclass:: iBatch
.. autoclass:: iBatchCompletionState
Events
------
.. autoclass:: iEvents_v3
.. autoclass:: iEvents
Utilities
---------
.. autoclass:: iTimerControl
.. autoclass:: iUtil_v2
.. autoclass:: iUtil
.. autoclass:: iDecFloat16
.. autoclass:: iDecFloat34
.. autoclass:: iInt128
Other
-----
.. autoclass:: iPluginManager
.. autoclass:: iRequest_v3
.. autoclass:: iRequest
Interface implementations
=========================
.. autoclass:: iVersionedImpl
.. autoclass:: iReferenceCountedImpl
.. autoclass:: iDisposableImpl
.. autoclass:: iVersionCallbackImpl
.. autoclass:: iCryptKeyCallbackImpl
.. autoclass:: iOffsetsCallbackImp
.. autoclass:: iEventCallbackImpl
.. autoclass:: iTimerImpl