JPP: Added abacus operation and water clock piping infrastructure
This commit is contained in:
parent
cff00daa3e
commit
5fcb5289c8
6 changed files with 341 additions and 23 deletions
|
|
@ -27,48 +27,40 @@
|
|||
|
||||
package ᒢᐩᐩ.ᣕᓑᔿᒃᓫᣗ.ᙆᓫᣗᒄᑊᣕᣔᒻ.ᣔᒃᣔᒼᓑᔆ;
|
||||
|
||||
import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᒢℭỗᶇṧⱦᶏꬼȶʂ;
|
||||
import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;
|
||||
import ᒢᐩᐩ.ᣕᓑᔿᒃᓫᣗ.ᙆᓫᣗᒄᑊᣕᣔᒻ.PrimordialZerdinalSpaceMaterializer;
|
||||
|
||||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public interface ZerdinalAḃåčȕs̈Rȧñk<T extends ZerdinalAḃåčȕs̈Rȧñk<T>> extends PrimordialZerdinalSpaceMaterializer<T> {
|
||||
|
||||
// TODO: add operators
|
||||
|
||||
String abacusRȧñkName();
|
||||
|
||||
// TODO: replace with nether phone book entry class type + add new mat... method
|
||||
String abacusRȧñkRingTone();
|
||||
|
||||
default ZerdinalAḃåčȕs̈RȧñkOperationPipe abacusOperation(ZerdinalAḃåčȕs̈RȧñkOperation op, int zerdinal) {
|
||||
return abacusOperation(op, zerdinal, false);
|
||||
}
|
||||
|
||||
default ZerdinalAḃåčȕs̈RȧñkOperationPipe abacusOperation(ZerdinalAḃåčȕs̈RȧñkOperation op, int zerdinal, boolean carry) {
|
||||
return op.automata(new ZerdinalAḃåčȕs̈RȧñkWaterClock(carry, zerdinal(), zerdinal, zerdinalSpaceBoundary()));
|
||||
}
|
||||
|
||||
default T abacusRȧñkGotoFirst() {
|
||||
return zerdinalMaterializeSpace(ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO);
|
||||
return abacusOperation(ZerdinalAḃåčȕs̈RȧñkWaterWorks.GOTO_FIRST, zerdinal()).materializeOutput(zerdinalMaterializeSpace(zerdinal()));
|
||||
}
|
||||
|
||||
default T abacusRȧñkGotoLast() {
|
||||
return zerdinalMaterializeSpace(zerdinalSpaceBoundary() - ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟONE);
|
||||
return abacusOperation(ZerdinalAḃåčȕs̈RȧñkWaterWorks.GOTO_LAST, zerdinal()).materializeOutput(zerdinalMaterializeSpace(zerdinal()));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
default T abacusRȧñkGotoUp(boolean loop) {
|
||||
int resultIndex = zerdinal() + ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟONE;
|
||||
if (resultIndex >= zerdinalSpaceBoundary()) {
|
||||
if (loop) {
|
||||
resultIndex = ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO;
|
||||
} else {
|
||||
resultIndex = zerdinal();
|
||||
}
|
||||
}
|
||||
return zerdinalMaterializeSpace(resultIndex);
|
||||
return abacusOperation(ZerdinalAḃåčȕs̈RȧñkWaterWorks.PLUS, 1, loop).materializeOutput(zerdinalMaterializeSpace(zerdinal()));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
default T abacusRȧñkGotoDown(boolean loop) {
|
||||
int resultIndex = zerdinal() - ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟONE;
|
||||
if (resultIndex < ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟZERO) {
|
||||
if (loop) {
|
||||
resultIndex = zerdinalSpaceBoundary() - ᒢℭỗᶇṧⱦᶏꬼȶʂ.INTᣟᐧᣟONE;
|
||||
} else {
|
||||
resultIndex = zerdinal();
|
||||
}
|
||||
}
|
||||
return zerdinalMaterializeSpace(resultIndex);
|
||||
return abacusOperation(ZerdinalAḃåčȕs̈RȧñkWaterWorks.MINUS, 1, loop).materializeOutput(zerdinalMaterializeSpace(zerdinal()));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue