Add an ICoreService interface that interfaces such as IEmulator and IDebuggable inherit

This commit is contained in:
adelikat 2014-11-23 20:30:53 +00:00
parent ad1ca57163
commit 4582a88798
6 changed files with 16 additions and 4 deletions

View File

@ -61,6 +61,7 @@
<Compile Include="Interfaces\CoreComms.cs" />
<Compile Include="Interfaces\IController.cs" />
<Compile Include="Interfaces\ICoreFileProvider.cs" />
<Compile Include="Interfaces\ICoreService.cs" />
<Compile Include="Interfaces\IDebuggable.cs" />
<Compile Include="Interfaces\IEmulator.cs" />
<Compile Include="Interfaces\IMemoryDomains.cs" />

View File

@ -0,0 +1,11 @@
namespace BizHawk.Emulation.Common
{
/// <summary>
/// This interface specifies that an interface or implementation is a emulator core service, such as IDebuggable,
/// but is an optional part of the core functionality
/// Clients should gracefully handle an IEmulator that has a missing or partial implementation of one of these services
/// </summary>
public interface ICoreService
{
}
}

View File

@ -2,7 +2,7 @@
namespace BizHawk.Emulation.Common
{
public interface IDebuggable : IEmulator
public interface IDebuggable : IEmulator, ICoreService
{
/// <summary>
/// Returns a list of Cpu registers and their current state

View File

@ -4,7 +4,7 @@ using System.IO;
namespace BizHawk.Emulation.Common
{
public interface IEmulator : IDisposable
public interface IEmulator : ICoreService, IDisposable
{
/// <summary>
/// Video provider to the client

View File

@ -1,6 +1,6 @@
namespace BizHawk.Emulation.Common
{
public interface IMemoryDomains : IEmulator
public interface IMemoryDomains : IEmulator, ICoreService
{
///The list of all avaialble memory domains
/// A memory domain is a byte array that respresents a distinct part of the emulated system.

View File

@ -87,7 +87,7 @@ namespace BizHawk.Emulation.Common
}
}
public interface ISettable<TSettings, TSync> : IEmulator
public interface ISettable<TSettings, TSync> : IEmulator, ICoreService
{
// in addition to these methods, it's expected that the constructor or Load() method
// will take a Settings and SyncSettings object to set the initial state of the core