//#####################################################################
// Copyright 2002-2007, Robert Bridson, Ronald Fedkiw, Eran Guendelman, Geoffrey Irving, Nipun Kwatra, Frank Losasso, Duc Nguyen, Craig Schroeder, Andrew Selle, Jonathan Su.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
#include <Core/Arrays/ARRAYS_ND.h>
namespace PhysBAM{
// Avoid instantiating common non-trivial functions in large numbers of files.
#define COMMA ,
#define COMMON(T,IV)                                                    \
    template ARRAY<T,IV>::ARRAY(const RANGE<IV>&);                      \
    template ARRAY<T,IV>::ARRAY(const RANGE<IV>&,NO_INIT);              \
    template void ARRAY<T,IV>::Initialize(const RANGE<IV>&,bool,const T&); \
    template void ARRAY<T,IV>::Resize(const RANGE<IV>&);                \
    template void ARRAY<T,IV>::Resize(const RANGE<IV>&,NO_INIT);        \
    template ARRAY<T,IV>::~ARRAY()
#define COMMON1(T,d)                                    \
    COMMON(T,VECTOR<int COMMA d>);                      \
    COMMON(VECTOR<T COMMA d>,VECTOR<int COMMA d>)
#define COMMON2(T) COMMON1(T,1);COMMON1(T,2);COMMON1(T,3)
COMMON2(bool);
COMMON2(int);
COMMON2(float);
COMMON2(double);
#undef COMMON2
#undef COMMON1
#undef COMMON
#undef COMMA
}
