瀏覽代碼

base: use an explicit enum class for sort algorithm names.

undefined
Sam Hocevar 9 年之前
父節點
當前提交
0eb371e7a1
共有 2 個文件被更改,包括 14 次插入9 次删除
  1. +13
    -8
      src/lol/algorithm/sort.h
  2. +1
    -1
      src/lol/base/array.h

+ 13
- 8
src/lol/algorithm/sort.h 查看文件

@@ -18,6 +18,12 @@
namespace lol
{

enum class SortAlgorithm : uint8_t
{
QuickSwap,
Bubble,
};

template<typename T, typename ARRAY>
void array_base<T, ARRAY>::Shuffle()
{
@@ -31,14 +37,15 @@ void array_base<T, ARRAY>::Shuffle()
}

template<typename T, typename ARRAY>
void array_base<T, ARRAY>::Sort(int sort)
void array_base<T, ARRAY>::Sort(SortAlgorithm algorithm)
{
#if SORT_WORKS // yeah cause it's shite.
int s = 0;
#if !SORT_WORKS // yeah cause it's shite.
algorithm = SortAlgorithm::Bubble;
#endif

// Classic bubble
if (s++ == sort)
if (algorithm == SortAlgorithm::Bubble)
{
#endif //SORT_WORKS
int d = 1;
for (ptrdiff_t i = 0; i < Count() - 1; i = lol::max(i + d, (ptrdiff_t)0))
{
@@ -50,14 +57,12 @@ void array_base<T, ARRAY>::Sort(int sort)
d = -1;
}
}
#if SORT_WORKS
}
// Quick sort with swap
else if (s++ == sort)
else if (algorithm == SortAlgorithm::QuickSwap)
{
SortQuickSwap(0, Count());
}
#endif //SORT_WORKS
}

template<typename T, typename ARRAY>


+ 1
- 1
src/lol/base/array.h 查看文件

@@ -383,7 +383,7 @@ public:
}

void Shuffle();
void Sort(int sort = 0);
void Sort(enum class SortAlgorithm : uint8_t);
void SortQuickSwap(ptrdiff_t start, ptrdiff_t stop);

/* TODO: remove these legacy functions one day */


Loading…
取消
儲存