IndexSet.kl¶
Types¶
IndexSet (struct)¶
The IndexSet can be used to express a set of indices, where the index range is relatively contiguous. This can be useful to create a set of indices pointing to a larger array, for example. An IndexSet is particularly useful for efficiently removing duplicate indices, as it only allocates a few buffers as opposed to using a Dictionary.
/*
** Example: IndexSet
*/
require Containers;
operator entry() {
IndexSet indexSet;
indexSet.add(3);
indexSet.add(9);
indexSet.add(3);
indexSet.add(4);
indexSet.add(9);
report("Contains '2': " + indexSet.has(2));
report("Contains '3': " + indexSet.has(3));
report("Indices:");
for( Size i = 0; i < indexSet.size(); ++i )
report( indexSet.get(i) );
}
/*
** Output:
Contains '2': false
Contains '3': true
Indices:
3
9
4
*/
Methods¶
| IndexSet ( in IndexSet other ) | |
| IndexSet () | |
| add ! ( in IndexSet other ) | |
| Boolean | add ! ( in UInt32 index ) |
| clear ! () | |
| IndexSet | clone ? () |
| free ! () | |
| UInt32 | get ? ( in Size offset ) |
| :ref:`UInt32 <uint32>`<> | getIndices ? () |
| Boolean | has ? ( in UInt32 index ) |
| Size | potentialIndexRange ? () |
| removeAtOffset ! ( in UInt32 offset ) | |
| Size | size ? () |