2 full-storage.hh -- declare Full_storage
4 source file of the Flower Library
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #ifndef FULL_STORAGE_HH
11 #define FULL_STORAGE_HH
14 #include "matrix-storage.hh"
16 /// simplest matrix storage. refer to its baseclass for the doco.
17 class Full_storage : public Matrix_storage
20 int height_i_,width_i_;
22 int max_height_i_, max_width_i_;
30 height_i_=width_i_=max_height_i_=max_width_i_=0;
34 bool valid(int i, int j) const {
35 return (i>=0 && i < height_i_)
36 && (j < width_i_ && j >=0);
40 void resize_rows(int);
41 void resize_cols(int);
44 virtual int rows() const {
47 virtual int cols() const {
52 virtual void set_size(int i, int j)
54 resize(i,j); //this could be more efficient.
57 virtual void set_size(int i) {
60 virtual void resize(int i, int j);
61 virtual void resize(int i) {
65 virtual Real& elem(int i,int j) {
67 return els_p_p_[i][j];
69 virtual Real const & elem(int i, int j) const {
71 return els_p_p_[i][j];
73 virtual Array<Real> row(int i) const;
74 virtual Array<Real> column(int j) const;
79 Full_storage(int i, int j) {
83 Full_storage(Full_storage&);
89 void operator=(Full_storage const &);
91 virtual void insert_row(int k);
92 virtual void delete_row(int k);
93 virtual void delete_column(int k);
97 virtual bool mult_ok(int i, int j)const;
98 virtual void mult_next(int &i, int &j) const ;
99 virtual bool trans_ok(int i, int j) const;
100 virtual void trans_next(int &i, int &j) const;
101 virtual Matrix_storage * clone();
103 virtual bool try_right_multiply(Matrix_storage * dest, Matrix_storage const * );
106 #endif // FULL_STORAGE_HH