using System.Collections.Generic;
namespace BizHawk.Emulation.Common
{
public interface ITraceSink
{
void Put(TraceInfo info);
}
///
/// This service allows the core to dump a cpu trace to the client
/// If available the Trace Logger tool will be available on the client
///
public interface ITraceable : IEmulatorService
{
//bool Enabled { get; set; }
///
/// The header that would be used by a trace logger
///
string Header { get; set; }
///
/// The current log of cpu instructions
///
//IEnumerable Contents { get; }
///
/// Takes the current log of cpu instructions, when doing so, it will clear the contents from the buffer
///
//IEnumerable TakeContents();
//void Put(TraceInfo content);
//that's right, we can only have one sink.
//a sink can route to two other sinks if it has to, though
ITraceSink Sink { get; set; }
///
/// This is defined as equivalent to Sink != null
/// It's put here because it's such a common operation to check whether it's enabled, and it's not nice to write Sink != null all over
///
bool Enabled { get; }
///
/// This is defined as equivalent to Sink.Put
/// TBD: could it be defined as equivalent to if(Enabled) Sink.Put()? Probably not, that's just a small amount of wasted work
///
void Put(TraceInfo info);
}
public class TraceInfo
{
public string Disassembly { get; set; }
public string RegisterInfo { get; set; }
}
}