Skip to content

Commit

Permalink
Add README
Browse files Browse the repository at this point in the history
  • Loading branch information
aalmada committed Dec 4, 2023
1 parent 9c1d7db commit 717116b
Show file tree
Hide file tree
Showing 10 changed files with 377 additions and 308 deletions.
27 changes: 18 additions & 9 deletions NetFabric.Hyperlinq.Abstractions/ActionWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@ namespace NetFabric.Hyperlinq;
public readonly struct ActionWrapper<T>(Action<T> action)
: IAction<T>
{
readonly Action<T> action = action ?? Throw.ArgumentNullException<Action<T>>(nameof(action));
readonly Action<T> action
= action ?? Throw.ArgumentNullException<Action<T>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T>.Invoke(ref readonly T arg)
Expand All @@ -42,7 +43,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2>(Action<T1, T2> action)
: IAction<T1, T2>
{
readonly Action<T1, T2> action = action ?? Throw.ArgumentNullException<Action<T1, T2>>(nameof(action));
readonly Action<T1, T2> action
= action ?? Throw.ArgumentNullException<Action<T1, T2>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2)
Expand All @@ -68,7 +70,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3>(Action<T1, T2, T3> action)
: IAction<T1, T2, T3>
{
readonly Action<T1, T2, T3> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3>>(nameof(action));
readonly Action<T1, T2, T3> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3)
Expand All @@ -95,7 +98,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3, T4>(Action<T1, T2, T3, T4> action)
: IAction<T1, T2, T3, T4>
{
readonly Action<T1, T2, T3, T4> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4>>(nameof(action));
readonly Action<T1, T2, T3, T4> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3, T4>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4)
Expand Down Expand Up @@ -123,7 +127,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3, T4, T5>(Action<T1, T2, T3, T4, T5> action)
: IAction<T1, T2, T3, T4, T5>
{
readonly Action<T1, T2, T3, T4, T5> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5>>(nameof(action));
readonly Action<T1, T2, T3, T4, T5> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3, T4, T5>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5)
Expand Down Expand Up @@ -152,7 +157,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3, T4, T5, T6>(Action<T1, T2, T3, T4, T5, T6> action)
: IAction<T1, T2, T3, T4, T5, T6>
{
readonly Action<T1, T2, T3, T4, T5, T6> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6>>(nameof(action));
readonly Action<T1, T2, T3, T4, T5, T6> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3, T4, T5, T6>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6)
Expand Down Expand Up @@ -182,7 +188,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3, T4, T5, T6, T7>(Action<T1, T2, T3, T4, T5, T6, T7> action)
: IAction<T1, T2, T3, T4, T5, T6, T7>
{
readonly Action<T1, T2, T3, T4, T5, T6, T7> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6, T7>>(nameof(action));
readonly Action<T1, T2, T3, T4, T5, T6, T7> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6, T7>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3, T4, T5, T6, T7>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, ref readonly T7 arg7)
Expand Down Expand Up @@ -213,7 +220,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3, T4, T5, T6, T7, T8>(Action<T1, T2, T3, T4, T5, T6, T7, T8> action)
: IAction<T1, T2, T3, T4, T5, T6, T7, T8>
{
readonly Action<T1, T2, T3, T4, T5, T6, T7, T8> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6, T7, T8>>(nameof(action));
readonly Action<T1, T2, T3, T4, T5, T6, T7, T8> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6, T7, T8>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3, T4, T5, T6, T7, T8>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, ref readonly T7 arg7, ref readonly T8 arg8)
Expand Down Expand Up @@ -245,7 +253,8 @@ void IAction<T>.Invoke(ref readonly T arg)
public readonly struct ActionWrapper<T1, T2, T3, T4, T5, T6, T7, T8, T9>(Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> action)
: IAction<T1, T2, T3, T4, T5, T6, T7, T8, T9>
{
readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> action = action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9>>(nameof(action));
readonly Action<T1, T2, T3, T4, T5, T6, T7, T8, T9> action
= action ?? Throw.ArgumentNullException<Action<T1, T2, T3, T4, T5, T6, T7, T8, T9>>(nameof(action));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
void IAction<T1, T2, T3, T4, T5, T6, T7, T8, T9>.Invoke(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, ref readonly T7 arg7, ref readonly T8 arg8, ref readonly T9 arg9)
Expand Down
77 changes: 28 additions & 49 deletions NetFabric.Hyperlinq.Abstractions/AsyncFunctionWrapper.cs
Original file line number Diff line number Diff line change
@@ -1,19 +1,14 @@
using System;
using System.Runtime.CompilerServices;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;

namespace NetFabric.Hyperlinq;

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T, TResult>
public readonly struct AsyncFunctionWrapper<T, TResult>(Func<T, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T, TResult>
{
readonly Func<T, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T arg, CancellationToken cancellationToken)
Expand All @@ -24,13 +19,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T arg, CancellationToken canc
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, TResult>(Func<T1, T2, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, TResult>
{
readonly Func<T1, T2, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, CancellationToken cancellationToken)
Expand All @@ -41,13 +34,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, TResult>(Func<T1, T2, T3, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, TResult>
{
readonly Func<T1, T2, T3, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, CancellationToken cancellationToken)
Expand All @@ -58,13 +49,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, TResult>(Func<T1, T2, T3, T4, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, T4, TResult>
{
readonly Func<T1, T2, T3, T4, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, T4, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, T4, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, CancellationToken cancellationToken)
Expand All @@ -75,13 +64,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, TResult>(Func<T1, T2, T3, T4, T5, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, T4, T5, TResult>
{
readonly Func<T1, T2, T3, T4, T5, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, T4, T5, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, T4, T5, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, CancellationToken cancellationToken)
Expand All @@ -92,13 +79,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, TResult>(Func<T1, T2, T3, T4, T5, T6, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, T4, T5, T6, TResult>
{
readonly Func<T1, T2, T3, T4, T5, T6, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, T4, T5, T6, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, T4, T5, T6, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, CancellationToken cancellationToken)
Expand All @@ -109,13 +94,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, T7, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, T7, TResult>(Func<T1, T2, T3, T4, T5, T6, T7, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, T4, T5, T6, T7, TResult>
{
readonly Func<T1, T2, T3, T4, T5, T6, T7, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, T4, T5, T6, T7, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, T4, T5, T6, T7, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, ref readonly T7 arg7, CancellationToken cancellationToken)
Expand All @@ -126,13 +109,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, T7, T8, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, T7, T8, TResult>(Func<T1, T2, T3, T4, T5, T6, T7, T8, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, T4, T5, T6, T7, T8, TResult>
{
readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, T4, T5, T6, T7, T8, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, ref readonly T7 arg7, ref readonly T8 arg8, CancellationToken cancellationToken)
Expand All @@ -143,13 +124,11 @@ public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2
}

[StructLayout(LayoutKind.Auto)]
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>
public readonly struct AsyncFunctionWrapper<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>(Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, CancellationToken, ValueTask<TResult>> function)
: IAsyncFunction<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult>
{
readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, CancellationToken, ValueTask<TResult>> function;

public AsyncFunctionWrapper(Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, CancellationToken, ValueTask<TResult>> function)
=> this.function = function ?? throw new ArgumentNullException(nameof(function));
readonly Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, CancellationToken, ValueTask<TResult>> function
= function ?? throw new ArgumentNullException(nameof(function));

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public ValueTask<TResult> InvokeAsync(ref readonly T1 arg1, ref readonly T2 arg2, ref readonly T3 arg3, ref readonly T4 arg4, ref readonly T5 arg5, ref readonly T6 arg6, ref readonly T7 arg7, ref readonly T8 arg8, ref readonly T9 arg9, CancellationToken cancellationToken)
Expand Down
5 changes: 1 addition & 4 deletions NetFabric.Hyperlinq.Abstractions/AsyncValueEnumerable.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
using System.Collections.Generic;
using System.Threading;

namespace NetFabric.Hyperlinq;
namespace NetFabric.Hyperlinq;

public interface IAsyncValueEnumerable<out T, out TEnumerator>
: IAsyncEnumerable<T>
Expand Down

0 comments on commit 717116b

Please sign in to comment.