SharpGen.Runtime/MarshallingHelpers.FastToInterfaceArray.cs (42 lines of code) (raw):
using System;
namespace SharpGen.Runtime
{
public static partial class MarshallingHelpers
{
/// <summary>
/// Converts an array of native object pointers to a <see cref="CppObject"/> array.
/// </summary>
public static void ConvertToInterfaceArrayFast<TCallback>(ReadOnlySpan<IntPtr> pointers,
Span<TCallback> interfaces)
where TCallback : CppObject
{
var arrayLength = pointers.Length;
for (var i = 0; i < arrayLength; ++i)
interfaces[i].NativePointer = pointers[i];
}
/// <summary>
/// Converts an array of native object pointers to a <see cref="CppObject"/> array.
/// </summary>
public static void ConvertToInterfaceArrayFast<TCallback>(Span<IntPtr> pointers, Span<TCallback> interfaces)
where TCallback : CppObject
{
var arrayLength = pointers.Length;
for (var i = 0; i < arrayLength; ++i)
interfaces[i].NativePointer = pointers[i];
}
/// <summary>
/// Converts an array of native object pointers to a <see cref="CppObject"/> array.
/// </summary>
public static void ConvertToInterfaceArrayFast<TCallback>(Span<IntPtr> pointers, TCallback[] interfaces)
where TCallback : CppObject
{
var arrayLength = pointers.Length;
for (var i = 0; i < arrayLength; ++i)
interfaces[i].NativePointer = pointers[i];
}
/// <summary>
/// Converts an array of native object pointers to a <see cref="CppObject"/> array.
/// </summary>
public static void ConvertToInterfaceArrayFast<TCallback>(Span<IntPtr> pointers, CppObject[] interfaces)
where TCallback : CppObject
{
var arrayLength = pointers.Length;
for (var i = 0; i < arrayLength; ++i)
interfaces[i].NativePointer = pointers[i];
}
/// <summary>
/// Converts an array of native object pointers to a <see cref="CppObject"/> array.
/// </summary>
public static void ConvertToInterfaceArrayFast(Span<IntPtr> pointers, CppObject[] interfaces)
{
var arrayLength = pointers.Length;
for (var i = 0; i < arrayLength; ++i)
interfaces[i].NativePointer = pointers[i];
}
}
}