Skip to content

Commit 0408110

Browse files
committed
Replace internal 'dsc' with public 'paramdsc' in the API. So far they're binary compatible and this breaks nothing. But it prevents problems when 'dsc' is to be extended.
1 parent 6c21404 commit 0408110

File tree

7 files changed

+47
-38
lines changed

7 files changed

+47
-38
lines changed

src/common/dsc.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,19 @@ typedef struct dsc
512512
d.dsc_length = dsc_length;
513513
d.dsc_sub_type = dsc_sub_type;
514514
d.dsc_flags = dsc_flags;
515-
d.dsc_offset = (ULONG)(IPTR)dsc_address;
515+
d.dsc_offset = (ULONG)(IPTR) dsc_address;
516+
return d;
517+
}
518+
519+
operator paramdsc() const
520+
{
521+
paramdsc d;
522+
d.dsc_dtype = dsc_dtype;
523+
d.dsc_scale = dsc_scale;
524+
d.dsc_length = dsc_length;
525+
d.dsc_sub_type = dsc_sub_type;
526+
d.dsc_flags = dsc_flags;
527+
d.dsc_address = dsc_address;
516528
return d;
517529
}
518530

src/include/firebird/FirebirdInterface.idl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1303,7 +1303,7 @@ interface XpbBuilder : Disposable
13031303
// Database trace objects
13041304

13051305
struct PerformanceInfo;
1306-
struct dsc;
1306+
struct paramdsc;
13071307

13081308
interface TraceConnection : Versioned
13091309
{
@@ -1350,7 +1350,7 @@ version: // 3.0.4 -> 3.0.5
13501350
interface TraceParams : Versioned
13511351
{
13521352
uint getCount();
1353-
const dsc* getParam(uint idx);
1353+
const paramdsc* getParam(uint idx);
13541354

13551355
version:
13561356
const string getTextUTF8(Status status, uint idx);

src/include/firebird/IdlFbInterfaces.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5477,7 +5477,7 @@ namespace Firebird
54775477
struct VTable : public IVersioned::VTable
54785478
{
54795479
unsigned (CLOOP_CARG *getCount)(ITraceParams* self) CLOOP_NOEXCEPT;
5480-
const dsc* (CLOOP_CARG *getParam)(ITraceParams* self, unsigned idx) CLOOP_NOEXCEPT;
5480+
const paramdsc* (CLOOP_CARG *getParam)(ITraceParams* self, unsigned idx) CLOOP_NOEXCEPT;
54815481
const char* (CLOOP_CARG *getTextUTF8)(ITraceParams* self, IStatus* status, unsigned idx) CLOOP_NOEXCEPT;
54825482
};
54835483

@@ -5500,9 +5500,9 @@ namespace Firebird
55005500
return ret;
55015501
}
55025502

5503-
const dsc* getParam(unsigned idx)
5503+
const paramdsc* getParam(unsigned idx)
55045504
{
5505-
const dsc* ret = static_cast<VTable*>(this->cloopVTable)->getParam(this, idx);
5505+
const paramdsc* ret = static_cast<VTable*>(this->cloopVTable)->getParam(this, idx);
55065506
return ret;
55075507
}
55085508

@@ -17551,7 +17551,7 @@ namespace Firebird
1755117551
}
1755217552
}
1755317553

17554-
static const dsc* CLOOP_CARG cloopgetParamDispatcher(ITraceParams* self, unsigned idx) CLOOP_NOEXCEPT
17554+
static const paramdsc* CLOOP_CARG cloopgetParamDispatcher(ITraceParams* self, unsigned idx) CLOOP_NOEXCEPT
1755517555
{
1755617556
try
1755717557
{
@@ -17560,7 +17560,7 @@ namespace Firebird
1756017560
catch (...)
1756117561
{
1756217562
StatusType::catchException(0);
17563-
return static_cast<const dsc*>(0);
17563+
return static_cast<const paramdsc*>(0);
1756417564
}
1756517565
}
1756617566

@@ -17594,7 +17594,7 @@ namespace Firebird
1759417594
}
1759517595

