Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/quadriflow/src/compare-key.hpp')
-rw-r--r--extern/quadriflow/src/compare-key.hpp102
1 files changed, 102 insertions, 0 deletions
diff --git a/extern/quadriflow/src/compare-key.hpp b/extern/quadriflow/src/compare-key.hpp
new file mode 100644
index 00000000000..df9109d62e0
--- /dev/null
+++ b/extern/quadriflow/src/compare-key.hpp
@@ -0,0 +1,102 @@
+#ifndef COMPARE_KEY_H_
+#define COMPARE_KEY_H_
+
+#include <iostream>
+#include <map>
+
+namespace qflow {
+
+struct Key2i
+{
+ Key2i(int x, int y)
+ : key(std::make_pair(x, y))
+ {}
+ bool operator==(const Key2i& other) const
+ {
+ return key == other.key;
+ }
+ bool operator<(const Key2i& other) const
+ {
+ return key < other.key;
+ }
+ std::pair<int, int> key;
+};
+
+struct Key3i
+{
+ Key3i(int x, int y, int z)
+ : key(std::make_pair(x, std::make_pair(y, z)))
+ {}
+ bool operator==(const Key3i& other) const
+ {
+ return key == other.key;
+ }
+ bool operator<(const Key3i& other) const
+ {
+ return key < other.key;
+ }
+ std::pair<int, std::pair<int, int> > key;
+};
+
+struct Key3f
+{
+ Key3f(double x, double y, double z, double threshold)
+ : key(std::make_pair(x / threshold, std::make_pair(y / threshold, z / threshold)))
+ {}
+ bool operator==(const Key3f& other) const
+ {
+ return key == other.key;
+ }
+ bool operator<(const Key3f& other) const
+ {
+ return key < other.key;
+ }
+ std::pair<int, std::pair<int, int> > key;
+};
+
+struct KeySorted2i
+{
+ KeySorted2i(int x, int y)
+ : key(std::make_pair(x, y))
+ {
+ if (x > y)
+ std::swap(key.first, key.second);
+ }
+ bool operator==(const KeySorted2i& other) const
+ {
+ return key == other.key;
+ }
+ bool operator<(const KeySorted2i& other) const
+ {
+ return key < other.key;
+ }
+ std::pair<int, int> key;
+};
+
+struct KeySorted3i
+{
+ KeySorted3i(int x, int y, int z)
+ : key(std::make_pair(x, std::make_pair(y, z)))
+ {
+ if (key.first > key.second.first)
+ std::swap(key.first, key.second.first);
+ if (key.first > key.second.second)
+ std::swap(key.first, key.second.second);
+ if (key.second.first > key.second.second)
+ std::swap(key.second.first, key.second.second);
+ }
+ bool operator==(const Key3i& other) const
+ {
+ return key == other.key;
+ }
+ bool operator<(const Key3i& other) const
+ {
+ return key < other.key;
+ }
+ std::pair<int, std::pair<int, int> > key;
+};
+
+
+} // namespace qflow
+
+#endif