瀏覽代碼

wasmjob: added AllocJSValue

mattias 3 年之前
父節點
當前提交
67ecbfcb0d
共有 1 個文件被更改,包括 16 次插入0 次删除
  1. 16 0
      demo/wasienv/dom/job_js.pas

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

@@ -149,6 +149,7 @@ type
     function AllocIntf(Intf: IJSObject): PByte;
     function AllocObject(Obj: TJSObject): PByte;
     function AllocObjId(ObjId: TJOBObjectID): PByte;
+    function AllocJSValue(Value: TJOB_JSValue): PByte;
   end;
 
   TJOBCallback = function(const aMethod: TMethod; var H: TJOBCallbackHelper): PByte;
@@ -1363,6 +1364,21 @@ begin
   PJOBObjectID(Result+1)^:=ObjId;
 end;
 
+function TJOBCallbackHelper.AllocJSValue(Value: TJOB_JSValue): PByte;
+begin
+  if Value=nil then
+    exit(AllocUndefined);
+  case Value.Kind of
+    jjvkUndefined: Result:=AllocUndefined;
+    jjvkBoolean: Result:=AllocBool(TJOB_Boolean(Value).Value);
+    jjvkDouble: Result:=AllocDouble(TJOB_Double(Value).Value);
+    jjvkString: Result:=AllocString(TJOB_String(Value).Value);
+    jjvkObject: Result:=AllocIntf(TJOB_Object(Value).Value);
+  else
+    raise EJSArgParse.Create('AllocJSValue unsupported: '+JOB_JSValueKindNames[Value.Kind]);
+  end;
+end;
+
 { TJOB_JSValue }
 
 constructor TJOB_JSValue.Create(aKind: TJOB_JSValueKind);