1759617596
virtual unsigned getCount() = 0;
17597-
virtual const dsc* getParam(unsigned idx) = 0;
17597+
virtual const paramdsc* getParam(unsigned idx) = 0;
1759817598
virtual const char* getTextUTF8(StatusType* status, unsigned idx) = 0;
1759917599
};
1760017600

src/include/gen/Firebird.pas

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ ISC_TIMESTAMP_TZ_EX = record
207207
IntegerPtr = ^Integer;
208208
NativeIntPtr = ^NativeInt;
209209
PerformanceInfoPtr = ^PerformanceInfo;
210-
dscPtr = ^dsc;
210+
paramdscPtr = ^paramdsc;
211211

212212
IReferenceCounted_addRefPtr = procedure(this: IReferenceCounted); cdecl;
213213
IReferenceCounted_releasePtr = function(this: IReferenceCounted): Integer; cdecl;
@@ -607,7 +607,7 @@ ISC_TIMESTAMP_TZ_EX = record
607607
ITraceTransaction_getInitialIDPtr = function(this: ITraceTransaction): Int64; cdecl;
608608
ITraceTransaction_getPreviousIDPtr = function(this: ITraceTransaction): Int64; cdecl;
609609
ITraceParams_getCountPtr = function(this: ITraceParams): Cardinal; cdecl;
610-
ITraceParams_getParamPtr = function(this: ITraceParams; idx: Cardinal): dscPtr; cdecl;
610+
ITraceParams_getParamPtr = function(this: ITraceParams; idx: Cardinal): paramdscPtr; cdecl;
611611
ITraceParams_getTextUTF8Ptr = function(this: ITraceParams; status: IStatus; idx: Cardinal): PAnsiChar; cdecl;
612612
ITraceStatement_getStmtIDPtr = function(this: ITraceStatement): Int64; cdecl;
613613
ITraceStatement_getPerfPtr = function(this: ITraceStatement): PerformanceInfoPtr; cdecl;
@@ -3067,15 +3067,15 @@ ITraceParams = class(IVersioned)
30673067
const VERSION = 3;
30683068

30693069
function getCount(): Cardinal;
3070-
function getParam(idx: Cardinal): dscPtr;
3070+
function getParam(idx: Cardinal): paramdscPtr;
30713071
function getTextUTF8(status: IStatus; idx: Cardinal): PAnsiChar;
30723072
end;
30733073

30743074
ITraceParamsImpl = class(ITraceParams)
30753075
constructor create;
30763076

30773077
function getCount(): Cardinal; virtual; abstract;
3078-
function getParam(idx: Cardinal): dscPtr; virtual; abstract;
3078+
function getParam(idx: Cardinal): paramdscPtr; virtual; abstract;
30793079
function getTextUTF8(status: IStatus; idx: Cardinal): PAnsiChar; virtual; abstract;
30803080
end;
30813081

@@ -8969,7 +8969,7 @@ function ITraceParams.getCount(): Cardinal;
89698969
Result := TraceParamsVTable(vTable).getCount(Self);
89708970
end;
89718971

8972-
function ITraceParams.getParam(idx: Cardinal): dscPtr;
8972+
function ITraceParams.getParam(idx: Cardinal): paramdscPtr;
89738973
begin
89748974
Result := TraceParamsVTable(vTable).getParam(Self, idx);
89758975
end;
@@ -15196,7 +15196,7 @@ function ITraceParamsImpl_getCountDispatcher(this: ITraceParams): Cardinal; cdec
1519615196
end
1519715197
end;
1519815198

15199-
function ITraceParamsImpl_getParamDispatcher(this: ITraceParams; idx: Cardinal): dscPtr; cdecl;
15199+
function ITraceParamsImpl_getParamDispatcher(this: ITraceParams; idx: Cardinal): paramdscPtr; cdecl;
1520015200
begin
1520115201
Result := nil;
1520215202
try

src/jrd/trace/TraceObjects.cpp

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ namespace
6161

