40 #ifndef __OPENFLUID_CORE_MATRIX_HPP__ 41 #define __OPENFLUID_CORE_MATRIX_HPP__ 65 bool allocate(
unsigned long ColsNbr,
unsigned long RowsNbr);
85 Matrix(
unsigned long ColsNbr,
unsigned long RowsNbr);
90 Matrix(
unsigned long ColsNbr,
unsigned long RowsNbr, T InitValue);
121 return (m_ColsNbr * m_RowsNbr);
127 inline unsigned long size()
const 129 return (m_ColsNbr * m_RowsNbr);
138 return static_cast<T*
>(m_Data);
144 void setData(T* Data,
unsigned long ColsNbr,
unsigned long RowsNbr);
149 T getElement(
unsigned long ColIndex,
unsigned long RowIndex)
const;
154 inline T
at(
unsigned long ColIndex,
unsigned long RowIndex)
const 156 return getElement(ColIndex,RowIndex);
162 inline T
get(
unsigned long ColIndex,
unsigned long RowIndex)
const 163 {
return getElement(ColIndex,RowIndex); };
169 void setElement(
unsigned long ColIndex,
unsigned long RowIndex, T Element);
174 inline void set(
unsigned long ColIndex,
unsigned long RowIndex, T Element)
176 setElement(ColIndex,RowIndex,Element);
187 void fill(
const T& Val);
203 m_ColsNbr(0),m_RowsNbr(0)
236 if (!allocate(ColsNbr,RowsNbr))
254 if (!allocate(ColsNbr,RowsNbr))
294 if (ColsNbr > 0 && RowsNbr > 0)
296 m_Data =
new T[ColsNbr*RowsNbr];
321 if (!allocate(ColsNbr,RowsNbr))
326 std::copy(Data, Data + (ColsNbr*RowsNbr), m_Data);
337 if (ColIndex >= m_ColsNbr || RowIndex >= m_RowsNbr)
342 return m_Data[ColIndex*m_RowsNbr+RowIndex];
353 if (ColIndex >= m_ColsNbr || RowIndex >= m_RowsNbr)
358 m_Data[ColIndex*m_RowsNbr+RowIndex] = Element;
395 for (
unsigned long i=0;i<m_RowsNbr;i++)
397 for (
unsigned long j=0;j<m_ColsNbr;j++)
399 m_Data[i*m_ColsNbr+j] = Val;
unsigned long size() const
Definition: Matrix.hpp:127
unsigned long getColsNbr() const
Definition: Matrix.hpp:101
unsigned long getRowsNbr() const
Definition: Matrix.hpp:110
Definition: FrameworkException.hpp:50
Definition: Matrix.hpp:55
Matrix()
Definition: Matrix.hpp:202
unsigned long getSize() const
Definition: Matrix.hpp:119
T at(unsigned long ColIndex, unsigned long RowIndex) const
Definition: Matrix.hpp:154
Definition: ApplicationException.hpp:47
unsigned long m_RowsNbr
Definition: Matrix.hpp:63
T * m_Data
Definition: Matrix.hpp:59
#define OPENFLUID_API
Definition: dllexport.hpp:86
unsigned long m_ColsNbr
Definition: Matrix.hpp:61
T * data() const
Definition: Matrix.hpp:136