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) const = 0;
00064
00066 virtual double& operator()(unsigned int) = 0;
00067
00069 virtual const bool operator==(const MyColumnVector& a) const = 0;
00070
00072 virtual MyColumnVector& operator =(const MyColumnVector& a) = 0;
00073
00075 virtual MyColumnVector& operator =(double a) = 0;
00076
00077
00078
00080 virtual MyColumnVector& operator+= (const MyColumnVector& a) = 0;
00081
00083 virtual MyColumnVector& operator-= (const MyColumnVector& a) = 0;
00084
00086 virtual MyColumnVector operator+ (const MyColumnVector &a) const = 0;
00087
00089 virtual MyColumnVector operator- (const MyColumnVector &a) const = 0;
00090
00091
00092
00094 virtual MyColumnVector& operator+= (double b) = 0;
00095
00097 virtual MyColumnVector& operator-= (double b) = 0;
00098
00100 virtual MyColumnVector& operator*= (double b) = 0;
00101
00103 virtual MyColumnVector& operator/= (double b) = 0;
00104
00106 virtual MyColumnVector operator+ (double b) const = 0;
00107
00109 virtual MyColumnVector operator- (double b) const = 0;
00110
00112 virtual MyColumnVector operator* (double b) const = 0;
00113
00115 virtual MyColumnVector operator/ (double b) const = 0;
00116
00117
00118
00120 virtual MyMatrix operator* (const MyRowVector &a) const = 0;
00121
00123 virtual MyColumnVector sub(int j_start , int j_end) const = 0;
00124
00126 virtual MyRowVector transpose() const = 0;
00127
00128 };
00129
00130
00132 class RowVector_Wrapper
00133 {
00134 public:
00135
00137 RowVector_Wrapper() {};
00138
00140 virtual ~RowVector_Wrapper() {};
00141
00143 virtual void resize(int num_cols) = 0;
00144
00146 virtual unsigned int rows() const = 0;
00147
00149 virtual unsigned int columns() const = 0;
00150
00152 virtual MyRowVector vectorAdd(const MyRowVector& v2) const = 0;
00153
00155 virtual const double operator()(unsigned int) const = 0;
00156
00158 virtual double& operator()(unsigned int) = 0;
00159
00161 virtual const bool operator==(const MyRowVector& a) const = 0;
00162
00164 virtual MyRowVector& operator =(const MyRowVector& a) = 0;
00165
00167 virtual MyRowVector& operator =(double a) = 0;
00168
00169
00170
00172 virtual MyRowVector& operator+= (const MyRowVector& a) = 0;
00173
00175 virtual MyRowVector& operator-= (const MyRowVector& a) = 0;
00176
00178 virtual MyRowVector operator+ (const MyRowVector &a) const = 0;
00179
00181 virtual MyRowVector operator- (const MyRowVector &a) const = 0;
00182
00183
00185 virtual MyRowVector& operator+= (double b) = 0;
00186
00188 virtual MyRowVector& operator-= (double b) = 0;
00189
00191 virtual MyRowVector& operator*= (double b) = 0;
00192
00194 virtual MyRowVector& operator/= (double b) = 0;
00195
00197 virtual MyRowVector operator+(double b) const = 0;
00198
00200 virtual RowVector operator- (double b) const = 0;
00201
00203 virtual MyRowVector operator* (double b) const = 0;
00204
00206 virtual RowVector operator/ (double b) const = 0;
00207
00209 virtual double operator* (const MyColumnVector &a) const = 0;
00210
00212 virtual MyRowVector sub(int j_start , int j_end) const = 0;
00213
00215 virtual MyColumnVector transpose() const = 0;
00216
00217 };
00218
00219
00220
00221 }
00222
00223 #include "vector_NEWMAT.h"
00224 #include "vector_LTI.h"
00225 #include "vector_BOOST.h"
00226
00227 #endif // __OROVECTOR__