Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

template<class T1, class T2>
void Impala::Core::Table::SelectUniqueOnCol ( T1 *  dst,
T2 *  src,
int  col,
bool  doClearDst 
) [inline]

Select elements from src based on unique elements in given col and copy them to dst.

Definition at line 110 of file Select.h.

References Impala::Core::Column::FilterUnique(), and Select().

00111 {
00112     if (doClearDst)
00113         dst->SetSize(0);
00114     bool* filter = 0;
00115     switch (col) {
00116     case 1:
00117         Column::FilterUnique(filter, dst->GetColumn1(), src->GetColumn1(),
00118                              dst->Size(), src->Size());
00119         break;
00120     case 2:
00121         Column::FilterUnique(filter, dst->GetColumn2(), src->GetColumn2(),
00122                              dst->Size(), src->Size());
00123         break;
00124     case 3:
00125         Column::FilterUnique(filter, dst->GetColumn3(), src->GetColumn3(),
00126                              dst->Size(), src->Size());
00127         break;
00128     case 4:
00129         Column::FilterUnique(filter, dst->GetColumn4(), src->GetColumn4(),
00130                              dst->Size(), src->Size());
00131         break;
00132     case 5:
00133         Column::FilterUnique(filter, dst->GetColumn5(), src->GetColumn5(),
00134                              dst->Size(), src->Size());
00135         break;
00136     case 6:
00137         Column::FilterUnique(filter, dst->GetColumn6(), src->GetColumn6(),
00138                              dst->Size(), src->Size());
00139         break;
00140     case 7:
00141         Column::FilterUnique(filter, dst->GetColumn7(), src->GetColumn7(),
00142                              dst->Size(), src->Size());
00143         break;
00144     case 8:
00145         Column::FilterUnique(filter, dst->GetColumn8(), src->GetColumn8(),
00146                              dst->Size(), src->Size());
00147         break;
00148     case 9:
00149         Column::FilterUnique(filter, dst->GetColumn9(), src->GetColumn9(),
00150                              dst->Size(), src->Size());
00151         break;
00152     }
00153 
00154     int nr = 0;
00155     for (int i=0 ; i<src->Size() ; i++)
00156         if (filter[i])
00157             nr++;
00158     dst->ReserveMin(dst->Size() + nr, true); 
00159 
00160     Column::Select(dst->GetColumn1(), src->GetColumn1(), filter, dst->Size(), 0,
00161                    src->Size());
00162     Column::Select(dst->GetColumn2(), src->GetColumn2(), filter, dst->Size(), 0,
00163                    src->Size());
00164     Column::Select(dst->GetColumn3(), src->GetColumn3(), filter, dst->Size(), 0,
00165                    src->Size());
00166     Column::Select(dst->GetColumn4(), src->GetColumn4(), filter, dst->Size(), 0,
00167                    src->Size());
00168     Column::Select(dst->GetColumn5(), src->GetColumn5(), filter, dst->Size(), 0,
00169                    src->Size());
00170     Column::Select(dst->GetColumn6(), src->GetColumn6(), filter, dst->Size(), 0,
00171                    src->Size());
00172     Column::Select(dst->GetColumn7(), src->GetColumn7(), filter, dst->Size(), 0,
00173                    src->Size());
00174     Column::Select(dst->GetColumn8(), src->GetColumn8(), filter, dst->Size(), 0,
00175                    src->Size());
00176     Column::Select(dst->GetColumn9(), src->GetColumn9(), filter, dst->Size(), 0,
00177                    src->Size());
00178     dst->SetSize(dst->Size() + nr);
00179     delete filter;
00180 }

Here is the call graph for this function:


Generated on Fri Mar 19 11:19:28 2010 for ImpalaSrc by  doxygen 1.5.1