Skip to content
Snippets Groups Projects
SparseRow.h 1.79 KiB
Newer Older
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
/***************************************************************************
                          SparseRow.h  -  description
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
                             -------------------
    begin                : Dec 19, 2014
    copyright            : (C) 2014 by Tomas Oberhuber
    email                : tomas.oberhuber@fjfi.cvut.cz
 ***************************************************************************/

/* See Copyright Notice in tnl/Copyright */
#pragma once

#include <TNL/Devices/Cuda.h>
namespace TNL {
namespace Matrices {
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed

template< typename Real, typename Index >
class SparseRow
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
{
   public:

      SparseRow();
      SparseRow( Index* columns,
                          Real* values,
                          const Index length,
                          const Index step );
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
      void bind( Index* columns,
                 Real* values,
                 const Index length,
                 const Index step );

Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
      void setElement( const Index& elementIndex,
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
                       const Index& column,
                       const Real& value );
      __cuda_callable__
      const Index& getElementColumn( const Index& elementIndex ) const;
      __cuda_callable__
      const Real& getElementValue( const Index& elementIndex ) const;
      __cuda_callable__
      Index getLength() const;

      void print( std::ostream& str ) const;
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed
   protected:
Tomáš Oberhuber's avatar
Tomáš Oberhuber committed

      Index length, step;
};

template< typename Real, typename Index >
std::ostream& operator << ( std::ostream& str, const SparseRow< Real, Index >& row )
{
   row.print( str );
   return str;
}

} // namespace Matrices
} // namespace TNL
#include <TNL/Matrices/SparseRow_impl.h>