فهرست منبع

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