2 // Auto-generated file - DO NOT EDIT!
\r
3 // Please edit bitconverter.xsl if you want to make changes.
\r
7 namespace Mono.PEToolkit {
\r
10 /// Little-endian bit converter.
\r
12 public sealed class LEBitConverter {
\r
14 internal interface IConverter {
\r
16 short ToInt16(byte [] val, int idx);
\r
17 ushort ToUInt16(byte [] val, int idx);
\r
18 int ToInt32(byte [] val, int idx);
\r
19 uint ToUInt32(byte [] val, int idx);
\r
20 long ToInt64(byte [] val, int idx);
\r
21 ulong ToUInt64(byte [] val, int idx);
\r
25 public static readonly bool Native = System.BitConverter.IsLittleEndian;
\r
27 private static readonly IConverter impl = System.BitConverter.IsLittleEndian
\r
28 ? new LEConverter() as IConverter
\r
29 : new BEConverter() as IConverter;
\r
34 private LEBitConverter()
\r
36 // Never instantiated.
\r
39 ///<summary></summary>
\r
40 unsafe public static short SwapInt16(short x)
\r
42 short* p = stackalloc short [1];
\r
44 byte* bp = (byte*) p;
\r
51 ///<summary></summary>
\r
52 unsafe public static ushort SwapUInt16(ushort x)
\r
54 ushort* p = stackalloc ushort [1];
\r
56 byte* bp = (byte*) p;
\r
63 ///<summary></summary>
\r
64 unsafe public static int SwapInt32(int x)
\r
66 int* p = stackalloc int [1];
\r
68 byte* bp = (byte*) p;
\r
78 ///<summary></summary>
\r
79 unsafe public static uint SwapUInt32(uint x)
\r
81 uint* p = stackalloc uint [1];
\r
83 byte* bp = (byte*) p;
\r
93 ///<summary></summary>
\r
94 unsafe public static long SwapInt64(long x)
\r
96 long* p = stackalloc long [1];
\r
98 byte* bp = (byte*) p;
\r
114 ///<summary></summary>
\r
115 unsafe public static ulong SwapUInt64(ulong x)
\r
117 ulong* p = stackalloc ulong [1];
\r
119 byte* bp = (byte*) p;
\r
139 internal sealed class LEConverter : IConverter {
\r
140 ///<summary></summary>
\r
141 public short ToInt16(byte [] val, int idx)
\r
143 return BitConverter.ToInt16(val, idx);
\r
145 ///<summary></summary>
\r
146 public ushort ToUInt16(byte [] val, int idx)
\r
148 return BitConverter.ToUInt16(val, idx);
\r
150 ///<summary></summary>
\r
151 public int ToInt32(byte [] val, int idx)
\r
153 return BitConverter.ToInt32(val, idx);
\r
155 ///<summary></summary>
\r
156 public uint ToUInt32(byte [] val, int idx)
\r
158 return BitConverter.ToUInt32(val, idx);
\r
160 ///<summary></summary>
\r
161 public long ToInt64(byte [] val, int idx)
\r
163 return BitConverter.ToInt64(val, idx);
\r
165 ///<summary></summary>
\r
166 public ulong ToUInt64(byte [] val, int idx)
\r
168 return BitConverter.ToUInt64(val, idx);
\r
173 internal sealed class BEConverter : IConverter {
\r
174 ///<summary></summary>
\r
175 public short ToInt16(byte [] val, int idx)
\r
177 return SwapInt16(BitConverter.ToInt16(val, idx));
\r
179 ///<summary></summary>
\r
180 public ushort ToUInt16(byte [] val, int idx)
\r
182 return SwapUInt16(BitConverter.ToUInt16(val, idx));
\r
184 ///<summary></summary>
\r
185 public int ToInt32(byte [] val, int idx)
\r
187 return SwapInt32(BitConverter.ToInt32(val, idx));
\r
189 ///<summary></summary>
\r
190 public uint ToUInt32(byte [] val, int idx)
\r
192 return SwapUInt32(BitConverter.ToUInt32(val, idx));
\r
194 ///<summary></summary>
\r
195 public long ToInt64(byte [] val, int idx)
\r
197 return SwapInt64(BitConverter.ToInt64(val, idx));
\r
199 ///<summary></summary>
\r
200 public ulong ToUInt64(byte [] val, int idx)
\r
202 return SwapUInt64(BitConverter.ToUInt64(val, idx));
\r
210 ///<summary></summary>
\r
211 public static short ToInt16(byte [] val, int idx)
\r
213 return impl.ToInt16(val, idx);
\r
216 ///<summary></summary>
\r
217 public static ushort ToUInt16(byte [] val, int idx)
\r
219 return impl.ToUInt16(val, idx);
\r
222 ///<summary></summary>
\r
223 public static int ToInt32(byte [] val, int idx)
\r
225 return impl.ToInt32(val, idx);
\r
228 ///<summary></summary>
\r
229 public static uint ToUInt32(byte [] val, int idx)
\r
231 return impl.ToUInt32(val, idx);
\r
234 ///<summary></summary>
\r
235 public static long ToInt64(byte [] val, int idx)
\r
237 return impl.ToInt64(val, idx);
\r
240 ///<summary></summary>
\r
241 public static ulong ToUInt64(byte [] val, int idx)
\r
243 return impl.ToUInt64(val, idx);
\r