Skip to content
Snippets Groups Projects
tnlMatrix_impl.h 3.09 KiB
Newer Older
  • Learn to ignore specific revisions
  • /***************************************************************************
    
                              tnlMatrix_impl.h  -  description
    
        begin                : Dec 18, 2013
        copyright            : (C) 2013 by Tomas Oberhuber
    
        email                : tomas.oberhuber@fjfi.cvut.cz
     ***************************************************************************/
    
    /***************************************************************************
     *                                                                         *
     *   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.                                   *
     *                                                                         *
     ***************************************************************************/
    
    
    #ifndef TNLMATRIX_IMPL_H_
    #define TNLMATRIX_IMPL_H_
    
    #include <matrices/tnlMatrix.h>
    
    template< typename Real,
              typename Device,
              typename Index >
    tnlMatrix< Real, Device, Index >::tnlMatrix()
    : rows( 0 ),
      columns( 0 )
    {
    }
    
    template< typename Real,
              typename Device,
              typename Index >
     bool tnlMatrix< Real, Device, Index >::setDimensions( const IndexType rows,
                                                           const IndexType columns )
    {
       tnlAssert( rows > 0 && columns > 0,
                cerr << " rows = " << rows << " columns = " << columns );
       this->rows = rows;
       this->columns = columns;
       return true;
    }
    
    template< typename Real,
              typename Device,
              typename Index >
       template< typename Real2,
                 typename Device2,
                 typename Index2 >
    bool tnlMatrix< Real, Device, Index >::setLike( const tnlMatrix< Real2, Device2, Index2 >& matrix )
    {
       return setDimensions( matrix.getRows(), matrix.getColumns() );
    }
    
    template< typename Real,
              typename Device,
              typename Index >
    Index tnlMatrix< Real, Device, Index >::getRows() const
    {
       return this->rows;
    }
    
    template< typename Real,
              typename Device,
              typename Index >
    Index tnlMatrix< Real, Device, Index >::getColumns() const
    {
       return this->columns;
    }
    
    template< typename Real,
              typename Device,
              typename Index >
    void tnlMatrix< Real, Device, Index >::reset()
    {
       this->rows = 0;
       this->columns = 0;
    }
    
    template< typename Real,
              typename Device,
              typename Index >
    bool tnlMatrix< Real, Device, Index >::save( tnlFile& file ) const
    {
       if( ! tnlObject::save( file ) ||
           ! file.write( &this->rows ) ||
           ! file.write( &this->columns ) )
          return false;
       return true;
    }
    
    template< typename Real,
              typename Device,
              typename Index >
    bool tnlMatrix< Real, Device, Index >::load( tnlFile& file )
    {
       if( ! tnlObject::load( file ) ||
           ! file.read( &this->rows ) ||
           ! file.read( &this->columns ) )
          return false;
       return true;
    }