nucleation 0.10.22 → 0.10.23
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/README.md +12 -0
- package/Schematic.d.mts +23 -0
- package/Schematic.d.ts +23 -0
- package/Schematic.mjs +70 -0
- package/nucleation.wasm +0 -0
- package/package.json +7 -2
- package/renderer/AnimationEffect.d.mts +44 -0
- package/renderer/AnimationEffect.d.ts +44 -0
- package/renderer/AnimationEffect.mjs +204 -0
- package/renderer/Autostack.d.mts +43 -0
- package/renderer/Autostack.d.ts +43 -0
- package/renderer/Autostack.mjs +134 -0
- package/renderer/BlockPos.d.mts +28 -0
- package/renderer/BlockPos.d.ts +28 -0
- package/renderer/BlockPos.mjs +130 -0
- package/renderer/BlockState.d.mts +39 -0
- package/renderer/BlockState.d.ts +39 -0
- package/renderer/BlockState.mjs +134 -0
- package/renderer/Blocks.d.mts +91 -0
- package/renderer/Blocks.d.ts +91 -0
- package/renderer/Blocks.mjs +308 -0
- package/renderer/Brush.d.mts +99 -0
- package/renderer/Brush.d.ts +99 -0
- package/renderer/Brush.mjs +335 -0
- package/renderer/BuildAnimation.d.mts +179 -0
- package/renderer/BuildAnimation.d.ts +179 -0
- package/renderer/BuildAnimation.mjs +1148 -0
- package/renderer/BuildingTool.d.mts +46 -0
- package/renderer/BuildingTool.d.ts +46 -0
- package/renderer/BuildingTool.mjs +121 -0
- package/renderer/CellExecutor.d.mts +51 -0
- package/renderer/CellExecutor.d.ts +51 -0
- package/renderer/CellExecutor.mjs +171 -0
- package/renderer/CellularSdfConfig.d.mts +22 -0
- package/renderer/CellularSdfConfig.d.ts +22 -0
- package/renderer/CellularSdfConfig.mjs +69 -0
- package/renderer/ChunkMeshResult.d.mts +75 -0
- package/renderer/ChunkMeshResult.d.ts +75 -0
- package/renderer/ChunkMeshResult.mjs +253 -0
- package/renderer/CircuitBuilder.d.mts +118 -0
- package/renderer/CircuitBuilder.d.ts +118 -0
- package/renderer/CircuitBuilder.mjs +516 -0
- package/renderer/Curve3D.d.mts +27 -0
- package/renderer/Curve3D.d.ts +27 -0
- package/renderer/Curve3D.mjs +101 -0
- package/renderer/DefinitionRegion.d.mts +274 -0
- package/renderer/DefinitionRegion.d.ts +274 -0
- package/renderer/DefinitionRegion.mjs +973 -0
- package/renderer/Design.d.mts +348 -0
- package/renderer/Design.d.ts +348 -0
- package/renderer/Design.mjs +1334 -0
- package/renderer/Diff.d.mts +88 -0
- package/renderer/Diff.d.ts +88 -0
- package/renderer/Diff.mjs +316 -0
- package/renderer/Dimensions.d.mts +28 -0
- package/renderer/Dimensions.d.ts +28 -0
- package/renderer/Dimensions.mjs +130 -0
- package/renderer/DistanceField.d.mts +39 -0
- package/renderer/DistanceField.d.ts +39 -0
- package/renderer/DistanceField.mjs +114 -0
- package/renderer/ExecutionMode.d.mts +42 -0
- package/renderer/ExecutionMode.d.ts +42 -0
- package/renderer/ExecutionMode.mjs +127 -0
- package/renderer/Field3.d.mts +40 -0
- package/renderer/Field3.d.ts +40 -0
- package/renderer/Field3.mjs +160 -0
- package/renderer/FieldProgram.d.mts +40 -0
- package/renderer/FieldProgram.d.ts +40 -0
- package/renderer/FieldProgram.mjs +167 -0
- package/renderer/FieldProgramBinaryOp.d.mts +42 -0
- package/renderer/FieldProgramBinaryOp.d.ts +42 -0
- package/renderer/FieldProgramBinaryOp.mjs +118 -0
- package/renderer/FieldProgramBuilder.d.mts +104 -0
- package/renderer/FieldProgramBuilder.d.ts +104 -0
- package/renderer/FieldProgramBuilder.mjs +486 -0
- package/renderer/FieldProgramDistanceKind.d.mts +26 -0
- package/renderer/FieldProgramDistanceKind.d.ts +26 -0
- package/renderer/FieldProgramDistanceKind.mjs +78 -0
- package/renderer/FieldProgramUnaryOp.d.mts +34 -0
- package/renderer/FieldProgramUnaryOp.d.ts +34 -0
- package/renderer/FieldProgramUnaryOp.mjs +102 -0
- package/renderer/FieldProgramValueType.d.mts +25 -0
- package/renderer/FieldProgramValueType.d.ts +25 -0
- package/renderer/FieldProgramValueType.mjs +75 -0
- package/renderer/FieldRange.d.mts +15 -0
- package/renderer/FieldRange.d.ts +15 -0
- package/renderer/FieldRange.mjs +109 -0
- package/renderer/Fingerprint.d.mts +44 -0
- package/renderer/Fingerprint.d.ts +44 -0
- package/renderer/Fingerprint.mjs +197 -0
- package/renderer/GeneratedChunk.d.mts +35 -0
- package/renderer/GeneratedChunk.d.ts +35 -0
- package/renderer/GeneratedChunk.mjs +178 -0
- package/renderer/GeneratedChunkCoverage.d.mts +25 -0
- package/renderer/GeneratedChunkCoverage.d.ts +25 -0
- package/renderer/GeneratedChunkCoverage.mjs +75 -0
- package/renderer/GeneratedChunkOverlayMode.d.mts +24 -0
- package/renderer/GeneratedChunkOverlayMode.d.ts +24 -0
- package/renderer/GeneratedChunkOverlayMode.mjs +72 -0
- package/renderer/GeneratedWorldStream.d.mts +28 -0
- package/renderer/GeneratedWorldStream.d.ts +28 -0
- package/renderer/GeneratedWorldStream.mjs +86 -0
- package/renderer/Geo.d.mts +41 -0
- package/renderer/Geo.d.ts +41 -0
- package/renderer/Geo.mjs +121 -0
- package/renderer/Hdl.d.mts +56 -0
- package/renderer/Hdl.d.ts +56 -0
- package/renderer/Hdl.mjs +163 -0
- package/renderer/InterpolationSpace.d.mts +25 -0
- package/renderer/InterpolationSpace.d.ts +25 -0
- package/renderer/InterpolationSpace.mjs +73 -0
- package/renderer/IoLayout.d.mts +26 -0
- package/renderer/IoLayout.d.ts +26 -0
- package/renderer/IoLayout.mjs +81 -0
- package/renderer/IoLayoutBuilder.d.mts +73 -0
- package/renderer/IoLayoutBuilder.d.ts +73 -0
- package/renderer/IoLayoutBuilder.mjs +315 -0
- package/renderer/IoType.d.mts +41 -0
- package/renderer/IoType.d.ts +41 -0
- package/renderer/IoType.mjs +125 -0
- package/renderer/ItemModelConfig.d.mts +65 -0
- package/renderer/ItemModelConfig.d.ts +65 -0
- package/renderer/ItemModelConfig.mjs +223 -0
- package/renderer/ItemModelPackBuilder.d.mts +32 -0
- package/renderer/ItemModelPackBuilder.d.ts +32 -0
- package/renderer/ItemModelPackBuilder.mjs +104 -0
- package/renderer/ItemModelResult.d.mts +72 -0
- package/renderer/ItemModelResult.d.ts +72 -0
- package/renderer/ItemModelResult.mjs +268 -0
- package/renderer/ItemScale.d.mts +31 -0
- package/renderer/ItemScale.d.ts +31 -0
- package/renderer/ItemScale.mjs +133 -0
- package/renderer/LayoutFunction.d.mts +52 -0
- package/renderer/LayoutFunction.d.ts +52 -0
- package/renderer/LayoutFunction.mjs +159 -0
- package/renderer/MchprsWorld.d.mts +131 -0
- package/renderer/MchprsWorld.d.ts +131 -0
- package/renderer/MchprsWorld.mjs +423 -0
- package/renderer/MeshBounds.d.mts +40 -0
- package/renderer/MeshBounds.d.ts +40 -0
- package/renderer/MeshBounds.mjs +181 -0
- package/renderer/MeshConfig.d.mts +101 -0
- package/renderer/MeshConfig.d.ts +101 -0
- package/renderer/MeshConfig.mjs +306 -0
- package/renderer/MeshJob.d.mts +44 -0
- package/renderer/MeshJob.d.ts +44 -0
- package/renderer/MeshJob.mjs +116 -0
- package/renderer/MeshPhase.d.mts +38 -0
- package/renderer/MeshPhase.d.ts +38 -0
- package/renderer/MeshPhase.mjs +90 -0
- package/renderer/MeshProgress.d.mts +32 -0
- package/renderer/MeshProgress.d.ts +32 -0
- package/renderer/MeshProgress.mjs +134 -0
- package/renderer/MeshResult.d.mts +76 -0
- package/renderer/MeshResult.d.ts +76 -0
- package/renderer/MeshResult.mjs +269 -0
- package/renderer/MultiMeshResult.d.mts +50 -0
- package/renderer/MultiMeshResult.d.ts +50 -0
- package/renderer/MultiMeshResult.mjs +166 -0
- package/renderer/Nbt.d.mts +50 -0
- package/renderer/Nbt.d.ts +50 -0
- package/renderer/Nbt.mjs +161 -0
- package/renderer/NucleationError.d.mts +53 -0
- package/renderer/NucleationError.d.ts +53 -0
- package/renderer/NucleationError.mjs +136 -0
- package/renderer/OutputCondition.d.mts +45 -0
- package/renderer/OutputCondition.d.ts +45 -0
- package/renderer/OutputCondition.mjs +129 -0
- package/renderer/Palette.d.mts +157 -0
- package/renderer/Palette.d.ts +157 -0
- package/renderer/Palette.mjs +487 -0
- package/renderer/PaletteBuilder.d.mts +119 -0
- package/renderer/PaletteBuilder.d.ts +119 -0
- package/renderer/PaletteBuilder.mjs +457 -0
- package/renderer/README.md +67 -0
- package/renderer/RawMeshExport.d.mts +74 -0
- package/renderer/RawMeshExport.d.ts +74 -0
- package/renderer/RawMeshExport.mjs +243 -0
- package/renderer/RedstoneGraph.d.mts +58 -0
- package/renderer/RedstoneGraph.d.ts +58 -0
- package/renderer/RedstoneGraph.mjs +242 -0
- package/renderer/RegionBounds.d.mts +41 -0
- package/renderer/RegionBounds.d.ts +41 -0
- package/renderer/RegionBounds.mjs +182 -0
- package/renderer/RenderConfig.d.mts +101 -0
- package/renderer/RenderConfig.d.ts +101 -0
- package/renderer/RenderConfig.mjs +271 -0
- package/renderer/Renderer.d.mts +51 -0
- package/renderer/Renderer.d.ts +51 -0
- package/renderer/Renderer.mjs +219 -0
- package/renderer/ResourcePack.d.mts +105 -0
- package/renderer/ResourcePack.d.ts +105 -0
- package/renderer/ResourcePack.mjs +447 -0
- package/renderer/ResourcePackList.d.mts +32 -0
- package/renderer/ResourcePackList.d.ts +32 -0
- package/renderer/ResourcePackList.mjs +96 -0
- package/renderer/Routing.d.mts +66 -0
- package/renderer/Routing.d.ts +66 -0
- package/renderer/Routing.mjs +220 -0
- package/renderer/Schematic.d.mts +977 -0
- package/renderer/Schematic.d.ts +977 -0
- package/renderer/Schematic.mjs +3820 -0
- package/renderer/SchematicBuilder.d.mts +103 -0
- package/renderer/SchematicBuilder.d.ts +103 -0
- package/renderer/SchematicBuilder.mjs +401 -0
- package/renderer/SchematicRegions.d.mts +93 -0
- package/renderer/SchematicRegions.d.ts +93 -0
- package/renderer/SchematicRegions.mjs +411 -0
- package/renderer/SchematicSplitResult.d.mts +26 -0
- package/renderer/SchematicSplitResult.d.ts +26 -0
- package/renderer/SchematicSplitResult.mjs +84 -0
- package/renderer/Scripting.d.mts +40 -0
- package/renderer/Scripting.d.ts +40 -0
- package/renderer/Scripting.mjs +138 -0
- package/renderer/Sdf.d.mts +234 -0
- package/renderer/Sdf.d.ts +234 -0
- package/renderer/Sdf.mjs +1234 -0
- package/renderer/SdfAxis.d.mts +25 -0
- package/renderer/SdfAxis.d.ts +25 -0
- package/renderer/SdfAxis.mjs +75 -0
- package/renderer/SdfBounds.d.mts +19 -0
- package/renderer/SdfBounds.d.ts +19 -0
- package/renderer/SdfBounds.mjs +161 -0
- package/renderer/SdfCellMode.d.mts +26 -0
- package/renderer/SdfCellMode.d.ts +26 -0
- package/renderer/SdfCellMode.mjs +78 -0
- package/renderer/SdfNormal.d.mts +16 -0
- package/renderer/SdfNormal.d.ts +16 -0
- package/renderer/SdfNormal.mjs +122 -0
- package/renderer/Shape.d.mts +143 -0
- package/renderer/Shape.d.ts +143 -0
- package/renderer/Shape.mjs +458 -0
- package/renderer/SortStrategy.d.mts +86 -0
- package/renderer/SortStrategy.d.ts +86 -0
- package/renderer/SortStrategy.mjs +272 -0
- package/renderer/Store.d.mts +83 -0
- package/renderer/Store.d.ts +83 -0
- package/renderer/Store.mjs +369 -0
- package/renderer/StoreIo.d.mts +71 -0
- package/renderer/StoreIo.d.ts +71 -0
- package/renderer/StoreIo.mjs +292 -0
- package/renderer/TextureAtlas.d.mts +40 -0
- package/renderer/TextureAtlas.d.ts +40 -0
- package/renderer/TextureAtlas.mjs +122 -0
- package/renderer/TextureInfo.d.mts +34 -0
- package/renderer/TextureInfo.d.ts +34 -0
- package/renderer/TextureInfo.mjs +149 -0
- package/renderer/TickSettleMode.d.mts +34 -0
- package/renderer/TickSettleMode.d.ts +34 -0
- package/renderer/TickSettleMode.mjs +84 -0
- package/renderer/TickSimulation.d.mts +572 -0
- package/renderer/TickSimulation.d.ts +572 -0
- package/renderer/TickSimulation.mjs +1299 -0
- package/renderer/TypedCircuitExecutor.d.mts +101 -0
- package/renderer/TypedCircuitExecutor.d.ts +101 -0
- package/renderer/TypedCircuitExecutor.mjs +378 -0
- package/renderer/Value.d.mts +73 -0
- package/renderer/Value.d.ts +73 -0
- package/renderer/Value.mjs +275 -0
- package/renderer/VideoConfig.d.mts +15 -0
- package/renderer/VideoConfig.d.ts +15 -0
- package/renderer/VideoConfig.mjs +44 -0
- package/renderer/VoxelModel.d.mts +34 -0
- package/renderer/VoxelModel.d.ts +34 -0
- package/renderer/VoxelModel.mjs +113 -0
- package/renderer/Voxelizer.d.mts +80 -0
- package/renderer/Voxelizer.d.ts +80 -0
- package/renderer/Voxelizer.mjs +261 -0
- package/renderer/WorldChunkView.d.mts +75 -0
- package/renderer/WorldChunkView.d.ts +75 -0
- package/renderer/WorldChunkView.mjs +224 -0
- package/renderer/WorldGenerator.d.mts +75 -0
- package/renderer/WorldGenerator.d.ts +75 -0
- package/renderer/WorldGenerator.mjs +255 -0
- package/renderer/WorldSink.d.mts +50 -0
- package/renderer/WorldSink.d.ts +50 -0
- package/renderer/WorldSink.mjs +177 -0
- package/renderer/WorldStream.d.mts +45 -0
- package/renderer/WorldStream.d.ts +45 -0
- package/renderer/WorldStream.mjs +184 -0
- package/renderer/WsPartitionHints.d.mts +29 -0
- package/renderer/WsPartitionHints.d.ts +29 -0
- package/renderer/WsPartitionHints.mjs +102 -0
- package/renderer/WsProfile.d.mts +46 -0
- package/renderer/WsProfile.d.ts +46 -0
- package/renderer/WsProfile.mjs +152 -0
- package/renderer/WsRunResult.d.mts +83 -0
- package/renderer/WsRunResult.d.ts +83 -0
- package/renderer/WsRunResult.mjs +326 -0
- package/renderer/WsSegmentJob.d.mts +28 -0
- package/renderer/WsSegmentJob.d.ts +28 -0
- package/renderer/WsSegmentJob.mjs +81 -0
- package/renderer/diplomat-runtime.d.mts +15 -0
- package/renderer/diplomat-runtime.d.ts +15 -0
- package/renderer/diplomat-runtime.mjs +779 -0
- package/renderer/diplomat-wasm.mjs +52 -0
- package/renderer/diplomat.config.mjs +5 -0
- package/renderer/index.d.mts +193 -0
- package/renderer/index.d.ts +193 -0
- package/renderer/index.mjs +196 -0
- package/renderer/nucleation.wasm +0 -0
- package/renderer/veneer/design.d.ts +167 -0
- package/renderer/veneer/design.mjs +480 -0
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { IoType } from "./IoType.mjs"
|
|
3
|
+
import { LayoutFunction } from "./LayoutFunction.mjs"
|
|
4
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
5
|
+
import { Schematic } from "./Schematic.mjs"
|
|
6
|
+
import { SortStrategy } from "./SortStrategy.mjs"
|
|
7
|
+
import { TypedCircuitExecutor } from "./TypedCircuitExecutor.mjs"
|
|
8
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
9
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
10
|
+
|
|
11
|
+
const CircuitBuilder_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
12
|
+
wasm.CircuitBuilder_destroy(ptr);
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* High-level circuit builder. `build`/`build_validated` consume it
|
|
17
|
+
* (PORTING rule 11). Regions are given as flat `[x,y,z,...]` positions
|
|
18
|
+
* (see module notes).
|
|
19
|
+
*/
|
|
20
|
+
export class CircuitBuilder {
|
|
21
|
+
// Internal ptr reference:
|
|
22
|
+
#ptr = null;
|
|
23
|
+
|
|
24
|
+
// Lifetimes are only to keep dependencies alive.
|
|
25
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
26
|
+
#selfEdge = [];
|
|
27
|
+
|
|
28
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
29
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
30
|
+
console.error("CircuitBuilder is an Opaque type. You cannot call its constructor.");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.#ptr = ptr;
|
|
34
|
+
this.#selfEdge = selfEdge;
|
|
35
|
+
|
|
36
|
+
// Are we being borrowed? If not, we can register.
|
|
37
|
+
if (this.#selfEdge.length === 0) {
|
|
38
|
+
CircuitBuilder_box_destroy_registry.register(this, this.#ptr);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return this;
|
|
42
|
+
}
|
|
43
|
+
/** @internal */
|
|
44
|
+
get ffiValue() {
|
|
45
|
+
return this.#ptr;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Create a builder for a schematic (cloned; no IO defined yet).
|
|
51
|
+
*/
|
|
52
|
+
static create(schematic) {
|
|
53
|
+
|
|
54
|
+
const result = wasm.CircuitBuilder_create(schematic.ffiValue);
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
return new CircuitBuilder(diplomatRuntime.internalConstructor, result, []);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
finally {
|
|
61
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create a builder pre-populated from Insign annotations.
|
|
67
|
+
*/
|
|
68
|
+
static fromInsign(schematic) {
|
|
69
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
const result = wasm.CircuitBuilder_from_insign(diplomatReceive.buffer, schematic.ffiValue);
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
if (!diplomatReceive.resultFlag) {
|
|
76
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
77
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
78
|
+
}
|
|
79
|
+
return new CircuitBuilder(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
finally {
|
|
83
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
84
|
+
diplomatReceive.free();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Add an input with full control.
|
|
90
|
+
*/
|
|
91
|
+
withInput(name, ioType, layout, regionPositions) {
|
|
92
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
93
|
+
|
|
94
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
95
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
96
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
const result = wasm.CircuitBuilder_with_input(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, layout.ffiValue, regionPositionsSlice.ptr);
|
|
100
|
+
|
|
101
|
+
try {
|
|
102
|
+
if (!diplomatReceive.resultFlag) {
|
|
103
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
104
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
finally {
|
|
109
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
110
|
+
functionCleanupArena.free();
|
|
111
|
+
|
|
112
|
+
diplomatReceive.free();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Add an input with full control and a custom sort strategy.
|
|
118
|
+
*/
|
|
119
|
+
withInputSorted(name, ioType, layout, regionPositions, sort) {
|
|
120
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
121
|
+
|
|
122
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
123
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
124
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
const result = wasm.CircuitBuilder_with_input_sorted(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, layout.ffiValue, regionPositionsSlice.ptr, sort.ffiValue);
|
|
128
|
+
|
|
129
|
+
try {
|
|
130
|
+
if (!diplomatReceive.resultFlag) {
|
|
131
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
132
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
finally {
|
|
137
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
138
|
+
functionCleanupArena.free();
|
|
139
|
+
|
|
140
|
+
diplomatReceive.free();
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Add an input with automatic layout inference.
|
|
146
|
+
*/
|
|
147
|
+
withInputAuto(name, ioType, regionPositions) {
|
|
148
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
149
|
+
|
|
150
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
151
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
152
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
const result = wasm.CircuitBuilder_with_input_auto(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, regionPositionsSlice.ptr);
|
|
156
|
+
|
|
157
|
+
try {
|
|
158
|
+
if (!diplomatReceive.resultFlag) {
|
|
159
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
160
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
finally {
|
|
165
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
166
|
+
functionCleanupArena.free();
|
|
167
|
+
|
|
168
|
+
diplomatReceive.free();
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Add an input with automatic layout inference and a custom sort.
|
|
174
|
+
*/
|
|
175
|
+
withInputAutoSorted(name, ioType, regionPositions, sort) {
|
|
176
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
177
|
+
|
|
178
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
179
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
180
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
const result = wasm.CircuitBuilder_with_input_auto_sorted(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, regionPositionsSlice.ptr, sort.ffiValue);
|
|
184
|
+
|
|
185
|
+
try {
|
|
186
|
+
if (!diplomatReceive.resultFlag) {
|
|
187
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
188
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
finally {
|
|
193
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
194
|
+
functionCleanupArena.free();
|
|
195
|
+
|
|
196
|
+
diplomatReceive.free();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* Add an output with full control.
|
|
202
|
+
*/
|
|
203
|
+
withOutput(name, ioType, layout, regionPositions) {
|
|
204
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
205
|
+
|
|
206
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
207
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
208
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
const result = wasm.CircuitBuilder_with_output(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, layout.ffiValue, regionPositionsSlice.ptr);
|
|
212
|
+
|
|
213
|
+
try {
|
|
214
|
+
if (!diplomatReceive.resultFlag) {
|
|
215
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
216
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
finally {
|
|
221
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
222
|
+
functionCleanupArena.free();
|
|
223
|
+
|
|
224
|
+
diplomatReceive.free();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
/**
|
|
229
|
+
* Add an output with full control and a custom sort strategy.
|
|
230
|
+
*/
|
|
231
|
+
withOutputSorted(name, ioType, layout, regionPositions, sort) {
|
|
232
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
233
|
+
|
|
234
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
235
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
236
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
const result = wasm.CircuitBuilder_with_output_sorted(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, layout.ffiValue, regionPositionsSlice.ptr, sort.ffiValue);
|
|
240
|
+
|
|
241
|
+
try {
|
|
242
|
+
if (!diplomatReceive.resultFlag) {
|
|
243
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
244
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
finally {
|
|
249
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
250
|
+
functionCleanupArena.free();
|
|
251
|
+
|
|
252
|
+
diplomatReceive.free();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Add an output with automatic layout inference.
|
|
258
|
+
*/
|
|
259
|
+
withOutputAuto(name, ioType, regionPositions) {
|
|
260
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
261
|
+
|
|
262
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
263
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
264
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
const result = wasm.CircuitBuilder_with_output_auto(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, regionPositionsSlice.ptr);
|
|
268
|
+
|
|
269
|
+
try {
|
|
270
|
+
if (!diplomatReceive.resultFlag) {
|
|
271
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
272
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
finally {
|
|
277
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
278
|
+
functionCleanupArena.free();
|
|
279
|
+
|
|
280
|
+
diplomatReceive.free();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* Add an output with automatic layout inference and a custom sort.
|
|
286
|
+
*/
|
|
287
|
+
withOutputAutoSorted(name, ioType, regionPositions, sort) {
|
|
288
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
289
|
+
|
|
290
|
+
const nameSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, name)));
|
|
291
|
+
const regionPositionsSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, regionPositions, "i32")));
|
|
292
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
const result = wasm.CircuitBuilder_with_output_auto_sorted(diplomatReceive.buffer, this.ffiValue, nameSlice.ptr, ioType.ffiValue, regionPositionsSlice.ptr, sort.ffiValue);
|
|
296
|
+
|
|
297
|
+
try {
|
|
298
|
+
if (!diplomatReceive.resultFlag) {
|
|
299
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
300
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
finally {
|
|
305
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
306
|
+
functionCleanupArena.free();
|
|
307
|
+
|
|
308
|
+
diplomatReceive.free();
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Set simulation options.
|
|
314
|
+
*/
|
|
315
|
+
withOptions(optimize, ioOnly) {
|
|
316
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
const result = wasm.CircuitBuilder_with_options(diplomatReceive.buffer, this.ffiValue, optimize, ioOnly);
|
|
320
|
+
|
|
321
|
+
try {
|
|
322
|
+
if (!diplomatReceive.resultFlag) {
|
|
323
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
324
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
finally {
|
|
329
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
330
|
+
diplomatReceive.free();
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Set the state mode ("stateless" | "stateful" | "manual").
|
|
336
|
+
*/
|
|
337
|
+
withStateMode(mode) {
|
|
338
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
339
|
+
|
|
340
|
+
const modeSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.str8(wasm, mode)));
|
|
341
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
const result = wasm.CircuitBuilder_with_state_mode(diplomatReceive.buffer, this.ffiValue, modeSlice.ptr);
|
|
345
|
+
|
|
346
|
+
try {
|
|
347
|
+
if (!diplomatReceive.resultFlag) {
|
|
348
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
349
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
finally {
|
|
354
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
355
|
+
functionCleanupArena.free();
|
|
356
|
+
|
|
357
|
+
diplomatReceive.free();
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Validate the configuration without consuming the builder.
|
|
363
|
+
*/
|
|
364
|
+
validate() {
|
|
365
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
const result = wasm.CircuitBuilder_validate(diplomatReceive.buffer, this.ffiValue);
|
|
369
|
+
|
|
370
|
+
try {
|
|
371
|
+
if (!diplomatReceive.resultFlag) {
|
|
372
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
373
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
finally {
|
|
378
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
379
|
+
diplomatReceive.free();
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Build the executor. Consumes the builder.
|
|
385
|
+
*/
|
|
386
|
+
build() {
|
|
387
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
const result = wasm.CircuitBuilder_build(diplomatReceive.buffer, this.ffiValue);
|
|
391
|
+
|
|
392
|
+
try {
|
|
393
|
+
if (!diplomatReceive.resultFlag) {
|
|
394
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
395
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
396
|
+
}
|
|
397
|
+
return new TypedCircuitExecutor(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
finally {
|
|
401
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
402
|
+
diplomatReceive.free();
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Build the executor with validation. Consumes the builder.
|
|
408
|
+
*/
|
|
409
|
+
buildValidated() {
|
|
410
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
411
|
+
|
|
412
|
+
|
|
413
|
+
const result = wasm.CircuitBuilder_build_validated(diplomatReceive.buffer, this.ffiValue);
|
|
414
|
+
|
|
415
|
+
try {
|
|
416
|
+
if (!diplomatReceive.resultFlag) {
|
|
417
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
418
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
419
|
+
}
|
|
420
|
+
return new TypedCircuitExecutor(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
finally {
|
|
424
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
425
|
+
diplomatReceive.free();
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* Number of inputs defined so far (0 if the builder was consumed).
|
|
431
|
+
*/
|
|
432
|
+
inputCount() {
|
|
433
|
+
|
|
434
|
+
const result = wasm.CircuitBuilder_input_count(this.ffiValue);
|
|
435
|
+
|
|
436
|
+
try {
|
|
437
|
+
return result;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
finally {
|
|
441
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
/**
|
|
446
|
+
* Number of outputs defined so far (0 if the builder was consumed).
|
|
447
|
+
*/
|
|
448
|
+
outputCount() {
|
|
449
|
+
|
|
450
|
+
const result = wasm.CircuitBuilder_output_count(this.ffiValue);
|
|
451
|
+
|
|
452
|
+
try {
|
|
453
|
+
return result;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
finally {
|
|
457
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
/**
|
|
462
|
+
* Input names as a JSON array string.
|
|
463
|
+
*/
|
|
464
|
+
inputNamesJson() {
|
|
465
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
466
|
+
|
|
467
|
+
const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
const result = wasm.CircuitBuilder_input_names_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
|
|
471
|
+
|
|
472
|
+
try {
|
|
473
|
+
if (!diplomatReceive.resultFlag) {
|
|
474
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
475
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
476
|
+
}
|
|
477
|
+
return write.readString8();
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
finally {
|
|
481
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
482
|
+
diplomatReceive.free();
|
|
483
|
+
write.free();
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* Output names as a JSON array string.
|
|
489
|
+
*/
|
|
490
|
+
outputNamesJson() {
|
|
491
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
492
|
+
|
|
493
|
+
const write = new diplomatRuntime.DiplomatWriteBuf(wasm);
|
|
494
|
+
|
|
495
|
+
|
|
496
|
+
const result = wasm.CircuitBuilder_output_names_json(diplomatReceive.buffer, this.ffiValue, write.buffer);
|
|
497
|
+
|
|
498
|
+
try {
|
|
499
|
+
if (!diplomatReceive.resultFlag) {
|
|
500
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
501
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
502
|
+
}
|
|
503
|
+
return write.readString8();
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
finally {
|
|
507
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
508
|
+
diplomatReceive.free();
|
|
509
|
+
write.free();
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
constructor(symbol, ptr, selfEdge) {
|
|
514
|
+
return this.#internalConstructor(...arguments)
|
|
515
|
+
}
|
|
516
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A sampled 3D polyline. Closed curves include the final segment back to
|
|
9
|
+
* the first point and retain arc-length parameterisation for animation.
|
|
10
|
+
* Oversized point sets and overflowing segment lengths are rejected.
|
|
11
|
+
*/
|
|
12
|
+
export class Curve3D {
|
|
13
|
+
/** @internal */
|
|
14
|
+
get ffiValue(): pointer;
|
|
15
|
+
/** @internal */
|
|
16
|
+
constructor();
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Create a curve from flat `[x0, y0, z0, x1, y1, z1, …]` coordinates.
|
|
21
|
+
*/
|
|
22
|
+
static fromPoints(coordinates: Array<number>, closed: boolean): Curve3D;
|
|
23
|
+
|
|
24
|
+
pointCount(): number;
|
|
25
|
+
|
|
26
|
+
isClosed(): boolean;
|
|
27
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import type { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import type { pointer, codepoint } from "./diplomat-runtime.d.ts";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* A sampled 3D polyline. Closed curves include the final segment back to
|
|
9
|
+
* the first point and retain arc-length parameterisation for animation.
|
|
10
|
+
* Oversized point sets and overflowing segment lengths are rejected.
|
|
11
|
+
*/
|
|
12
|
+
export class Curve3D {
|
|
13
|
+
/** @internal */
|
|
14
|
+
get ffiValue(): pointer;
|
|
15
|
+
/** @internal */
|
|
16
|
+
constructor();
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Create a curve from flat `[x0, y0, z0, x1, y1, z1, …]` coordinates.
|
|
21
|
+
*/
|
|
22
|
+
static fromPoints(coordinates: Array<number>, closed: boolean): Curve3D;
|
|
23
|
+
|
|
24
|
+
pointCount(): number;
|
|
25
|
+
|
|
26
|
+
isClosed(): boolean;
|
|
27
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// generated by diplomat-tool
|
|
2
|
+
import { NucleationError } from "./NucleationError.mjs"
|
|
3
|
+
import wasm from "./diplomat-wasm.mjs";
|
|
4
|
+
import * as diplomatRuntime from "./diplomat-runtime.mjs";
|
|
5
|
+
|
|
6
|
+
const Curve3D_box_destroy_registry = new FinalizationRegistry((ptr) => {
|
|
7
|
+
wasm.Curve3D_destroy(ptr);
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A sampled 3D polyline. Closed curves include the final segment back to
|
|
12
|
+
* the first point and retain arc-length parameterisation for animation.
|
|
13
|
+
* Oversized point sets and overflowing segment lengths are rejected.
|
|
14
|
+
*/
|
|
15
|
+
export class Curve3D {
|
|
16
|
+
// Internal ptr reference:
|
|
17
|
+
#ptr = null;
|
|
18
|
+
|
|
19
|
+
// Lifetimes are only to keep dependencies alive.
|
|
20
|
+
// Since JS won't garbage collect until there are no incoming edges.
|
|
21
|
+
#selfEdge = [];
|
|
22
|
+
|
|
23
|
+
#internalConstructor(symbol, ptr, selfEdge) {
|
|
24
|
+
if (symbol !== diplomatRuntime.internalConstructor) {
|
|
25
|
+
console.error("Curve3D is an Opaque type. You cannot call its constructor.");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this.#ptr = ptr;
|
|
29
|
+
this.#selfEdge = selfEdge;
|
|
30
|
+
|
|
31
|
+
// Are we being borrowed? If not, we can register.
|
|
32
|
+
if (this.#selfEdge.length === 0) {
|
|
33
|
+
Curve3D_box_destroy_registry.register(this, this.#ptr);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/** @internal */
|
|
39
|
+
get ffiValue() {
|
|
40
|
+
return this.#ptr;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Create a curve from flat `[x0, y0, z0, x1, y1, z1, …]` coordinates.
|
|
46
|
+
*/
|
|
47
|
+
static fromPoints(coordinates, closed) {
|
|
48
|
+
let functionCleanupArena = new diplomatRuntime.CleanupArena();
|
|
49
|
+
|
|
50
|
+
const coordinatesSlice = functionCleanupArena.alloc(diplomatRuntime.DiplomatBuf.sliceWrapper(wasm, diplomatRuntime.DiplomatBuf.slice(wasm, coordinates, "f64")));
|
|
51
|
+
const diplomatReceive = new diplomatRuntime.DiplomatReceiveBuf(wasm, 5, 4, true);
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
const result = wasm.Curve3D_from_points(diplomatReceive.buffer, coordinatesSlice.ptr, closed);
|
|
55
|
+
|
|
56
|
+
try {
|
|
57
|
+
if (!diplomatReceive.resultFlag) {
|
|
58
|
+
const cause = new NucleationError(diplomatRuntime.internalConstructor, diplomatRuntime.enumDiscriminant(wasm, diplomatReceive.buffer));
|
|
59
|
+
throw new globalThis.Error('NucleationError.' + cause.value, { cause });
|
|
60
|
+
}
|
|
61
|
+
return new Curve3D(diplomatRuntime.internalConstructor, diplomatRuntime.ptrRead(wasm, diplomatReceive.buffer), []);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
finally {
|
|
65
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
66
|
+
functionCleanupArena.free();
|
|
67
|
+
|
|
68
|
+
diplomatReceive.free();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
pointCount() {
|
|
73
|
+
|
|
74
|
+
const result = wasm.Curve3D_point_count(this.ffiValue);
|
|
75
|
+
|
|
76
|
+
try {
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
finally {
|
|
81
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
isClosed() {
|
|
86
|
+
|
|
87
|
+
const result = wasm.Curve3D_is_closed(this.ffiValue);
|
|
88
|
+
|
|
89
|
+
try {
|
|
90
|
+
return result === 1;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
finally {
|
|
94
|
+
diplomatRuntime.FUNCTION_PARAM_ALLOC.clean();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
constructor(symbol, ptr, selfEdge) {
|
|
99
|
+
return this.#internalConstructor(...arguments)
|
|
100
|
+
}
|
|
101
|
+
}
|