00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __OROVECTOR__
00019 #define __OROVECTOR__
00020
00021 #define use_namespace
00022
00023
00024
00025
00026
00027
00028
00029 #define MyColumnVector MatrixWrapper::ColumnVector
00030 #define MyRowVector MatrixWrapper::RowVector
00031 #define MyMatrix MatrixWrapper::Matrix
00032
00033 namespace MatrixWrapper{
00034
00035 class Matrix;
00036 class ColumnVector;
00037 class RowVector;
00038
00040 class ColumnVector_Wrapper
00041 {
00042 public:
00043
00045 ColumnVector_Wrapper() {};
00046
00048 virtual ~ColumnVector_Wrapper() {};
00049
00051 virtual void resize(int num_rows) = 0;
00052
00054 virtual unsigned int rows() const = 0;
00055
00057 virtual unsigned int columns() const = 0;
00058
00060 virtual MyColumnVector vectorAdd(const MyColumnVector& v2) const = 0;
00061
00063 virtual const double operator()(unsigned int i) const = 0;
00064
00066 virtual double& operator()(unsigned int i) = 0;
00067
00069 virtual const double operator[](unsigned int i) const
00070 { return (*this)(i+1);}
00071
00073 virtual double& operator[](unsigned int i)
00074 { return (*this)(i+1);}
00075
00077 virtual const bool operator==(const MyColumnVector& a) const = 0;
00078
00080 virtual MyColumnVector& operator =(const MyColumnVector& a) = 0;
00081
00083 virtual MyColumnVector& operator =(double a) = 0;
00084
00085
00086
00088 virtual MyColumnVector& operator+= (const MyColumnVector& a) = 0;
00089
00091 virtual MyColumnVector& operator-= (const MyColumnVector& a) = 0;
00092
00094 virtual MyColumnVector operator+ (const MyColumnVector &a) const = 0;
00095
00097 virtual MyColumnVector operator- (const MyColumnVector &a) const = 0;
00098
00099
00100
00102 virtual MyColumnVector& operator+= (double b) = 0;
00103
00105 virtual MyColumnVector& operator-= (double b) = 0;
00106
00108 virtual MyColumnVector& operator*= (double b) = 0;
00109
00111 virtual MyColumnVector& operator/= (double b) = 0;
00112
00114 virtual MyColumnVector operator+ (double b) const = 0;
00115
00117 virtual MyColumnVector operator- (double b) const = 0;
00118
00120 virtual MyColumnVector operator* (double b) const = 0;
00121
00123 virtual MyColumnVector operator/ (double b) const = 0;
00124
00125
00126
00128 virtual MyMatrix operator* (const MyRowVector &a) const = 0;
00129
00131 virtual MyColumnVector sub(int j_start , int j_end) const = 0;
00132
00134 virtual MyRowVector transpose() const = 0;
00135
00136 };
00137
00138
00140 class RowVector_Wrapper
00141 {
00142 public:
00143
00145 RowVector_Wrapper() {};
00146
00148 virtual ~RowVector_Wrapper() {};
00149
00151 virtual void resize(int num_cols) = 0;
00152
00154 virtual unsigned int rows() const = 0;
00155
00157 virtual unsigned int columns() const = 0;
00158
00160 virtual MyRowVector vectorAdd(const MyRowVector& v2) const = 0;
00161
00163 virtual const double operator()(unsigned int) const = 0;
00164
00166 virtual double& operator()(unsigned int) = 0;
00167
00169 virtual const bool operator==(const MyRowVector& a) const = 0;
00170
00172 virtual MyRowVector& operator =(const MyRowVector& a) = 0;
00173
00175 virtual MyRowVector& operator =(double a) = 0;
00176
00177
00178
00180 virtual MyRowVector& operator+= (const MyRowVector& a) = 0;
00181
00183 virtual MyRowVector& operator-= (const MyRowVector& a) = 0;
00184
00186 virtual MyRowVector operator+ (const MyRowVector &a) const = 0;
00187
00189 virtual MyRowVector operator- (const MyRowVector &a) const = 0;
00190
00191
00193 virtual MyRowVector& operator+= (double b) = 0;
00194
00196 virtual MyRowVector& operator-= (double b) = 0;
00197
00199 virtual MyRowVector& operator*= (double b) = 0;
00200
00202 virtual MyRowVector& operator/= (double b) = 0;
00203
00205 virtual MyRowVector operator+(double b) const = 0;
00206
00208 virtual RowVector operator- (double b) const = 0;
00209
00211 virtual MyRowVector operator* (double b) const = 0;
00212
00214 virtual RowVector operator/ (double b) const = 0;
00215
00217 virtual double operator* (const MyColumnVector &a) const = 0;
00218
00220 virtual MyRowVector sub(int j_start , int j_end) const = 0;
00221
00223 virtual MyColumnVector transpose() const = 0;
00224
00225 };
00226
00227
00228
00229 }
00230
00231 #include "vector_NEWMAT.h"
00232 #include "vector_LTI.h"
00233 #include "vector_BOOST.h"
00234
00235 #endif // __OROVECTOR__