Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions Generator/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,19 @@ namespace OneOf
{IfStruct(RangeJoined(@"
", j => $"public static implicit operator {className}<{genericArg}>(T{j} t) => new {className}<{genericArg}>({j}, value{j}: t);"))}

{IfStruct(Range(1, i - 1).Joined(@"
", j => {
var shorterGenericArg = Range(0, j).Select(e => $"T{e}").Joined(", ");
return $@"
public static implicit operator {className}<{genericArg}>({className}<{shorterGenericArg}> o) =>
o.Index switch
{{
{Range(0, j).Joined(@"
", k => @$"{k} => {className}<{genericArg}>.FromT{k}(o.AsT{k}),")}
_ => throw new InvalidOperationException()
}};";
}))}

public void Switch({RangeJoined(", ", e => $"Action<T{e}> f{e}")})
{{
{RangeJoined(@"
Expand Down
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT10.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> input)





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -458,7 +460,7 @@ public bool TryPickT10(out T10 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT10;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> other) =>
_index == other._index &&
Expand Down Expand Up @@ -531,4 +533,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT11.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> inpu





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -508,7 +510,7 @@ public bool TryPickT11(out T11 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT11;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> other) =>
_index == other._index &&
Expand Down Expand Up @@ -584,4 +586,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT12.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -560,7 +562,7 @@ public bool TryPickT12(out T12 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT12;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> other) =>
_index == other._index &&
Expand Down Expand Up @@ -639,4 +641,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT13.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -614,7 +616,7 @@ public bool TryPickT13(out T13 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT13;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> other) =>
_index == other._index &&
Expand Down Expand Up @@ -696,4 +698,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT14.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -670,7 +672,7 @@ public bool TryPickT14(out T14 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT14;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> other) =>
_index == other._index &&
Expand Down Expand Up @@ -755,4 +757,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT15.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -728,7 +730,7 @@ public bool TryPickT15(out T15 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT15;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> other) =>
_index == other._index &&
Expand Down Expand Up @@ -816,4 +818,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT16.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -788,7 +790,7 @@ public bool TryPickT16(out T16 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT16;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> other) =>
_index == other._index &&
Expand Down Expand Up @@ -879,4 +881,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT17.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -850,7 +852,7 @@ public bool TryPickT17(out T17 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT17;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> other) =>
_index == other._index &&
Expand Down Expand Up @@ -944,4 +946,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT18.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -914,7 +916,7 @@ public bool TryPickT18(out T18 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT18;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1011,4 +1013,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT19.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18, Action<T19> f19)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -980,7 +982,7 @@ public bool TryPickT19(out T19 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT19;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1080,4 +1082,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT20.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18, Action<T19> f19, Action<T20> f20)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -1048,7 +1050,7 @@ public bool TryPickT20(out T20 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT20;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1151,4 +1153,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT21.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18, Action<T19> f19, Action<T20> f20, Action<T21> f21)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -1118,7 +1120,7 @@ public bool TryPickT21(out T21 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT21;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1224,4 +1226,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT22.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18, Action<T19> f19, Action<T20> f20, Action<T21> f21, Action<T22> f22)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -1190,7 +1192,7 @@ public bool TryPickT22(out T22 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT22;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1299,4 +1301,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT23.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18, Action<T19> f19, Action<T20> f20, Action<T21> f21, Action<T22> f22, Action<T23> f23)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -1264,7 +1266,7 @@ public bool TryPickT23(out T23 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT23;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1376,4 +1378,4 @@ public override int GetHashCode()
}
}
}
}
}
6 changes: 4 additions & 2 deletions OneOf.Extended/OneOfBaseT24.generated.cs
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,8 @@ protected OneOfBase(OneOf<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,





public void Switch(Action<T0> f0, Action<T1> f1, Action<T2> f2, Action<T3> f3, Action<T4> f4, Action<T5> f5, Action<T6> f6, Action<T7> f7, Action<T8> f8, Action<T9> f9, Action<T10> f10, Action<T11> f11, Action<T12> f12, Action<T13> f13, Action<T14> f14, Action<T15> f15, Action<T16> f16, Action<T17> f17, Action<T18> f18, Action<T19> f19, Action<T20> f20, Action<T21> f21, Action<T22> f22, Action<T23> f23, Action<T24> f24)
{
if (_index == 0 && f0 != null)
Expand Down Expand Up @@ -1340,7 +1342,7 @@ public bool TryPickT24(out T24 value, out OneOf<T0, T1, T2, T3, T4, T5, T6, T7,
_ => throw new InvalidOperationException()
};
return this.IsT24;
}
}

bool Equals(OneOfBase<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> other) =>
_index == other._index &&
Expand Down Expand Up @@ -1455,4 +1457,4 @@ public override int GetHashCode()
}
}
}
}
}
Loading