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

Method writeJumpNode

src/jrd/btn.cpp:345–393  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

343
344
345UCHAR* IndexJumpNode::writeJumpNode(UCHAR* pagePointer)
346{
347/**************************************
348 *
349 * w r i t e J u m p N o d e
350 *
351 **************************************
352 *
353 * Functional description
354 * Write jump information to the page by the
355 * given pointer.
356 *
357 **************************************/
358 nodePointer = pagePointer;
359
360 // Write prefix, maximum 14 bits
361 USHORT number = prefix;
362 UCHAR tmp = (number & 0x7F);
363 number >>= 7;
364 if (number > 0) {
365 tmp |= 0x80;
366 }
367 *pagePointer++ = tmp;
368 if (tmp & 0x80)
369 {
370 tmp = (number & 0x7F);
371 *pagePointer++ = tmp;
372 }
373
374 // Write length, maximum 14 bits
375 number = length;
376 tmp = (number & 0x7F);
377 number >>= 7;
378 if (number > 0) {
379 tmp |= 0x80;
380 }
381 *pagePointer++ = tmp;
382 if (tmp & 0x80)
383 {
384 tmp = (number & 0x7F);
385 *pagePointer++ = tmp;
386 }
387
388 put_short(pagePointer, offset);
389 pagePointer += sizeof(USHORT);
390 memmove(pagePointer, data, length);
391 pagePointer += length;
392 return pagePointer;
393}
394
395
396UCHAR* IndexNode::writeNode(UCHAR* pagePointer, bool leafNode, bool withData)

Callers 4

delete_nodeFunction · 0.80
fast_loadFunction · 0.80
garbage_collectFunction · 0.80
insert_nodeFunction · 0.80

Calls 1

put_shortFunction · 0.85

Tested by

no test coverage detected