/*---------------------------------------------------------------------------*\ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License This file is part of OpenFOAM. OpenFOAM 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 3 of the License, or (at your option) any later version. OpenFOAM 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 OpenFOAM. If not, see . \*---------------------------------------------------------------------------*/ // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // template inline Foam::Matrix::Matrix() : nRows_(0), nCols_(0), v_(NULL) {} template inline Foam::autoPtr> Foam::Matrix:: clone() const { return autoPtr>(new Matrix(*this)); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // template inline const Foam::Matrix& Foam::Matrix::null() { return NullObjectRef>(); } template inline Foam::label Foam::Matrix::m() const { return nRows_; } template inline Foam::label Foam::Matrix::n() const { return nCols_; } template inline Foam::label Foam::Matrix::size() const { return nRows_*nCols_; } template inline void Foam::Matrix::checki(const label i) const { #ifdef FULLDEBUG if (!nRows_) { FatalErrorInFunction << "attempt to access element from zero sized row" << abort(FatalError); } else if (i<0 || i>=nRows_) { FatalErrorInFunction << "index " << i << " out of range 0 ... " << nRows_-1 << abort(FatalError); } #endif } template inline void Foam::Matrix::checkj(const label j) const { #ifdef FULLDEBUG if (!nCols_) { FatalErrorInFunction << "attempt to access element from zero sized column" << abort(FatalError); } else if (j<0 || j>=nCols_) { FatalErrorInFunction << "index " << j << " out of range 0 ... " << nCols_-1 << abort(FatalError); } #endif } // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // template inline const Type* Foam::Matrix::v() const { return v_; } template inline Type* Foam::Matrix::v() { return v_; } template inline const Type& Foam::Matrix::operator() ( const label i, const label j ) const { checki(i); checkj(j); return v_[i*nCols_ + j]; } template inline Type& Foam::Matrix::operator() ( const label i, const label j ) { checki(i); checkj(j); return v_[i*nCols_ + j]; } template inline const Type* Foam::Matrix::operator[](const label i) const { checki(i); return v_ + i*nCols_; } template inline Type* Foam::Matrix::operator[](const label i) { checki(i); return v_ + i*nCols_; } // ************************************************************************* //