41 #ifndef __OPENFLUID_CORE_MATRIX_HPP__ 42 #define __OPENFLUID_CORE_MATRIX_HPP__ 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);
103 {
return m_ColsNbr; };
109 inline unsigned long getRowsNbr()
const {
return m_RowsNbr; };
116 {
return (m_ColsNbr * m_RowsNbr); };
121 inline unsigned long size()
const 122 {
return (m_ColsNbr * m_RowsNbr); };
129 {
return static_cast<T*
>(m_Data); };
134 void setData(T* Data,
unsigned long ColsNbr,
unsigned long RowsNbr);
139 T getElement(
unsigned long ColIndex,
unsigned long RowIndex)
const;
144 inline T
at(
unsigned long ColIndex,
unsigned long RowIndex)
const 145 {
return getElement(ColIndex,RowIndex); };
150 inline T
get(
unsigned long ColIndex,
unsigned long RowIndex)
const 151 {
return getElement(ColIndex,RowIndex); };
157 void setElement(
unsigned long ColIndex,
unsigned long RowIndex, T Element);
162 inline void set(
unsigned long ColIndex,
unsigned long RowIndex, T Element)
163 { setElement(ColIndex,RowIndex,Element); };
173 void fill(
const T& Val);
189 m_ColsNbr(0),m_RowsNbr(0)
220 if (!allocate(ColsNbr,RowsNbr))
236 if (!allocate(ColsNbr,RowsNbr))
274 if (ColsNbr > 0 && RowsNbr > 0)
276 m_Data =
new T[ColsNbr*RowsNbr];
298 if (!allocate(ColsNbr,RowsNbr))
301 std::copy(Data, Data + (ColsNbr*RowsNbr), m_Data);
312 if (ColIndex >= m_ColsNbr || RowIndex >= m_RowsNbr)
315 return m_Data[ColIndex*m_RowsNbr+RowIndex];
326 if (ColIndex >= m_ColsNbr || RowIndex >= m_RowsNbr)
329 m_Data[ColIndex*m_RowsNbr+RowIndex] = Element;
362 for (
unsigned long i=0;i<m_RowsNbr;i++)
363 for (
unsigned long j=0;j<m_ColsNbr;j++)
364 m_Data[i*m_ColsNbr+j] = Val;
Definition: Matrix.hpp:56
Definition: FrameworkException.hpp:50
unsigned long m_ColsNbr
Definition: Matrix.hpp:62
T at(unsigned long ColIndex, unsigned long RowIndex) const
Definition: Matrix.hpp:144
Matrix()
Definition: Matrix.hpp:188
T * m_Data
Definition: Matrix.hpp:60
T * data() const
Definition: Matrix.hpp:128
unsigned long m_RowsNbr
Definition: Matrix.hpp:64
#define OPENFLUID_API
Definition: dllexport.hpp:87
unsigned long getColsNbr() const
Definition: Matrix.hpp:102
unsigned long getRowsNbr() const
Definition: Matrix.hpp:109
unsigned long getSize() const
Definition: Matrix.hpp:115
unsigned long size() const
Definition: Matrix.hpp:121
Definition: ApplicationException.hpp:47