public override sealed IObject Construct(IEnvironment environment, IArgs args) { var obj = new NString(environment); { var str = args.Count > 0 ? args[0].ConvertToString() : environment.CreateString(""); var len = environment.CreateNumber(str.BaseValue.Length); var lenDesc = environment.CreateDataDescriptor(len, false, false, false); obj.Class = "String"; obj.Extensible = true; obj.Prototype = environment.StringPrototype; obj.PrimitiveValue = str; obj.DefineOwnProperty("length", lenDesc, false); } return obj; }
/// <summary> /// Writes a value to the file stream using BinaryWriter /// </summary> /// <typeparam name="T">Structure type</typeparam> /// <param name="value">Value to write</param> /// <param name="length">Length of the value</param> public void Write <T>(T value, int length) { if (typeof(T) == typeof(NString)) { NString nString = (NString)((object)value); byte[] stringData = encoding.GetBytes(nString); byte[] data = new byte[length]; for (int i = 0; i < stringData.Length; i++) { data[i] = stringData[i]; } binaryWriter.Write(data); } }
public sealed override IObject Construct(IEnvironment environment, IArgs args) { var obj = new NString(environment); { var str = args.Count > 0 ? args[0].ConvertToString() : environment.CreateString(""); var len = environment.CreateNumber(str.BaseValue.Length); var lenDesc = environment.CreateDataDescriptor(len, false, false, false); obj.Class = "String"; obj.Extensible = true; obj.Prototype = environment.StringPrototype; obj.PrimitiveValue = str; obj.DefineOwnProperty("length", lenDesc, false); } return(obj); }