aboutsummaryrefslogtreecommitdiff
path: root/gcc/iterator-utils.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2020-12-13 10:41:08 +0000
committerRichard Sandiford <richard.sandiford@arm.com>2020-12-13 10:41:08 +0000
commit1751a78ecafb1d16d4a843dd22e739b8fd1cfede (patch)
treedd827511ba1614186f344af7154e36677ce20290 /gcc/iterator-utils.h
parent6ad972ece13f01f88a699b1a9f784c4166061901 (diff)
downloadgcc-1751a78ecafb1d16d4a843dd22e739b8fd1cfede.zip
gcc-1751a78ecafb1d16d4a843dd22e739b8fd1cfede.tar.gz
gcc-1751a78ecafb1d16d4a843dd22e739b8fd1cfede.tar.bz2
Move iterator_range to a new iterator-utils.h file
A later patch will add more iterator-related utilities. Rather than putting them all directly in coretypes.h, it seemed better to add a new header file, here called "iterator-utils.h". This preliminary patch moves the existing iterator_range class there too. I used the same copyright date range as coretypes.h “just to be sure”. gcc/ * coretypes.h (iterator_range): Move to... * iterator-utils.h: ...this new file.
Diffstat (limited to 'gcc/iterator-utils.h')
-rw-r--r--gcc/iterator-utils.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/gcc/iterator-utils.h b/gcc/iterator-utils.h
new file mode 100644
index 0000000..0c95862
--- /dev/null
+++ b/gcc/iterator-utils.h
@@ -0,0 +1,44 @@
+// Iterator-related utilities.
+// Copyright (C) 2002-2020 Free Software Foundation, Inc.
+//
+// This file is part of GCC.
+//
+// GCC is free software; you can redistribute it and/or modify it under
+// the terms of the GNU General Public License as published by the Free
+// Software Foundation; either version 3, or (at your option) any later
+// version.
+//
+// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or
+// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+// for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with GCC; see the file COPYING3. If not see
+// <http://www.gnu.org/licenses/>.
+
+#ifndef GCC_ITERATOR_UTILS_H
+#define GCC_ITERATOR_UTILS_H 1
+
+// A half-open [begin, end) range of iterators.
+template<typename T>
+struct iterator_range
+{
+public:
+ using const_iterator = T;
+
+ iterator_range () = default;
+ iterator_range (const T &begin, const T &end)
+ : m_begin (begin), m_end (end) {}
+
+ T begin () const { return m_begin; }
+ T end () const { return m_end; }
+
+ explicit operator bool () const { return m_begin != m_end; }
+
+private:
+ T m_begin;
+ T m_end;
+};
+
+#endif