00001 #ifndef Impala_Core_Matrix_MatFunc_h
00002 #define Impala_Core_Matrix_MatFunc_h
00003
00004
00005
00006
00007
00008
00009 namespace Impala
00010 {
00011 namespace Core
00012 {
00013 namespace Matrix
00014 {
00015
00016
00017
00018
00019 template<class ArrayT>
00020 inline int
00021 MatNrRow(ArrayT* array)
00022 {
00023 return array->mCH;
00024 }
00025
00026 template<class ArrayT>
00027 inline int
00028 MatNrCol(ArrayT* array)
00029 {
00030 return array->mCW;
00031 }
00032
00033 template<class ArrayT>
00034 inline int
00035 MatNrElem(ArrayT* array)
00036 {
00037 return array->mCW * array->mCH;
00038 }
00039
00040 template<class ArrayT>
00041 inline int
00042 MatInc(ArrayT* array, int r, int c)
00043 {
00044 return r * array->W() * ArrayT::ElemSize() + c * ArrayT::ElemSize();
00045 }
00046
00047
00048 template<class ArrayT>
00049 inline typename ArrayT::StorType*
00050 MatE(ArrayT* array, int r=0, int c=0)
00051 {
00052
00053 return array->mData + r*array->mCW + c;
00054 }
00055
00056
00057
00058
00059
00060 template<class ArrayT>
00061 ArrayT*
00062 MatCreate(int nRow, int nCol, typename ArrayT::StorType* data = 0,
00063 bool isWrapper = false)
00064 {
00065 return new ArrayT(nCol, nRow, 0, 0, data, isWrapper);
00066 }
00067
00068 }
00069 }
00070 }
00071
00072 #endif