00001 #ifndef Impala_Core_Column_MakeFilter_h
00002 #define Impala_Core_Column_MakeFilter_h
00003
00004 #include "Core/Column/InvalidColumn.h"
00005
00006 namespace Impala
00007 {
00008 namespace Core
00009 {
00010 namespace Column
00011 {
00012
00013
00016 template <class C>
00017 inline void
00018 MakeFilter(bool*& filter, C* col, bool defaultValue)
00019 {
00020 if (filter == 0)
00021 filter = new bool[col->Capacity()];
00022 for (int i=0 ; i<col->Capacity() ; i++)
00023 filter[i] = defaultValue;
00024 }
00025
00026 inline void
00027 MakeFilter(bool*& filter, InvalidColumn* col)
00028 {
00029
00030 }
00031
00032
00035 template <class C>
00036 inline void
00037 MakeFilterEqual(bool*& filter, C* col, bool defaultValue,
00038 typename C::ColElemType elem)
00039 {
00040 if (filter == 0)
00041 filter = new bool[col->Capacity()];
00042 for (int i=0 ; i<col->Capacity() ; i++)
00043 filter[i] = (col->Get(i) == elem) ? !defaultValue : defaultValue;
00044 }
00045
00046 inline void
00047 MakeFilterEqual(bool*& filter, InvalidColumn* col, int elem)
00048 {
00049
00050 }
00051
00052 }
00053 }
00054 }
00055
00056 #endif