📄 cutmatrix.hpp
字号:
/* Context : Matrix and Vector Operation Author : Frank Hoeppner, see also AUTHORS file Description : header of class CutMatrix History : see source file Comment : This file was generated automatically. DO NOT EDIT. Copyright : Copyright (C) 1999-2000 Frank Hoeppner This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA*/#ifndef CutMatrix_HEADER#define CutMatrix_HEADER/* configuration include */#ifdef HAVE_CONFIG_H/*//FILETREE_IFDEF HAVE_CONFIG_H*/#include "config.h"/*//FILETREE_ENDIF*/#endif// necessary includes#include <iostream.h>#include "define.hpp" // TData#include "matvecop.hpp"#include "trace.hpp" // invariant//#define INLINE inline// global types, constants, definitions// class definitiontemplate <class MATRIX>class CutMatrix { public: typedef typename MATRIX::value_type value_type; CutMatrix(); CutMatrix(const CutMatrix&); void operator=(const CutMatrix&); ~CutMatrix(); CutMatrix(const value_type); CutMatrix(const value_type,const value_type); CutMatrix(const value_type,const value_type,const value_type); CutMatrix(const value_type,const value_type,const value_type, const value_type); CutMatrix(const value_type,const value_type,const value_type, const value_type,const value_type); inline value_type operator()(const int,const int c=0) const; inline value_type operator[](const int) const; inline value_type& operator()(const int,const int c=0); inline value_type& operator[](const int); inline int rows() const; inline int cols() const; void adjust(int, int c=1); bool operator<(const CutMatrix&) const; bool operator==(const CutMatrix&) const; void write(ostream&) const; void read(istream&); CutMatrix(MATRIX&,int,int); protected: MATRIX *mp_matrix; int m_cut_row; int m_cut_col; private: };// class related functions and definitions/* inline implementation */template <class MATRIX> inline typename MATRIX::value_typeCutMatrix<MATRIX>::operator()(const int row,const int col) const { invariant ( (row < (mp_matrix->rows()-1)) && (col < (mp_matrix->cols()-1)), "matrix access out of range", SOURCELOC ); return mp_matrix->operator()(row+((row>=m_cut_row)?1:0),col+((col>=m_cut_col)?1:0)); }template <class MATRIX> inline typename MATRIX::value_type& CutMatrix<MATRIX>::operator()(const int row,const int col) { invariant ( (row < (mp_matrix->rows()-1)) && (col < (mp_matrix->cols()-1)), "matrix access out of range", SOURCELOC ); return mp_matrix->operator()(row+((row>=m_cut_row)?1:0),col+((col>=m_cut_col)?1:0)); }template <class MATRIX> inline typename MATRIX::value_typeCutMatrix<MATRIX>::operator[](const int row) const { invariant ( (row < (mp_matrix->rows()-1)) && ((mp_matrix->cols()-1) == 1), "vector access out of range", SOURCELOC ); return mp_matrix->operator()(row+((row>=m_cut_row)?1:0),0); } template <class MATRIX> inline typename MATRIX::value_type& CutMatrix<MATRIX>::operator[](const int row) { invariant ( (row < (mp_matrix->rows()-1)) && ((mp_matrix->cols()-1) == 1), "vector access out of range", SOURCELOC ); return mp_matrix->operator()(row+((row>=m_cut_row)?1:0),0); } template <class MATRIX> inline intCutMatrix<MATRIX>::rows() const { return (mp_matrix->rows()-1); }template <class MATRIX> inline intCutMatrix<MATRIX>::cols() const { return (mp_matrix->cols()-1); }template <class MATRIX>inline istream& operator>> ( istream &is, CutMatrix<MATRIX>& a_var ) { a_var.read(is); return is; }template <class MATRIX>inline ostream& operator<< ( ostream &os, const CutMatrix<MATRIX>& a_var ) { a_var.write(os); return os; }template <class MATRIX>CutMatrix<MATRIX> cutmatrix ( MATRIX& a_matrix, int a_row, int a_col ) { return CutMatrix<MATRIX>(a_matrix,a_row,a_col); }#endif // CutMatrix_HEADER
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -