#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub(crate) enum Indexing
{
Singleton
{
offset: usize,
},
Array(ArrayIndexing),
SplitArray(ArrayIndexing, ArrayIndexing)
}
impl Indexing
{
#[inline(always)]
pub(crate) const fn singleton(offset: usize) -> Self
{
Indexing::Singleton
{
offset
}
}
#[inline(always)]
pub(crate) const fn array(offset: usize, step: usize, inclusive_minimum: usize, inclusive_maximum: usize) -> Self
{
Indexing::Array(ArrayIndexing::new(offset, step, inclusive_minimum, inclusive_maximum))
}
#[inline(always)]
pub(crate) const fn split_array(offset0: usize, step0: usize, inclusive_minimum0: usize, inclusive_maximum0: usize, offset1: usize, step1: usize, inclusive_minimum1: usize, inclusive_maximum1: usize) -> Self
{
Indexing::SplitArray
(
ArrayIndexing::new(offset0, step0, inclusive_minimum0, inclusive_maximum0),
ArrayIndexing::new(offset1, step1, inclusive_minimum1, inclusive_maximum1),
)
}
}