//#####################################################################
// Copyright 2006-2009, Geoffrey Irving, Nipun Kwatra, Tamar Shinar, Eftychios Sifakis.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
// Header ARRAYS_FORWARD
//#####################################################################
#ifndef __ARRAYS_FORWARD__
#define __ARRAYS_FORWARD__

#include <Core/Utilities/TYPE_UTILITIES.h>
#include <Core/Vectors/VECTOR_FORWARD.h>
#include <type_traits>
namespace PhysBAM{
using std::enable_if_t;

static constexpr int size_limit=4;
constexpr bool compat(int a,int b){return a<0 || b<0 || a==b;}

template<class T,class ID=int> class ARRAY_VIEW;
template<class T,class T_ARRAY,class ID=int> class ARRAY_BASE;
template<class T,class ID=int> class ARRAY;
template<class T_ARRAY,class T_INDICES=ARRAY<int>&> class INDIRECT_ARRAY;
template<class T,int d> class VECTOR;
template<class T,int m,class ID=int> using VEC_TYPE_NZ=
    std::conditional_t<(m>=0&&is_same<ID,int>::value),VECTOR<T,m>,ARRAY<T,ID>>;

}
#endif
