|
@@ -0,0 +1,105 @@
|
|
|
+unit webassembly;
|
|
|
+
|
|
|
+{$mode objfpc}
|
|
|
+{$modeswitch externalclass}
|
|
|
+
|
|
|
+interface
|
|
|
+
|
|
|
+uses
|
|
|
+ js, Web;
|
|
|
+
|
|
|
+Type
|
|
|
+
|
|
|
+ { TJSModulesArray }
|
|
|
+
|
|
|
+ TJSModulesExports = Class external name 'anon' (TJSObject)
|
|
|
+ private
|
|
|
+ function GetFun(aName : String): TJSFunction; external name '[]';
|
|
|
+ public
|
|
|
+ Property functions [aName : String] : TJSFunction read GetFun; default;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TJSModulesImports = TJSModulesExports;
|
|
|
+
|
|
|
+ TJSWebAssemblyModule = class external name 'WebAssembly.Module' (TJSObject)
|
|
|
+ constructor new(buffer : TJSArrayBuffer);
|
|
|
+ Class Function customSections(module: TJSWebAssemblyModule; const SectionName : string) : TJSArrayBuffer;
|
|
|
+ Class Function exports_(module: TJSWebAssemblyModule) : TJSModulesExports; external name 'exports';
|
|
|
+ Class Function imports(module: TJSWebAssemblyModule) : TJSModulesImports; external name 'exports';
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TJSWebAssemblyInstance }
|
|
|
+
|
|
|
+ TJSWebAssemblyInstance = class external name 'WebAssembly.Instance' (TJSObject)
|
|
|
+ private
|
|
|
+ Fexports: TJSModulesExports; external name 'exports';
|
|
|
+ public
|
|
|
+ constructor new(module : TJSWebAssemblyModule; ImportObject : TJSOBject);
|
|
|
+ constructor new(module : TJSWebAssemblyModule);
|
|
|
+ Property exports_ : TJSModulesExports Read Fexports;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TJSInstantiated }
|
|
|
+ // Result returned when calling instantiate with buffer
|
|
|
+
|
|
|
+ { TJSInstantiateResult }
|
|
|
+
|
|
|
+ TJSInstantiateResult = Class external name 'anon' (TJSObject)
|
|
|
+ private
|
|
|
+ FInstance: TJSWebAssemblyInstance; external name 'instance';
|
|
|
+ FModule: TJSWebAssemblyModule; external name 'module';
|
|
|
+ public
|
|
|
+ Property Module : TJSWebAssemblyModule Read FModule;
|
|
|
+ Property Instance : TJSWebAssemblyInstance Read Finstance;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TJSWebAssembly = class external name 'WebAssembly' (TJSObject)
|
|
|
+ Class Function instantiate(Buffer : TJSArrayBuffer; ImportObject : TJSObject) : TJSPromise; overload;
|
|
|
+ Class Function instantiate(Buffer : TJSArrayBuffer) : TJSPromise; overload;
|
|
|
+ Class Function instantiate(Buffer : TJSWebAssemblyModule; ImportObject : TJSObject) : TJSPromise; overload;
|
|
|
+ Class Function instantiate(Buffer : TJSWebAssemblyModule) : TJSPromise; overload;
|
|
|
+ Class Function compile(Buffer : TJSArrayBuffer): TJSPromise;
|
|
|
+ Class Function compileStreaming(source : TJSResponse): TJSPromise;
|
|
|
+ Class Function instantiateStreaming(source : TJSResponse; ImportObject : TJSObject) : TJSPromise; overload;
|
|
|
+ Class Function instantiateStreaming(source : TJSResponse) : TJSPromise; overload;
|
|
|
+ Class Function validate(Buffer : TJSArrayBuffer): Boolean;
|
|
|
+ end;
|
|
|
+
|
|
|
+ { TJSWebAssemblyTable }
|
|
|
+
|
|
|
+ TJSWebAssemblyTableDescriptor = record
|
|
|
+ element : string;
|
|
|
+ initial,
|
|
|
+ maximum : integer;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TJSWebAssemblyTable = class external name 'WebAssembly.Table' (TJSObject)
|
|
|
+ private
|
|
|
+ FLength: NativeInt;
|
|
|
+ Public
|
|
|
+ constructor new (tabledescriptor : TJSWebAssemblyTableDescriptor);
|
|
|
+ constructor new (tabledescriptor : TJSObject);
|
|
|
+ Property length: NativeInt Read FLength;
|
|
|
+ end;
|
|
|
+ { TJSWebAssemblyMemory }
|
|
|
+
|
|
|
+ TJSWebAssemblyMemoryDescriptor = record
|
|
|
+ initial,
|
|
|
+ maximum : integer;
|
|
|
+ end;
|
|
|
+
|
|
|
+ TJSWebAssemblyMemory = class external name 'WebAssembly.Memory' (TJSObject)
|
|
|
+ private
|
|
|
+ FBuffer: TJSArrayBuffer; external name 'buffer';
|
|
|
+ FLength: NativeInt; external name 'length';
|
|
|
+ Public
|
|
|
+ constructor new (memorydescriptor : TJSWebAssemblyMemoryDescriptor);
|
|
|
+ constructor new (memorydescriptor : TJSObject);
|
|
|
+ Property buffer : TJSArrayBuffer Read FBuffer;
|
|
|
+ Property length: NativeInt Read FLength;
|
|
|
+ end;
|
|
|
+
|
|
|
+implementation
|
|
|
+
|
|
|
+end.
|
|
|
+
|