00001 #ifndef Impala_Core_Matrix_VecFunc_h
00002 #define Impala_Core_Matrix_VecFunc_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 VecNrElem(ArrayT* array)
00022 {
00023 return array->mCW * array->mCH;
00024 }
00025
00026 template<class ArrayT>
00027 inline int
00028 VecInc(ArrayT* array, int i)
00029 {
00030 return i * ArrayT::ElemSize();
00031 }
00032
00033
00034 template<class ArrayT>
00035 inline typename ArrayT::StorType*
00036 VecE(ArrayT* array, int i=0)
00037 {
00038
00039 return array->mData + i;
00040 }
00041
00042
00043
00044 template<class ArrayT>
00045 ArrayT*
00046 VecCreate(int nElem, typename ArrayT::StorType* data = 0,
00047 bool isWrapper = false)
00048 {
00049 return new ArrayT(nElem, 1, 0, 0, data, isWrapper);
00050 }
00051
00052 }
00053 }
00054 }
00055
00056 #endif