public char ToChar() { switch (ValueType) { case ValueTypes.Undefined: return(Runtime.Instance.DefaultDUndefined.ToChar()); case ValueTypes.String: return(DObjectValue.ToChar()); case ValueTypes.Char: return(CharValue); //case ValueTypes.Boolean: return (BoolValue? '1':'\0'); //case ValueTypes.Float: return FloatValue != 0.0; //case ValueTypes.Double: return DoubleValue != 0.0; //case ValueTypes.Int8: return Int8Value != 0; //case ValueTypes.Int16: return Int16Value != 0; //case ValueTypes.Int32: return Int32Value != 0; //case ValueTypes.Int64: return Int64Value != 0; //case ValueTypes.UInt8: return UInt8Value != 0; //case ValueTypes.UInt16: return UInt16Value != 0; //case ValueTypes.UInt32: return UInt32Value != 0; //case ValueTypes.UInt64: return UInt64Value != 0; case ValueTypes.Object: case ValueTypes.Function: case ValueTypes.Array: return(DObjectValue.ToChar()); case ValueTypes.Null: return(Runtime.Instance.DefaultDNull.ToChar()); //case ValueTypes.Property: return DObjectValue.ToBoolean(); } Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to Char (UInt16)", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToChar()); }
public DArray ToDArray() { switch (ValueType) { case ValueTypes.Array: case ValueTypes.Object: case ValueTypes.Property: return(DObjectValue.ToDArray()); } Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to array", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToDArray()); }
public DFunction ToDFunction() { if (DObjectValue != null) { return(DObjectValue.ToDFunction()); } else { Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to function", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToDFunction()); } }
public ulong ToUInt64() { switch (ValueType) { case ValueTypes.Undefined: return(Runtime.Instance.DefaultDUndefined.ToUInt64()); case ValueTypes.String: return(DObjectValue.ToUInt64()); case ValueTypes.Char: return(CharValue); case ValueTypes.Boolean: return(BooleanValue ? 1UL : 0UL); case ValueTypes.Float: return((ulong)FloatValue); case ValueTypes.Double: return((ulong)DoubleValue); case ValueTypes.Int8: return((ulong)Int8Value); case ValueTypes.Int16: return((ulong)Int16Value); case ValueTypes.Int32: return((ulong)Int32Value); case ValueTypes.Int64: return((ulong)Int64Value); case ValueTypes.UInt8: return(UInt8Value); case ValueTypes.UInt16: return(UInt16Value); case ValueTypes.UInt32: return(UInt32Value); case ValueTypes.UInt64: return(UInt64Value); case ValueTypes.Object: case ValueTypes.Function: case ValueTypes.Array: return(DObjectValue.ToUInt64()); case ValueTypes.Null: return(Runtime.Instance.DefaultDNull.ToUInt64()); //case ValueTypes.Property: //default: } Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to UInt64", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToUInt64()); }
public int ToInt32() { switch (ValueType) { case ValueTypes.Undefined: return(Runtime.Instance.DefaultDUndefined.ToInt32()); case ValueTypes.String: return(DObjectValue.ToInt32()); case ValueTypes.Char: return(CharValue); case ValueTypes.Boolean: return(BooleanValue ? 1 : 0); case ValueTypes.Float: return((int)(uint)FloatValue); case ValueTypes.Double: return((int)(uint)DoubleValue); //if we don't convert to uint first, we might get the boundary numbers (e.g. 0xffffffff) wrong! case ValueTypes.Int8: return(Int8Value); case ValueTypes.Int16: return(Int16Value); case ValueTypes.Int32: return(Int32Value); case ValueTypes.Int64: return((int)Int64Value); case ValueTypes.UInt8: return(UInt8Value); case ValueTypes.UInt16: return(UInt16Value); case ValueTypes.UInt32: return((int)UInt32Value); case ValueTypes.UInt64: return((int)UInt64Value); case ValueTypes.Object: case ValueTypes.Function: case ValueTypes.Array: return(DObjectValue.ToInt32()); case ValueTypes.Null: return(Runtime.Instance.DefaultDNull.ToInt32()); //case ValueTypes.Property: //default: } Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to Int32", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToInt32()); }
public bool ToBoolean() { switch (ValueType) { case ValueTypes.Undefined: return(Runtime.Instance.DefaultDUndefined.ToBoolean()); case ValueTypes.String: return(DObjectValue.ToBoolean()); case ValueTypes.Char: return(CharValue != '\0'); case ValueTypes.Boolean: return(BooleanValue); case ValueTypes.Float: return(FloatValue != 0.0 && !float.IsNaN(FloatValue)); case ValueTypes.Double: return(DoubleValue != 0.0 && !double.IsNaN(DoubleValue)); case ValueTypes.Int8: return(Int8Value != 0); case ValueTypes.Int16: return(Int16Value != 0); case ValueTypes.Int32: return(Int32Value != 0); case ValueTypes.Int64: return(Int64Value != 0); case ValueTypes.UInt8: return(UInt8Value != 0); case ValueTypes.UInt16: return(UInt16Value != 0); case ValueTypes.UInt32: return(UInt32Value != 0); case ValueTypes.UInt64: return(UInt64Value != 0); case ValueTypes.Object: case ValueTypes.Function: case ValueTypes.Array: Debug.Assert(DObjectValue != null, "Invalid situation! DObject cannot be null here!"); return(true); case ValueTypes.Null: return(Runtime.Instance.DefaultDNull.ToBoolean()); //case ValueTypes.Property: return DObjectValue.ToBoolean(); } Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to Boolean", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToBoolean()); }
public double ToDouble() { switch (ValueType) { case ValueTypes.Undefined: return(Runtime.Instance.DefaultDUndefined.ToDouble()); case ValueTypes.String: return(DObjectValue.ToDouble()); case ValueTypes.Char: return(CharValue); case ValueTypes.Boolean: return(BooleanValue ? 1 : 0); case ValueTypes.Float: return(FloatValue); case ValueTypes.Double: return(DoubleValue); case ValueTypes.Int8: return(Int8Value); case ValueTypes.Int16: return(Int16Value); case ValueTypes.Int32: return(Int32Value); case ValueTypes.Int64: return(Int64Value); case ValueTypes.UInt8: return(UInt8Value); case ValueTypes.UInt16: return(UInt16Value); case ValueTypes.UInt32: return(UInt32Value); case ValueTypes.UInt64: return(UInt64Value); case ValueTypes.Object: case ValueTypes.Function: case ValueTypes.Array: return(DObjectValue.ToDouble()); case ValueTypes.Null: return(Runtime.Instance.DefaultDNull.ToDouble()); } Trace.Fail(new InvalidOperationException(string.Format("Cannot convert {0} to Double", ValueType))); return(Runtime.Instance.DefaultDUndefined.ToDouble()); }
public string GetTypeOf() { switch (ValueType) { case ValueTypes.Undefined: return("undefined"); case ValueTypes.String: return("string"); case ValueTypes.Boolean: return("boolean"); case ValueTypes.Char: //=UInt16 case ValueTypes.Float: case ValueTypes.Double: case ValueTypes.Int8: case ValueTypes.Int16: case ValueTypes.Int32: case ValueTypes.Int64: case ValueTypes.UInt8: case ValueTypes.UInt16: case ValueTypes.UInt32: case ValueTypes.UInt64: return("number"); case ValueTypes.Object: case ValueTypes.Function: case ValueTypes.Array: case ValueTypes.Null: case ValueTypes.Property: return(DObjectValue.GetTypeOf()); // "object"; default: Trace.Fail(new InvalidOperationException(string.Format("Cannot get typeof {0}", ValueType))); break; } return(Runtime.Instance.DefaultDUndefined.GetTypeOf()); }