00001 #ifndef Impala_Core_Column_AddAssign_h
00002 #define Impala_Core_Column_AddAssign_h
00003
00004 #include <iostream>
00005 #include "Core/Column/InvalidColumn.h"
00006
00007 namespace Impala
00008 {
00009 namespace Core
00010 {
00011 namespace Column
00012 {
00013
00014
00015 template <class C1, class C2>
00016 inline void
00017 AddAssign(C1* dst, C2* src, int start, int end)
00018 {
00019 ILOG_VAR(Impala.Core.Column.AddAssign);
00020 if (end == -1)
00021 end = dst->Capacity();
00022 if (end > src->Capacity())
00023 {
00024 ILOG_ERROR("Incompatible src range");
00025 return;
00026 }
00027 if (end > dst->Capacity())
00028 {
00029 ILOG_ERROR("Incompatible dst range");
00030 return;
00031 }
00032 for (int i=start ; i<end ; i++)
00033 dst->Set(i, dst->Get(i) + src->Get(i));
00034 }
00035
00036 inline void
00037 AddAssign(InvalidColumn* dst, InvalidColumn* src, int start, int end)
00038 {
00039
00040 }
00041
00042 template <class C2>
00043 inline void
00044 AddAssign(InvalidColumn* dst, C2* src, int start, int end)
00045 {
00046
00047 }
00048
00049 template <class C1>
00050 inline void
00051 AddAssign(C1* dst, InvalidColumn* src, int start, int end)
00052 {
00053
00054 }
00055
00056 }
00057 }
00058 }
00059
00060 #endif