ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/branches/udr/udr/source/FBUDRIntf.pas
Revision: 392
Committed: Wed Feb 9 16:17:50 2022 UTC (2 years, 2 months ago) by tony
Content type: text/x-pascal
File size: 7424 byte(s)
Log Message:
cloneAttachment and GetServiceManager added

File Contents

# Content
1 (*
2 * Firebird UDR Support (fbudr). The fbudr components provide a set of
3 * Pascal language bindings for the Firebird API in support of server
4 * side User Defined Routines (UDRs). The fbudr package is an extension
5 * to the Firebird Pascal API.
6 *
7 * The contents of this file are subject to the Initial Developer's
8 * Public License Version 1.0 (the "License"); you may not use this
9 * file except in compliance with the License. You may obtain a copy
10 * of the License here:
11 *
12 * http://www.firebirdsql.org/index.php?op=doc&id=idpl
13 *
14 * Software distributed under the License is distributed on an "AS
15 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
16 * implied. See the License for the specific language governing rights
17 * and limitations under the License.
18 *
19 * The Initial Developer of the Original Code is Tony Whyman.
20 *
21 * The Original Code is (C) 2021 Tony Whyman, MWA Software
22 * (http://www.mwasoftware.co.uk).
23 *
24 * All Rights Reserved.
25 *
26 * Contributor(s): ______________________________________.
27 *
28 *)
29 unit FBUDRIntf;
30
31 {$IFDEF MSWINDOWS}
32 {$DEFINE WINDOWS}
33 {$ENDIF}
34
35 {$IFDEF FPC}
36 {$mode delphi}
37 {$codepage UTF8}
38 {$interfaces COM}
39 {$ENDIF}
40
41 interface
42
43 uses
44 Classes, SysUtils, Firebird, IB, IBExternals;
45
46 type
47 {The IFBUDRExternalContext interface provides the Firebird IExternalContext
48 interface as a native pascal interface}
49
50 IFBUDRExternalContext = interface
51 ['{00b2616d-12e0-436a-8c2c-58670a2be805}']
52 function GetFirebirdAPI: IFirebirdAPI;
53 function GetAttachment: IAttachment;
54 function GetTransaction: ITransaction;
55 function GetUserName: AnsiString;
56 function GetDatabaseName: AnsiString;
57 function GetClientCharSet: AnsiString;
58 function obtainInfoCode: Integer;
59 function getInfo(code: Integer): Pointer;
60 function setInfo(code: Integer; value: Pointer): Pointer;
61 function cloneAttachment: IAttachment;
62 function GetServiceManager: IServiceManager;
63 function getStatus: Firebird.IStatus;
64 procedure CheckStatus;
65 function HasConfigFile: boolean;
66 function ReadConfigString(Section, Ident, DefaultValue: AnsiString): AnsiString;
67 function ReadConfigInteger(Section, Ident: AnsiString; DefaultValue: integer): integer;
68 function ReadConfigBool(Section, Ident: AnsiString; DefaultValue: boolean): boolean;
69 procedure WriteToLog(Msg: AnsiString);
70 end;
71
72 TFBUDRTriggerType = (ttAfter, ttBefore, ttDatabase);
73 IFBUDRMessageMetadata = interface;
74
75 {The IFBUDRRoutineMetadata interface provides the Firebird IRoutineMetadata
76 interface as a native Pascal interface}
77
78 IFBUDRRoutineMetadata = interface
79 ['{28a03226-e8df-40e8-b67f-d3dc27886e9f}']
80 function getPackage: AnsiString;
81 function getName: AnsiString;
82 function getEntryPoint: AnsiString; {response is parsed into the following three components}
83 function getModuleName: AnsiString;
84 function getRoutineName: AnsiString;
85 function getInfo: AnsiString;
86 function getBody: AnsiString;
87 function HasInputMetadata: boolean;
88 function HasOutputMetadata: boolean;
89 function HasTriggerMetadata: boolean;
90 function getFBInputMetadata: IFBUDRMessageMetadata;
91 function getFBOutputMetadata: IFBUDRMessageMetadata;
92 function getFBTriggerMetadata: IFBUDRMessageMetadata;
93 function getTriggerTable: AnsiString;
94 function getTriggerType: TFBUDRTriggerType;
95 end;
96
97 {IFBUDRProcMetadata is a subset of IFBUDRRoutineMetadata and is used to provide
98 additional information for procedure and function calls}
99
100 IFBUDRProcMetadata = interface
101 ['{d20fc3ae-635e-4841-ad79-b4cd88be75d8}']
102 function getPackage: AnsiString;
103 function getName: AnsiString;
104 function getEntryPoint: AnsiString;
105 function getModuleName: AnsiString;
106 function getRoutineName: AnsiString;
107 function getInfo: AnsiString;
108 end;
109
110 {IFBUDRTriggerMetaData is a subset of IFBUDRRoutineMetadata and is used to provide
111 additional information for triggers}
112
113 IFBUDRTriggerMetaData = interface
114 ['{9458bad8-809a-469a-b13f-3a3ab95f8d94}']
115 function getName: AnsiString;
116 function getModuleName: AnsiString;
117 function getRoutineName: AnsiString;
118 function getInfo: AnsiString;
119 function getTriggerTable: AnsiString;
120 function getTriggerType: TFBUDRTriggerType;
121 end;
122
123
124 {IFBUDRInputParams is a subset of the IResults interface and is used to provide
125 the input parameters to an external function, procedure or trigger as a
126 Pascal interface using Pascal native types.}
127
128 IFBUDRInputParams = interface
129 ['{e49d096e-3a9c-4f75-bb39-db32b1897312}']
130 function getCount: integer;
131 function getSQLData(index: integer): ISQLData;
132 function ParamExists(Idx: AnsiString): boolean;
133 function ByName(Idx: AnsiString): ISQLData;
134 property Data[index: integer]: ISQLData read getSQLData; default;
135 property Count: integer read getCount;
136 end;
137
138 {IFBUDROutputData is a subset of the ISQLParams interface and is used to return the
139 each output row for an external procedure}
140
141 IFBUDROutputData = interface
142 ['{8a7d7890-e9a4-430b-8cbc-3874b5f66b31}']
143 function getCount: integer;
144 function getSQLParam(index: integer): ISQLParam;
145 function GetModified: Boolean;
146 function GetHasCaseSensitiveParams: Boolean;
147 function FieldExists(Idx: AnsiString): boolean;
148 function ByName(Idx: AnsiString): ISQLParam ;
149 procedure Clear;
150 property Modified: Boolean read GetModified;
151 property Params[index: integer]: ISQLParam read getSQLParam; default;
152 property Count: integer read getCount;
153 end;
154
155 {IFBUDRMetadataBuilder provides the FIrebird IMetadataBuilder interface
156 as a native Pascal Interface}
157
158 IFBUDRMetadataBuilder = interface
159 ['{a6876fed-fd70-40f0-b965-6c43b8c5c00d}']
160 procedure setType(index: Cardinal; type_: Cardinal);
161 procedure setSubType(index: Cardinal; subType: Integer);
162 procedure setLength(index: Cardinal; length: Cardinal);
163 procedure setCharSet(index: Cardinal; charSet: Cardinal);
164 procedure setScale(index: Cardinal; scale: Integer);
165 procedure truncate(count: Cardinal);
166 procedure moveNameToIndex(name: AnsiString; index: Cardinal);
167 procedure remove(index: Cardinal);
168 function addField:Cardinal;
169 procedure setField(index: Cardinal; field: AnsiString);
170 procedure setRelation(index: Cardinal; relation: AnsiString);
171 procedure setOwner(index: Cardinal; owner: AnsiString);
172 procedure setAlias(index: Cardinal; alias: AnsiString);
173 end;
174
175 IFBUDRMessageMetadata = interface
176 ['{da84190f-91a3-40ae-9fab-bbfd98a49dcb}']
177 function getCount: Cardinal;
178 function getField(index: Cardinal): AnsiString;
179 function getRelation(index: Cardinal): AnsiString;
180 function getOwner(index: Cardinal): AnsiString;
181 function getAlias(index: Cardinal): AnsiString;
182 function getType(index: Cardinal): Cardinal;
183 function isNullable(index: Cardinal): Boolean;
184 function getSubType(index: Cardinal): Integer;
185 function getLength(index: Cardinal): Cardinal;
186 function getScale(index: Cardinal): Integer;
187 function getCharSet(index: Cardinal): Cardinal;
188 function getOffset(index: Cardinal): Cardinal;
189 function getNullOffset(index: Cardinal): Cardinal;
190 function getBuilder: IFBUDRMetadataBuilder;
191 function getMessageLength: Cardinal;
192 function getAlignment: Cardinal;
193 function getAlignedLength: Cardinal;
194 end;
195
196
197
198 implementation
199
200 end.
201

Properties

Name Value
svn:eol-style native