12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- //===----------------------------------------------------------------------===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- #ifndef CHECK_CONSECUTIVE_H
- #define CHECK_CONSECUTIVE_H
- // <unordered_multiset>
- // <unordered_multimap>
- #include <cassert>
- #include <set>
- #include <stddef.h>
- // Check consecutive equal values in an unordered_multiset iterator
- template <typename Iter>
- void CheckConsecutiveValues(Iter pos, Iter end, typename Iter::value_type value, size_t count)
- {
- for ( size_t i = 0; i < count; ++i )
- {
- assert(pos != end);
- assert(*pos == value);
- ++pos;
- }
- assert(pos == end || *pos != value);
- }
- // Check consecutive equal keys in an unordered_multimap iterator
- template <typename Iter>
- void CheckConsecutiveKeys(Iter pos, Iter end, typename Iter::value_type::first_type key, std::multiset<typename Iter::value_type::second_type>& values)
- {
- while (!values.empty())
- {
- assert(pos != end);
- assert(pos->first == key);
- assert(values.find(pos->second) != values.end());
- values.erase(values.find(pos->second));
- ++pos;
- }
- assert(pos == end || pos->first != key);
- }
- #endif
|