Browse Source

wasmjob: started base classes

mattias 3 years ago
parent
commit
08ec14ff9b
2 changed files with 481 additions and 1 deletions
  1. 480 0
      demo/wasienv/dom/job_js.pas
  2. 1 1
      packages/rtl/js.pas

+ 480 - 0
demo/wasienv/dom/job_js.pas

@@ -341,6 +341,45 @@ type
     property Properties[const PropName: String]: TJOB_JSValue read GetProperties write SetProperties; default;
   end;
 
+  { IJSSet }
+
+  IJSSet = interface(IJSObject)
+    ['{1D276953-95E2-4B07-8D4E-BE70D1CEF356}']
+  end;
+
+  { TJSSet }
+
+  TJSSet = class(TJSObject,IJSSet)
+  public
+    class function Cast(Intf: IJSObject): IJSSet; overload;
+  end;
+
+  { IJSMap }
+
+  IJSMap = interface(IJSObject)
+    ['{D31F19A1-388E-4612-BC71-9392ECA90DA3}']
+  end;
+
+  { TJSMap }
+
+  TJSMap = class(TJSObject,IJSMap)
+  public
+    class function Cast(Intf: IJSObject): IJSMap; overload;
+  end;
+
+  { IJSFunction }
+
+  IJSFunction = interface(IJSObject)
+    ['{8BD36F12-F6F7-4F8B-91FB-43D8626A72FE}']
+  end;
+
+  { TJSFunction }
+
+  TJSFunction = class(TJSObject,IJSFunction)
+  public
+    class function Cast(Intf: IJSObject): IJSFunction; overload;
+  end;
+
   { IJSDate }
 
   IJSDate = interface(IJSObject)
@@ -362,6 +401,279 @@ type
     function toLocaleDateString: UnicodeString; overload; // date in locale timezone, no time
   end;
 
