namespace Unity.Burst.CompilerServices
{
///
/// Compile-time aliasing intrinsics.
///
public static class Aliasing
{
///
/// Will cause a compiler error in Burst-compiled code if a and b do not alias.
///
/// A pointer to do aliasing checks on.
/// A pointer to do aliasing checks on.
public static unsafe void ExpectAliased(void* a, void* b) { }
///
/// Will cause a compiler error in Burst-compiled code if a and b do not alias.
///
/// The type of a.
/// The type of b.
/// A reference to do aliasing checks on.
/// A reference to do aliasing checks on.
public static void ExpectAliased(in A a, in B b) where A : struct where B : struct { }
///
/// Will cause a compiler error in Burst-compiled code if a and b do not alias.
///
/// The type of b.
/// A pointer to do aliasing checks on.
/// A reference to do aliasing checks on.
public static unsafe void ExpectAliased(void* a, in B b) where B : struct { }
///
/// Will cause a compiler error in Burst-compiled code if a and b do not alias.
///
/// The type of a.
/// A reference to do aliasing checks on.
/// A pointer to do aliasing checks on.
public static unsafe void ExpectAliased(in A a, void* b) where A : struct { }
///
/// Will cause a compiler error in Burst-compiled code if a and b can alias.
///
/// A pointer to do aliasing checks on.
/// A pointer to do aliasing checks on.
public static unsafe void ExpectNotAliased(void* a, void* b) { }
///
/// Will cause a compiler error in Burst-compiled code if a and b can alias.
///
/// The type of a.
/// The type of b.
/// A reference to do aliasing checks on.
/// A reference to do aliasing checks on.
public static void ExpectNotAliased(in A a, in B b) where A : struct where B : struct { }
///
/// Will cause a compiler error in Burst-compiled code if a and b can alias.
///
/// The type of b.
/// A pointer to do aliasing checks on.
/// A reference to do aliasing checks on.
public static unsafe void ExpectNotAliased(void* a, in B b) where B : struct { }
///
/// Will cause a compiler error in Burst-compiled code if a and b can alias.
///
/// The type of a.
/// A reference to do aliasing checks on.
/// A pointer to do aliasing checks on.
public static unsafe void ExpectNotAliased(in A a, void* b) where A : struct { }
}
}