/// <summary> /// Creates a <c>Number</c> value from a <c>double</c> value /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="value">The value to be converted</param> /// <returns>The new <c>Number</c> value</returns> public static EdgeJsValue FromDouble(double value) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsDoubleToNumber(value, out reference)); return(reference); }
/// <summary> /// Test if an object has a value at the specified index /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="index">The index to test</param> /// <returns>Whether the object has an value at the specified index</returns> public bool HasIndexedProperty(EdgeJsValue index) { bool hasProperty; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsHasIndexedProperty(this, index, out hasProperty)); return(hasProperty); }
/// <summary> /// Compare two JavaScript values for strict equality /// </summary> /// <remarks> /// <para> /// This function is equivalent to the "===" operator in JavaScript. /// </para> /// <para> /// Requires an active script context. /// </para> /// </remarks> /// <param name="other">The object to compare</param> /// <returns>Whether the values are strictly equal</returns> public bool StrictEquals(EdgeJsValue other) { bool equals; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsStrictEquals(this, other, out equals)); return(equals); }
/// <summary> /// Determines whether an object has a property /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="propertyId">The ID of the property</param> /// <returns>Whether the object (or a prototype) has the property</returns> public bool HasProperty(EdgeJsPropertyId propertyId) { bool hasProperty; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsHasProperty(this, propertyId, out hasProperty)); return(hasProperty); }
/// <summary> /// Deletes a object's property /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="propertyId">The ID of the property</param> /// <param name="useStrictRules">The property set should follow strict mode rules</param> /// <returns>Whether the property was deleted</returns> public EdgeJsValue DeleteProperty(EdgeJsPropertyId propertyId, bool useStrictRules) { EdgeJsValue returnReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsDeleteProperty(this, propertyId, useStrictRules, out returnReference)); return(returnReference); }
/// <summary> /// Converts a value to <c>String</c> using regular JavaScript semantics /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The converted value</returns> public EdgeJsValue ConvertToString() { EdgeJsValue stringReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsConvertValueToString(this, out stringReference)); return(stringReference); }
/// <summary> /// Gets a property descriptor for an object's own property /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="propertyId">The ID of the property</param> /// <returns>The property descriptor</returns> public EdgeJsValue GetOwnPropertyDescriptor(EdgeJsPropertyId propertyId) { EdgeJsValue descriptorReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsGetOwnPropertyDescriptor(this, propertyId, out descriptorReference)); return(descriptorReference); }
/// <summary> /// Creates a new JavaScript function /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="function">The method to call when the function is invoked</param> /// <param name="callbackData">Data to be provided to all function callbacks</param> /// <returns>The new function object</returns> public static EdgeJsValue CreateFunction(EdgeJsNativeFunction function, IntPtr callbackData) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateFunction(function, callbackData, out reference)); return(reference); }
/// <summary> /// Creates a JavaScript array object /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="length">The initial length of the array</param> /// <returns>The new array object</returns> public static EdgeJsValue CreateArray(uint length) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateArray(length, out reference)); return(reference); }
/// <summary> /// Creates a new <c>Object</c> /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The new <c>Object</c></returns> public static EdgeJsValue CreateObject() { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateObject(out reference)); return(reference); }
/// <summary> /// Creates a new <c>Object</c> that stores some external data /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="data">External data that the object will represent. May be null</param> /// <param name="finalizer">The callback for when the object is finalized. May be null.</param> /// <returns>The new <c>Object</c></returns> public static EdgeJsValue CreateExternalObject(IntPtr data, JsObjectFinalizeCallback finalizer) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateExternalObject(data, finalizer, out reference)); return(reference); }
/// <summary> /// Creates a JavaScript value that is a projection of the passed in object /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="value">The object to be projected</param> /// <returns>The JavaScript value that is a projection of the object</returns> public static EdgeJsValue FromObject(object value) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsVariantToValue(ref value, out reference)); return(reference); }
/// <summary> /// Creates a <c>String</c> value from a string pointer /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="value">The string to convert to a <c>String</c> value</param> /// <returns>The new <c>String</c> value</returns> public static EdgeJsValue FromString(string value) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsPointerToString(value, new UIntPtr((uint)value.Length), out reference)); return(reference); }
/// <summary> /// Creates a <c>Number</c> value from a <c>int</c> value /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="value">The value to be converted</param> /// <returns>The new <c>Number</c> value</returns> public static EdgeJsValue FromInt32(int value) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsIntToNumber(value, out reference)); return(reference); }
/// <summary> /// Converts a value to <c>Boolean</c> using regular JavaScript semantics /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The converted value</returns> public EdgeJsValue ConvertToBoolean() { EdgeJsValue booleanReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsConvertValueToBoolean(this, out booleanReference)); return(booleanReference); }
/// <summary> /// Creates a new JavaScript URIError error object /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="message">Message for the error object</param> /// <returns>The new error object</returns> public static EdgeJsValue CreateUriError(EdgeJsValue message) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsCreateURIError(message, out reference)); return(reference); }
/// <summary> /// Converts a value to <c>Number</c> using regular JavaScript semantics /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The converted value</returns> public EdgeJsValue ConvertToNumber() { EdgeJsValue numberReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsConvertValueToNumber(this, out numberReference)); return(numberReference); }
/// <summary> /// Adds a reference to the object /// </summary> /// <remarks> /// This only needs to be called on objects that are not going to be stored somewhere on /// the stack. Calling AddRef ensures that the JavaScript object the value refers to will not be freed /// until Release is called. /// </remarks> /// <returns>The object's new reference count</returns> public uint AddRef() { uint count; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsAddRef(this, out count)); return(count); }
/// <summary> /// Converts a value to <c>Object</c> using regular JavaScript semantics /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The converted value</returns> public EdgeJsValue ConvertToObject() { EdgeJsValue objectReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsConvertValueToObject(this, out objectReference)); return(objectReference); }
/// <summary> /// Releases a reference to the object /// </summary> /// <remarks> /// Removes a reference that was created by AddRef. /// </remarks> /// <returns>The object's new reference count</returns> public uint Release() { uint count; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsRelease(this, out count)); return(count); }
/// <summary> /// Gets a list of all properties on the object /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>An array of property names</returns> public EdgeJsValue GetOwnPropertyNames() { EdgeJsValue propertyNamesReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsGetOwnPropertyNames(this, out propertyNamesReference)); return(propertyNamesReference); }
/// <summary> /// Retrieves a <c>bool</c> value of a <c>Boolean</c> value /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The converted value</returns> public bool ToBoolean() { bool value; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsBooleanToBool(this, out value)); return(value); }
/// <summary> /// Gets a object's property /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="id">The ID of the property</param> /// <returns>The value of the property</returns> public EdgeJsValue GetProperty(EdgeJsPropertyId id) { EdgeJsValue propertyReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsGetProperty(this, id, out propertyReference)); return(propertyReference); }
/// <summary> /// Retrieves a <c>double</c> value of a <c>Number</c> value /// </summary> /// <remarks> /// <para> /// This function retrieves the value of a Number value. It will fail with /// <c>InvalidArgument</c> if the type of the value is not <c>Number</c>. /// </para> /// <para> /// Requires an active script context. /// </para> /// </remarks> /// <returns>The <c>double</c> value</returns> public double ToDouble() { double value; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsNumberToDouble(this, out value)); return(value); }
/// <summary> /// Defines a new object's own property from a property descriptor /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="propertyId">The ID of the property</param> /// <param name="propertyDescriptor">The property descriptor</param> /// <returns>Whether the property was defined</returns> public bool DefineProperty(EdgeJsPropertyId propertyId, EdgeJsValue propertyDescriptor) { bool result; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsDefineProperty(this, propertyId, propertyDescriptor, out result)); return(result); }
/// <summary> /// Retrieves a <c>int</c> value of a <c>Number</c> value /// </summary> /// <remarks> /// <para> /// This function retrieves the value of a Number value. It will fail with /// <c>InvalidArgument</c> if the type of the value is not <c>Number</c>. /// </para> /// <para> /// Requires an active script context. /// </para> /// </remarks> /// <returns>The <c>int</c> value</returns> public int ToInt32() { int value; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsNumberToInt(this, out value)); return(value); }
/// <summary> /// Retrieve a value at the specified index of an object /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="index">The index to retrieve</param> /// <returns>The retrieved value</returns> public EdgeJsValue GetIndexedProperty(EdgeJsValue index) { EdgeJsValue propertyReference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsGetIndexedProperty(this, index, out propertyReference)); return(propertyReference); }
/// <summary> /// Retrieves a object representation of an <c>Object</c> value /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <returns>The object representation of the value</returns> public object ToObject() { object value; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsValueToVariant(this, out value)); return(value); }
/// <summary> /// Gets a property ID associated with the name /// </summary> /// <remarks> /// <para> /// Property IDs are specific to a context and cannot be used across contexts. /// </para> /// <para> /// Requires an active script context. /// </para> /// </remarks> /// <param name="name">The name of the property ID to get or create. /// The name may consist of only digits.</param> /// <returns>The property ID in this runtime for the given name</returns> public static EdgeJsPropertyId FromString(string name) { EdgeJsPropertyId id; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsGetPropertyIdFromName(name, out id)); return(id); }
/// <summary> /// Creates a <c>Boolean</c> value from a <c>bool</c> value /// </summary> /// <remarks> /// Requires an active script context. /// </remarks> /// <param name="value">The value to be converted</param> /// <returns>The converted value</returns> public static EdgeJsValue FromBoolean(bool value) { EdgeJsValue reference; EdgeJsErrorHelpers.ThrowIfError(EdgeNativeMethods.JsBoolToBoolean(value, out reference)); return(reference); }