MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / PAR_datatype

Function PAR_datatype

src/jrd/par.cpp:253–399  ·  view source on GitHub ↗

Parse a BLR datatype. Return the alignment requirements of the datatype.

Source from the content-addressed store, hash-verified

251
252// Parse a BLR datatype. Return the alignment requirements of the datatype.
253USHORT PAR_datatype(BlrReader& blrReader, dsc* desc)
254{
255 desc->clear();
256
257 const USHORT dtype = blrReader.getByte();
258 USHORT textType;
259
260 switch (dtype)
261 {
262 case blr_text:
263 desc->makeText(blrReader.getWord(), ttype_dynamic);
264 desc->dsc_flags |= DSC_no_subtype;
265 break;
266
267 case blr_cstring:
268 desc->dsc_dtype = dtype_cstring;
269 desc->dsc_flags |= DSC_no_subtype;
270 desc->dsc_length = blrReader.getWord();
271 desc->setTextType(ttype_dynamic);
272 break;
273
274 case blr_varying:
275 desc->makeVarying(blrReader.getWord(), ttype_dynamic);
276 desc->dsc_flags |= DSC_no_subtype;
277 break;
278
279 case blr_text2:
280 textType = blrReader.getWord();
281 desc->makeText(blrReader.getWord(), textType);
282 break;
283
284 case blr_cstring2:
285 desc->dsc_dtype = dtype_cstring;
286 desc->setTextType(blrReader.getWord());
287 desc->dsc_length = blrReader.getWord();
288 break;
289
290 case blr_varying2:
291 textType = blrReader.getWord();
292 desc->makeVarying(blrReader.getWord(), textType);
293 break;
294
295 case blr_short:
296 desc->dsc_dtype = dtype_short;
297 desc->dsc_length = sizeof(SSHORT);
298 desc->dsc_scale = (int) blrReader.getByte();
299 break;
300
301 case blr_long:
302 desc->dsc_dtype = dtype_long;
303 desc->dsc_length = sizeof(SLONG);
304 desc->dsc_scale = (int) blrReader.getByte();
305 break;
306
307 case blr_int64:
308 desc->dsc_dtype = dtype_int64;
309 desc->dsc_length = sizeof(SINT64);
310 desc->dsc_scale = (int) blrReader.getByte();

Callers 1

PAR_descFunction · 0.85

Calls 9

par_errorFunction · 0.85
GdsClass · 0.85
makeTextMethod · 0.80
setTextTypeMethod · 0.80
makeVaryingMethod · 0.80
makeBooleanMethod · 0.80
clearMethod · 0.45
getByteMethod · 0.45
getWordMethod · 0.45

Tested by

no test coverage detected