NX01: Fixed BE in T512/T64 and hinary, WIP printed lingua dial tones

This commit is contained in:
Willem Cazander 2026-01-26 02:29:08 +01:00
parent e69a13ec92
commit 7feb638a40
32 changed files with 1060 additions and 626 deletions

View file

@ -29,5 +29,6 @@
/// @author للَّٰهِilLצسُو
/// @version ©Δ 仙上主天
module jpp.nether.tone {
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ;
}

View file

@ -48,6 +48,53 @@ public record NetherToneSlugView(
int er0w
) {
public NetherToneSlugView {
if (ag1 < 0 || ag1 > 63) { throw new IllegalArgumentException("ag1: " + ag1); }
if (ag2 < 0 || ag2 > 63) { throw new IllegalArgumentException("ag2: " + ag2); }
if (ag3 < 0 || ag3 > 63) { throw new IllegalArgumentException("ag3: " + ag3); }
if (bl0w < 0 || bl0w > 511) { throw new IllegalArgumentException("bl0w: " + bl0w); }
if (cr1 < 0 || cr1 > 63) { throw new IllegalArgumentException("cr1: " + cr1); }
if (cr2 < 0 || cr2 > 63) { throw new IllegalArgumentException("cr2: " + cr2); }
if (cr3 < 0 || cr3 > 63) { throw new IllegalArgumentException("cr3: " + cr3); }
if (db1 < 0 || db1 > 63) { throw new IllegalArgumentException("db1: " + db1); }
if (db2 < 0 || db2 > 63) { throw new IllegalArgumentException("db2: " + db2); }
if (db3 < 0 || db3 > 63) { throw new IllegalArgumentException("db3: " + db3); }
if (er0w < 0 || er0w > 511) { throw new IllegalArgumentException("er0w: " + er0w); }
}
private final static String VALUES_3 = "\u05D3\u05D5\u05D6\u05D9\u05E8\u05F0\u05F1\u05F2";
private final static String VALUES_6 = "\u05B0\u05B2\u05B3\u05B5\u05B6\u05B7\u05BB\u05BD";
private final static String VALUES_9 = "\u0594\u0595\u0598\u059D\u059E\u059F\u05A0\u05A9";
private void printNúmero2Lingua6(StringBuilder buf, int value) {
buf.appendCodePoint(VALUES_3.codePoints().skip((value >> 3) & 7).findFirst().getAsInt());
buf.appendCodePoint(VALUES_6.codePoints().skip((value >> 0) & 7).findFirst().getAsInt());
}
private void printNúmero2Lingua9(StringBuilder buf, int value) {
buf.appendCodePoint(VALUES_3.codePoints().skip((value >> 6) & 7).findFirst().getAsInt());
buf.appendCodePoint(VALUES_6.codePoints().skip((value >> 3) & 7).findFirst().getAsInt());
buf.appendCodePoint(VALUES_9.codePoints().skip((value >> 0) & 7).findFirst().getAsInt());
}
public String toNúmero2Lingua(String seperator) {
StringBuilder buf = new StringBuilder();
printNúmero2Lingua6(buf, ag1);buf.append(seperator);
printNúmero2Lingua6(buf, ag2);buf.append(seperator);
printNúmero2Lingua6(buf, ag3);buf.append(seperator);
printNúmero2Lingua9(buf, bl0w);buf.append(seperator);
printNúmero2Lingua6(buf, cr1);buf.append(seperator);
printNúmero2Lingua6(buf, cr2);buf.append(seperator);
printNúmero2Lingua6(buf, cr3);buf.append(seperator);
printNúmero2Lingua6(buf, db1);buf.append(seperator);
printNúmero2Lingua6(buf, db2);buf.append(seperator);
printNúmero2Lingua6(buf, db3);buf.append(seperator);
printNúmero2Lingua9(buf, er0w);
return buf.toString();
}
public String toNúmero2Lingua() {
return toNúmero2Lingua("");
}
public List<Class<?>> toNetherTones(int idx) {
Class<?> qClass = qClass(idx);
List<Class<?>> result = new ArrayList<>(11);

View file

@ -27,6 +27,7 @@
package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
import java.io.IOException;
import java.util.Iterator;
import java.util.stream.Stream;
@ -43,25 +44,34 @@ public class ModelNetherTones implements KodeGenModel {
private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ";
@Override
public String generatorName() {
return "nether-tones";
public String generatorKey() {
return "nether-tone";
}
@Override
public void buildModels(ModelKlassWriter writer) {
buildQuadrants(writer, 1, "ᐧᐧᐧ");
buildQuadrants(writer, 2, "ᐧᐧᣟ");
buildQuadrants(writer, 3, "ᐧᣟᐧ");
buildQuadrants(writer, 4, "ᐧᣟᣟ");
buildQuadrants(writer, 5, "ᣟᐧᐧ");
buildQuadrants(writer, 6, "ᣟᐧᣟ");
buildQuadrants(writer, 7, "ᣟᣟᐧ");
buildQuadrants(writer, 8, "ᣟᣟᣟ");
public String generatorModelHash() {
return "15";
}
@Override
public void buildModels(ModelKlassWriter writer) throws IOException {
// TODO: redo tree again, as a Q slug, should be usable to reuse in any other Qx slug
// but that needs generics and than 2 equals interfaces do not match anymore...
buildQuadrants(writer, 1);
buildQuadrants(writer, 2);
buildQuadrants(writer, 3);
buildQuadrants(writer, 4);
buildQuadrants(writer, 5);
buildQuadrants(writer, 6);
buildQuadrants(writer, 7);
buildQuadrants(writer, 8);
buildNetherQuadrant(writer, "NetherTone", "NetherToneQ", false);
}
private void buildQuadrants(ModelKlassWriter writer, int quadrant, String s) {
private void buildQuadrants(ModelKlassWriter writer, int quadrant) {
String s = writer.buildPackageInuktitutDots(quadrant - 1, 3);
String q = "ᐊQ" + quadrant;
String e = "NetherToneQ" + quadrant;
@ -90,8 +100,11 @@ public class ModelNetherTones implements KodeGenModel {
buf.append(" extends ");
buf.append(quadrant);
buf.append(" {\n");
for (int i = 1 ; i <= slugSize; i++) {
for (int i = 0 ; i < slugSize; i++) {
String partCode = "" + String.format("%03d", i);
if (slugSize < 100) {
partCode = "" + String.format("%02d", i);
}
String clsBase = partCode + " extends " + klass.getJavaName();
String clsMutexExt = ", " + javaName + "Mutex<" + partCode + ">";
buf.append("\tnon-sealed interface " + clsBase + clsMutexExt + " {}\n");

View file

@ -43,28 +43,27 @@ import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1;
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2;
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3;
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W;
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView;
public class NetherToneSlugViewTest {
private interface Q1SlugExample extends
ᐊQ1AG1.ᐅ001,
ᐊQ1AG2.ᐅ002,
ᐊQ1AG3.ᐅ003,
ᐊQ1BL0W.ᐅ004,
ᐊQ1CR1.ᐅ005,
ᐊQ1CR2.ᐅ006,
ᐊQ1CR3.ᐅ007,
ᐊQ1DB1.ᐅ008,
ᐊQ1DB2.ᐅ009,
ᐊQ1DB3.ᐅ010,
ᐊQ1ER0W.ᐅ011
ᐊQ1AG1.ᐅ00,
ᐊQ1AG2.ᐅ01,
ᐊQ1AG3.ᐅ02,
ᐊQ1BL0W.ᐅ003,
ᐊQ1CR1.ᐅ04,
ᐊQ1CR2.ᐅ05,
ᐊQ1CR3.ᐅ06,
ᐊQ1DB1.ᐅ07,
ᐊQ1DB2.ᐅ08,
ᐊQ1DB3.ᐅ09,
ᐊQ1ER0W.ᐅ010
{
}
private interface Q1SlugExampleErr extends
ᐊQ1AG1.ᐅ001,
ᐊQ1AG2.ᐅ002
ᐊQ1AG1.ᐅ00,
ᐊQ1AG2.ᐅ01
{
}
@ -91,8 +90,8 @@ public class NetherToneSlugViewTest {
Assertions.assertNotNull(slug);
List<Class<?>> result = slug.toNetherTones(0);
Assertions.assertNotNull(result);
Assertions.assertEquals(ᐊQ1AG1.ᐅ001.class, result.get(0));
Assertions.assertEquals(ᐊQ1AG2.ᐅ002.class, result.get(1));
Assertions.assertEquals(ᐊQ1AG3.ᐅ003.class, result.get(2));
Assertions.assertEquals(ᐊQ1AG1.ᐅ00.class, result.get(0));
Assertions.assertEquals(ᐊQ1AG2.ᐅ01.class, result.get(1));
Assertions.assertEquals(ᐊQ1AG3.ᐅ02.class, result.get(2));
}
}