|
|
Go to the documentation of this file.
16 #include <forward_list>
19 #include <unordered_set>
21 #include <unordered_map>
29 namespace serialization {
47 struct access<
T, typename
std::enable_if<std::is_integral<T>::value or std::is_enum<T>::value>
::type> {
71 template <std::
size_t N>
76 template <
typename T,
typename U>
83 template <std::size_t
N,
typename... Ts>
93 template <
typename... Ts>
95 static bool equal_(
const std::tuple<Ts...>&
first,
const std::tuple<Ts...>&
second) {
return true; }
98 template <
typename... Ts>
105 template <
typename T>
119 #define equal_pointer(TYPE) \
120 template <typename T> \
121 struct access<TYPE<T>> { \
122 static bool equal_(const TYPE<T>& first, const TYPE<T>& second) { return equal(first.get(), second.get()); } \
129 template <
typename T, std::
size_t N>
132 for (std::size_t
i = 0;
i <
N; ++
i)
139 template <
typename T, std::
size_t N>
142 for (std::size_t
i = 0;
i <
N; ++
i)
149 #define equal_sequence(TYPE) \
150 template <typename T> \
151 struct access<TYPE<T>> { \
152 static bool equal_(const TYPE<T>& first, const TYPE<T>& second) { \
153 return first.size() == second.size() && \
154 std::equal(first.cbegin(), \
157 [](decltype(*first.cbegin()) a, decltype(*first.cbegin()) b) -> bool { return equal(a, b); }); \
166 #undef equal_sequence
170 template <
typename T>
173 auto first_it =
first.cbegin();
174 auto second_it =
second.cbegin();
176 while (first_it !=
first.cend() and second_it !=
second.cend()) {
177 if (not
equal(*first_it, *second_it))
183 return first_it ==
first.cend() and second_it ==
second.cend();
188 #define equal_mapping(TYPE) \
189 template <typename T, typename U> \
190 struct access<TYPE<T, U>> { \
191 static bool equal_(const TYPE<T, U>& first, const TYPE<T, U>& second) { \
192 return first.size() == second.size() && \
193 std::equal(first.cbegin(), \
196 [](decltype(*first.cbegin()) a, decltype(*first.cbegin()) b) -> bool { return equal(a, b); }); \
203 #define equal_unorderedmapping(TYPE) \
204 template <typename T, typename U> \
205 struct access<TYPE<T, U>> { \
206 static bool equal_(const TYPE<T, U>& first, const TYPE<T, U>& second) { \
207 if (first.size() != second.size()) \
210 auto first_it = first.cbegin(); \
211 while (first_it != first.cend()) { \
212 auto second_it = second.find(first_it->first); \
213 if (second_it == second.cend()) \
215 if (not equal(first_it->second, second_it->second)) \
224 #undef equal_unorderedmapping
U second(std::pair< T, U > const &p)
static bool equal_(const T first, const T second)
static bool equal_(const std::tuple< Ts... > &first, const std::tuple< Ts... > &second)
#define equal_mapping(TYPE)
static bool equal_(const std::bitset< N > &first, const std::bitset< N > &second)
#define equal_sequence(TYPE)
static bool equal_(const std::forward_list< T > &first, const std::forward_list< T > &second)
static bool equal_(const T first, const T second)
static bool equal_(const T first, const T second)
#define equal_pointer(TYPE)
static bool equal_(const std::pair< T, U > &first, const std::pair< T, U > &second)
static bool equal_(const std::tuple< Ts... > &first, const std::tuple< Ts... > &second)
std::unique_ptr< T, impl::DeviceDeleter > unique_ptr
#define equal_unorderedmapping(TYPE)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*", "!HLTx*" if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL. It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of "!*" before the partial wildcard feature was incorporated). Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
static bool equal_(const T(&first)[N], const T(&second)[N])
bool equal(const T &first, const T &second)
static bool equal_(const std::string &first, const std::string &second)
static bool equal_(const std::tuple< Ts... > &first, const std::tuple< Ts... > &second)
static bool equal_(const std::array< T, N > &first, const std::array< T, N > &second)