public static JS.Value ManagedToNative(JSContextPtr cx, object value) { if (value == null) { return(JS.Value.Null); } var s = value as string; if (s != null) { var pString = JSAPI.NewStringCopy(cx, s); return(new JS.Value(pString)); } var a = value as Array; if (a != null) { var va = new JS.ValueArray((uint)a.Length); for (int i = 0, l = a.Length; i < l; i++) { va.Elements[i] = ManagedToNative(cx, a.GetValue(i)); } JS.ValueArrayPtr vaPtr = va; var pArray = JSAPI.NewArrayObject(cx, ref vaPtr); return(new JS.Value(pArray)); } return((JS.Value)Activator.CreateInstance(typeof(JS.Value), value)); }
private unsafe static JSObjectPtr CreateArrayImpl( JSContextPtr context, JS.Value[] contents, uint offset, uint count ) { if (count == 0xFFFFFFFF) { count = (uint)(contents.Length - offset); } if ( (count > (contents.Length - offset)) || (offset >= contents.Length) ) throw new ArgumentException("offset/count out of range"); fixed(JS.Value *pContents = &contents[offset]) { var valueArray = new JS.ValueArrayPtr(count, (IntPtr)pContents); return(JSAPI.NewArrayObject(context, ref valueArray)); } }
public JSArray(JSContextPtr context, ref JS.ValueArrayPtr contents) : this(context, JSAPI.NewArrayObject(context, ref contents)) { }
public JSArray(JSContextPtr context, uint length) : this(context, JSAPI.NewArrayObject(context, length)) { }