aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/algorithm.h
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2022-10-21 14:05:12 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2022-10-25 14:29:45 +0000
commit13f40f5471e55757a2cf9bba8d052750a2f2a753 (patch)
tree374b919b3f37c08b80261dd6abe2bc30d5fe2c43 /src/libs/utils/algorithm.h
parent55b8ab78460b41ea75fcc549db1ce3a6b9128690 (diff)
Utils: Add sorted() function
For simpler calling code. Change-Id: Ia0a16a28770fd172f74d06a626148248bf5d3c0c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src/libs/utils/algorithm.h')
-rw-r--r--src/libs/utils/algorithm.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h
index 713be758286..71fb2ad35d0 100644
--- a/src/libs/utils/algorithm.h
+++ b/src/libs/utils/algorithm.h
@@ -1005,6 +1005,48 @@ inline void sort(Container &container, Predicate p)
std::stable_sort(std::begin(container), std::end(container), p);
}
+template <typename Container>
+inline Container sorted(const Container &container)
+{
+ Container c = container;
+ sort(c);
+ return c;
+}
+
+template <typename Container>
+inline Container sorted(Container &&container)
+{
+ sort(container);
+ return container;
+}
+
+template <typename Container>
+inline Container sorted(const Container &&container)
+{
+ return sorted(container);
+}
+
+template <typename Container, typename Predicate>
+inline Container sorted(const Container &container, Predicate p)
+{
+ Container c = container;
+ sort(c, p);
+ return c;
+}
+
+template <typename Container, typename Predicate>
+inline Container sorted(Container &&container, Predicate p)
+{
+ sort(container, p);
+ return container;
+}
+
+template <typename Container, typename Predicate>
+inline Container sorted(const Container &&container, Predicate p)
+{
+ return sorted(container, p);
+}
+
// pointer to member
template <typename Container, typename R, typename S>
inline void sort(Container &container, R S::*member)
@@ -1017,6 +1059,27 @@ inline void sort(Container &container, R S::*member)
});
}
+template <typename Container, typename R, typename S>
+inline Container sorted(const Container &container, R S::*member)
+{
+ Container c = container;
+ sort(c, member);
+ return c;
+}
+
+template <typename Container, typename R, typename S>
+inline Container sorted(Container &&container, R S::*member)
+{
+ sort(container, member);
+ return container;
+}
+
+template <typename Container, typename R, typename S>
+inline Container sorted(const Container &&container, R S::*member)
+{
+ return sorted(container, member);
+}
+
// pointer to member function
template <typename Container, typename R, typename S>
inline void sort(Container &container, R (S::*function)() const)
@@ -1029,6 +1092,27 @@ inline void sort(Container &container, R (S::*function)() const)
});
}
+template <typename Container, typename R, typename S>
+inline Container sorted(const Container &container, R (S::*function)() const)
+{
+ Container c = container;
+ sort(c, function);
+ return c;
+}
+
+template <typename Container, typename R, typename S>
+inline Container sorted(Container &&container, R (S::*function)() const)
+{
+ sort(container, function);
+ return container;
+}
+
+template <typename Container, typename R, typename S>
+inline Container sorted(const Container &&container, R (S::*function)() const)
+{
+ return sorted(container, function);
+}
+
//////////////////
// reverseForeach
/////////////////