+  { IJSRegExp }
+
+  IJSRegExp = interface(IJSObject)
+    ['{3E9E4F54-10DA-45BF-ABED-7ED2C255617E}']
+  end;
+
+  { TJSRegExp }
+
+  TJSRegExp = class(TJSObject,IJSRegExp)
+  public
+    class function Cast(Intf: IJSObject): IJSRegExp; overload;
+  end;
+
+  { IJSString }
+
+  IJSString = interface(IJSObject)
+    ['{4C3B1B1C-4C0D-42A2-81BE-36CC78DCF9AE}']
+  end;
+
+  { TJSString }
+
+  TJSString = class(TJSObject,IJSString)
+  public
+    class function Cast(Intf: IJSObject): IJSString; overload;
+  end;
+
+  { IJSArray }
+
+  IJSArray = interface(IJSObject)
+    ['{21E331BA-7B57-42DD-8DCE-B26FEA85C693}']
+  end;
+
+  { TJSArray }
+
+  TJSArray = class(TJSObject,IJSArray)
+  public
+    class function Cast(Intf: IJSObject): IJSArray; overload;
+  end;
+
+  { IJSArrayBuffer }
+
+  IJSArrayBuffer = interface(IJSObject)
+    ['{A1612EED-4F05-46C0-90BE-ACD511B15E89}']
+  end;
+
+  { TJSArrayBuffer }
+
+  TJSArrayBuffer = class(TJSObject,IJSArrayBuffer)
+  public
+    class function Cast(Intf: IJSObject): IJSArrayBuffer; overload;
+  end;
+
+  { IJSTypedArray }
+
+  IJSTypedArray = interface(IJSObject)
+    ['{6A76602B-9555-4136-A7B7-2E683265EA82}']
+  end;
+
+  { TJSTypedArray }
+
+  TJSTypedArray = class(TJSObject,IJSTypedArray)
+  public
+    class function Cast(Intf: IJSObject): IJSTypedArray; overload;
+  end;
+
+  { IJSInt8Array }
+
+  IJSInt8Array = interface(IJSTypedArray)
+    ['{72D65C5E-E18E-4294-8709-D7A63BF12958}']
+  end;
+
+  { TJSInt8Array }
+
+  TJSInt8Array = class(TJSTypedArray,IJSInt8Array)
+  public
+    class function Cast(Intf: IJSObject): IJSInt8Array; overload;
+  end;
+
+  { IJSUint8Array }
+
+  IJSUint8Array = interface(IJSTypedArray)
+    ['{99EC7B3A-30E5-425F-933C-C169B2F4193C}']
+  end;
+
+  { TJSUint8Array }
+
+  TJSUint8Array = class(TJSTypedArray,IJSUint8Array)
+  public
+    class function Cast(Intf: IJSObject): IJSUint8Array; overload;
+  end;
+
+  { IJSUint8ClampedArray }
+
+  IJSUint8ClampedArray = interface(IJSTypedArray)
+    ['{A1508D6E-8629-4416-875E-9F669ECDC47F}']
+  end;
+
+  { TJSUint8ClampedArray }
+
+  TJSUint8ClampedArray = class(TJSTypedArray,IJSUint8ClampedArray)
+  public
+    class function Cast(Intf: IJSObject): IJSUint8ClampedArray; overload;
+  end;
+
+  { IJSInt16Array }
+
+  IJSInt16Array = interface(IJSTypedArray)
+    ['{B5FA7A13-D8CA-44E4-ADAE-F10FFFAE46B4}']
+  end;
+
+  { TJSInt16Array }
+
+  TJSInt16Array = class(TJSTypedArray,IJSInt16Array)
+  public
+    class function Cast(Intf: IJSObject): IJSInt16Array; overload;
+  end;
+
+  { IJSUint16Array }
+
+  IJSUint16Array = interface(IJSTypedArray)
+    ['{6023E2BC-C464-4288-A8DA-4A5D0B2B915E}']
+  end;
+
+  { TJSUint16Array }
+
+  TJSUint16Array = class(TJSTypedArray,IJSUint16Array)
+  public
+    class function Cast(Intf: IJSObject): IJSUint16Array; overload;
+  end;
+
+  { IJSInt32Array }
+
+  IJSInt32Array = interface(IJSTypedArray)
+    ['{16F1A6FB-2F26-4A64-8A2B-D883DE2F58C4}']
+  end;
+
+  { TJSInt32Array }
+
+  TJSInt32Array = class(TJSTypedArray,IJSInt32Array)
+  public
+    class function Cast(Intf: IJSObject): IJSInt32Array; overload;
+  end;
+
+  { IJSUint32Array }
+
+  IJSUint32Array = interface(IJSTypedArray)
+    ['{C637B2FA-CED6-4EC7-8D97-C56824EAF8B3}']
+  end;
+
+  { TJSUint32Array }
+
+  TJSUint32Array = class(TJSTypedArray,IJSUint32Array)
+  public
+    class function Cast(Intf: IJSObject): IJSUint32Array; overload;
+  end;
+
+  { IJSFloat32Array }
+
+  IJSFloat32Array = interface(IJSTypedArray)
+    ['{B5CE57F6-CA7C-4168-AEA3-32EF13DA52D6}']
+  end;
+
+  { TJSFloat32Array }
+
+  TJSFloat32Array = class(TJSTypedArray,IJSFloat32Array)
+  public
+    class function Cast(Intf: IJSObject): IJSFloat32Array; overload;
+  end;
+
+  { IJSFloat64Array }
+
+  IJSFloat64Array = interface(IJSTypedArray)
+    ['{A7876DC5-9549-4FDA-BE35-A641CE9D9F0B}']
+  end;
+
+  { TJSFloat64Array }
+
+  TJSFloat64Array = class(TJSTypedArray,IJSFloat64Array)
+  public
+    class function Cast(Intf: IJSObject): IJSFloat64Array; overload;
+  end;
+
+  { IJSBufferSource }
+
+  IJSBufferSource = interface(IJSObject)
+    ['{7F2A68EE-2FA6-445C-BFC1-2C9E4D45FFBF}']
+  end;
+
+  { TJSBufferSource }
+
+  TJSBufferSource = class(TJSObject,IJSBufferSource)
+  public
+    class function Cast(Intf: IJSObject): IJSBufferSource; overload;
+  end;
+
+  { IJSDataView }
+
+  IJSDataView = interface(IJSObject)
+    ['{42F14387-FAD2-46BA-8CB4-057445095CEE}']
+  end;
+
+  { TJSDataView }
+
+  TJSDataView = class(TJSObject,IJSDataView)
+  public
+    class function Cast(Intf: IJSObject): IJSDataView; overload;
+  end;
+
+  { IJSJSON }
+
+  IJSJSON = interface(IJSObject)
+    ['{73535059-91DD-4A22-91A6-D8072008C5F3}']
+  end;
+
+  { TJSJSON }
+
+  TJSJSON = class(TJSObject,IJSJSON)
+  public
+    class function Cast(Intf: IJSObject): IJSJSON; overload;
+  end;
+
+  { IJSError }
+
+  IJSError = interface(IJSObject)
+    ['{80532C4D-CAD2-4C70-A4EA-01B29BB8C2C8}']
+  end;
+
+  { TJSError }
+
+  TJSError = class(TJSObject,IJSError)
+  public
+    class function Cast(Intf: IJSObject): IJSError; overload;
+  end;
+
+  { IJSPromise }
+
+  IJSPromise = interface(IJSObject)
+    ['{2BFE673B-B5D4-4F31-96CD-5E1A60EFBE26}']
+  end;
+
+  { TJSPromise }
+
+  TJSPromise = class(TJSObject,IJSPromise)
+  public
+    class function Cast(Intf: IJSObject): IJSPromise; overload;
+  end;
+
+  { IJSTextDecoder }
+
+  IJSTextDecoder = interface(IJSObject)
+    ['{EB42F04D-B92D-42AC-96F8-58DEC2F7F8D0}']
+  end;
+
+  { TJSTextDecoder }
+
+  TJSTextDecoder = class(TJSObject,IJSTextDecoder)
+  public
+    class function Cast(Intf: IJSObject): IJSTextDecoder; overload;
+  end;
+
+  { IJSTextEncoder }
+
+  IJSTextEncoder = interface(IJSObject)
+    ['{C2964DC1-E9AE-4321-99BD-EB788A7F2D9E}']
+  end;
+
+  { TJSTextEncoder }
+
+  TJSTextEncoder = class(TJSObject,IJSTextEncoder)
+  public
+    class function Cast(Intf: IJSObject): IJSTextEncoder; overload;
+  end;
+
 var
   JSObject: IJSObject; // singleton of JS 'Object'
   JSDate: IJSDate; // singleton of JS 'Date'
