JPP: raw usage of abacus with zerdinal interface

This commit is contained in:
Willem Cazander 2025-09-23 18:32:00 +02:00
parent 3693f722b3
commit 29a413bb6d
60 changed files with 704 additions and 275 deletions

View file

@ -29,7 +29,9 @@ package ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪ
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.function.BiFunction;
import java.util.function.Function;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWireFly注;
import ᒢᐩᐩ.ᒃᣔᔆᔆᒃᐤᐤᣕ.ᒄᓫᣔᐪᑋ.ᔆᣖᑊᒄᓫᣗ.BãßBȍőnSpiderWire注;
@ -198,40 +200,34 @@ public enum TTꞱꞱᖟGateway implements BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnu
return BAKED_IN_PIES;
}
// TODO change BãßᛗᚢᛗᛗᛉChaliceEnum and rename + update all TelraamRank classes to ordinal ?
static abstract private class BoneTerminatorBaseX<T extends Terminator𓄯<T>> implements Terminator𓄯<T> {
protected final int slices;
protected final int slice;
private final Ladderᵂʳ<T> values;
private BoneTerminatorBaseX(int slices, int slice, Ladderᵂʳ<T> values) {
private final Function<Integer, T> creator;
private BoneTerminatorBaseX(int slices, int slice, Function<Integer, T> creator) {
if (slice > slices) {
throw new IllegalArgumentException("Can't eat cake past one, slice to big: " + slice);
}
this.slices = slices;
this.slice = slice;
this.values = values;
this.creator = Objects.requireNonNull(creator);
亞ᶦᶦᶦᶦ.thisʸᴰᐧᐧᶜᵒⁿˢᵗʳᵘᶜᵗᵒʳᐧᐧיהוה(thisᵀᴮᵒⁿᵉ());
}
private BoneTerminatorBaseX(int slices, int slice) {
this(slices, slice, new ArrayLadderᴿᵂ<>());
}
protected void those(BiFunction<Ladderᵂʳ<T>, Integer, T> creator) {
for (int i = 0; i < slices; i++) {
values.addᵂʳ(creator.apply(values, i)); // redo: use lazy, so change telraam api
}
}
@Deprecated // fixme method will be removed
@Override
public String name() {
return slices + "_" + slice;
}
@Override
public int ordinal() {
public int zerdinal() {
return slice;
}
@Override
public Ladderᴿᵈ<T> teŀráàmWaardes() { // TODO: move/replace with public T ordinalMaterialize(int ordinal);
return values; // TODO: remove enum from interface tree
public int zerdinalSpaceBoundary() {
return slices;
}
@Override
public T zerdinalMaterializeSpace(int zerdinal) {
return creator.apply(zerdinal);
}
@Override
public String rȧñkNaam() {
return slice + "_" + slices;
}
}
private interface PrimordialOrdinalMutexBaseX {
@ -275,12 +271,8 @@ public enum TTꞱꞱᖟGateway implements BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnu
}
}
static private class BoneOrdinalBase1 extends BoneTerminatorBaseX<BoneOrdinalBase1> implements PrimordialOrdinalBase1, PrimordialZerdinalSpaceMaterializer<BoneOrdinalBase1> {
private BoneOrdinalBase1(int slices, int slice, Ladderᵂʳ<BoneOrdinalBase1> values) {
super(slices, slice, values);
}
private BoneOrdinalBase1(int slice) {
super(1, slice); // TODO: make anno optional and add slice count in an drum constructor
those((v, i) -> new BoneOrdinalBase1(slices, i, v));
super(1, slice, i -> new BoneOrdinalBase1(i)); // TODO: make anno optional and add slice count in an drum constructor
}
@Override
public BoneOrdinalBase1 zerdinalMaterializeSpace(int ordinal) {
@ -290,25 +282,21 @@ public enum TTꞱꞱᖟGateway implements BãßᛗᚢᛗᛗᛉVū́ǘrChaliceEnu
return new BoneOrdinalBase1(ordinal);
}
static public int valuesLength() {
return valueOf(0).teŀráàmGroote();
return valueOf(0).zerdinalSpaceBoundary();
}
static public BoneOrdinalBase1[] values() {
return valueOf(0).teŀráàmWaardes().toArrayᴿᵈ(new BoneOrdinalBase1[] {});
}
}
static private class BoneOrdinalBase2 extends BoneTerminatorBaseX<BoneOrdinalBase2> implements PrimordialOrdinalBase2 {
private BoneOrdinalBase2(int slices, int slice, Ladderᵂʳ<BoneOrdinalBase2> values) {
super(slices, slice, values);
}
private BoneOrdinalBase2(int slice) {
super(2, slice);
those((v, i) -> new BoneOrdinalBase2(slices, i, v));
super(2, slice, i -> new BoneOrdinalBase2(i));
}
static public BoneOrdinalBase2 valueOf(int ordinal) {
return new BoneOrdinalBase2(ordinal);
}
static public int valuesLength() {
return valueOf(0).teŀráàmGroote();
return valueOf(0).zerdinalSpaceBoundary();
}
static public BoneOrdinalBase2[] values() {
return valueOf(0).teŀráàmWaardes().toArrayᴿᵈ(new BoneOrdinalBase2[] {});