Skip to content

Instantly share code, notes, and snippets.

@fpawel
Last active November 2, 2020 07:15
Show Gist options
  • Save fpawel/5f505e1c700240a5024010e072e13c30 to your computer and use it in GitHub Desktop.
Save fpawel/5f505e1c700240a5024010e072e13c30 to your computer and use it in GitHub Desktop.
PaymentMethod.cs
[CompilationMapping(SourceConstructFlags.SumType), Struct, DebuggerDisplay("{__DebugDisplay(),nq}")]
[Serializable]
[StructLayout(LayoutKind.Auto, CharSet = CharSet.Auto)]
public struct PaymentMethod : IEquatable<Program.PaymentMethod>, IStructuralEquatable, IComparable<Program.PaymentMethod>, IComparable, IStructuralComparable
{
public static class Tags
{
public const int Cash = 0;
public const int Check = 1;
public const int CreditCard = 2;
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.CheckNumber item;
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.CardType item1;
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal Program.CardNumber item2;
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
internal int _tag;
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public int Tag
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this._tag;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public static Program.PaymentMethod Cash
{
[CompilationMapping(SourceConstructFlags.UnionCase, 0)]
get
{
return new Program.PaymentMethod(0);
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsCash
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 0;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsCheck
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 1;
}
}
[DebuggerBrowsable(DebuggerBrowsableState.Never), DebuggerNonUserCode, CompilerGenerated]
public bool IsCreditCard
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.Tag == 2;
}
}
[CompilationMapping(SourceConstructFlags.Field, 1, 0), DebuggerNonUserCode, CompilerGenerated]
public Program.CheckNumber Item
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item;
}
}
[CompilationMapping(SourceConstructFlags.Field, 2, 0), DebuggerNonUserCode, CompilerGenerated]
public Program.CardType Item1
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item1;
}
}
[CompilationMapping(SourceConstructFlags.Field, 2, 1), DebuggerNonUserCode, CompilerGenerated]
public Program.CardNumber Item2
{
[DebuggerNonUserCode, CompilerGenerated]
get
{
return this.item2;
}
}
[CompilationMapping(SourceConstructFlags.UnionCase, 1)]
public static Program.PaymentMethod NewCheck(Program.CheckNumber item)
{
return new Program.PaymentMethod(item, 1);
}
[CompilationMapping(SourceConstructFlags.UnionCase, 2)]
public static Program.PaymentMethod NewCreditCard(Program.CardType item1, Program.CardNumber item2)
{
return new Program.PaymentMethod(item1, item2, 2);
}
[DebuggerNonUserCode, CompilerGenerated]
internal PaymentMethod(int _tag)
{
this._tag = _tag;
}
[DebuggerNonUserCode, CompilerGenerated]
internal PaymentMethod(Program.CheckNumber item, int _tag)
{
this.item = item;
this._tag = _tag;
}
[DebuggerNonUserCode, CompilerGenerated]
internal PaymentMethod(Program.CardType item1, Program.CardNumber item2, int _tag)
{
this.item1 = item1;
this.item2 = item2;
this._tag = _tag;
}
[DebuggerNonUserCode, CompilerGenerated]
internal object __DebugDisplay()
{
return ExtraTopLevelOperators.PrintFormatToString<FSharpFunc<Program.PaymentMethod, string>>(new PrintfFormat<FSharpFunc<Program.PaymentMethod, string>, Unit, string, string, string>("%+0.8A")).Invoke(this);
}
[CompilerGenerated]
public sealed override int CompareTo(Program.PaymentMethod obj)
{
int tag = this._tag;
int tag2 = obj._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
return 0;
case 1:
{
IComparer genericComparer = LanguagePrimitives.GenericComparer;
Program.CheckNumber checkNumber = this.item;
Program.CheckNumber obj2 = obj.item;
return checkNumber.CompareTo(obj2, genericComparer);
}
case 2:
{
IComparer genericComparer2 = LanguagePrimitives.GenericComparer;
Program.CardType cardType = this.item1;
Program.CardType obj3 = obj.item1;
int num = cardType.CompareTo(obj3, genericComparer2);
if (num < 0)
{
return num;
}
if (num > 0)
{
return num;
}
IComparer genericComparer3 = LanguagePrimitives.GenericComparer;
Program.CardNumber cardNumber = this.item2;
Program.CardNumber obj4 = obj.item2;
return cardNumber.CompareTo(obj4, genericComparer3);
}
}
return 0;
}
return tag - tag2;
}
[CompilerGenerated]
public sealed override int CompareTo(object obj)
{
return this.CompareTo((Program.PaymentMethod)obj);
}
[CompilerGenerated]
public sealed override int CompareTo(object obj, IComparer comp)
{
Program.PaymentMethod paymentMethod = (Program.PaymentMethod)obj;
int tag = this._tag;
int tag2 = paymentMethod._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
return 0;
case 1:
{
Program.CheckNumber checkNumber = this.item;
Program.CheckNumber obj2 = paymentMethod.item;
return checkNumber.CompareTo(obj2, comp);
}
case 2:
{
Program.CardType cardType = this.item1;
Program.CardType obj3 = paymentMethod.item1;
int num = cardType.CompareTo(obj3, comp);
if (num < 0)
{
return num;
}
if (num > 0)
{
return num;
}
Program.CardNumber cardNumber = this.item2;
Program.CardNumber obj4 = paymentMethod.item2;
return cardNumber.CompareTo(obj4, comp);
}
}
return 0;
}
return tag - tag2;
}
[CompilerGenerated]
public sealed override int GetHashCode(IEqualityComparer comp)
{
switch (this.Tag)
{
case 0:
IL_1A:
return this._tag;
case 1:
{
int num = 1;
return -1640531527 + (this.item.GetHashCode(comp) + ((num << 6) + (num >> 2)));
}
case 2:
{
int num = 2;
num = -1640531527 + (this.item2.GetHashCode(comp) + ((num << 6) + (num >> 2)));
return -1640531527 + (this.item1.GetHashCode(comp) + ((num << 6) + (num >> 2)));
}
}
goto IL_1A;
}
[CompilerGenerated]
public sealed override int GetHashCode()
{
return this.GetHashCode(LanguagePrimitives.GenericEqualityComparer);
}
[CompilerGenerated]
public sealed override bool Equals(object obj, IEqualityComparer comp)
{
if (!LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric<Program.PaymentMethod>(obj))
{
return false;
}
Program.PaymentMethod paymentMethod = (Program.PaymentMethod)obj;
int tag = this._tag;
int tag2 = paymentMethod._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
return true;
case 1:
{
Program.CheckNumber checkNumber = this.item;
Program.CheckNumber obj2 = paymentMethod.item;
return checkNumber.Equals(obj2, comp);
}
case 2:
{
Program.CardType cardType = this.item1;
Program.CardType obj3 = paymentMethod.item1;
if (cardType.Equals(obj3, comp))
{
Program.CardNumber cardNumber = this.item2;
Program.CardNumber obj4 = paymentMethod.item2;
return cardNumber.Equals(obj4, comp);
}
return false;
}
}
return true;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(Program.PaymentMethod obj)
{
int tag = this._tag;
int tag2 = obj._tag;
if (tag == tag2)
{
switch (this.Tag)
{
case 0:
return true;
case 1:
return this.item.Equals(obj.item);
case 2:
return this.item1.Equals(obj.item1) && this.item2.Equals(obj.item2);
}
return true;
}
return false;
}
[CompilerGenerated]
public sealed override bool Equals(object obj)
{
if (!LanguagePrimitives.IntrinsicFunctions.TypeTestGeneric<Program.PaymentMethod>(obj))
{
return false;
}
Program.PaymentMethod obj2 = (Program.PaymentMethod)obj;
return this.Equals(obj2);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment