00001
00002
00003 #ifndef TNT_ARRAY3D_UTILS_H
00004 #define TNT_ARRAY3D_UTILS_H
00005
00006 #include <cstdlib>
00007 #include <cassert>
00008
00009 namespace TNT
00010 {
00011
00012
00020 template <class T>
00021 std::ostream& operator<<(std::ostream &s, const Array3D<T> &A);
00022
00039 template <class T>
00040 std::istream& operator>>(std::istream &s, Array3D<T> &A);
00041
00042
00043
00055 template <class T>
00056 Array3D<T> operator+(const Array3D<T> &A, const Array3D<T> &B);
00057
00058
00070 template <class T>
00071 Array3D<T> operator-(const Array3D<T> &A, const Array3D<T> &B);
00072
00073
00074
00086 template <class T>
00087 Array3D<T> operator*(const Array3D<T> &A, const Array3D<T> &B);
00088
00100 template <class T>
00101 Array3D<T> operator/(const Array3D<T> &A, const Array3D<T> &B);
00102
00103
00115 template <class T>
00116 Array3D<T>& operator+=(Array3D<T> &A, const Array3D<T> &B);
00117
00118
00130 template <class T>
00131 Array3D<T>& operator-=(Array3D<T> &A, const Array3D<T> &B);
00132
00144 template <class T>
00145 Array3D<T>& operator*=(Array3D<T> &A, const Array3D<T> &B);
00146
00158 template <class T>
00159 Array3D<T>& operator/=(Array3D<T> &A, const Array3D<T> &B);
00160
00161
00162
00163
00164 }
00165
00166 #endif