1 // 2 // Copyright (c) 2010-2023 Antmicro 3 // 4 // This file is licensed under the MIT License. 5 // Full license text is available in 'licenses/MIT.txt'. 6 // 7 using System; 8 using System.Linq; 9 10 namespace Antmicro.Renode.Utilities.Packets 11 { 12 [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, Inherited = false, AllowMultiple = false)] 13 public sealed class OffsetAttribute : Attribute 14 { OffsetAttribute(uint quadWords = 0, uint doubleWords = 0, uint words = 0, uint bytes = 0, uint bits = 0)15 public OffsetAttribute(uint quadWords = 0, uint doubleWords = 0, uint words = 0, uint bytes = 0, uint bits = 0) 16 { 17 OffsetInBytes = new[] 18 { 19 (quadWords << 3), 20 (doubleWords << 2), 21 (words << 1), 22 bytes, 23 (bits >> 3) 24 }.Aggregate((a, b) => a + b); 25 OffsetInBits = bits & 0x7; 26 } 27 28 public uint OffsetInBytes { get; } 29 public uint OffsetInBits { get; } 30 } 31 }