namespace OECS;
// Custom delegate types for query iteration with ref parameters.
// The built-in Action<...> delegates do not support ref parameters.
///
/// Callback for iterating entities with one component type.
///
public delegate void ForEachAction(Entity entity, ref T1 c1) where T1 : struct;
///
/// Callback for iterating entities with two component types.
///
public delegate void ForEachAction(Entity entity, ref T1 c1, ref T2 c2)
where T1 : struct where T2 : struct;
///
/// Callback for iterating entities with three component types.
///
public delegate void ForEachAction(Entity entity, ref T1 c1, ref T2 c2, ref T3 c3)
where T1 : struct where T2 : struct where T3 : struct;
///
/// Callback for iterating entities with four component types.
///
public delegate void ForEachAction(Entity entity, ref T1 c1, ref T2 c2, ref T3 c3, ref T4 c4)
where T1 : struct where T2 : struct where T3 : struct where T4 : struct;
///
/// Callback for iterating entities with five component types.
///
public delegate void ForEachAction(Entity entity, ref T1 c1, ref T2 c2, ref T3 c3, ref T4 c4, ref T5 c5)
where T1 : struct where T2 : struct where T3 : struct where T4 : struct where T5 : struct;
///
/// Callback for iterating entities with six component types.
///
public delegate void ForEachAction(Entity entity, ref T1 c1, ref T2 c2, ref T3 c3, ref T4 c4, ref T5 c5, ref T6 c6)
where T1 : struct where T2 : struct where T3 : struct where T4 : struct where T5 : struct where T6 : struct;