diff options
author | regnat <rg@regnat.ovh> | 2021-02-04 15:11:05 +0100 |
---|---|---|
committer | regnat <rg@regnat.ovh> | 2021-02-05 11:42:33 +0100 |
commit | d2091af231ab97b729c2486b55e520c565e59dd3 (patch) | |
tree | ab66ac2880707700a4eb2b81d2ff2e49d210eb35 /src/libstore/realisation.hh | |
parent | 43d409f6690b79b5d4e1ab5e9780de93eb0f677a (diff) |
Move the GENERATE_CMP macro to its own file
Despite being an ugly hack, it can probably be useful in a couple extra
places
Diffstat (limited to 'src/libstore/realisation.hh')
-rw-r--r-- | src/libstore/realisation.hh | 29 |
1 files changed, 1 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 { |