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 #ifndef _MV_VECTOR_COMPLEX_H
00030 #define _MV_VECTOR_COMPLEX_H
00031
00032
00033
00034 #include <stdlib.h>
00035
00036 #include <sstream>
00037
00038
00039 #ifdef MV_VECTOR_BOUNDS_CHECK
00040 # include <assert.h>
00041 #endif
00042
00043 #include "mvvind.h"
00044
00045
00046
00047
00048
00049
00050
00051 #include "mvvrf.h"
00052
00053 class MV_Vector_COMPLEX
00054 {
00055 protected:
00056 COMPLEX *p_;
00057 int dim_;
00058 int ref_;
00059 public:
00060
00061
00062
00063
00064
00065
00066 MV_Vector_COMPLEX();
00067 MV_Vector_COMPLEX( int);
00068 MV_Vector_COMPLEX( int, const COMPLEX&);
00069
00070
00071 MV_Vector_COMPLEX(COMPLEX*, int);
00072 MV_Vector_COMPLEX(const COMPLEX*, int);
00073 MV_Vector_COMPLEX(const MV_Vector_COMPLEX &);
00074
00075
00076
00077
00078
00079
00080
00081
00082 MV_Vector_COMPLEX(COMPLEX* d, int N, MV_Vector_::ref_type i) :
00083 p_(d), dim_(N), ref_(i) {}
00084
00085 MV_Vector_COMPLEX(const MV_Vector_COMPLEX &V, MV_Vector_::ref_type i) :
00086 p_(V.p_), dim_(V.dim_), ref_(i) {}
00087
00088 ~MV_Vector_COMPLEX();
00089
00090
00091
00092
00093
00094
00095 COMPLEX& operator()( int i)
00096 {
00097 # ifdef MV_VECTOR_BOUNDS_CHECK
00098 assert(i < dim_);
00099 # endif
00100 return p_[i];
00101 }
00102 const COMPLEX& operator()( int i) const
00103 {
00104 # ifdef MV_VECTOR_BOUNDS_CHECK
00105 assert(i < dim_);
00106 # endif
00107 return p_[i];
00108 }
00109
00110 COMPLEX& operator[]( int i)
00111 {
00112 # ifdef MV_VECTOR_BOUNDS_CHECK
00113 assert(i < dim_);
00114 # endif
00115 return p_[i];
00116 }
00117 const COMPLEX& operator[]( int i) const
00118 {
00119 # ifdef MV_VECTOR_BOUNDS_CHECK
00120 assert(i < dim_);
00121 # endif
00122 return p_[i];
00123 }
00124
00125
00126 MV_Vector_COMPLEX operator()(const MV_VecIndex &I) ;
00127 MV_Vector_COMPLEX operator()(void);
00128 const MV_Vector_COMPLEX operator()(void) const;
00129 const MV_Vector_COMPLEX operator()(const MV_VecIndex &I) const;
00130
00131 inline int size() const { return dim_;}
00132 inline int dim() const { return dim_;}
00133 inline int ref() const { return ref_;}
00134 inline int null() const {return dim_== 0;}
00135
00136
00137 MV_Vector_COMPLEX & newsize( int );
00138
00139
00140
00141
00142
00143 MV_Vector_COMPLEX & operator=(const MV_Vector_COMPLEX&);
00144 MV_Vector_COMPLEX & operator=(const COMPLEX&);
00145
00146
00147 friend std::ostream& operator<<(std::ostream &s,
00148 const MV_Vector_COMPLEX &A);
00149
00150 };
00151
00152
00153
00154 #endif