|
// ------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
// ------------------------------------------------------------------------------
#pragma warning disable CS1591,CS1573,CS0465,CS0649,CS8019,CS1570,CS1584,CS1658,CS0436,CS8981
using global::System;
using global::System.Diagnostics;
using global::System.Diagnostics.CodeAnalysis;
using global::System.Runtime.CompilerServices;
using global::System.Runtime.InteropServices;
using global::System.Runtime.Versioning;
using winmdroot = global::Windows.Win32;
namespace Windows.Win32
{
namespace Foundation
{
/// <summary>The DECIMAL structure represents a decimal data type that provides a sign and scale for a number.</summary>
/// <remarks></remarks>
[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal partial struct DECIMAL
{
/// <summary>Reserved.</summary>
internal ushort wReserved;
internal _Anonymous1_e__Union Anonymous1;
/// <summary>The high 32 bits of the number.</summary>
internal uint Hi32;
internal _Anonymous2_e__Union Anonymous2;
public DECIMAL(decimal value)
{
unchecked
{
const int SignMask = (int)0x80000000;
Span<int> bits = stackalloc int[4];
decimal.GetBits(value, bits);
uint lo32 = (uint)bits[0];
uint mid32 = (uint)bits[1];
uint hi32 = (uint)bits[2];
byte scale = (byte)(bits[3] >> 16);
byte sign = (bits[3] & SignMask) == SignMask ? (byte)0x80 : (byte)0x00;
this.Anonymous2 = new _Anonymous2_e__Union() {
Anonymous = new _Anonymous2_e__Union._Anonymous_e__Struct() {
Lo32 = lo32, Mid32 = mid32 } };
this.Hi32 = hi32;
this.Anonymous1 = new _Anonymous1_e__Union() {
Anonymous = new _Anonymous1_e__Union._Anonymous_e__Struct() {
scale = scale, sign = sign } };
this.wReserved = 0;
}
}
public static implicit operator decimal(DECIMAL value)
{
return new decimal(
(int)value.Anonymous2.Anonymous.Lo32, (int)value.Anonymous2.Anonymous.Mid32, (int)value.Hi32, value.Anonymous1.Anonymous.sign == 0x80, value.Anonymous1.Anonymous.scale);
}
public static implicit operator DECIMAL(decimal value) => new DECIMAL(value);
[StructLayout(LayoutKind.Explicit)]
[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal partial struct _Anonymous1_e__Union
{
[FieldOffset(0)]
internal _Anonymous_e__Struct Anonymous;
[FieldOffset(0)]
internal ushort signscale;
[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal partial struct _Anonymous_e__Struct
{
internal byte scale;
internal byte sign;
}
}
[StructLayout(LayoutKind.Explicit)]
[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal partial struct _Anonymous2_e__Union
{
[FieldOffset(0)]
internal _Anonymous_e__Struct Anonymous;
[FieldOffset(0)]
internal ulong Lo64;
[global::System.CodeDom.Compiler.GeneratedCode("Microsoft.Windows.CsWin32", "0.3.151+58e949951d.RR")]
internal partial struct _Anonymous_e__Struct
{
internal uint Lo32;
internal uint Mid32;
}
}
}
}
}
|