@abaplint/runtime
Version:
Transpiler - Runtime
29 lines • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.get_bit_operation_chunks = get_bit_operation_chunks;
function get_bit_operation_chunks(left, right) {
const ret = [];
let leftFull = left.get();
const leftLen = leftFull.length;
leftFull = leftFull.padEnd(Math.ceil(leftLen / 2) * 2, "0");
let rightFull = right.get();
const rightLen = rightFull.length;
rightFull = rightFull.padEnd(Math.ceil(rightLen / 2) * 2, "0");
const maxLen = leftFull.length > rightFull.length ? leftFull.length : rightFull.length;
// Using 3-byte chunkgs (6 hex positions) to avoid JavaScript negative values for extreme cases
const chunks = maxLen / 6;
for (let pass = chunks; pass > 0; pass--) {
const chunkStart = maxLen - pass * 6;
const chunkEnd = maxLen - (pass - 1) * 6;
let leftSlice = leftFull.slice(chunkStart, chunkEnd);
let rightSlice = rightFull.slice(chunkStart, chunkEnd);
const chunkLen = leftSlice.length > rightSlice.length ? leftSlice.length : rightSlice.length;
leftSlice = leftSlice.padEnd(chunkLen, "0");
rightSlice = rightSlice.padEnd(chunkLen, "0");
const leftChunk = parseInt(leftSlice, 16);
const rightChunk = parseInt(rightSlice, 16);
ret.push({ leftChunk: leftChunk, rightChunk: rightChunk, chunkLen: chunkLen });
}
return ret;
}
//# sourceMappingURL=_bit_operations.js.map