00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TNT_ARRAY2D_INTERFACE_H
00023 #define TNT_ARRAY2D_INTERFACE_H
00024
00025 #include <cstdlib>
00026 #include <iostream>
00027 #ifdef TNT_BOUNDS_CHECK
00028 #include <assert.h>
00029 #endif
00030
00031
00032 namespace TNT
00033 {
00034
00059 template <class T>
00060 class Array2D
00061 {
00062
00063
00064 private:
00065
00066
00067
00068
00069
00070
00071 public:
00072
00086 typedef T value_type;
00087
00092 Array2D();
00093
00094
00101 Array2D(int m, int n);
00102
00103
00104
00116 Array2D(int m, int n, T *a);
00117
00118
00128 Array2D(int m, int n, const T &a);
00129
00130
00131
00132
00145 inline Array2D(const Array2D &A);
00146
00147
00148
00149
00169 inline operator T**();
00170
00171
00172
00192 inline operator const T**();
00193
00194
00198 inline Array2D & operator=(const T &a);
00199
00200
00204 inline Array2D & operator=(const Array2D &A);
00205
00206
00207
00218 inline Array2D & ref(const Array2D &A);
00219
00220
00221
00228 Array2D copy() const;
00229
00230
00231
00255 Array2D & inject(const Array2D & A);
00256
00257
00269 inline T* operator[](int i);
00270 inline const T* operator[](int i) const;
00271
00276 inline int dim1() const;
00277
00278
00283 inline int dim2() const;
00284
00291 ~Array2D();
00292
00293
00294
00295
00296
00297 };
00298
00299
00300
00301
00302
00303 }
00304
00305 #endif
00306
00307