Skip to content

Commit

Permalink
feat: Added Match method for AnyOf/OneOfs.
Browse files Browse the repository at this point in the history
  • Loading branch information
HavenDV committed Sep 26, 2024
1 parent 57510e7 commit d21e87b
Show file tree
Hide file tree
Showing 235 changed files with 14,088 additions and 0 deletions.
40 changes: 40 additions & 0 deletions src/libs/AutoSDK/Sources/Sources.AnyOf.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,46 @@ public bool Validate()
return {validation};
}}
{string.Empty.ToXmlDocumentationSummary(level: 8)}
public TResult? Match<TResult>(
{allTypes.Select(x => $@"
global::System.Func<{x.Type.CSharpType}, TResult>? {x.ParameterName} = null,
").Inject()}
bool validate = true)
{{
if (validate)
{{
Validate();
}}
{allTypes.Select((x, i) => $@"
{(i > 0 ? "else " : "")}if (Is{x.Name} && {x.ParameterName} != null)
{{
return {x.ParameterName}({x.Name}!);
}}").Inject()}
return default(TResult);
}}
{string.Empty.ToXmlDocumentationSummary(level: 8)}
public void Match(
{allTypes.Select(x => $@"
global::System.Action<{x.Type.CSharpType}>? {x.ParameterName} = null,
").Inject()}
bool validate = true)
{{
if (validate)
{{
Validate();
}}
{allTypes.Select((x, i) => $@"
{(i > 0 ? "else " : "")}if (Is{x.Name})
{{
{x.ParameterName}?.Invoke({x.Name}!);
}}").Inject()}
}}
{string.Empty.ToXmlDocumentationSummary(level: 8)}
public override int GetHashCode()
{{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,54 @@ public bool Validate()
return IsValue1 || IsValue2;
}

/// <summary>
///
/// </summary>
public TResult? Match<TResult>(
global::System.Func<T1, TResult>? value1 = null,
global::System.Func<T2, TResult>? value2 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1 && value1 != null)
{
return value1(Value1!);
}
else if (IsValue2 && value2 != null)
{
return value2(Value2!);
}

return default(TResult);
}

/// <summary>
///
/// </summary>
public void Match(
global::System.Action<T1>? value1 = null,
global::System.Action<T2>? value2 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1)
{
value1?.Invoke(Value1!);
}
else if (IsValue2)
{
value2?.Invoke(Value2!);
}
}

/// <summary>
///
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,74 @@ public bool Validate()
return IsValue1 && !IsValue2 && !IsValue3 && !IsValue4 || !IsValue1 && IsValue2 && !IsValue3 && !IsValue4 || !IsValue1 && !IsValue2 && IsValue3 && !IsValue4 || !IsValue1 && !IsValue2 && !IsValue3 && IsValue4;
}

/// <summary>
///
/// </summary>
public TResult? Match<TResult>(
global::System.Func<T1, TResult>? value1 = null,
global::System.Func<T2, TResult>? value2 = null,
global::System.Func<T3, TResult>? value3 = null,
global::System.Func<T4, TResult>? value4 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1 && value1 != null)
{
return value1(Value1!);
}
else if (IsValue2 && value2 != null)
{
return value2(Value2!);
}
else if (IsValue3 && value3 != null)
{
return value3(Value3!);
}
else if (IsValue4 && value4 != null)
{
return value4(Value4!);
}

return default(TResult);
}

/// <summary>
///
/// </summary>
public void Match(
global::System.Action<T1>? value1 = null,
global::System.Action<T2>? value2 = null,
global::System.Action<T3>? value3 = null,
global::System.Action<T4>? value4 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1)
{
value1?.Invoke(Value1!);
}
else if (IsValue2)
{
value2?.Invoke(Value2!);
}
else if (IsValue3)
{
value3?.Invoke(Value3!);
}
else if (IsValue4)
{
value4?.Invoke(Value4!);
}
}

/// <summary>
///
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,54 @@ public bool Validate()
return IsValue1 || IsValue2;
}

/// <summary>
///
/// </summary>
public TResult? Match<TResult>(
global::System.Func<T1, TResult>? value1 = null,
global::System.Func<T2, TResult>? value2 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1 && value1 != null)
{
return value1(Value1!);
}
else if (IsValue2 && value2 != null)
{
return value2(Value2!);
}

return default(TResult);
}

/// <summary>
///
/// </summary>
public void Match(
global::System.Action<T1>? value1 = null,
global::System.Action<T2>? value2 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1)
{
value1?.Invoke(Value1!);
}
else if (IsValue2)
{
value2?.Invoke(Value2!);
}
}

/// <summary>
///
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,74 @@ public bool Validate()
return IsValue1 && !IsValue2 && !IsValue3 && !IsValue4 || !IsValue1 && IsValue2 && !IsValue3 && !IsValue4 || !IsValue1 && !IsValue2 && IsValue3 && !IsValue4 || !IsValue1 && !IsValue2 && !IsValue3 && IsValue4;
}

/// <summary>
///
/// </summary>
public TResult? Match<TResult>(
global::System.Func<T1, TResult>? value1 = null,
global::System.Func<T2, TResult>? value2 = null,
global::System.Func<T3, TResult>? value3 = null,
global::System.Func<T4, TResult>? value4 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1 && value1 != null)
{
return value1(Value1!);
}
else if (IsValue2 && value2 != null)
{
return value2(Value2!);
}
else if (IsValue3 && value3 != null)
{
return value3(Value3!);
}
else if (IsValue4 && value4 != null)
{
return value4(Value4!);
}

return default(TResult);
}

/// <summary>
///
/// </summary>
public void Match(
global::System.Action<T1>? value1 = null,
global::System.Action<T2>? value2 = null,
global::System.Action<T3>? value3 = null,
global::System.Action<T4>? value4 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1)
{
value1?.Invoke(Value1!);
}
else if (IsValue2)
{
value2?.Invoke(Value2!);
}
else if (IsValue3)
{
value3?.Invoke(Value3!);
}
else if (IsValue4)
{
value4?.Invoke(Value4!);
}
}

/// <summary>
///
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,54 @@ public bool Validate()
return IsValue1 || IsValue2;
}

/// <summary>
///
/// </summary>
public TResult? Match<TResult>(
global::System.Func<T1, TResult>? value1 = null,
global::System.Func<T2, TResult>? value2 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1 && value1 != null)
{
return value1(Value1!);
}
else if (IsValue2 && value2 != null)
{
return value2(Value2!);
}

return default(TResult);
}

/// <summary>
///
/// </summary>
public void Match(
global::System.Action<T1>? value1 = null,
global::System.Action<T2>? value2 = null,
bool validate = true)
{
if (validate)
{
Validate();
}

if (IsValue1)
{
value1?.Invoke(Value1!);
}
else if (IsValue2)
{
value2?.Invoke(Value2!);
}
}

/// <summary>
///
/// </summary>
Expand Down
Loading

0 comments on commit d21e87b

Please sign in to comment.