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