6262
// Convert text descriptor into UTF8 string.
6363
// Binary data converted into HEX representation.
64-
bool descToUTF8(const dsc* param, string& result)
64+
bool descToUTF8(const paramdsc* param, string& result)
6565
{
6666
UCHAR* address;
6767
USHORT length;
@@ -83,7 +83,7 @@ bool descToUTF8(const dsc* param, string& result)
8383
return false;
8484
}
8585

86-
if (param->getCharSet() == CS_BINARY)
86+
if (param->dsc_sub_type == CS_BINARY)
8787
{
8888
// Convert OCTETS and [VAR]BINARY to HEX string
8989

@@ -311,14 +311,11 @@ void TraceSQLStatementImpl::DSQLParamsImpl::fillParams()
311311
null_flag = DSC_null;
312312
}
313313

314-
dsc* desc = NULL;
315-
316314
const FB_SIZE_T idx = parameter->par_index - 1;
317315
if (idx >= m_descs.getCount())
318316
m_descs.getBuffer(idx + 1);
319317

320-
desc = &m_descs[idx];
321-
318+
paramdsc* const desc = &m_descs[idx];
322319
*desc = parameter->par_desc;
323320
desc->dsc_flags |= null_flag;
324321

@@ -335,19 +332,19 @@ FB_SIZE_T TraceSQLStatementImpl::DSQLParamsImpl::getCount()
335332
return m_descs.getCount();
336333
}
337334

338-
const dsc* TraceSQLStatementImpl::DSQLParamsImpl::getParam(FB_SIZE_T idx)
335+
const paramdsc* TraceSQLStatementImpl::DSQLParamsImpl::getParam(FB_SIZE_T idx)
339336
{
340337
fillParams();
341338

342-
if (idx >= 0 && idx < m_descs.getCount())
339+
if (idx < m_descs.getCount())
343340
return &m_descs[idx];
344341

345342
return NULL;
346343
}
347344

348345
const char* TraceSQLStatementImpl::DSQLParamsImpl::getTextUTF8(CheckStatusWrapper* status, FB_SIZE_T idx)
349346
{
350-
const dsc* param = getParam(idx);
347+
const paramdsc* const param = getParam(idx);
351348

352349
if (descToUTF8(param, m_tempUTF8))
353350
return m_tempUTF8.c_str();
@@ -377,14 +374,14 @@ FB_SIZE_T TraceParamsImpl::getCount()
377374
return m_descs->getCount();
378375
}
379376

380-
const dsc* TraceParamsImpl::getParam(FB_SIZE_T idx)
377+
const paramdsc* TraceParamsImpl::getParam(FB_SIZE_T idx)
381378
{
382379
return m_descs->getParam(idx);
383380
}
384381

385382
const char* TraceParamsImpl::getTextUTF8(CheckStatusWrapper* status, FB_SIZE_T idx)
386383
{
387-
const dsc* param = getParam(idx);
384+
const paramdsc* const param = getParam(idx);
388385

389386
if (descToUTF8(param, m_tempUTF8))
390387
return m_tempUTF8.c_str();
@@ -465,7 +462,7 @@ void TraceDscFromMsg::fillParams()
465462
const dsc* fmtDesc = m_format->fmt_desc.begin();
466463
const dsc* const fmtEnd = m_format->fmt_desc.end();
467464

468-
dsc* desc = m_descs.getBuffer(m_format->fmt_count / 2);
465+
paramdsc* desc = m_descs.getBuffer(m_format->fmt_count / 2);
469466

470467
for (; fmtDesc < fmtEnd; fmtDesc += 2, desc++)
471468
{
@@ -477,7 +474,7 @@ void TraceDscFromMsg::fillParams()
477474
const ULONG nullOffset = (IPTR) fmtDesc[1].dsc_address;
478475
const SSHORT* const nullPtr = (const SSHORT*) (m_inMsg + nullOffset);
479476
if (*nullPtr == -1)
480-
desc->setNull();
477+
desc->dsc_flags |= DSC_null;
481478
}
482479
}
483480

