Nix
2.93.3
Lix: A modern, delicious implementation of the Nix package manager; unstable internal interfaces
Loading...
Searching...
No Matches
comparator.hh
Go to the documentation of this file.
1
#pragma once
3
4
#include <tuple>
5
6
#define DECLARE_ONE_CMP(PRE, QUAL, COMPARATOR, MY_TYPE) \
7
PRE bool QUAL operator COMPARATOR(const MY_TYPE & other) const;
8
#define DECLARE_EQUAL(prefix, qualification, my_type) \
9
DECLARE_ONE_CMP(prefix, qualification, ==, my_type)
10
#define DECLARE_LEQ(prefix, qualification, my_type) \
11
DECLARE_ONE_CMP(prefix, qualification, <, my_type)
12
#define DECLARE_NEQ(prefix, qualification, my_type) \
13
DECLARE_ONE_CMP(prefix, qualification, !=, my_type)
14
15
#define GENERATE_ONE_CMP(PRE, QUAL, COMPARATOR, MY_TYPE, ...) \
16
PRE bool QUAL operator COMPARATOR(const MY_TYPE & other) const { \
17
__VA_OPT__(const MY_TYPE * me = this;) \
18
auto fields1 = std::tie( __VA_ARGS__ ); \
19
__VA_OPT__(me = &other;) \
20
auto fields2 = std::tie( __VA_ARGS__ ); \
21
return fields1 COMPARATOR fields2; \
22
}
23
#define GENERATE_EQUAL(prefix, qualification, my_type, args...) \
24
GENERATE_ONE_CMP(prefix, qualification, ==, my_type, args)
25
#define GENERATE_LEQ(prefix, qualification, my_type, args...) \
26
GENERATE_ONE_CMP(prefix, qualification, <, my_type, args)
27
#define GENERATE_NEQ(prefix, qualification, my_type, args...) \
28
GENERATE_ONE_CMP(prefix, qualification, !=, my_type, args)
29
33
#define DECLARE_CMP(my_type) \
34
DECLARE_EQUAL(,,my_type) \
35
DECLARE_LEQ(,,my_type) \
36
DECLARE_NEQ(,,my_type)
37
44
#define DECLARE_CMP_EXT(prefix, qualification, my_type) \
45
DECLARE_EQUAL(prefix, qualification, my_type) \
46
DECLARE_LEQ(prefix, qualification, my_type) \
47
DECLARE_NEQ(prefix, qualification, my_type)
48
65
#define GENERATE_CMP(args...) \
66
GENERATE_EQUAL(,,args) \
67
GENERATE_LEQ(,,args) \
68
GENERATE_NEQ(,,args)
69
76
#define GENERATE_CMP_EXT(prefix, my_type, args...) \
77
GENERATE_EQUAL(prefix, my_type ::, my_type, args) \
78
GENERATE_LEQ(prefix, my_type ::, my_type, args) \
79
GENERATE_NEQ(prefix, my_type ::, my_type, args)
lix
libutil
comparator.hh
Generated by
1.15.0