setBufListSize method
void
setBufListSize(
- int value
)
Implementation
void setBufListSize(int value) {
var v = value;
if (v == 0) v = -1;
if (v == _bufferCount) return;
if (v > _bufferCount) {
// ReAllocMem(FBuffers,(Value+1)*SizeOf) + FillChar(#0)
while (_buffers.length < v + 1) {
_buffers.add(null);
}
_bufferCount++; // Cause FBuffers[FBufferCount] is already allocated
try {
for (var i = _bufferCount; i <= v; i++) {
_buffers[i] = allocRecordBuffer();
}
} catch (_) {
var i = _bufferCount;
while (i < v + 1) {
final b = _buffers[i];
if (b != null) freeRecordBuffer(b);
_buffers[i] = null;
i++;
}
rethrow;
}
} else {
if (v > -1 && _activeRecord > v - 1) {
for (var i = 0; i <= _activeRecord - v; i++) {
shiftBuffersBackward();
}
_activeRecord = v - 1;
}
for (var i = v + 1; i <= _bufferCount && i < _buffers.length; i++) {
final b = _buffers[i];
if (b != null) freeRecordBuffer(b);
}
// FBuffer must stay allocated, to make sure that Activebuffer
// returns nil (original comment kept as-is)
if (v == -1) {
_buffers
..clear()
..add(null);
} else {
while (_buffers.length > v + 1) {
_buffers.removeLast();
}
}
}
_bufferCount = v;
if (v == -1) v = 0;
if (_recordCount > v) _recordCount = v;
}