41 #ifndef __OPENFLUID_CORE_MATRIX_HPP__ 
   42 #define __OPENFLUID_CORE_MATRIX_HPP__ 
   49 namespace openfluid { 
namespace core {
 
   66     bool allocate(
unsigned long ColsNbr, 
unsigned long RowsNbr);
 
   86     Matrix(
unsigned long ColsNbr,
unsigned long RowsNbr);
 
   91     Matrix(
unsigned long ColsNbr,
unsigned long RowsNbr, T InitValue);
 
  104     { 
return m_ColsNbr; };
 
  110     inline unsigned long getRowsNbr()
 const { 
return m_RowsNbr; };
 
  117     { 
return (m_ColsNbr * m_RowsNbr); };
 
  122     inline unsigned long size()
 const 
  123     { 
return (m_ColsNbr * m_RowsNbr); };
 
  130     { 
return static_cast<T*
>(m_Data); };
 
  135     void setData(T* Data, 
unsigned long ColsNbr, 
unsigned long RowsNbr);
 
  140     T getElement(
unsigned long ColIndex, 
unsigned long RowIndex) 
const;
 
  145     inline T 
at(
unsigned long ColIndex, 
unsigned long RowIndex)
 const 
  146     { 
return getElement(ColIndex,RowIndex); };
 
  151     inline T 
get(
unsigned long ColIndex, 
unsigned long RowIndex) 
const 
  152     { 
return getElement(ColIndex,RowIndex); };
 
  158     void setElement(
unsigned long ColIndex, 
unsigned long RowIndex, T Element);
 
  163     inline void set(
unsigned long ColIndex, 
unsigned long RowIndex, T Element)
 
  164     { setElement(ColIndex,RowIndex,Element); };
 
  174     void fill(
const T& Val);
 
  190   m_ColsNbr(0),m_RowsNbr(0)
 
  221   if (!allocate(ColsNbr,RowsNbr))
 
  237   if (!allocate(ColsNbr,RowsNbr))
 
  264   if (ColsNbr > 0 && RowsNbr > 0)
 
  266     m_Data = 
new T[ColsNbr*RowsNbr];
 
  288   if (!allocate(ColsNbr,RowsNbr))
 
  291   std::copy(Data, Data + (ColsNbr*RowsNbr), m_Data);
 
  302   if (ColIndex >= m_ColsNbr || RowIndex >= m_RowsNbr)
 
  305   return m_Data[ColIndex*m_RowsNbr+RowIndex];
 
  316   if (ColIndex >= m_ColsNbr || RowIndex >= m_RowsNbr)
 
  319   m_Data[ColIndex*m_RowsNbr+RowIndex] = Element;
 
  331   if (
this == &A) 
return *
this; 
 
  351   for (
unsigned long i=0;i<m_RowsNbr;i++)
 
  352     for (
unsigned long j=0;j<m_ColsNbr;j++)
 
  353       m_Data[i*m_ColsNbr+j] = Val;
 
unsigned long getColsNbr() const 
Definition: Matrix.hpp:103
void fill(const T &Val)
Definition: Matrix.hpp:349
Definition: Matrix.hpp:56
unsigned long getSize() const 
Definition: Matrix.hpp:116
bool allocate(unsigned long ColsNbr, unsigned long RowsNbr)
Definition: Matrix.hpp:262
void clear()
Definition: Matrix.hpp:362
T * data() const 
Definition: Matrix.hpp:129
unsigned long size() const 
Definition: Matrix.hpp:122
Definition: FrameworkException.hpp:50
unsigned long m_ColsNbr
Definition: Matrix.hpp:62
unsigned long getRowsNbr() const 
Definition: Matrix.hpp:110
void setData(T *Data, unsigned long ColsNbr, unsigned long RowsNbr)
Definition: Matrix.hpp:284
Matrix()
Definition: Matrix.hpp:189
T * m_Data
Definition: Matrix.hpp:60
void set(unsigned long ColIndex, unsigned long RowIndex, T Element)
Definition: Matrix.hpp:163
virtual ~Matrix()
Definition: Matrix.hpp:96
unsigned long m_RowsNbr
Definition: Matrix.hpp:64
void setElement(unsigned long ColIndex, unsigned long RowIndex, T Element)
Definition: Matrix.hpp:314
#define OPENFLUID_API
Definition: dllexport.hpp:87
T getElement(unsigned long ColIndex, unsigned long RowIndex) const 
Definition: Matrix.hpp:300
Matrix< T > & operator=(const Matrix &A)
Definition: Matrix.hpp:328
T at(unsigned long ColIndex, unsigned long RowIndex) const 
Definition: Matrix.hpp:145
void init()
Definition: Matrix.hpp:249