using System;
using System.Collections.Generic;
using System.Linq;
namespace BizHawk.Emulation.Common
{
/// Indicates that a method (or property getter/setter) inherited from a has yet to be implemented.
///
/// By convention, calling a method with this attribute should throw a .
/// If this attribute is not present on an implementation, it is assumed that the method is implemented and working.
///
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Property)]
public sealed class FeatureNotImplementedAttribute : Attribute
{
}
/// Indicates that a class intentionally does not inherit from the specified IEmulatorServices, and will never do so.
///
/// ISpecializedEmulatorServices that a core doesn't implement should not be listed, as the semantic of only being applicable to some cores is already clear.
/// Any which isn't specified and is also not implemented is assumed to be a work-in-progress.
/// These should be implemented as soon as possible, simply throwing a on call, and should be annotated with .
///
[AttributeUsage(AttributeTargets.Class)]
public sealed class ServiceNotApplicableAttribute : Attribute
{
/// TODO neither array nor is the correct collection to be using here, try / instead
public ServiceNotApplicableAttribute(Type[] types)
{
NotApplicableTypes = types?.AsEnumerable() ?? Enumerable.Empty();
}
public IEnumerable NotApplicableTypes { get; }
}
}