More nullability
This commit is contained in:
parent
76faa7c835
commit
cd4d7a89a4
|
@ -83,7 +83,7 @@ namespace BizHawk.Client.Common
|
||||||
{
|
{
|
||||||
return new {
|
return new {
|
||||||
disasm = DisassemblableCore.Disassemble(
|
disasm = DisassemblableCore.Disassemble(
|
||||||
string.IsNullOrEmpty(name) ? MemoryDomains.SystemBus : MemoryDomains[name],
|
string.IsNullOrEmpty(name) ? MemoryDomains.SystemBus : MemoryDomains[name]!,
|
||||||
pc,
|
pc,
|
||||||
out var l
|
out var l
|
||||||
),
|
),
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using System.Collections.Generic;
|
#nullable enable
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using BizHawk.Common.PathExtensions;
|
using BizHawk.Common.PathExtensions;
|
||||||
using BizHawk.Emulation.Common;
|
using BizHawk.Emulation.Common;
|
||||||
|
@ -49,10 +51,10 @@ namespace BizHawk.Client.Common
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private (byte[] FW, string Path) GetFirmwareWithPathOrThrow(FirmwareID id, string msg)
|
private (byte[] FW, string Path) GetFirmwareWithPathOrThrow(FirmwareID id, string? msg)
|
||||||
=> GetFirmwareWithPath(id) ?? throw new MissingFirmwareException($"Couldn't find required firmware {id}. This is fatal{(msg is null ? "." : $": {msg}")}");
|
=> GetFirmwareWithPath(id) ?? throw new MissingFirmwareException($"Couldn't find required firmware {id}. This is fatal{(msg is null ? "." : $": {msg}")}");
|
||||||
|
|
||||||
public byte[] GetFirmware(FirmwareID id, string msg = null)
|
public byte[]? GetFirmware(FirmwareID id, string? msg = null)
|
||||||
{
|
{
|
||||||
var tuple = GetFirmwareWithPath(id);
|
var tuple = GetFirmwareWithPath(id);
|
||||||
if (tuple is null && msg is not null)
|
if (tuple is null && msg is not null)
|
||||||
|
@ -62,10 +64,10 @@ namespace BizHawk.Client.Common
|
||||||
return tuple?.FW;
|
return tuple?.FW;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte[] GetFirmwareOrThrow(FirmwareID id, string msg = null)
|
public byte[] GetFirmwareOrThrow(FirmwareID id, string? msg = null)
|
||||||
=> GetFirmwareWithPathOrThrow(id, msg).FW;
|
=> GetFirmwareWithPathOrThrow(id, msg).FW;
|
||||||
|
|
||||||
public (byte[] FW, GameInfo Game) GetFirmwareWithGameInfoOrThrow(FirmwareID id, string msg = null)
|
public (byte[] FW, GameInfo Game) GetFirmwareWithGameInfoOrThrow(FirmwareID id, string? msg = null)
|
||||||
{
|
{
|
||||||
var (fw, path) = GetFirmwareWithPathOrThrow(id, msg);
|
var (fw, path) = GetFirmwareWithPathOrThrow(id, msg);
|
||||||
return (fw, Database.GetGameInfo(fw, path));
|
return (fw, Database.GetGameInfo(fw, path));
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
@ -41,7 +39,7 @@ namespace BizHawk.Emulation.Common
|
||||||
while (coreType != typeof(object))
|
while (coreType != typeof(object))
|
||||||
{
|
{
|
||||||
_services.Add(coreType, core);
|
_services.Add(coreType, core);
|
||||||
coreType = coreType.BaseType;
|
coreType = coreType.BaseType!;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,23 +47,16 @@ namespace BizHawk.Emulation.Common
|
||||||
/// <typeparam name="T">The <see cref="IEmulatorService"/> to register</typeparam>
|
/// <typeparam name="T">The <see cref="IEmulatorService"/> to register</typeparam>
|
||||||
/// <exception cref="ArgumentNullException"><paramref name="provider"/> is null</exception>
|
/// <exception cref="ArgumentNullException"><paramref name="provider"/> is null</exception>
|
||||||
public void Register<T>(T provider)
|
public void Register<T>(T provider)
|
||||||
where T : IEmulatorService
|
where T : class, IEmulatorService
|
||||||
{
|
{
|
||||||
if (provider == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentNullException(nameof(provider));
|
|
||||||
}
|
|
||||||
|
|
||||||
_services[typeof(T)] = provider;
|
_services[typeof(T)] = provider;
|
||||||
}
|
}
|
||||||
|
|
||||||
public T GetService<T>()
|
public T GetService<T>()
|
||||||
where T : IEmulatorService
|
where T : IEmulatorService
|
||||||
{
|
=> (T) GetService(typeof(T))!;
|
||||||
return (T)GetService(typeof(T));
|
|
||||||
}
|
|
||||||
|
|
||||||
public object GetService(Type t)
|
public object? GetService(Type t)
|
||||||
{
|
{
|
||||||
return _services.TryGetValue(t, out var service) ? service : null;
|
return _services.TryGetValue(t, out var service) ? service : null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
@ -48,9 +46,9 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
protected abstract void TraceFromCallback(uint addr, uint value, uint flags);
|
protected abstract void TraceFromCallback(uint addr, uint value, uint flags);
|
||||||
|
|
||||||
private ITraceSink _sink;
|
private ITraceSink? _sink;
|
||||||
|
|
||||||
public ITraceSink Sink
|
public ITraceSink? Sink
|
||||||
{
|
{
|
||||||
get => _sink;
|
get => _sink;
|
||||||
set
|
set
|
||||||
|
@ -68,6 +66,7 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
public string Header { get; }
|
public string Header { get; }
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
private class TracingMemoryCallback : IMemoryCallback
|
private class TracingMemoryCallback : IMemoryCallback
|
||||||
{
|
{
|
||||||
public TracingMemoryCallback(MemoryCallbackDelegate callback, string scope)
|
public TracingMemoryCallback(MemoryCallbackDelegate callback, string scope)
|
||||||
|
@ -88,5 +87,6 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
public string Scope { get; }
|
public string Scope { get; }
|
||||||
}
|
}
|
||||||
|
#nullable restore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
@ -57,7 +55,7 @@ namespace BizHawk.Emulation.Common
|
||||||
}
|
}
|
||||||
|
|
||||||
public delegate void ActiveChangedEventHandler();
|
public delegate void ActiveChangedEventHandler();
|
||||||
public event ActiveChangedEventHandler ActiveChanged;
|
public event ActiveChangedEventHandler? ActiveChanged;
|
||||||
|
|
||||||
private void Changes(bool hadAny, bool hasAny)
|
private void Changes(bool hadAny, bool hasAny)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -18,11 +16,6 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
public MemoryBasedInputCallbackSystem(IDebuggable debuggableCore, string scope, IEnumerable<uint> addresses)
|
public MemoryBasedInputCallbackSystem(IDebuggable debuggableCore, string scope, IEnumerable<uint> addresses)
|
||||||
{
|
{
|
||||||
if (addresses == null)
|
|
||||||
{
|
|
||||||
throw new ArgumentException($"{nameof(addresses)} cannot be null.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!debuggableCore.MemoryCallbacksAvailable())
|
if (!debuggableCore.MemoryCallbacksAvailable())
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException("Memory callbacks are required");
|
throw new InvalidOperationException("Memory callbacks are required");
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A default IVideoProvider that simply returns
|
/// A default IVideoProvider that simply returns
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common.Base_Implementations
|
namespace BizHawk.Emulation.Common.Base_Implementations
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Defines the means by which firmware, bios and other necessary files are provided to a core that needs them
|
/// Defines the means by which firmware, bios and other necessary files are provided to a core that needs them
|
||||||
|
@ -24,15 +22,15 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
/// <param name="msg">warning message to show on failure</param>
|
/// <param name="msg">warning message to show on failure</param>
|
||||||
/// <returns><see langword="null"/> iff failed</returns>
|
/// <returns><see langword="null"/> iff failed</returns>
|
||||||
byte[] GetFirmware(FirmwareID id, string msg = null);
|
byte[]? GetFirmware(FirmwareID id, string? msg = null);
|
||||||
|
|
||||||
/// <param name="msg">exception message to show on failure</param>
|
/// <param name="msg">exception message to show on failure</param>
|
||||||
/// <exception cref="MissingFirmwareException">if not found</exception>
|
/// <exception cref="MissingFirmwareException">if not found</exception>
|
||||||
byte[] GetFirmwareOrThrow(FirmwareID id, string msg = null);
|
byte[] GetFirmwareOrThrow(FirmwareID id, string? msg = null);
|
||||||
|
|
||||||
/// <param name="msg">exception message to show on failure</param>
|
/// <param name="msg">exception message to show on failure</param>
|
||||||
/// <exception cref="MissingFirmwareException">if not found</exception>
|
/// <exception cref="MissingFirmwareException">if not found</exception>
|
||||||
/// <remarks>only used in PCEHawk</remarks>
|
/// <remarks>only used in PCEHawk</remarks>
|
||||||
(byte[] FW, GameInfo Game) GetFirmwareWithGameInfoOrThrow(FirmwareID id, string msg = null);
|
(byte[] FW, GameInfo Game) GetFirmwareWithGameInfoOrThrow(FirmwareID id, string? msg = null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
|
@ -29,7 +27,7 @@ namespace BizHawk.Emulation.Common
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns an instance of T if T is available
|
/// Returns an instance of T if T is available
|
||||||
/// Else returns null
|
/// Else throws NRE
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <typeparam name="T">The requested <see cref="IEmulatorService"/></typeparam>
|
/// <typeparam name="T">The requested <see cref="IEmulatorService"/></typeparam>
|
||||||
T GetService<T>() where T : IEmulatorService;
|
T GetService<T>() where T : IEmulatorService;
|
||||||
|
@ -38,7 +36,7 @@ namespace BizHawk.Emulation.Common
|
||||||
/// Returns an instance of t if t is available
|
/// Returns an instance of t if t is available
|
||||||
/// Else returns null
|
/// Else returns null
|
||||||
/// </summary>
|
/// </summary>
|
||||||
object GetService(Type t);
|
object? GetService(Type t);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a list of all currently registered services available to be retrieved
|
/// Gets a list of all currently registered services available to be retrieved
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
@ -40,12 +38,12 @@ namespace BizHawk.Emulation.Common
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class VerifiedDisassembler : IDisassemblable
|
public abstract class VerifiedDisassembler : IDisassemblable
|
||||||
{
|
{
|
||||||
private string _cpu;
|
private string? _cpu;
|
||||||
|
|
||||||
/// <exception cref="ArgumentException">(from setter) <paramref name="value"/> isn't the name of an available CPU</exception>
|
/// <exception cref="ArgumentException">(from setter) <paramref name="value"/> isn't the name of an available CPU</exception>
|
||||||
public virtual string Cpu
|
public virtual string Cpu
|
||||||
{
|
{
|
||||||
get => _cpu;
|
get => _cpu ??= AvailableCpus.First();
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (!AvailableCpus.Contains(value))
|
if (!AvailableCpus.Contains(value))
|
||||||
|
@ -62,10 +60,5 @@ namespace BizHawk.Emulation.Common
|
||||||
public abstract string PCRegisterName { get; }
|
public abstract string PCRegisterName { get; }
|
||||||
|
|
||||||
public abstract string Disassemble(MemoryDomain m, uint addr, out int length);
|
public abstract string Disassemble(MemoryDomain m, uint addr, out int length);
|
||||||
|
|
||||||
protected VerifiedDisassembler()
|
|
||||||
{
|
|
||||||
_cpu = AvailableCpus.First();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
|
@ -26,7 +24,7 @@ namespace BizHawk.Emulation.Common
|
||||||
public sealed class ServiceNotApplicableAttribute : Attribute
|
public sealed class ServiceNotApplicableAttribute : Attribute
|
||||||
{
|
{
|
||||||
/// <remarks>TODO neither array nor <see cref="IEnumerable{T}"/> is the correct collection to be using here, try <see cref="IReadOnlyList{T}"/>/<see cref="IReadOnlyCollection{T}"/> instead</remarks>
|
/// <remarks>TODO neither array nor <see cref="IEnumerable{T}"/> is the correct collection to be using here, try <see cref="IReadOnlyList{T}"/>/<see cref="IReadOnlyCollection{T}"/> instead</remarks>
|
||||||
public ServiceNotApplicableAttribute(Type[] types)
|
public ServiceNotApplicableAttribute(Type[]? types)
|
||||||
{
|
{
|
||||||
NotApplicableTypes = types?.AsEnumerable() ?? Enumerable.Empty<Type>();
|
NotApplicableTypes = types?.AsEnumerable() ?? Enumerable.Empty<Type>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
using BizHawk.Common.ReflectionExtensions;
|
using BizHawk.Common.ReflectionExtensions;
|
||||||
|
@ -18,7 +16,7 @@ namespace BizHawk.Emulation.Common
|
||||||
public static void ClearServices(object target)
|
public static void ClearServices(object target)
|
||||||
{
|
{
|
||||||
Type targetType = target.GetType();
|
Type targetType = target.GetType();
|
||||||
object[] tmp = new object[1];
|
object?[] tmp = { null };
|
||||||
|
|
||||||
foreach (var propInfo in
|
foreach (var propInfo in
|
||||||
targetType.GetPropertiesWithAttrib(typeof(RequiredServiceAttribute))
|
targetType.GetPropertiesWithAttrib(typeof(RequiredServiceAttribute))
|
||||||
|
@ -35,7 +33,7 @@ namespace BizHawk.Emulation.Common
|
||||||
public static bool UpdateServices(IEmulatorServiceProvider source, object target)
|
public static bool UpdateServices(IEmulatorServiceProvider source, object target)
|
||||||
{
|
{
|
||||||
Type targetType = target.GetType();
|
Type targetType = target.GetType();
|
||||||
object[] tmp = new object[1];
|
object?[] tmp = new object?[1];
|
||||||
|
|
||||||
foreach (var propInfo in targetType.GetPropertiesWithAttrib(typeof(RequiredServiceAttribute)))
|
foreach (var propInfo in targetType.GetPropertiesWithAttrib(typeof(RequiredServiceAttribute)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System.Collections.Generic;
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
#nullable disable
|
using System;
|
||||||
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using BizHawk.Emulation.Common;
|
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,6 +1,4 @@
|
||||||
#nullable disable
|
using System.Collections.Generic;
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
|
||||||
namespace BizHawk.Emulation.Common
|
namespace BizHawk.Emulation.Common
|
||||||
|
@ -8,9 +6,13 @@ namespace BizHawk.Emulation.Common
|
||||||
public class PadSchema
|
public class PadSchema
|
||||||
{
|
{
|
||||||
public Size Size { get; set; }
|
public Size Size { get; set; }
|
||||||
|
|
||||||
public bool IsConsole { get; protected set; }
|
public bool IsConsole { get; protected set; }
|
||||||
|
|
||||||
public IEnumerable<PadSchemaControl> Buttons { get; set; } = new List<PadSchemaControl>();
|
public IEnumerable<PadSchemaControl> Buttons { get; set; } = new List<PadSchemaControl>();
|
||||||
public string DisplayName { get; set; } // The name of the pad itself, presumably will be displayed by the given pad time if supplied
|
|
||||||
|
/// <summary>The name of the pad itself, presumably will be displayed by the given pad time if supplied</summary>
|
||||||
|
public string? DisplayName { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ConsoleSchema : PadSchema
|
public class ConsoleSchema : PadSchema
|
||||||
|
|
Loading…
Reference in New Issue