summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2019-01-23 12:04:58 +0100
committerNao Pross <naopross@thearcway.org>2019-01-23 12:04:58 +0100
commitf138cf17bd42d43c2177d494b78d3e8486b52714 (patch)
tree8c35767f01f8ebcf3ed5f1e7ff1f898e6bdf9a5a
parentRemove old lib/libwrapsdl2 (diff)
downloadflatland-f138cf17bd42d43c2177d494b78d3e8486b52714.tar.gz
flatland-f138cf17bd42d43c2177d494b78d3e8486b52714.zip
Use custom comparison for core::prioritize (instead of std::less)
This way, another class can iherit core::prioritized and overload its operator<().
-rw-r--r--engine/include/core/priority.hpp18
-rw-r--r--engine/include/core/task.hpp4
-rw-r--r--engine/task.cpp2
3 files changed, 16 insertions, 8 deletions
diff --git a/engine/include/core/priority.hpp b/engine/include/core/priority.hpp
index 0f00006..773b2f7 100644
--- a/engine/include/core/priority.hpp
+++ b/engine/include/core/priority.hpp
@@ -4,7 +4,6 @@
namespace flat {
namespace core {
-
enum class priority_t : unsigned {
max = 0,
higher = 1,
@@ -27,10 +26,19 @@ namespace flat {
return m_priority;
}
};
-
- bool operator<(const prioritized& lhs, const prioritized& rhs) {
- return lhs.priority() < rhs.priority();
- }
+
+ struct prioritize {
+ bool operator()(const prioritized& lhs, const prioritized& rhs) {
+ return lhs.priority() < rhs.priority();
+ }
+
+ bool operator()(const prioritized * const& lhs, const prioritized * const& rhs) {
+ return lhs->priority() < rhs->priority();
+ }
+ };
+
+ template<typename Prioritized>
+ using queue = std::multiset<Prioritized, prioritize>;
}
}
diff --git a/engine/include/core/task.hpp b/engine/include/core/task.hpp
index b6ddad1..90e3d97 100644
--- a/engine/include/core/task.hpp
+++ b/engine/include/core/task.hpp
@@ -18,7 +18,7 @@ namespace flat {
std::function<void()> m_callback;
};
- struct job : public std::multiset<task> {
+ struct job : public queue<task> {
inline auto add_task(task t) {
this->insert(t);
}
@@ -26,4 +26,4 @@ namespace flat {
void invoke_tasks();
};
}
-} \ No newline at end of file
+}
diff --git a/engine/task.cpp b/engine/task.cpp
index f879530..760b1b9 100644
--- a/engine/task.cpp
+++ b/engine/task.cpp
@@ -14,4 +14,4 @@ namespace flat {
}
}
}
-} \ No newline at end of file
+}