Example #1
0
void LogSequence2::add(IteratorUInt &elements)
{
	if(IsMapped) {
		throw "Data structure read-only when mapped.";
	}

	size_t max = 0;
	numentries = 0;

	// Count and calculate number of bits needed per element.
	while(elements.hasNext()) {
		size_t element = elements.next();
		max = element > max ? element : max;
		numentries++;
	}

	// Prepare array
	numbits = bits(max);
	data.clear();
	data.resize(numElementsFor(numbits, numentries));
    array = &data[0];
	arraysize = data.size();

	// Save
	elements.goToStart();
	size_t count = 0;
	while(elements.hasNext()) {
		size_t element = elements.next();
		set_field(&array[0], numbits, count, element);
		count++;
	}

}