00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifndef _MV_MATRIX_int_H_
00034 #define _MV_MATRIX_int_H_
00035
00036 #include "mvvi.h"
00037 #include "mvmrf.h"
00038
00039
00040
00041 #include <iostream>
00042 #ifdef MV_MATRIX_BOUNDS_CHECK
00043 # include <assert.h>
00044 #endif
00045
00046
00047 class MV_ColMat_int
00048 {
00049 private:
00050 MV_Vector_int v_;
00051 int dim0_;
00052 int dim1_;
00053 int lda_;
00054 int ref_;
00055
00056
00057 public:
00058
00059
00060
00061
00062
00063 MV_ColMat_int();
00064 MV_ColMat_int( int, int);
00065
00066
00067 MV_ColMat_int( int, int, const int&);
00068
00069
00070
00071
00072 MV_ColMat_int(int*, int m, int n);
00073 MV_ColMat_int(int*, int m, int n, int lda);
00074
00075
00076
00077
00078 MV_ColMat_int(MV_ColMat_int &A, MV_Matrix_::ref_type i);
00079 MV_ColMat_int(int*, int m, int n, MV_Matrix_::ref_type i);
00080 MV_ColMat_int(int*, int m, int n, int lda,
00081 MV_Matrix_::ref_type i);
00082
00083 MV_ColMat_int(const MV_ColMat_int&);
00084 ~MV_ColMat_int();
00085
00086
00087
00088
00089
00090 inline int& operator()( int, int);
00091 inline const int& operator()( int, int) const;
00092 MV_ColMat_int operator()(const MV_VecIndex &I, const MV_VecIndex &J) ;
00093 const MV_ColMat_int operator()(const MV_VecIndex &I, const MV_VecIndex &J) const;
00094 int dim(int i) const;
00095 int lda(void) const{ return lda_; }
00096 int size(int i) const { return dim(i);}
00097 MV_ColMat_int& newsize( int, int);
00098 int ref() const { return ref_;}
00099
00100
00101
00102
00103
00104 MV_ColMat_int & operator=(const MV_ColMat_int&);
00105 MV_ColMat_int & operator=(const int&);
00106
00107
00108 friend std::ostream& operator<<(std::ostream &s, const MV_ColMat_int &A);
00109
00110 };
00111
00112 inline int& MV_ColMat_int::operator()( int i, int j)
00113 {
00114 #ifdef MV_MATRIX_BOUNDS_CHECK
00115 assert(0<=i && i<dim(0));
00116 assert(0<=j && j<dim(1));
00117 #endif
00118 return v_(j*lda_ + i);
00119
00120 }
00121
00122 inline const int& MV_ColMat_int::operator()
00123 ( int i, int j) const
00124 {
00125 #ifdef MV_MATRIX_BOUNDS_CHECK
00126 assert(0<=i && i<dim(0));
00127 assert(0<=j && j<dim(1));
00128 #endif
00129 return v_(j*lda_ + i);
00130 }
00131
00132 inline MV_ColMat_int::MV_ColMat_int(int* d, int m,
00133 int n, MV_Matrix_::ref_type i ):
00134 v_(d,m*n, MV_Vector_::ref), dim0_(m), dim1_(n), lda_(m), ref_(i) {}
00135
00136 inline MV_ColMat_int::MV_ColMat_int( MV_ColMat_int &A,
00137 MV_Matrix_::ref_type i ):
00138 v_(&A(0,0), A.dim(0)*A.dim(1), MV_Vector_::ref),
00139 dim0_(A.dim(0)), dim1_(A.dim(1)), lda_(A.lda()), ref_(i) {}
00140
00141 inline MV_ColMat_int::MV_ColMat_int(int* d, int m, int n,
00142 int lda, MV_Matrix_::ref_type i) :
00143 v_(d, lda*n, MV_Vector_::ref), dim0_(m), dim1_(n), lda_(lda),
00144 ref_(i) {}
00145
00146 #endif
00147