mirror of
https://git.ryujinx.app/ryubing/ryujinx.git
synced 2025-07-24 21:37:11 +02:00
Make structs readonly when applicable (#4002)
* Make all structs readonly when applicable. It should reduce amount of needless defensive copies * Make structs with trivial boilerplate equality code record structs * Remove unnecessary readonly modifiers from TextureCreateInfo * Make BitMap structs readonly too
This commit is contained in:
parent
ae13f0ab4d
commit
4da44e09cb
133 changed files with 156 additions and 378 deletions
|
@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
|
|||
namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
||||
{
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct UserId : IEquatable<UserId>
|
||||
public readonly record struct UserId
|
||||
{
|
||||
public readonly long High;
|
||||
public readonly long Low;
|
||||
|
@ -50,37 +50,12 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return High.ToString("x16") + Low.ToString("x16");
|
||||
}
|
||||
|
||||
public static bool operator ==(UserId x, UserId y)
|
||||
{
|
||||
return x.Equals(y);
|
||||
}
|
||||
|
||||
public static bool operator !=(UserId x, UserId y)
|
||||
{
|
||||
return !x.Equals(y);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
return obj is UserId userId && Equals(userId);
|
||||
}
|
||||
|
||||
public bool Equals(UserId cmpObj)
|
||||
{
|
||||
return Low == cmpObj.Low && High == cmpObj.High;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return HashCode.Combine(Low, High);
|
||||
}
|
||||
|
||||
public readonly Uid ToLibHacUid()
|
||||
public Uid ToLibHacUid()
|
||||
{
|
||||
return new Uid((ulong)High, (ulong)Low);
|
||||
}
|
||||
|
||||
public readonly UInt128 ToUInt128()
|
||||
public UInt128 ToUInt128()
|
||||
{
|
||||
return new UInt128((ulong)High, (ulong)Low);
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu
|
|||
private const ulong SmallRegionLimit = 0x400000000UL; // 16 GiB
|
||||
private const ulong DefaultUserSize = 1UL << 37;
|
||||
|
||||
private struct VmRegion
|
||||
private readonly struct VmRegion
|
||||
{
|
||||
public ulong Start { get; }
|
||||
public ulong Limit { get; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue