blob: 0043f6121b3938dc62ed9de0f7aeeabd9dc63fdb [file] [log] [blame]
//#####################################################################
// Copyright 2006, Eftychios Sifakis.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Class ARRAYS_RANGE
//#####################################################################
#ifndef __ARRAYS_RANGE__
#define __ARRAYS_RANGE__
#include "../Utilities/TYPE_UTILITIES.h"
namespace PhysBAM
{
template<class T_ARRAYS>
class ARRAYS_RANGE
{
typedef typename T_ARRAYS::ELEMENT T;
public:
typedef T ELEMENT;
T_ARRAYS& arrays;
const int offset;
const int m;
ARRAYS_RANGE (T_ARRAYS& arrays_input, const VECTOR_2D<int>& range)
: arrays (arrays_input), offset (range.x - 1), m (range.y - range.x + 1)
{}
void Get (const int i, T& element1, T& element2) const
{
assert (1 <= i && i <= m);
arrays.Get (i + offset, element1, element2);
}
void Get (const int i, T& element1, T& element2, T& element3) const
{
assert (1 <= i && i <= m);
arrays.Get (i + offset, element1, element2, element3);
}
void Get (const int i, T& element1, T& element2, T& element3, T& element4) const
{
assert (1 <= i && i <= m);
arrays.Get (i + offset, element1, element2, element3, element4);
}
void Set (const int i, const T& element1, const T& element2)
{
assert (1 <= i && i <= m);
arrays.Set (i + offset, element1, element2);
}
void Set (const int i, const T& element1, const T& element2, const T& element3)
{
assert (1 <= i && i <= m);
arrays.Set (i + offset, element1, element2, element3);
}
void Set (const int i, const T& element1, const T& element2, const T& element3, const T& element4)
{
assert (1 <= i && i <= m);
arrays.Set (i + offset, element1, element2, element3, element4);
}
//#####################################################################
};
}
#endif