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