in packages/core/micro/src/permutation/index.ts [197:228]
add(range: SegmentRange<PermutationSegment>) {
let freed: SegmentRange<PermutationSegment> | undefined = range;
while (freed) {
const segments = freed.segments;
for (let i = 0; i < freed.size; i++) {
const s = segments[i];
switch (s.kind) {
case PermutationKind.Direct:
const content = s.content;
for (let i = 0; i < content.length; i++) {
const n = content[i];
if (n !== UNALLOCATED) {
this.permutations.push(n);
}
}
break;
case PermutationKind.RunLength:
const contentRL = s.content;
for (let i = 0; i < contentRL.length; i += 2) {
const n = contentRL[i + 1];
if (n !== UNALLOCATED) {
this.permutationsRL.push(contentRL[i]);
this.permutationsRL.push(n);
}
}
break;
}
}
freed = freed.next;
}
}