diff --git a/demo/wasienv/dom/job_js.pas b/demo/wasienv/dom/job_js.pas index ca20314..e121fbe 100644 --- a/demo/wasienv/dom/job_js.pas +++ b/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);