mirror of
https://gitlab.com/freepascal.org/fpc/pas2js.git
synced 2025-09-14 00:39:13 +02:00
demo: wasidom: invoke string result
This commit is contained in:
parent
b359b4d41f
commit
1bd4ed47ad
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user