wasmjob: started base classes

This commit is contained in:
mattias 2022-07-15 20:57:42 +02:00
parent 73e36f3a51
commit 08ec14ff9b
2 changed files with 481 additions and 1 deletions

View File

@ -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);

View File

@ -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';