src/jrd/trace/TraceObjects.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -258,15 +258,15 @@ class TraceSQLStatementImpl :
258258
}
259259

260260
FB_SIZE_T getCount();
261-
const dsc* getParam(FB_SIZE_T idx);
261+
const paramdsc* getParam(FB_SIZE_T idx);
262262
const char* getTextUTF8(Firebird::CheckStatusWrapper* status, FB_SIZE_T idx);
263263

264264
private:
265265
void fillParams();
266266

267267
DsqlRequest* const m_stmt;
268268
const Firebird::Array<dsql_par*>* m_params = nullptr;
269-
Firebird::HalfStaticArray<dsc, 16> m_descs;
269+
Firebird::HalfStaticArray<paramdsc, 16> m_descs;
270270
Firebird::string m_tempUTF8;
271271
};
272272

@@ -335,7 +335,7 @@ class TraceParamsImpl :
335335

336336
// TraceParams implementation
337337
FB_SIZE_T getCount();
338-
const dsc* getParam(FB_SIZE_T idx);
338+
const paramdsc* getParam(FB_SIZE_T idx);
339339
const char* getTextUTF8(Firebird::CheckStatusWrapper* status, FB_SIZE_T idx);
340340

341341
private:
@@ -358,11 +358,11 @@ class TraceDescriptors
358358
return m_descs.getCount();
359359
}
360360

361-
const dsc* getParam(FB_SIZE_T idx)
361+
const paramdsc* getParam(FB_SIZE_T idx)
362362
{
363363
fillParams();
364364

365-
if (/*idx >= 0 &&*/ idx < m_descs.getCount())
365+
if (idx < m_descs.getCount())
366366
return &m_descs[idx];
367367

368368
return NULL;
@@ -376,7 +376,7 @@ class TraceDescriptors
376376
protected:
377377
virtual void fillParams() = 0;
378378

379-
Firebird::HalfStaticArray<dsc, 16> m_descs;
379+
Firebird::HalfStaticArray<paramdsc, 16> m_descs;
380380

381381
private:
382382
TraceParamsImpl m_traceParams;
@@ -429,7 +429,7 @@ class TraceDscFromDsc : public TraceDescriptors
429429
else
430430
{
431431
m_descs.grow(1);
432-
m_descs[0].setNull();
432+
m_descs[0].dsc_flags |= DSC_null;
433433
}
434434
}
435435

src/utilities/ntrace/TracePluginImpl.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -815,7 +815,7 @@ void TracePluginImpl::appendParams(ITraceParams* params)
815815

816816
for (FB_SIZE_T i = 0; i < paramcount; i++)
817817
{
818-
const struct dsc* parameters = params->getParam(i);
818+
const paramdsc* const parameters = params->getParam(i);
819819

820820
// See if we need to print any more arguments
821821
if (config.max_arg_count && i >= config.max_arg_count)
@@ -829,7 +829,7 @@ void TracePluginImpl::appendParams(ITraceParams* params)
829829
switch (parameters->dsc_dtype)
830830
{
831831
case dtype_text:
832-
if (parameters->getTextType() == fb_text_subtype_binary)
832+
if (parameters->dsc_sub_type == fb_text_subtype_binary)
833833
paramtype.printf("binary(%d)", parameters->dsc_length);
834834
else
835835
paramtype.printf("char(%d)", parameters->dsc_length);
@@ -838,7 +838,7 @@ void TracePluginImpl::appendParams(ITraceParams* params)
838838
paramtype.printf("cstring(%d)", parameters->dsc_length - 1);
839839
break;
840840
case dtype_varying:
841-
if (parameters->getTextType() == fb_text_subtype_binary)
841+
if (parameters->dsc_sub_type == fb_text_subtype_binary)
842842
paramtype.printf("varbinary(%d)", parameters->dsc_length - 2);
843843
else
844844
paramtype.printf("varchar(%d)", parameters->dsc_length - 2);

0 commit comments

Comments
 (0)