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 #ifndef INTERFACES_IVECTOR_H
00031 #define INTERFACES_IVECTOR_H 1
00032
00033 #include <iostream>
00034 #include <vector>
00035
00036 #ifdef AIDA_DONT_USE_STD
00037 typedef istream std_istream;
00038 #else
00039 typedef std::istream std_istream;
00040 #endif
00041
00042 #ifndef ANAPHE_NO_NAMESPACE
00043 namespace Anaphe {
00044 #endif
00045
00046 class IAnnotation;
00047
00048
00049
00050
00051
00052 class IScalar {
00053
00054 public:
00055 virtual ~IScalar() { ; }
00056
00057 public:
00058
00059
00060 public:
00061 virtual void scale(double s) = 0;
00062 virtual void shift(double s) = 0;
00063
00064 public:
00065 virtual double value() const = 0;
00066 virtual double ePlus() const = 0;
00067 virtual double eMinus() const = 0;
00068
00069 public:
00070 virtual void setValue (double val) = 0;
00071 virtual void setEPlus (double val) = 0;
00072 virtual void setEMinus(double val) = 0;
00073
00074 public:
00075 virtual void fromAscii(std_istream &is) = 0;
00076
00077 public:
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 virtual void addScalar(const IScalar * other) = 0;
00088 virtual void subScalar(const IScalar * other) = 0;
00089 virtual void mulScalar(const IScalar * other) = 0;
00090 virtual void divScalar(const IScalar * other) = 0;
00091
00092
00093 virtual void add(double val) = 0;
00094 virtual void sub(double val) = 0;
00095 virtual void mul(double val) = 0;
00096 virtual void div(double val) = 0;
00097
00098
00099
00100 virtual void merge(const IScalar * other) = 0;
00101
00102 };
00103
00104 class IPoint {
00105
00106 public:
00107 virtual ~IPoint() { ; }
00108
00109 public:
00110
00111
00112 public:
00113 virtual int dimension() const = 0;
00114
00115
00116
00117 virtual void setDimension(int dim) = 0;
00118
00119 public:
00120 virtual double value() const = 0;
00121 virtual double vPlus() const = 0;
00122 virtual double vMinus() const = 0;
00123
00124 public:
00125 virtual void scaleValue(double scale) = 0;
00126 virtual void shiftValue(double scale) = 0;
00127
00128 public:
00129 virtual double coordinate(int index) const = 0;
00130 virtual double coordPlus (int index) const = 0;
00131 virtual double coordMinus(int index) const = 0;
00132
00133 virtual void scaleCoordinate(int index, double scale) = 0;
00134 virtual void shiftCoordinate(int index, double scale) = 0;
00135
00136 public:
00137
00138 virtual void fromAscii(std_istream &is) = 0;
00139
00140
00141 virtual IScalar * coordScalar(int index) = 0;
00142 virtual IScalar * vScalar() = 0;
00143
00144 virtual const IScalar * coordScalar(int index) const = 0;
00145 virtual const IScalar * vScalar() const = 0;
00146
00147 public:
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157 virtual void addPoint(const IPoint * other) = 0;
00158 virtual void subPoint(const IPoint * other) = 0;
00159 virtual void mulPoint(const IPoint * other) = 0;
00160 virtual void divPoint(const IPoint * other) = 0;
00161
00162
00163 virtual void add(double val) = 0;
00164 virtual void sub(double val) = 0;
00165 virtual void mul(double val) = 0;
00166 virtual void div(double val) = 0;
00167 };
00168
00169
00170 class IVector {
00171
00172 public:
00173 virtual ~IVector() { ; }
00174
00175 public:
00176
00177
00178 virtual IVector * deepClone() = 0;
00179
00180 public:
00181 virtual IAnnotation * annotation() = 0;
00182 virtual const IAnnotation * annotation() const = 0;
00183
00184 public:
00185 virtual int dimension() const = 0;
00186
00187
00188
00189 #ifdef AIDA_DONT_USE_STD
00190 virtual void setPointsPerDim( vector<int> vIn) = 0;
00191 #else
00192 virtual void setPointsPerDim(std::vector<int> vIn) = 0;
00193 #endif
00194
00195 virtual int nPoints() const = 0;
00196 virtual int nPoints(int index) const = 0;
00197
00198 public:
00199
00200 virtual void removePoint(int index) = 0;
00201
00202
00203 virtual void addPoint(IPoint * newPoint) = 0;
00204
00205
00206 virtual IPoint * point(int index) = 0;
00207 virtual IPoint * point(int indexX, int indexY) = 0;
00208 virtual IPoint * point(int indexX, int indexY, int indexZ) = 0;
00209
00210 virtual const IPoint * point(int index) const = 0;
00211 virtual const IPoint * point(int indexX, int indexY) const = 0;
00212 virtual const IPoint * point(int indexX, int indexY, int indexZ) const = 0;
00213
00214
00215
00216
00217
00218
00219 public:
00220 virtual IPoint * maxValue() const = 0;
00221 virtual IPoint * minValue() const = 0;
00222
00223 public:
00224 virtual void scaleV(double scale) = 0;
00225 virtual void shiftV(double shift) = 0;
00226
00227 virtual void scaleCoordinate(int index, double scale) = 0;
00228 virtual void shiftCoordinate(int index, double shift) = 0;
00229
00230 public:
00231
00232
00233 virtual void toAscii(const char * file) = 0;
00234
00235
00236
00237 virtual void fromAscii(const char *file) = 0;
00238
00239
00240
00241
00242
00243 virtual void replaceFromFunction(int i, double val) = 0;
00244
00245 public:
00246
00247
00248
00249
00250
00251
00252
00253
00254
00255 virtual void addVector(const IVector * other) = 0;
00256 virtual void subVector(const IVector * other) = 0;
00257 virtual void mulVector(const IVector * other) = 0;
00258 virtual void divVector(const IVector * other) = 0;
00259
00260
00261 virtual void add(double val) = 0;
00262 virtual void sub(double val) = 0;
00263 virtual void mul(double val) = 0;
00264 virtual void div(double val) = 0;
00265 };
00266
00267 #ifndef ANAPHE_NO_NAMESPACE
00268 };
00269 #endif
00270
00271
00272 #endif