00001 00043 #ifndef ABA_ROW_H 00044 #define ABA_ROW_H 00045 00046 #include "abacus/sparvec.h" 00047 #include "abacus/csense.h" 00048 class ABA_ROW : public ABA_SPARVEC { 00049 public: 00050 00061 ABA_ROW(ABA_GLOBAL *glob, 00062 int nnz, 00063 const ABA_ARRAY<int> &s, 00064 const ABA_ARRAY<double> &c, 00065 const ABA_CSENSE sense, double r); 00066 00072 ABA_ROW(ABA_GLOBAL *glob, 00073 int nnz, 00074 const ABA_ARRAY<int> &s, 00075 const ABA_ARRAY<double> &c, 00076 const ABA_CSENSE::SENSE sense, double r); 00077 00081 ABA_ROW(ABA_GLOBAL *glob, 00082 int nnz, 00083 int *s, 00084 double *c, 00085 ABA_CSENSE::SENSE sense, 00086 double r); 00087 00093 ABA_ROW(ABA_GLOBAL *glob, int size); 00094 00096 ~ABA_ROW(); 00097 #ifdef ABACUS_PARALLEL 00098 00107 ABA_ROW(ABA_GLOBAL *glob, ABA_MESSAGE &msg); 00108 00114 void pack(ABA_MESSAGE &msg) const; 00115 #endif 00116 00130 friend ostream &operator<<(ostream& out, const ABA_ROW &rhs); 00131 00134 double rhs() const; 00135 00141 void rhs(double r); 00142 00145 ABA_CSENSE *sense(); 00146 00152 void sense(ABA_CSENSE &s); 00153 00159 void sense(ABA_CSENSE::SENSE s); 00160 00167 void copy(const ABA_ROW &row); 00168 00176 void delInd(ABA_BUFFER<int> &buf, double rhsDelta); 00177 00178 protected: 00179 00182 ABA_CSENSE sense_; 00183 00186 double rhs_; 00187 }; 00188 00189 00190 inline double ABA_ROW::rhs() const 00191 { 00192 return rhs_; 00193 } 00194 00195 inline void ABA_ROW::rhs(double r) 00196 { 00197 rhs_ = r; 00198 } 00199 00200 inline ABA_CSENSE *ABA_ROW::sense() 00201 { 00202 return &sense_; 00203 } 00204 00205 inline void ABA_ROW::sense(ABA_CSENSE &s) 00206 { 00207 sense_ = s; 00208 } 00209 00210 inline void ABA_ROW::sense(ABA_CSENSE::SENSE s) 00211 { 00212 sense_.sense(s); 00213 } 00214 00215 00216 #endif // ABA_ROW_H 00217