Template Matrix class. This is an extension of the EST_TVector class to two dimensions. More...
#include <include/EST_TMatrix.h>
Public Member Functions | |
EST_TMatrix () | |
default constructor More... | |
EST_TMatrix (const EST_TMatrix< T > &m) | |
copy constructor More... | |
EST_TMatrix (ssize_t rows, ssize_t cols) | |
"size" constructor More... | |
EST_TMatrix (ssize_t rows, ssize_t cols, T *memory, ptrdiff_t offset=0, int free_when_destroyed=0) | |
construct from memory supplied by caller More... | |
~EST_TMatrix () | |
EST_TMatrix. More... | |
bool | have_rows_before (ssize_t n) const |
bool | have_columns_before (ssize_t n) const |
void | resize (ssize_t rows, ssize_t cols, ssize_t set=1) |
void | fill (const T &v) |
fill matrix with value v More... | |
void | fill () |
EST_TMatrix & | operator= (const EST_TMatrix &s) |
assignment operator More... | |
EST_TMatrix & | add_rows (const EST_TMatrix &s) |
The two versions of what might have been operator +=. More... | |
EST_TMatrix & | add_columns (const EST_TMatrix &s) |
access | |
Basic access methods for matrices. | |
ssize_t | num_rows () const |
return number of rows More... | |
ssize_t | num_columns () const |
return number of columns More... | |
INLINE const T & | a_no_check (ssize_t row, ssize_t col) const |
const access with no bounds check, care recommend More... | |
INLINE T & | a_no_check (ssize_t row, ssize_t col) |
access with no bounds check, care recommend More... | |
INLINE const T & | a_no_check_1 (ssize_t row, ssize_t col) const |
INLINE T & | a_no_check_1 (ssize_t row, ssize_t col) |
const T & | a_check (ssize_t row, ssize_t col) const |
const element access function More... | |
T & | a_check (ssize_t row, ssize_t col) |
non-const element access function More... | |
const T & | a (ssize_t row, ssize_t col) const |
T & | a (ssize_t row, ssize_t col) |
const T & | operator() (ssize_t row, ssize_t col) const |
const element access operator More... | |
T & | operator() (ssize_t row, ssize_t col) |
non-const element access operator More... | |
Sub-Matrix/Vector Extraction | |
All of these return matrices and vectors which share memory with the original, so altering values them alters the original. | |
void | row (EST_TVector< T > &rv, ssize_t r, ssize_t start_c=0, int len=-1) |
Make the vector rv a window onto row r More... | |
void | column (EST_TVector< T > &cv, ssize_t c, ssize_t start_r=0, int len=-1) |
Make the vector cv a window onto column c More... | |
void | sub_matrix (EST_TMatrix< T > &sm, ssize_t r=0, ptrdiff_t numr=EST_ALL, ssize_t c=0, ptrdiff_t numc=EST_ALL) |
Make the matrix sm a window into this matrix. More... | |
Copy in and out | |
Copy data between buffers and the matrix. | |
void | copy_row (ssize_t r, T *buf, ptrdiff_t offset=0, int num=-1) const |
void | copy_row (ssize_t r, EST_TVector< T > &t, ptrdiff_t offset=0, int num=-1) const |
void | copy_column (ssize_t c, T *buf, ptrdiff_t offset=0, int num=-1) const |
void | copy_column (ssize_t c, EST_TVector< T > &t, ptrdiff_t offset=0, int num=-1) const |
void | set_row (ssize_t n, const T *buf, ptrdiff_t offset=0, int num=-1) |
void | set_row (ssize_t n, const EST_TVector< T > &t, ptrdiff_t offset=0, int num=-1) |
void | set_row (ssize_t r, const EST_TMatrix< T > &from, ssize_t from_r, ssize_t from_offset=0, ptrdiff_t offset=0, int num=-1) |
void | set_column (ssize_t n, const T *buf, ptrdiff_t offset=0, int num=-1) |
void | set_column (ssize_t n, const EST_TVector< T > &t, ptrdiff_t offset=0, int num=-1) |
void | set_column (ssize_t c, const EST_TMatrix< T > &from, ssize_t from_c, ssize_t from_offset=0, ptrdiff_t offset=0, int num=-1) |
void | set_memory (T *buffer, ptrdiff_t offset, ssize_t rows, ssize_t columns, int free_when_destroyed=0) |
Public Member Functions inherited from EST_TVector< T > | |
INLINE ssize_t | vcell_pos (ssize_t c, ssize_t cs) const |
The memory access rule, in one place for easy reference. More... | |
INLINE ssize_t | vcell_pos (ssize_t c) const |
INLINE ssize_t | vcell_pos_1 (ssize_t c) const |
INLINE const T & | fast_a_v (int c) const |
quick method for returning (x[n]) More... | |
INLINE T & | fast_a_v (int c) |
INLINE const T & | fast_a_1 (int c) const |
INLINE T & | fast_a_1 (int c) |
void | set_values (const T *data, int step, int start_c, int num_c) |
Get and set values from array. More... | |
void | get_values (T *data, int step, int start_c, int num_c) const |
void | copy (const EST_TVector< T > &a) |
private copy function, called from all other copying functions. More... | |
void | copy_data (const EST_TVector< T > &a) |
just copy data, no resizing, no size check. More... | |
void | just_resize (int new_cols, T **old_vals) |
resize the memory and reset the bounds, but don't set values. More... | |
void | default_vals () |
sets data and length to default values (0 in both cases). More... | |
EST_TVector () | |
default constructor More... | |
EST_TVector (const EST_TVector< T > &v) | |
copy constructor More... | |
EST_TVector (ssize_t n) | |
"size" constructor - make vector of size n. More... | |
EST_TVector (int, T *memory, int offset=0, int free_when_destroyed=0) | |
construct from memory supplied by caller More... | |
~EST_TVector () | |
destructor. More... | |
void | resize (ssize_t n, int set=1) |
const T * | memory () const |
T * | memory () |
void | set_memory (T *buffer, int offset, ssize_t columns, int free_when_destroyed=0) |
EST_TVector & | operator= (const EST_TVector &s) |
assignment operator More... | |
void | fill (const T &v) |
Fill entire array will value v . More... | |
void | empty () |
Fill vector with default value. More... | |
int | operator== (const EST_TVector &v) const |
is true if vectors are equal size and all elements are equal. More... | |
int | operator!= (const EST_TVector &v) const |
is true if vectors are not equal size or a single elements isn't equal. More... | |
void | copy_section (T *dest, int offset=0, int num=-1) const |
Copy data in and out. Subclassed by SimpleVector for speed. More... | |
void | set_section (const T *src, int offset=0, int num=-1) |
void | sub_vector (EST_TVector< T > &sv, int start_c=0, int len=-1) |
Create a sub vector. More... | |
void | integrity () const |
template<> | |
const EST_DMatrix * | def_val |
template<> | |
EST_DMatrix * | error_return |
template<> | |
const EST_DVector * | def_val |
template<> | |
EST_DVector * | error_return |
template<> | |
const EST_FMatrix * | def_val |
template<> | |
EST_FMatrix * | error_return |
INLINE ssize_t | num_columns () const |
number of items in vector. More... | |
INLINE ssize_t | length () const |
number of items in vector. More... | |
INLINE ssize_t | n () const |
number of items in vector. More... | |
INLINE const T & | a_no_check (ssize_t n) const |
read-only const access operator: without bounds checking More... | |
INLINE T & | a_no_check (ssize_t n) |
read/write non-const access operator: without bounds checking More... | |
INLINE const T & | a_no_check_1 (ssize_t n) const |
read-only const access operator: without bounds checking More... | |
INLINE T & | a_no_check_1 (ssize_t n) |
read/write non-const access operator: without bounds checking More... | |
const T & | a_check (ssize_t n) const |
read-only const access operator: with bounds checking More... | |
T & | a_check (ssize_t n) |
read/write non-const access operator: with bounds checking More... | |
const T & | a (ssize_t n) const |
T & | a (ssize_t n) |
const T & | operator() (ssize_t n) const |
read-only const access operator: return reference to nth member More... | |
T & | operator[] (ssize_t n) |
read/write non const access operator: return reference to nth member More... | |
Protected Member Functions | |
INLINE ssize_t | mcell_pos (ssize_t r, ssize_t c, ssize_t rs, ssize_t cs) const |
INLINE ssize_t | mcell_pos (ssize_t r, ssize_t c) const |
INLINE ssize_t | mcell_pos_1 (ssize_t r, ssize_t c) const |
INLINE const T & | fast_a_m (ssize_t r, ssize_t c) const |
quick method for returning x[m][n] More... | |
INLINE T & | fast_a_m (ssize_t r, ssize_t c) |
INLINE const T & | fast_a_1 (ssize_t r, ssize_t c) const |
INLINE T & | fast_a_1 (ssize_t r, ssize_t c) |
void | set_values (const T *data, ssize_t r_step, ssize_t c_step, ssize_t start_r, ssize_t num_r, ssize_t start_c, ssize_t num_c) |
Get and set values from array. More... | |
void | get_values (T *data, ssize_t r_step, ssize_t c_step, ssize_t start_r, ssize_t num_r, ssize_t start_c, ssize_t num_c) const |
void | copy (const EST_TMatrix< T > &a) |
private resize and copy function. More... | |
void | copy_data (const EST_TMatrix< T > &a) |
just copy data, no resizing, no size check. More... | |
void | just_resize (ssize_t new_rows, ssize_t new_cols, T **old_vals) |
resize the memory and reset the bounds, but don't set values. More... | |
void | default_vals () |
sets data and length to default values (0 in both cases). More... | |
Protected Attributes | |
ssize_t | p_num_rows |
Visible shape. More... | |
ssize_t | p_row_step |
How to access the memory. More... | |
Matrix file input / output | |
EST_read_status | load (const class EST_String &filename) |
load Matrix from file - Not currently implemented. More... | |
EST_write_status | save (const class EST_String &filename) const |
save Matrix to file filename More... | |
std::ostream & | operator<< (std::ostream &st, const EST_TMatrix< T > &a) |
print matrix. More... | |
Additional Inherited Members | |
Public Attributes inherited from EST_TVector< T > | |
T * | p_memory |
ssize_t | p_num_columns |
Visible shape. More... | |
ssize_t | p_offset |
How to access the memory. More... | |
ssize_t | p_column_step |
bool | p_sub_matrix |
Static Public Attributes inherited from EST_TVector< T > | |
static const T * | def_val = &def_val_item_ptr |
default value, used for filling matrix after resizing More... | |
static T * | error_return = &error_return_item_ptr |
Template Matrix class. This is an extension of the EST_TVector class to two dimensions.
Definition at line 89 of file EST_TMatrix.h.
EST_TMatrix< T >::EST_TMatrix | ( | ) |
default constructor
Definition at line 62 of file EST_TMatrix.cc.
EST_TMatrix< T >::EST_TMatrix | ( | const EST_TMatrix< T > & | m | ) |
copy constructor
Definition at line 68 of file EST_TMatrix.cc.
EST_TMatrix< T >::EST_TMatrix | ( | ssize_t | rows, |
ssize_t | cols | ||
) |
"size" constructor
Definition at line 75 of file EST_TMatrix.cc.
EST_TMatrix< T >::EST_TMatrix | ( | ssize_t | rows, |
ssize_t | cols, | ||
T * | memory, | ||
ptrdiff_t | offset = 0 , |
||
int | free_when_destroyed = 0 |
||
) |
construct from memory supplied by caller
Definition at line 82 of file EST_TMatrix.cc.
EST_TMatrix< T >::~EST_TMatrix | ( | ) |
Definition at line 90 of file EST_TMatrix.cc.
|
inlineprotected |
Definition at line 99 of file EST_TMatrix.h.
|
inlineprotected |
Definition at line 104 of file EST_TMatrix.h.
|
inlineprotected |
Definition at line 111 of file EST_TMatrix.h.
|
inlineprotected |
quick method for returning x[m][n]
Definition at line 119 of file EST_TMatrix.h.
|
inlineprotected |
Definition at line 121 of file EST_TMatrix.h.
|
inlineprotected |
Definition at line 124 of file EST_TMatrix.h.
|
inlineprotected |
Definition at line 126 of file EST_TMatrix.h.
|
protected |
Get and set values from array.
Definition at line 129 of file EST_TMatrix.cc.
|
protected |
Definition at line 141 of file EST_TMatrix.cc.
|
protected |
private resize and copy function.
Definition at line 153 of file EST_TMatrix.cc.
|
protected |
just copy data, no resizing, no size check.
Definition at line 119 of file EST_TMatrix.cc.
|
protected |
resize the memory and reset the bounds, but don't set values.
Definition at line 209 of file EST_TMatrix.cc.
|
protected |
sets data and length to default values (0 in both cases).
Definition at line 54 of file EST_TMatrix.cc.
|
inline |
return number of rows
Definition at line 177 of file EST_TMatrix.h.
|
inline |
return number of columns
Definition at line 179 of file EST_TMatrix.h.
|
inline |
const access with no bounds check, care recommend
Definition at line 182 of file EST_TMatrix.h.
|
inline |
access with no bounds check, care recommend
Definition at line 185 of file EST_TMatrix.h.
|
inline |
Definition at line 188 of file EST_TMatrix.h.
|
inline |
Definition at line 189 of file EST_TMatrix.h.
const T & EST_TMatrix< T >::a_check | ( | ssize_t | row, |
ssize_t | col | ||
) | const |
const element access function
Definition at line 113 of file EST_TMatrix.cc.
T & EST_TMatrix< T >::a_check | ( | ssize_t | row, |
ssize_t | col | ||
) |
non-const element access function
Definition at line 100 of file EST_TMatrix.cc.
|
inline |
Definition at line 196 of file EST_TMatrix.h.
|
inline |
Definition at line 197 of file EST_TMatrix.h.
|
inline |
const element access operator
Definition at line 200 of file EST_TMatrix.h.
|
inline |
non-const element access operator
Definition at line 202 of file EST_TMatrix.h.
bool EST_TMatrix< T >::have_rows_before | ( | ssize_t | n | ) | const |
Definition at line 302 of file EST_TMatrix.cc.
bool EST_TMatrix< T >::have_columns_before | ( | ssize_t | n | ) | const |
Definition at line 308 of file EST_TMatrix.cc.
void EST_TMatrix< T >::resize | ( | ssize_t | rows, |
ssize_t | cols, | ||
ssize_t | set = 1 |
||
) |
resize matrix. If set=1
, then the current values in the matrix are preserved up to the new size n
. If the new size exceeds the old size, the rest of the matrix is filled with the def_val
Definition at line 250 of file EST_TMatrix.cc.
void EST_TMatrix< T >::fill | ( | const T & | v | ) |
fill matrix with value v
Definition at line 314 of file EST_TMatrix.cc.
|
inline |
Definition at line 218 of file EST_TMatrix.h.
EST_TMatrix< T > & EST_TMatrix< T >::operator= | ( | const EST_TMatrix< T > & | s | ) |
assignment operator
Definition at line 160 of file EST_TMatrix.cc.
EST_TMatrix< T > & EST_TMatrix< T >::add_rows | ( | const EST_TMatrix< T > & | s | ) |
The two versions of what might have been operator +=.
Definition at line 167 of file EST_TMatrix.cc.
EST_TMatrix< T > & EST_TMatrix< T >::add_columns | ( | const EST_TMatrix< T > & | s | ) |
Definition at line 188 of file EST_TMatrix.cc.
void EST_TMatrix< T >::row | ( | EST_TVector< T > & | rv, |
ssize_t | r, | ||
ssize_t | start_c = 0 , |
||
int | len = -1 |
||
) |
Make the vector rv
a window onto row r
Definition at line 534 of file EST_TMatrix.cc.
void EST_TMatrix< T >::column | ( | EST_TVector< T > & | cv, |
ssize_t | c, | ||
ssize_t | start_r = 0 , |
||
int | len = -1 |
||
) |
Make the vector cv
a window onto column c
Definition at line 556 of file EST_TMatrix.cc.
void EST_TMatrix< T >::sub_matrix | ( | EST_TMatrix< T > & | sm, |
ssize_t | r = 0 , |
||
ptrdiff_t | numr = EST_ALL , |
||
ssize_t | c = 0 , |
||
ptrdiff_t | numc = EST_ALL |
||
) |
Make the matrix sm
a window into this matrix.
Definition at line 578 of file EST_TMatrix.cc.
void EST_TMatrix< T >::copy_row | ( | ssize_t | r, |
T * | buf, | ||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) | const |
Copy row r
of matrix to buf
. buf
should be pre-malloced to the correct size.
Definition at line 381 of file EST_TMatrix.cc.
void EST_TMatrix< T >::copy_row | ( | ssize_t | r, |
EST_TVector< T > & | t, | ||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) | const |
Copy row r
of matrix to buf
. buf
should be pre-malloced to the correct size.
Definition at line 399 of file EST_TMatrix.cc.
void EST_TMatrix< T >::copy_column | ( | ssize_t | c, |
T * | buf, | ||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) | const |
Copy column c
of matrix to buf
. buf
should be pre-malloced to the correct size.
Definition at line 420 of file EST_TMatrix.cc.
void EST_TMatrix< T >::copy_column | ( | ssize_t | c, |
EST_TVector< T > & | t, | ||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) | const |
Copy column c
of matrix to buf
. buf
should be pre-malloced to the correct size.
Definition at line 442 of file EST_TMatrix.cc.
void EST_TMatrix< T >::set_row | ( | ssize_t | n, |
const T * | buf, | ||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) |
Copy buf into row n
of matrix.
Definition at line 466 of file EST_TMatrix.cc.
|
inline |
Definition at line 275 of file EST_TMatrix.h.
void EST_TMatrix< T >::set_row | ( | ssize_t | r, |
const EST_TMatrix< T > & | from, | ||
ssize_t | from_r, | ||
ssize_t | from_offset = 0 , |
||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) |
Definition at line 490 of file EST_TMatrix.cc.
void EST_TMatrix< T >::set_column | ( | ssize_t | n, |
const T * | buf, | ||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) |
Copy buf into column n
of matrix.
Definition at line 478 of file EST_TMatrix.cc.
|
inline |
Definition at line 287 of file EST_TMatrix.h.
void EST_TMatrix< T >::set_column | ( | ssize_t | c, |
const EST_TMatrix< T > & | from, | ||
ssize_t | from_c, | ||
ssize_t | from_offset = 0 , |
||
ptrdiff_t | offset = 0 , |
||
int | num = -1 |
||
) |
Definition at line 512 of file EST_TMatrix.cc.
void EST_TMatrix< T >::set_memory | ( | T * | buffer, |
ptrdiff_t | offset, | ||
ssize_t | rows, | ||
ssize_t | columns, | ||
int | free_when_destroyed = 0 |
||
) |
For when you absolutely have to have access to the memory.
Definition at line 371 of file EST_TMatrix.cc.
EST_read_status EST_TMatrix< T >::load | ( | const class EST_String & | filename | ) |
load Matrix from file - Not currently implemented.
Definition at line 360 of file EST_TMatrix.cc.
EST_write_status EST_TMatrix< T >::save | ( | const class EST_String & | filename | ) | const |
save Matrix to file filename
Definition at line 324 of file EST_TMatrix.cc.
|
friend |
print matrix.
Definition at line 310 of file EST_TMatrix.h.
|
protected |
Visible shape.
Definition at line 94 of file EST_TMatrix.h.
|
protected |
How to access the memory.
Definition at line 97 of file EST_TMatrix.h.