brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 27c036d Raw
105 lines · c
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef TEST_SUPPORT_ITERATOR_TRAITS_ITERATOR_TRAITS_CPP17_ITERATORS10#define TEST_SUPPORT_ITERATOR_TRAITS_ITERATOR_TRAITS_CPP17_ITERATORS11 12struct iterator_traits_cpp17_iterator {13  int& operator*();14  iterator_traits_cpp17_iterator& operator++();15  iterator_traits_cpp17_iterator operator++(int);16};17 18struct iterator_traits_cpp17_proxy_iterator {19  int operator*();20  iterator_traits_cpp17_proxy_iterator& operator++();21 22  // this returns legacy_iterator, not iterator_traits_cpp17_proxy_iterator23  iterator_traits_cpp17_iterator operator++(int);24};25 26struct iterator_traits_cpp17_input_iterator {27  using difference_type = int;28  using value_type = long;29 30  int& operator*();31  iterator_traits_cpp17_input_iterator& operator++();32  iterator_traits_cpp17_input_iterator operator++(int);33 34  bool operator==(iterator_traits_cpp17_input_iterator const&) const;35};36 37struct iterator_traits_cpp17_proxy_input_iterator {38  using difference_type = int;39  using value_type = long;40 41  int operator*();42  iterator_traits_cpp17_proxy_input_iterator& operator++();43 44  // this returns legacy_input_iterator, not iterator_traits_cpp17_proxy_input_iterator45  iterator_traits_cpp17_input_iterator operator++(int);46 47  bool operator==(iterator_traits_cpp17_proxy_input_iterator const&) const;48};49 50struct iterator_traits_cpp17_forward_iterator {51  using difference_type = int;52  using value_type = int;53 54  int& operator*();55  iterator_traits_cpp17_forward_iterator& operator++();56  iterator_traits_cpp17_forward_iterator operator++(int);57 58  bool operator==(iterator_traits_cpp17_forward_iterator const&) const;59};60 61struct iterator_traits_cpp17_bidirectional_iterator {62  using difference_type = int;63  using value_type = int;64 65  int& operator*();66  iterator_traits_cpp17_bidirectional_iterator& operator++();67  iterator_traits_cpp17_bidirectional_iterator operator++(int);68  iterator_traits_cpp17_bidirectional_iterator& operator--();69  iterator_traits_cpp17_bidirectional_iterator operator--(int);70 71  bool operator==(iterator_traits_cpp17_bidirectional_iterator const&) const;72};73 74struct iterator_traits_cpp17_random_access_iterator {75  using difference_type = int;76  using value_type = int;77 78  int& operator*();79  int& operator[](difference_type);80  iterator_traits_cpp17_random_access_iterator& operator++();81  iterator_traits_cpp17_random_access_iterator operator++(int);82  iterator_traits_cpp17_random_access_iterator& operator--();83  iterator_traits_cpp17_random_access_iterator operator--(int);84 85  bool operator==(iterator_traits_cpp17_random_access_iterator const&) const;86  bool operator<(iterator_traits_cpp17_random_access_iterator const&) const;87  bool operator>(iterator_traits_cpp17_random_access_iterator const&) const;88  bool operator<=(iterator_traits_cpp17_random_access_iterator const&) const;89  bool operator>=(iterator_traits_cpp17_random_access_iterator const&) const;90 91  iterator_traits_cpp17_random_access_iterator& operator+=(difference_type);92  iterator_traits_cpp17_random_access_iterator& operator-=(difference_type);93 94  friend iterator_traits_cpp17_random_access_iterator operator+(iterator_traits_cpp17_random_access_iterator,95                                                                difference_type);96  friend iterator_traits_cpp17_random_access_iterator operator+(difference_type,97                                                                iterator_traits_cpp17_random_access_iterator);98  friend iterator_traits_cpp17_random_access_iterator operator-(iterator_traits_cpp17_random_access_iterator,99                                                                difference_type);100  friend difference_type operator-(iterator_traits_cpp17_random_access_iterator,101                                   iterator_traits_cpp17_random_access_iterator);102};103 104#endif // TEST_SUPPORT_ITERATOR_TRAITS_ITERATOR_TRAITS_CPP17_ITERATORS105