mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-09-10 13:49:03 +02:00
* Add some convenience functions
This commit is contained in:
parent
4f81e571e4
commit
49606b2627
@ -336,6 +336,7 @@ type
|
||||
Class Var UTF8TextDecoder: TJSTextDecoder;
|
||||
Protected
|
||||
class procedure setBigUint64(View: TJSDataView; byteOffset, value: NativeInt; littleEndian: Boolean);
|
||||
class procedure setBigInt64(View: TJSDataView; byteOffset, value: NativeInt; littleEndian: Boolean);
|
||||
procedure DoConsoleWrite(IsStdErr: Boolean; aBytes: TJSArray); virtual;
|
||||
procedure GetImports(aImports: TJSObject); virtual;
|
||||
Function GetTime(aClockID : NativeInt): NativeInt; virtual;
|
||||
@ -396,6 +397,14 @@ type
|
||||
Constructor Create;
|
||||
Destructor Destroy; override;
|
||||
Function GetUTF8StringFromMem(aLoc, aLen : Longint) : String;
|
||||
Procedure SetMemInfoInt8(aLoc : Integer; aValue : ShortInt);
|
||||
Procedure SetMemInfoInt16(aLoc : Integer; aValue : SmallInt);
|
||||
Procedure SetMemInfoInt32(aLoc : Integer; aValue : Longint);
|
||||
Procedure SetMemInfoInt64(aLoc : Integer; aValue : NativeInt);
|
||||
Procedure SetMemInfoUInt8(aLoc : Integer; aValue : Byte);
|
||||
Procedure SetMemInfoUInt16(aLoc : Integer; aValue : Word);
|
||||
Procedure SetMemInfoUInt32(aLoc : Integer; aValue : Cardinal);
|
||||
Procedure SetMemInfoUInt64(aLoc : Integer; aValue : NativeUint);
|
||||
// Add imports
|
||||
Procedure AddImports(aObject: TJSObject);
|
||||
Property ImportObject : TJSObject Read GetImportObject;
|
||||
@ -783,6 +792,28 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TPas2JSWASIEnvironment.setBigInt64(View: TJSDataView;
|
||||
byteOffset, value: NativeInt; littleEndian: Boolean);
|
||||
|
||||
Var
|
||||
LowWord,HighWord : Integer;
|
||||
|
||||
begin
|
||||
lowWord:=value;
|
||||
highWord:=value shr 32;
|
||||
if LittleEndian then
|
||||
begin
|
||||
view.setint32(ByteOffset+0, lowWord, littleEndian);
|
||||
view.setint32(ByteOffset+4, highWord, littleEndian);
|
||||
end
|
||||
else
|
||||
begin
|
||||
view.setint32(ByteOffset+4, lowWord, littleEndian);
|
||||
view.setint32(ByteOffset+0, highWord, littleEndian);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetInstance(AValue: TJSWebAssemblyInstance);
|
||||
begin
|
||||
if Finstance=AValue then Exit;
|
||||
@ -1372,6 +1403,85 @@ begin
|
||||
Result:=UTF8TextDecoder.Decode(getModuleMemoryDataView.buffer.slice(aLoc,aLoc+alen));
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoInt8(aLoc: Integer; aValue: ShortInt
|
||||
);
|
||||
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
view.setint8(aLoc,aValue);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoInt16(aLoc: Integer; aValue: SmallInt);
|
||||
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
view.setint16(aLoc,aValue, IsLittleEndian);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoInt32(aLoc: Integer; aValue: Longint);
|
||||
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
view.setInt32(aLoc,aValue,IsLittleEndian);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoInt64(aLoc: Integer; aValue: NativeInt);
|
||||
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
setBigInt64(View,aLoc,aValue,IsLittleEndian);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoUInt8(aLoc: Integer; aValue: Byte);
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
view.setUInt8(aLoc,aValue);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoUInt16(aLoc: Integer; aValue: Word);
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
view.setUint16(aLoc,aValue,IsLittleEndian);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoUInt32(aLoc: Integer;
|
||||
aValue: Cardinal);
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
view.setUint32(aLoc,aValue,IsLittleEndian);
|
||||
end;
|
||||
|
||||
procedure TPas2JSWASIEnvironment.SetMemInfoUInt64(aLoc: Integer;
|
||||
aValue: NativeUint);
|
||||
Var
|
||||
View : TJSDataView;
|
||||
|
||||
begin
|
||||
view:=getModuleMemoryDataView();
|
||||
setBigUint64(View,aLoc,aValue,IsLittleEndian);
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user