using System.Collections.Concurrent;
namespace Terminal.Gui.Drivers;
///
/// Base untyped interface for for methods that are not templated on low level
/// console input type.
///
public interface IComponentFactory
{
///
/// Create the class for the current driver implementation i.e. the class responsible for
/// rendering into the console.
///
///
IOutput CreateOutput ();
}
///
/// Creates driver specific subcomponent classes (,
/// etc) for a
/// .
///
///
/// The platform specific console input type. Must be a value type (struct).
/// Valid types are , , and .
///
public interface IComponentFactory : IComponentFactory
where TInputRecord : struct
{
///
/// Create class for the current driver implementation i.e. the class responsible for reading
/// user input from the console.
///
///
IInput CreateInput ();
///
/// Creates the class for the current driver implementation i.e. the class
/// responsible for
/// translating raw console input into Terminal.Gui common event and .
///
///
/// The input queue containing raw console input events, populated by
/// implementations on the input thread and
/// read by on the main loop thread.
///
///
IInputProcessor CreateInputProcessor (ConcurrentQueue inputQueue);
///
/// Creates class for the current driver implementation i.e. the class responsible for
/// reporting the current size of the terminal.
///
///
///
///
ISizeMonitor CreateSizeMonitor (IOutput consoleOutput, IOutputBuffer outputBuffer);
}