aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/realisation.hh29
-rw-r--r--src/libutil/comparator.hh30
2 files changed, 31 insertions, 28 deletions
diff --git a/src/libstore/realisation.hh b/src/libstore/realisation.hh
index 1ecddc4d1..557f54362 100644
--- a/src/libstore/realisation.hh
+++ b/src/libstore/realisation.hh
@@ -2,34 +2,7 @@
#include "path.hh"
#include <nlohmann/json_fwd.hpp>
-
-
-/* Awfull hacky generation of the comparison operators by doing a lexicographic
- * comparison between the choosen fields
- * ```
- * GENERATE_CMP(ClassName, my->field1, my->field2, ...)
- * ```
- *
- * will generate comparison operators semantically equivalent to:
- * ```
- * bool operator<(const ClassName& other) {
- * return field1 < other.field1 && field2 < other.field2 && ...;
- * }
- * ```
- */
-#define GENERATE_ONE_CMP(COMPARATOR, MY_TYPE, FIELDS...) \
- bool operator COMPARATOR(const MY_TYPE& other) const { \
- const MY_TYPE* me = this; \
- auto fields1 = std::make_tuple( FIELDS ); \
- me = &other; \
- auto fields2 = std::make_tuple( FIELDS ); \
- return fields1 COMPARATOR fields2; \
- }
-#define GENERATE_EQUAL(args...) GENERATE_ONE_CMP(==, args)
-#define GENERATE_LEQ(args...) GENERATE_ONE_CMP(<, args)
-#define GENERATE_CMP(args...) \
- GENERATE_EQUAL(args) \
- GENERATE_LEQ(args)
+#include "comparator.hh"
namespace nix {
diff --git a/src/libutil/comparator.hh b/src/libutil/comparator.hh
new file mode 100644
index 000000000..0315dc506
--- /dev/null
+++ b/src/libutil/comparator.hh
@@ -0,0 +1,30 @@
+#pragma once
+
+/* Awfull hacky generation of the comparison operators by doing a lexicographic
+ * comparison between the choosen fields.
+ *
+ * ```
+ * GENERATE_CMP(ClassName, me->field1, me->field2, ...)
+ * ```
+ *
+ * will generate comparison operators semantically equivalent to:
+ *
+ * ```
+ * bool operator<(const ClassName& other) {
+ * return field1 < other.field1 && field2 < other.field2 && ...;
+ * }
+ * ```
+ */
+#define GENERATE_ONE_CMP(COMPARATOR, MY_TYPE, FIELDS...) \
+ bool operator COMPARATOR(const MY_TYPE& other) const { \
+ const MY_TYPE* me = this; \
+ auto fields1 = std::make_tuple( FIELDS ); \
+ me = &other; \
+ auto fields2 = std::make_tuple( FIELDS ); \
+ return fields1 COMPARATOR fields2; \
+ }
+#define GENERATE_EQUAL(args...) GENERATE_ONE_CMP(==, args)
+#define GENERATE_LEQ(args...) GENERATE_ONE_CMP(<, args)
+#define GENERATE_CMP(args...) \
+ GENERATE_EQUAL(args) \
+ GENERATE_LEQ(args)