demo: wasidom: invoke string result

This commit is contained in:
mattias 2022-05-24 08:17:20 +02:00
parent b359b4d41f
commit 1bd4ed47ad
2 changed files with 5 additions and 18 deletions

View File

@ -1,7 +1,6 @@
unit wadom_browser;
{$mode objfpc}
{$h+}
interface
@ -30,7 +29,7 @@ Type
function GetStringResult(ResultP: NativeInt): TWasiDomResult; virtual;
function ReleaseStringResult: TWasiDomResult; virtual;
function GetInvokeArguments(View: TJSDataView; ArgsP: NativeInt): TJSValueDynArray; virtual;
function GetWasiDomResult(const v: jsvalue): TWasiDomResult;
function GetWasiDomResult(v: jsvalue): TWasiDomResult;
Public
Constructor Create(aEnv: TPas2JSWASIEnvironment); override;
Procedure FillImportObject(aObject: TJSObject); override;
@ -322,7 +321,7 @@ begin
end;
end;
function TWADomBridge.GetWasiDomResult(const v: jsvalue): TWasiDomResult;
function TWADomBridge.GetWasiDomResult(v: jsvalue): TWasiDomResult;
begin
case jstypeof(v) of
'undefined': Result:=WasiDomResult_Undefined;
@ -332,7 +331,7 @@ begin
'symbol': Result:=WasiDomResult_Symbol;
'bigint': Result:=WasiDomResult_BigInt;
'function': Result:=WasiDomResult_Function;
'object': Result:=WasiDomResult_Object;
'object': if v=nil then Result:=WasiDomResult_Null else Result:=WasiDomResult_Object;
else Result:=WasiDomResult_None;
end;
end;

View File

@ -94,7 +94,7 @@ function __wasibridgefn_invoke_stringresult(
FuncNameP: PChar;
FuncNameLen: longint;
ArgP: PByte;
ResultLenP: PNativeInt // length
ResultLenP: PByte // length
): TWasiDomResult; external WasiDomExportName name WasiBridgeFn_InvokeStringResult;
function __wasibridgefn_getstringresult(
@ -497,20 +497,9 @@ function TJSObject.InvokeJSUnicodeStringResult(const aName: string;
var
ResultLen: NativeInt;
aError: TWasiDomResult;
InvokeArgs: PByte;
begin
ResultLen:=0;
if length(Args)=0 then
aError:=__wasibridgefn_invoke_stringresult(ObjectID,PChar(aName),length(aName),nil,@ResultLen)
else begin
InvokeArgs:=CreateInvokeJSArgs(Args);
try
aError:=__wasibridgefn_invoke_stringresult(ObjectID,PChar(aName),length(aName),InvokeArgs,@ResultLen);
finally
if InvokeArgs<>nil then
FreeMem(InvokeArgs);
end;
end;
aError:=InvokeJSOneResult(aName,Args,@__wasibridgefn_invoke_stringresult,@ResultLen);
if aError<>WasiDomResult_String then
WasiInvokeRaiseResultMismatch(aName,WasiDomResult_String,aError);
if ResultLen=0 then
@ -524,7 +513,6 @@ begin
__wasibridgefn_releasestringresult();
end;
__wasibridgefn_getstringresult(PByte(Result));
writeln('TJSObject.InvokeJSUnicodeStringResult Result="',Result,'"');
end;
function TJSObject.InvokeJSObjResult(const aName: string;