@exornea/zeno-compiler 1.7.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/zeno-codegen.mjs +79 -31
- package/bin/zeno-diff-layout.mjs +60 -0
- package/bin/zeno-inspect.mjs +67 -0
- package/dist/analyzer.d.ts.map +1 -1
- package/dist/analyzer.js +48 -26
- package/dist/analyzer.js.map +1 -1
- package/dist/emitter-ast.d.ts +8 -0
- package/dist/emitter-ast.d.ts.map +1 -0
- package/dist/emitter-ast.js +34 -0
- package/dist/emitter-ast.js.map +1 -0
- package/dist/emitter-capabilities.d.ts +8 -0
- package/dist/emitter-capabilities.d.ts.map +1 -0
- package/dist/emitter-capabilities.js +59 -0
- package/dist/emitter-capabilities.js.map +1 -0
- package/dist/emitter-input.d.ts +3 -0
- package/dist/emitter-input.d.ts.map +1 -0
- package/dist/emitter-input.js +45 -0
- package/dist/emitter-input.js.map +1 -0
- package/dist/emitter-names.d.ts +5 -0
- package/dist/emitter-names.d.ts.map +1 -0
- package/dist/emitter-names.js +10 -0
- package/dist/emitter-names.js.map +1 -0
- package/dist/emitter-runtime-imports.d.ts +3 -0
- package/dist/emitter-runtime-imports.d.ts.map +1 -0
- package/dist/emitter-runtime-imports.js +73 -0
- package/dist/emitter-runtime-imports.js.map +1 -0
- package/dist/emitter-scan-kernels.d.ts +10 -0
- package/dist/emitter-scan-kernels.d.ts.map +1 -0
- package/dist/emitter-scan-kernels.js +174 -0
- package/dist/emitter-scan-kernels.js.map +1 -0
- package/dist/emitter-template.d.ts +7 -0
- package/dist/emitter-template.d.ts.map +1 -1
- package/dist/emitter-template.js +8 -3
- package/dist/emitter-template.js.map +1 -1
- package/dist/emitter.d.ts +8 -1
- package/dist/emitter.d.ts.map +1 -1
- package/dist/emitter.js +247 -335
- package/dist/emitter.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/layout-manifest.d.ts +37 -0
- package/dist/layout-manifest.d.ts.map +1 -0
- package/dist/layout-manifest.js +251 -0
- package/dist/layout-manifest.js.map +1 -0
- package/dist/lowering.d.ts +5 -2
- package/dist/lowering.d.ts.map +1 -1
- package/dist/lowering.js +86 -27
- package/dist/lowering.js.map +1 -1
- package/dist/source-map.d.ts +10 -0
- package/dist/source-map.d.ts.map +1 -0
- package/dist/source-map.js +371 -0
- package/dist/source-map.js.map +1 -0
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +34 -16
- package/dist/validator.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { scalarTsType } from "@exornea/zeno-schema";
|
|
2
|
+
import { fixedArrayInputElementType } from "./emitter-fixed-array.js";
|
|
3
|
+
export function emitInputInterface(layout) {
|
|
4
|
+
const lines = [`export interface ${layout.name}ViewInput {`];
|
|
5
|
+
for (const field of layout.fields) {
|
|
6
|
+
lines.push(` readonly ${field.name}: ${fieldInputType(field)};`);
|
|
7
|
+
}
|
|
8
|
+
lines.push("}");
|
|
9
|
+
return lines;
|
|
10
|
+
}
|
|
11
|
+
function fieldInputType(field) {
|
|
12
|
+
switch (field.kind) {
|
|
13
|
+
case "scalar":
|
|
14
|
+
return scalarTsType(field.scalar);
|
|
15
|
+
case "fixed-bytes":
|
|
16
|
+
case "dynamic-bytes":
|
|
17
|
+
return "ArrayLike<number> | Uint8Array";
|
|
18
|
+
case "fixed-string":
|
|
19
|
+
case "dynamic-string":
|
|
20
|
+
return "string";
|
|
21
|
+
case "struct":
|
|
22
|
+
return `${field.typeName}ViewInput`;
|
|
23
|
+
case "pointer":
|
|
24
|
+
return "number | null";
|
|
25
|
+
case "fixed-array":
|
|
26
|
+
return `readonly ${fixedArrayInputElementType(field.element)}[]`;
|
|
27
|
+
case "vector":
|
|
28
|
+
switch (field.element.kind) {
|
|
29
|
+
case "scalar":
|
|
30
|
+
return `readonly ${scalarTsType(field.element.scalar)}[]`;
|
|
31
|
+
case "fixed-bytes":
|
|
32
|
+
case "dynamic-bytes":
|
|
33
|
+
return "readonly (ArrayLike<number> | Uint8Array)[]";
|
|
34
|
+
case "fixed-string":
|
|
35
|
+
case "dynamic-string":
|
|
36
|
+
return "readonly string[]";
|
|
37
|
+
case "struct":
|
|
38
|
+
case "dynamic-struct":
|
|
39
|
+
return `readonly ${field.element.typeName}ViewInput[]`;
|
|
40
|
+
case "pointer":
|
|
41
|
+
return "readonly (number | null)[]";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=emitter-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-input.js","sourceRoot":"","sources":["../src/emitter-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAuC,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAEtE,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,KAAK,GAAG,CAAC,oBAAoB,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,KAAkB;IACxC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,aAAa,CAAC;QACnB,KAAK,eAAe;YAClB,OAAO,gCAAgC,CAAC;QAC1C,KAAK,cAAc,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,GAAG,KAAK,CAAC,QAAQ,WAAW,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,eAAe,CAAC;QACzB,KAAK,aAAa;YAChB,OAAO,YAAY,0BAA0B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACnE,KAAK,QAAQ;YACX,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC3B,KAAK,QAAQ;oBACX,OAAO,YAAY,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5D,KAAK,aAAa,CAAC;gBACnB,KAAK,eAAe;oBAClB,OAAO,6CAA6C,CAAC;gBACvD,KAAK,cAAc,CAAC;gBACpB,KAAK,gBAAgB;oBACnB,OAAO,mBAAmB,CAAC;gBAC7B,KAAK,QAAQ,CAAC;gBACd,KAAK,gBAAgB;oBACnB,OAAO,YAAY,KAAK,CAAC,OAAO,CAAC,QAAQ,aAAa,CAAC;gBACzD,KAAK,SAAS;oBACZ,OAAO,4BAA4B,CAAC;YACxC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { StructLayout } from "@exornea/zeno-schema";
|
|
2
|
+
export declare function toPascalCase(name: string): string;
|
|
3
|
+
export declare function toLittleEndianLiteral(layout: StructLayout): "true" | "false";
|
|
4
|
+
export declare function encodingLiteral(encoding: "ascii" | "utf8"): '"ascii"' | '"utf8"';
|
|
5
|
+
//# sourceMappingURL=emitter-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-names.d.ts","sourceRoot":"","sources":["../src/emitter-names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAE5E;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAEhF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function toPascalCase(name) {
|
|
2
|
+
return name.slice(0, 1).toUpperCase() + name.slice(1);
|
|
3
|
+
}
|
|
4
|
+
export function toLittleEndianLiteral(layout) {
|
|
5
|
+
return layout.endianness === "little" ? "true" : "false";
|
|
6
|
+
}
|
|
7
|
+
export function encodingLiteral(encoding) {
|
|
8
|
+
return encoding === "ascii" ? '"ascii"' : '"utf8"';
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=emitter-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-names.js","sourceRoot":"","sources":["../src/emitter-names.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAA0B;IACxD,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-runtime-imports.d.ts","sourceRoot":"","sources":["../src/emitter-runtime-imports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAuB,MAAM,sBAAsB,CAAC;AAK3F,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,EAAE,CAehF"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { hasTailWriterFields } from "./emitter-capabilities.js";
|
|
2
|
+
import { collectFixedArrayRuntimeImports } from "./emitter-fixed-array.js";
|
|
3
|
+
export function collectRuntimeImports(layouts) {
|
|
4
|
+
const imports = new Set(["ProjectionView"]);
|
|
5
|
+
const layoutMap = new Map(layouts.map((layout) => [layout.name, layout]));
|
|
6
|
+
for (const layout of layouts) {
|
|
7
|
+
if (hasTailWriterFields(layout, layoutMap)) {
|
|
8
|
+
imports.add("DynamicLayoutWriter");
|
|
9
|
+
}
|
|
10
|
+
for (const field of layout.fields) {
|
|
11
|
+
collectFieldRuntimeImports(field, imports);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return Array.from(imports).sort();
|
|
15
|
+
}
|
|
16
|
+
function collectFieldRuntimeImports(field, imports) {
|
|
17
|
+
switch (field.kind) {
|
|
18
|
+
case "fixed-bytes":
|
|
19
|
+
imports.add("fixedBytesView");
|
|
20
|
+
imports.add("writeFixedBytes");
|
|
21
|
+
return;
|
|
22
|
+
case "fixed-string":
|
|
23
|
+
imports.add("decodeFixedText");
|
|
24
|
+
imports.add("fixedBytesView");
|
|
25
|
+
imports.add("writeFixedText");
|
|
26
|
+
return;
|
|
27
|
+
case "dynamic-string":
|
|
28
|
+
imports.add("Utf8SpanView");
|
|
29
|
+
return;
|
|
30
|
+
case "dynamic-bytes":
|
|
31
|
+
imports.add("BytesSpanView");
|
|
32
|
+
return;
|
|
33
|
+
case "vector":
|
|
34
|
+
collectVectorRuntimeImports(field.element.kind, imports);
|
|
35
|
+
return;
|
|
36
|
+
case "fixed-array":
|
|
37
|
+
collectFixedArrayRuntimeImports(field.element, imports);
|
|
38
|
+
return;
|
|
39
|
+
default:
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function collectVectorRuntimeImports(elementKind, imports) {
|
|
44
|
+
switch (elementKind) {
|
|
45
|
+
case "scalar":
|
|
46
|
+
imports.add("ScalarVectorView");
|
|
47
|
+
return;
|
|
48
|
+
case "dynamic-string":
|
|
49
|
+
imports.add("Utf8VectorView");
|
|
50
|
+
return;
|
|
51
|
+
case "dynamic-bytes":
|
|
52
|
+
imports.add("BytesVectorView");
|
|
53
|
+
return;
|
|
54
|
+
case "fixed-bytes":
|
|
55
|
+
imports.add("FixedBytesVectorView");
|
|
56
|
+
return;
|
|
57
|
+
case "fixed-string":
|
|
58
|
+
imports.add("FixedStringVectorView");
|
|
59
|
+
return;
|
|
60
|
+
case "struct":
|
|
61
|
+
imports.add("StructVectorView");
|
|
62
|
+
return;
|
|
63
|
+
case "dynamic-struct":
|
|
64
|
+
imports.add("DynamicStructVectorView");
|
|
65
|
+
return;
|
|
66
|
+
case "pointer":
|
|
67
|
+
imports.add("PointerVectorView");
|
|
68
|
+
return;
|
|
69
|
+
default:
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=emitter-runtime-imports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-runtime-imports.js","sourceRoot":"","sources":["../src/emitter-runtime-imports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAE3E,MAAM,UAAU,qBAAqB,CAAC,OAAgC;IACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE1E,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,0BAA0B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAkB,EAAE,OAAoB;IAC1E,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,aAAa;YAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,cAAc;YACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,gBAAgB;YACnB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO;QACT,KAAK,eAAe;YAClB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO;QACT,KAAK,QAAQ;YACX,2BAA2B,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO;QACT,KAAK,aAAa;YAChB,+BAA+B,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,OAAO;QACT;YACE,OAAO;IACX,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,WAAwC,EACxC,OAAoB;IAEpB,QAAQ,WAAW,EAAE,CAAC;QACpB,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,gBAAgB;YACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO;QACT,KAAK,eAAe;YAClB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YAC/B,OAAO;QACT,KAAK,aAAa;YAChB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,KAAK,cAAc;YACjB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO;QACT,KAAK,gBAAgB;YACnB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACvC,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACjC,OAAO;QACT;YACE,OAAO;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type FieldLayout, type StructLayout } from "@exornea/zeno-schema";
|
|
2
|
+
export type ScanKernelMode = "none" | "sum" | "basic" | "full";
|
|
3
|
+
export declare function normalizeScanKernelMode(mode: ScanKernelMode | undefined): ScanKernelMode;
|
|
4
|
+
export declare function parseScanKernelMode(value: string): ScanKernelMode | null;
|
|
5
|
+
export declare function hasScanKernels(layout: StructLayout, mode: ScanKernelMode): boolean;
|
|
6
|
+
export declare function emitScanRangeHelper(layout: StructLayout): string[];
|
|
7
|
+
export declare function emitScalarScanKernels(layout: StructLayout, field: Extract<FieldLayout, {
|
|
8
|
+
kind: "scalar";
|
|
9
|
+
}>, getterMethod: string, littleEndianDefault: "true" | "false", pascalName: string, mode: ScanKernelMode): string[];
|
|
10
|
+
//# sourceMappingURL=emitter-scan-kernels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-scan-kernels.d.ts","sourceRoot":"","sources":["../src/emitter-scan-kernels.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAI9B,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAE/D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,GAAG,cAAc,CAExF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAUxE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAQlF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAuBlE;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAC/C,YAAY,EAAE,MAAM,EACpB,mBAAmB,EAAE,MAAM,GAAG,OAAO,EACrC,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,cAAc,GACnB,MAAM,EAAE,CAiBV"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { scalarTsType, } from "@exornea/zeno-schema";
|
|
2
|
+
import { method } from "./emitter-template.js";
|
|
3
|
+
export function normalizeScanKernelMode(mode) {
|
|
4
|
+
return mode ?? "full";
|
|
5
|
+
}
|
|
6
|
+
export function parseScanKernelMode(value) {
|
|
7
|
+
switch (value) {
|
|
8
|
+
case "none":
|
|
9
|
+
case "sum":
|
|
10
|
+
case "basic":
|
|
11
|
+
case "full":
|
|
12
|
+
return value;
|
|
13
|
+
default:
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function hasScanKernels(layout, mode) {
|
|
18
|
+
if (mode === "none") {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return layout.fields.some((field) => {
|
|
22
|
+
return field.kind === "scalar" && canEmitScalarScanKernel(field, mode);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
export function emitScanRangeHelper(layout) {
|
|
26
|
+
return method `
|
|
27
|
+
private static assertScanRange(
|
|
28
|
+
view: DataView,
|
|
29
|
+
count: number,
|
|
30
|
+
baseOffset: number,
|
|
31
|
+
fieldOffset: number,
|
|
32
|
+
fieldByteLength: number,
|
|
33
|
+
): void {
|
|
34
|
+
if (!Number.isInteger(count) || count < 0) {
|
|
35
|
+
throw new RangeError(\`Invalid record count: \${count}\`);
|
|
36
|
+
}
|
|
37
|
+
if (!Number.isFinite(baseOffset) || !Number.isInteger(baseOffset) || baseOffset < 0) {
|
|
38
|
+
throw new RangeError(\`Invalid base offset: \${baseOffset}\`);
|
|
39
|
+
}
|
|
40
|
+
if (count === 0) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const lastByte = baseOffset + fieldOffset + (count - 1) * ${layout.name}View.byteLength + fieldByteLength;
|
|
44
|
+
if (lastByte > view.byteLength) {
|
|
45
|
+
throw new RangeError(\`scan range exceeds DataView length \${view.byteLength}\`);
|
|
46
|
+
}
|
|
47
|
+
}`;
|
|
48
|
+
}
|
|
49
|
+
export function emitScalarScanKernels(layout, field, getterMethod, littleEndianDefault, pascalName, mode) {
|
|
50
|
+
if (mode === "none") {
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
return [
|
|
54
|
+
...emitScalarSumKernel(layout, field, getterMethod, littleEndianDefault, pascalName, mode),
|
|
55
|
+
...emitScalarMinMaxKernels(layout, field, getterMethod, littleEndianDefault, pascalName, mode),
|
|
56
|
+
...emitScalarEqualityKernels(layout, field, getterMethod, littleEndianDefault, pascalName, mode),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
function emitScalarSumKernel(layout, field, getterMethod, littleEndianDefault, pascalName, mode) {
|
|
60
|
+
if (!canEmitSumKernel(field.scalar, mode)) {
|
|
61
|
+
return [];
|
|
62
|
+
}
|
|
63
|
+
const endianArg = field.byteLength === 1 ? "" : ", littleEndian";
|
|
64
|
+
return method `
|
|
65
|
+
static sum${pascalName}(view: DataView, count: number, baseOffset = 0, littleEndian = ${littleEndianDefault}): number {
|
|
66
|
+
${layout.name}View.assertScanRange(view, count, baseOffset, ${field.offset}, ${field.byteLength});
|
|
67
|
+
if (count === 0) {
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
const start = baseOffset + ${field.offset};
|
|
71
|
+
const limit = start + count * ${layout.byteLength};
|
|
72
|
+
let sum = 0;
|
|
73
|
+
for (let offset = start; offset < limit; offset += ${layout.byteLength}) {
|
|
74
|
+
sum += view.${getterMethod}(offset${endianArg});
|
|
75
|
+
}
|
|
76
|
+
return sum;
|
|
77
|
+
}`;
|
|
78
|
+
}
|
|
79
|
+
function emitScalarMinMaxKernels(layout, field, getterMethod, littleEndianDefault, pascalName, mode) {
|
|
80
|
+
if (!canEmitMinMaxKernel(field.scalar, mode)) {
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
const endianArg = field.byteLength === 1 ? "" : ", littleEndian";
|
|
84
|
+
return method `
|
|
85
|
+
static min${pascalName}(view: DataView, count: number, baseOffset = 0, littleEndian = ${littleEndianDefault}): number {
|
|
86
|
+
${layout.name}View.assertScanRange(view, count, baseOffset, ${field.offset}, ${field.byteLength});
|
|
87
|
+
if (count === 0) {
|
|
88
|
+
return Number.POSITIVE_INFINITY;
|
|
89
|
+
}
|
|
90
|
+
const start = baseOffset + ${field.offset};
|
|
91
|
+
const limit = start + count * ${layout.byteLength};
|
|
92
|
+
let minimum = Number.POSITIVE_INFINITY;
|
|
93
|
+
for (let offset = start; offset < limit; offset += ${layout.byteLength}) {
|
|
94
|
+
const value = view.${getterMethod}(offset${endianArg});
|
|
95
|
+
if (value < minimum) {
|
|
96
|
+
minimum = value;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return minimum;
|
|
100
|
+
}
|
|
101
|
+
static max${pascalName}(view: DataView, count: number, baseOffset = 0, littleEndian = ${littleEndianDefault}): number {
|
|
102
|
+
${layout.name}View.assertScanRange(view, count, baseOffset, ${field.offset}, ${field.byteLength});
|
|
103
|
+
if (count === 0) {
|
|
104
|
+
return Number.NEGATIVE_INFINITY;
|
|
105
|
+
}
|
|
106
|
+
const start = baseOffset + ${field.offset};
|
|
107
|
+
const limit = start + count * ${layout.byteLength};
|
|
108
|
+
let maximum = Number.NEGATIVE_INFINITY;
|
|
109
|
+
for (let offset = start; offset < limit; offset += ${layout.byteLength}) {
|
|
110
|
+
const value = view.${getterMethod}(offset${endianArg});
|
|
111
|
+
if (value > maximum) {
|
|
112
|
+
maximum = value;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return maximum;
|
|
116
|
+
}`;
|
|
117
|
+
}
|
|
118
|
+
function emitScalarEqualityKernels(layout, field, getterMethod, littleEndianDefault, pascalName, mode) {
|
|
119
|
+
if (!canEmitEqualityKernel(field.scalar, mode)) {
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
const typeName = scalarTsType(field.scalar);
|
|
123
|
+
const endianArg = field.byteLength === 1 || field.scalar === "bool" ? "" : ", littleEndian";
|
|
124
|
+
const readExpression = field.scalar === "bool"
|
|
125
|
+
? `view.${getterMethod}(offset) !== 0`
|
|
126
|
+
: `view.${getterMethod}(offset${endianArg})`;
|
|
127
|
+
return method `
|
|
128
|
+
static count${pascalName}WhereEq(view: DataView, count: number, expected: ${typeName}, baseOffset = 0, littleEndian = ${littleEndianDefault}): number {
|
|
129
|
+
${layout.name}View.assertScanRange(view, count, baseOffset, ${field.offset}, ${field.byteLength});
|
|
130
|
+
let matched = 0;
|
|
131
|
+
const start = baseOffset + ${field.offset};
|
|
132
|
+
const limit = start + count * ${layout.byteLength};
|
|
133
|
+
for (let offset = start; offset < limit; offset += ${layout.byteLength}) {
|
|
134
|
+
if (${readExpression} === expected) {
|
|
135
|
+
matched += 1;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return matched;
|
|
139
|
+
}
|
|
140
|
+
static findFirst${pascalName}WhereEq(view: DataView, count: number, expected: ${typeName}, baseOffset = 0, littleEndian = ${littleEndianDefault}): number {
|
|
141
|
+
${layout.name}View.assertScanRange(view, count, baseOffset, ${field.offset}, ${field.byteLength});
|
|
142
|
+
const start = baseOffset + ${field.offset};
|
|
143
|
+
const limit = start + count * ${layout.byteLength};
|
|
144
|
+
let index = 0;
|
|
145
|
+
for (let offset = start; offset < limit; offset += ${layout.byteLength}) {
|
|
146
|
+
if (${readExpression} === expected) {
|
|
147
|
+
return index;
|
|
148
|
+
}
|
|
149
|
+
index += 1;
|
|
150
|
+
}
|
|
151
|
+
return -1;
|
|
152
|
+
}`;
|
|
153
|
+
}
|
|
154
|
+
function canEmitScalarScanKernel(field, mode) {
|
|
155
|
+
return (canEmitSumKernel(field.scalar, mode) ||
|
|
156
|
+
canEmitMinMaxKernel(field.scalar, mode) ||
|
|
157
|
+
canEmitEqualityKernel(field.scalar, mode));
|
|
158
|
+
}
|
|
159
|
+
function canEmitSumKernel(kind, mode) {
|
|
160
|
+
return mode !== "none" && isNumberSumScalar(kind);
|
|
161
|
+
}
|
|
162
|
+
function canEmitMinMaxKernel(kind, mode) {
|
|
163
|
+
return (mode === "basic" || mode === "full") && isNumberSumScalar(kind);
|
|
164
|
+
}
|
|
165
|
+
function canEmitEqualityKernel(kind, mode) {
|
|
166
|
+
return mode === "full" && isEqualityKernelScalar(kind);
|
|
167
|
+
}
|
|
168
|
+
function isNumberSumScalar(kind) {
|
|
169
|
+
return kind !== "i64" && kind !== "u64" && kind !== "bool";
|
|
170
|
+
}
|
|
171
|
+
function isEqualityKernelScalar(kind) {
|
|
172
|
+
return kind !== "i64" && kind !== "u64" && kind !== "f32" && kind !== "f64";
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=emitter-scan-kernels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emitter-scan-kernels.js","sourceRoot":"","sources":["../src/emitter-scan-kernels.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
type CodeValue = string | number | boolean | readonly string[];
|
|
2
|
+
/**
|
|
3
|
+
* Small template helper for compiler-owned TypeScript fragments.
|
|
4
|
+
*
|
|
5
|
+
* Values passed to this tag must already be code fragments produced by the
|
|
6
|
+
* emitter. Do not pass unchecked user strings here; schema-derived text must be
|
|
7
|
+
* validated as an identifier/type name or encoded with a literal helper first.
|
|
8
|
+
*/
|
|
2
9
|
export declare function method(strings: TemplateStringsArray, ...values: CodeValue[]): string[];
|
|
3
10
|
export declare function code(strings: TemplateStringsArray, ...values: CodeValue[]): string[];
|
|
4
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter-template.d.ts","sourceRoot":"","sources":["../src/emitter-template.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;AAE/D,wBAAgB,MAAM,
|
|
1
|
+
{"version":3,"file":"emitter-template.d.ts","sourceRoot":"","sources":["../src/emitter-template.ts"],"names":[],"mappings":"AAAA,KAAK,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAEtF;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAMpF"}
|
package/dist/emitter-template.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Small template helper for compiler-owned TypeScript fragments.
|
|
3
|
+
*
|
|
4
|
+
* Values passed to this tag must already be code fragments produced by the
|
|
5
|
+
* emitter. Do not pass unchecked user strings here; schema-derived text must be
|
|
6
|
+
* validated as an identifier/type name or encoded with a literal helper first.
|
|
7
|
+
*/
|
|
1
8
|
export function method(strings, ...values) {
|
|
2
9
|
return indentLines(" ", code(strings, ...values));
|
|
3
10
|
}
|
|
@@ -26,9 +33,7 @@ function trimBlankEdges(source) {
|
|
|
26
33
|
return source.replace(/^\n/, "").replace(/\n[ \t]*$/, "");
|
|
27
34
|
}
|
|
28
35
|
function commonIndent(lines) {
|
|
29
|
-
const indents = lines
|
|
30
|
-
.filter((line) => line.trim().length > 0)
|
|
31
|
-
.map((line) => leadingSpaces(line));
|
|
36
|
+
const indents = lines.filter((line) => line.trim().length > 0).map((line) => leadingSpaces(line));
|
|
32
37
|
return indents.length === 0 ? 0 : Math.min(...indents);
|
|
33
38
|
}
|
|
34
39
|
function leadingSpaces(line) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter-template.js","sourceRoot":"","sources":["../src/emitter-template.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,MAAM,
|
|
1
|
+
{"version":3,"file":"emitter-template.js","sourceRoot":"","sources":["../src/emitter-template.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,OAA6B,EAAE,GAAG,MAAmB;IAC1E,OAAO,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAA6B,EAAE,GAAG,MAAmB;IACxE,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC,GAAG,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAgB;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,KAAwB;IAC3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,MAAM,CAAC,MAAc;IAC5B,MAAM,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3F,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,YAAY,CAAC,KAAwB;IAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;AAChD,CAAC"}
|
package/dist/emitter.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { type StructLayout } from "@exornea/zeno-schema";
|
|
2
|
+
import { type ScanKernelMode } from "./emitter-scan-kernels.js";
|
|
3
|
+
import { type ProjectionSourceMap } from "./source-map.js";
|
|
2
4
|
export interface EmitOptions {
|
|
3
|
-
readonly
|
|
5
|
+
readonly scanKernels?: ScanKernelMode;
|
|
6
|
+
}
|
|
7
|
+
export interface EmitProjectionFileResult {
|
|
8
|
+
readonly code: string;
|
|
9
|
+
readonly sourceMap: ProjectionSourceMap;
|
|
4
10
|
}
|
|
5
11
|
export declare function emitStructView(layout: StructLayout, options?: EmitOptions): string;
|
|
6
12
|
export declare function emitProjectionFile(layouts: readonly StructLayout[], options?: EmitOptions): string;
|
|
13
|
+
export declare function emitProjectionFileWithSourceMap(layouts: readonly StructLayout[], generatedFile: string, options?: EmitOptions): EmitProjectionFileResult;
|
|
7
14
|
//# sourceMappingURL=emitter.d.ts.map
|
package/dist/emitter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAgB9B,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAyBtF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC;CACvC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;CACzC;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAEtF;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,OAAO,GAAE,WAAgB,GACxB,MAAM,CAER;AAwBD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,WAAgB,GACxB,wBAAwB,CAO1B"}
|