public PositionItem(BasePosition position) { if (position == null) { throw new ArgumentNullException("position"); } Position = position; Portfolio = position as Portfolio; if (Portfolio == null) { var pos = (Position)position; PortfolioName = pos.Portfolio.Name; Name = pos.Security.Id; DepoName = pos.DepoName; LimitType = pos.LimitType; Portfolio = pos.Portfolio; } else { PortfolioName = Portfolio.Name; Name = LocalizedStrings.Str1543; } }
public PositionEditCommand(BasePosition position) { if (position == null) { throw new ArgumentNullException(nameof(position)); } Position = position; }
/// <summary> /// GetHashCode() /// </summary> /// <returns></returns> public override int GetHashCode() => (ShowOffsetColumn ? int.MinValue : 0) ^ (ShowValuesColumn ? 0x40000000 : 0) ^ (ShowAsciiColumn ? 0x20000000 : 0) ^ StartPosition.GetHashCode() ^ EndPosition.GetHashCode() ^ BasePosition.GetHashCode() ^ (UseRelativePositions ? 0x10000000 : 0) ^ OffsetBitSize ^ (int)HexValuesDisplayFormat ^ BytesPerLine;
/// <summary> /// GetHashCode() /// </summary> /// <returns></returns> public override int GetHashCode() => CharsPerLine.GetHashCode() ^ BytesPerLine.GetHashCode() ^ GroupSizeInBytes.GetHashCode() ^ ShowOffset.GetHashCode() ^ OffsetLowerCaseHex.GetHashCode() ^ (int)OffsetFormat ^ StartPosition.GetHashCode() ^ EndPosition.GetHashCode() ^ BasePosition.GetHashCode() ^ UseRelativePositions.GetHashCode() ^ ShowValues.GetHashCode() ^ ValuesLowerCaseHex.GetHashCode() ^ OffsetBitSize.GetHashCode() ^ (int)ValuesFormat ^ ShowAscii.GetHashCode() ^ GetHexColumnTypeArrayHashCode(ColumnOrder);
public static Record ReadRecord(byte[] data, int start) { RecordType type = (RecordType)data[start]; byte length = data[start + 1]; Record result; try { switch (type) { case RecordType.PositionTimeGPS: { PositionTimeGPSData record = new PositionTimeGPSData(); record.Time = ToInt32(data, start + 2); record.Week = ToInt16(data, start + 6); record.SatelliteUsed = data[start + 8]; record.Flags = (PositionFlags)BitConverter.ToUInt16(data, start + 9) & PositionFlags.Mask; record.InitializationNumber = data[start + 10]; result = record; } break; case RecordType.PositionWGS84: { PositionWGS84Data record = new PositionWGS84Data(); record.Latitude = ToDouble(data, start + 2); record.Longitude = ToDouble(data, start + 10); record.Height = ToDouble(data, start + 18); result = record; } break; case RecordType.TangentPlaneDelta: { TangentPlaneDelta record = new TangentPlaneDelta(); record.East = ToDouble(data, start + 2); record.North = ToDouble(data, start + 10); record.Height = ToDouble(data, start + 18); result = record; } break; case RecordType.PositionSigmaInfo: { PositionSigmaInfo record = new PositionSigmaInfo(); record.PositionRMS = ToSingle(data, start + 2); record.SigmaEast = ToSingle(data, start + 6); record.SigmaNorth = ToSingle(data, start + 10); record.CovarianceEastNorth = ToSingle(data, start + 14); record.SigmaHeigth = ToSingle(data, start + 18); record.SemiMajorAxis = ToSingle(data, start + 22); record.SemiMinorAxis = ToSingle(data, start + 26); record.Orientation = ToSingle(data, start + 30); record.UnitVariance = ToSingle(data, start + 34); record.EpochCount = ToInt16(data, start + 38); result = record; } break; case RecordType.PDOPInfo: { PDOPInfo record = new PDOPInfo(); record.PDOP = ToSingle(data, start + 2); record.HDOP = ToSingle(data, start + 6); record.VDOP = ToSingle(data, start + 10); record.TDOP = ToSingle(data, start + 14); result = record; } break; case RecordType.SatellitesDetailed: { SatelliteDetailed record = new SatelliteDetailed(); record.Data = new SatelliteDetailedData[data[start + 2]]; for (int i = 0; i < record.Data.Length; i++) { int offset = start + 3 + 8 * i; record.Data[i] = new SatelliteDetailedData(); record.Data[i].PRN = data[offset]; record.Data[i].Flags = ((SatelliteFlags)BitConverter.ToUInt16(data, offset + 1)) & SatelliteFlags.Mask; record.Data[i].Elevation = (SByte)data[offset + 3]; record.Data[i].Azimuth = ToUInt16(data, offset + 4); record.Data[i].L1SNR = data[offset + 6]; record.Data[i].L2SNR = data[offset + 7]; } result = record; } break; case RecordType.AllSatellitesDetailed: { AllSatelliteDetailed record = new AllSatelliteDetailed(); record.Data = new AllSatelliteDetailedData[data[start + 2]]; for (int i = 0; i < record.Data.Length; i++) { int offset = start + 3 + 10 * i; record.Data[i] = new AllSatelliteDetailedData(); record.Data[i].PRN = data[offset]; record.Data[i].System = (SatelliteSystem)data[offset + 1]; record.Data[i].Flags = ((SatelliteFlags)BitConverter.ToUInt16(data, offset + 2)) & SatelliteFlags.Mask; record.Data[i].Elevation = (SByte)data[offset + 4]; record.Data[i].Azimuth = ToUInt16(data, offset + 5); record.Data[i].L1SNR = data[offset + 7]; record.Data[i].L2SNR = data[offset + 8]; record.Data[i].ExtraSNR = data[offset + 9]; } result = record; } break; case RecordType.BasePosition: { BasePosition record = new BasePosition(); record.Time = ToInt32(data, start + 2); record.Week = ToInt16(data, start + 6); record.Latitude = ToDouble(data, start + 8); record.Longitude = ToDouble(data, start + 16); record.Height = ToDouble(data, start + 24); record.Quality = (BaseQuality)data[start + 33]; result = record; } break; case RecordType.Attitude: { AttitudeInfo record = new AttitudeInfo(); record.Time = ToInt32(data, start + 2); record.Flags = data[start + 6]; record.SatelliteCount = data[start + 7]; record.CalculationMode = (AttitudeCalculationMode)data[start + 8]; record.Reserved = data[start + 9]; record.Pitch = ToDouble(data, start + 10); record.Yaw = ToDouble(data, start + 18); record.Roll = ToDouble(data, start + 26); record.MasterSlaveRange = ToDouble(data, start + 34); record.PDOP = ToInt16(data, start + 42); result = record; } break; default: result = new Record(); break; } } catch (IndexOutOfRangeException e) { String error_str = String.Format("data length: {0}\nstart index: {1}\ntype: {2}\nlength: {3}\n---\n", data.Length, start, start < data.Length ? ((RecordType)data[start]).ToString() : "???", start < (data.Length - 1) ? data[start + 1].ToString() : "???"); Util.HandleException(error_str + e); result = new Record(); } result.Type = type; result.Length = length; return(result); }