diff options
Diffstat (limited to 'lib/sorting.hpp')
-rw-r--r-- | lib/sorting.hpp | 49 |
1 files changed, 0 insertions, 49 deletions
diff --git a/lib/sorting.hpp b/lib/sorting.hpp deleted file mode 100644 index 777de00..0000000 --- a/lib/sorting.hpp +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include <glm/fwd.hpp> -#include <type_traits> - -template<typename T> struct PtrSorter { - bool - operator()(const T & a, const T & b) const - { - return *a < *b; - } -}; - -template<typename T, auto M> struct PtrMemberSorter : public PtrSorter<T> { - using MT = std::decay_t<decltype((*T {}).*M)>; - using is_transparent = MT; - - using PtrSorter<T>::operator(); - - bool - operator()(const MT & a, const T & b) const - { - return a < (*b).*M; - } - - bool - operator()(const T & a, const MT & b) const - { - return (*a).*M < b; - } -}; - -struct CompareBy { - glm::length_t index; - - template<typename T> - auto - operator()(const T & a, const T & b) const - { - return get(a) < get(b); - } - - template<typename T> - auto - get(const T & a) const - { - return a[index]; - } -}; |