00001
00002
00003
00004 #ifndef IBIS_UTILIDOR_H
00005 #define IBIS_UTILIDOR_H
00006
00019 #include "array_t.h"
00020
00021 namespace ibis {
00022 typedef array_t< rid_t > RIDSet;
00023
00024 namespace util {
00025
00029 void sortRIDs(ibis::RIDSet&);
00031 void sortRIDsq(ibis::RIDSet&, uint32_t, uint32_t);
00033 void sortRIDsi(ibis::RIDSet&, uint32_t, uint32_t);
00035
00037 template <typename T>
00038 void reorder(array_t<T> &arr, const array_t<uint32_t> &ind);
00040 template <typename T>
00041 void reorder(array_t<T*> &arr, const array_t<uint32_t> &ind);
00045 template <typename T1, typename T2>
00046 void sortAll(array_t<T1>& arr1, array_t<T2>& arr2);
00047
00050 template <typename T>
00051 int64_t sortMerge(array_t<T>& valR, array_t<uint32_t>& indR,
00052 array_t<T>& valS, array_t<uint32_t>& indS);
00054 int64_t sortMerge(std::vector<std::string>& valR,
00055 array_t<uint32_t>& indR,
00056 std::vector<std::string>& valS,
00057 array_t<uint32_t>& indS);
00058
00061 template <typename T1, typename T2>
00062 void sortKeys(array_t<T1>& keys, array_t<T2>& vals);
00064 void sortStrings(std::vector<std::string>& keys,
00065 array_t<uint32_t>& vals);
00066
00068 void sortStrings_quick(std::vector<std::string>& keys,
00069 array_t<uint32_t>& vals, uint32_t begin,
00070 uint32_t end);
00073 void sortStrings_shell(std::vector<std::string>& keys,
00074 array_t<uint32_t>& vals,
00075 uint32_t begin, uint32_t end);
00078 uint32_t sortStrings_partition(std::vector<std::string>& keys,
00079 array_t<uint32_t>& vals,
00080 uint32_t begin, uint32_t end);
00081 }
00082 }
00083 #endif
00084