namespace E7.Native
{
///
/// An `interface` to use with
/// You can implement your own logic that derives an index depending on some internal state.
///
///
/// You can for example create `class MyKickDrumSelector : INativeSourceSelector`
/// and `class MySnareSelector : INativeSourceSelector`.
///
/// The target is that the kick is short, but often used. You want it to use native source index 0 exclusively.
/// The snares keep using index 1 and 2 to not have to trouble the kick drum.
///
/// Code the logic such that :
/// - The kick drum one keeps returning `0` in its implementation.
/// - The snare one return `1` and `2` alternately on each call.
///
public interface INativeSourceSelector
{
///
/// Each call could return a different native source index by your own logic.
/// Native Audio will call this once on each
///
/// If the returned `int` turns out to be an invalid index at native side, it has a fallback to round-robin
/// native source selection.
///
int NextNativeSourceIndex();
}
}