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 ? () |