00001 #ifndef Impala_Core_Vector_AddAssign_h 00002 #define Impala_Core_Vector_AddAssign_h 00003 00004 #include "Core/Vector/VectorSet.h" 00005 00006 namespace Impala 00007 { 00008 namespace Core 00009 { 00010 namespace Vector 00011 { 00012 00013 00016 template <class ElemT> 00017 inline void 00018 AddAssign(VectorTem<ElemT>& v1, VectorTem<ElemT> v2) 00019 { 00020 ElemT* p1 = v1.GetData(); 00021 ElemT* p2 = v2.GetData(); 00022 for (int i=0 ; i<v1.Size() ; i++) 00023 p1[i] += p2[i]; 00024 } 00025 00026 template <class ElemT> 00027 inline void 00028 AddAssign(VectorTem<ElemT>& v, ElemT e) 00029 { 00030 ElemT* p = v.GetData(); 00031 for (int i=0 ; i<v.Size() ; i++) 00032 p[i] += e; 00033 } 00034 00035 00036 00040 template <class ArrayT> 00041 inline void 00042 AddAssign(VectorSet<ArrayT>* dst, VectorSet<ArrayT>* src, int dstStart, 00043 int srcStart, int nr) 00044 { 00045 typedef typename VectorSet<ArrayT>::VectorT VectorT; 00046 for (int i=0 ; i<nr ; i++) 00047 { 00048 VectorT dVec = dst->GetVector(dstStart + i, true); 00049 AddAssign(dVec, src->GetVector(srcStart + i, true)); 00050 } 00051 } 00052 00053 } // namespace Vector 00054 } // namespace Core 00055 } // namespace Impala 00056 00057 #endif