//#####################################################################
// Copyright 2005-2007, Eran Guendelman, Geoffrey Irving, Nipun Kwatra, Avi Robinson-Mosher, Andrew Selle, Tamar Shinar.
// This file is part of PhysBAM whose distribution is governed by the license contained in the accompanying file PHYSBAM_COPYRIGHT.txt.
//#####################################################################
#include <Core/Arrays/FACE_ARRAYS.h>
namespace PhysBAM{
// Avoid instantiating common non-trivial functions in large numbers of files.
#define COMMA ,
#define COMMON(T,F,IV)                                                  \
    template ARRAY<T,F>::ARRAY(const ARRAY<T,F>&);                      \
    template ARRAY<T,F>::ARRAY(const RANGE<IV>&);                       \
    template ARRAY<T,F>::ARRAY(const RANGE<IV>&,INIT_NEW,const T&);     \
    template ARRAY<T,F>::~ARRAY();                                      \
    template void ARRAY<T,F>::Initialize(const RANGE<IV>&);             \
    template void ARRAY<T,F>::Resize(const RANGE<IV>&);                 \
    template void ARRAY<T,F>::Resize(const RANGE<IV>&,NO_INIT);         \
    template void ARRAY<T,F>::Resize(const RANGE<IV>&,bool,bool,const T&);
#define COMMON1(T,d)                                            \
    COMMON(T,FACE_INDEX<d>,VECTOR<int COMMA d>);                \
    COMMON(VECTOR<T COMMA d>,FACE_INDEX<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
}