@@ -594,6 +906,174 @@ begin
   end;
 end;
 
+{ TJSTextEncoder }
+
+class function TJSTextEncoder.Cast(Intf: IJSObject): IJSTextEncoder;
+begin
+  Result:=TJSTextEncoder.Cast(Intf);
+end;
+
+{ TJSTextDecoder }
+
+class function TJSTextDecoder.Cast(Intf: IJSObject): IJSTextDecoder;
+begin
+  Result:=TJSTextDecoder.Cast(Intf);
+end;
+
+{ TJSPromise }
+
+class function TJSPromise.Cast(Intf: IJSObject): IJSPromise;
+begin
+  Result:=TJSPromise.Cast(Intf);
+end;
+
+{ TJSError }
+
+class function TJSError.Cast(Intf: IJSObject): IJSError;
+begin
+  Result:=TJSError.Cast(Intf);
+end;
+
+{ TJSJSON }
+
+class function TJSJSON.Cast(Intf: IJSObject): IJSJSON;
+begin
+  Result:=TJSJSON.Cast(Intf);
+end;
+
+{ TJSDataView }
+
+class function TJSDataView.Cast(Intf: IJSObject): IJSDataView;
+begin
+  Result:=TJSDataView.Cast(Intf);
+end;
+
+{ TJSBufferSource }
+
+class function TJSBufferSource.Cast(Intf: IJSObject): IJSBufferSource;
+begin
+  Result:=TJSBufferSource.Cast(Intf);
+end;
+
+{ TJSFloat64Array }
+
+class function TJSFloat64Array.Cast(Intf: IJSObject): IJSFloat64Array;
+begin
+  Result:=TJSFloat64Array.Cast(Intf);
+end;
+
+{ TJSFloat32Array }
+
+class function TJSFloat32Array.Cast(Intf: IJSObject): IJSFloat32Array;
+begin
+  Result:=TJSFloat32Array.Cast(Intf);
+end;
+
+{ TJSUint32Array }
+
+class function TJSUint32Array.Cast(Intf: IJSObject): IJSUint32Array;
+begin
+  Result:=TJSUint32Array.Cast(Intf);
+end;
+
+{ TJSInt32Array }
+
+class function TJSInt32Array.Cast(Intf: IJSObject): IJSInt32Array;
+begin
+  Result:=TJSInt32Array.Cast(Intf);
+end;
+
+{ TJSUint16Array }
+
+class function TJSUint16Array.Cast(Intf: IJSObject): IJSUint16Array;
+begin
+  Result:=TJSUint16Array.Cast(Intf);
+end;
+
+{ TJSInt16Array }
+
+class function TJSInt16Array.Cast(Intf: IJSObject): IJSInt16Array;
+begin
+  Result:=TJSInt16Array.Cast(Intf);
+end;
+
+{ TJSUint8ClampedArray }
+
+class function TJSUint8ClampedArray.Cast(Intf: IJSObject): IJSUint8ClampedArray;
+begin
+  Result:=TJSUint8ClampedArray.Cast(Intf);
+end;
+
+{ TJSUInt8Array }
+
+class function TJSUInt8Array.Cast(Intf: IJSObject): IJSUInt8Array;
+begin
+  Result:=TJSUInt8Array.Cast(Intf);
+end;
+
+{ TJSInt8Array }
+
+class function TJSInt8Array.Cast(Intf: IJSObject): IJSInt8Array;
+begin
+  Result:=TJSInt8Array.Cast(Intf);
+end;
+
+{ TJSTypedArray }
+
+class function TJSTypedArray.Cast(Intf: IJSObject): IJSTypedArray;
+begin
+  Result:=TJSTypedArray.Cast(Intf);
+end;
+
+{ TJSArrayBuffer }
+
+class function TJSArrayBuffer.Cast(Intf: IJSObject): IJSArrayBuffer;
+begin
+  Result:=TJSArrayBuffer.Cast(Intf);
+end;
+
+{ TJSArray }
+
+class function TJSArray.Cast(Intf: IJSObject): IJSArray;
+begin
+  Result:=TJSArray.Cast(Intf);
+end;
+
+{ TJSString }
+
+class function TJSString.Cast(Intf: IJSObject): IJSString;
+begin
+  Result:=TJSString.Cast(Intf);
+end;
+
+{ TJSRegExp }
+
+class function TJSRegExp.Cast(Intf: IJSObject): IJSRegExp;
+begin
+  Result:=TJSRegExp.Cast(Intf);
+end;
+
+{ TJSFunction }
+
+class function TJSFunction.Cast(Intf: IJSObject): IJSFunction;
+begin
+  Result:=TJSFunction.Cast(Intf);
+end;
+
+{ TJSMap }
+
+class function TJSMap.Cast(Intf: IJSObject): IJSMap;
+begin
+  Result:=TJSMap.Cast(Intf);
+end;
+
+{ TJSSet }
+
+class function TJSSet.Cast(Intf: IJSObject): IJSSet;
+begin
+  Result:=TJSSet.Cast(Intf);
+end;
+
 { TJOBCallbackHelper }
 
 procedure TJOBCallbackHelper.Init(Args: PByte);

+ 1 - 1
packages/rtl/js.pas

@@ -107,7 +107,7 @@ type
   TJSSetEventProc = reference to procedure(value : JSValue; key: NativeInt; set_: TJSSet);
   TJSSetProcCallBack = reference  to procedure(value: JSValue; key: JSValue);
 
-   { TJSSet }
+  { TJSSet }
   TJSSet = class external name 'Set'
   private
     FSize : NativeInt; external name 'size';