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.
This commit is contained in:
parent
6ad972ece1
commit
1751a78eca
@ -367,23 +367,6 @@ struct kv_pair
|
||||
const ValueType value; /* the value of the name */
|
||||
};
|
||||
|
||||
/* Iterator pair used for a collection iteration with range-based loops. */
|
||||
|
||||
template<typename T>
|
||||
struct iterator_range
|
||||
{
|
||||
public:
|
||||
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; }
|
||||
|
||||
private:
|
||||
T m_begin;
|
||||
T m_end;
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
struct _dont_use_rtx_here_;
|
||||
@ -491,6 +474,7 @@ typedef unsigned char uchar;
|
||||
#include "align.h"
|
||||
/* Most host source files will require the following headers. */
|
||||
#if !defined (GENERATOR_FILE)
|
||||
#include "iterator-utils.h"
|
||||
#include "real.h"
|
||||
#include "fixed-value.h"
|
||||
#include "hash-table.h"
|
||||
|
44
gcc/iterator-utils.h
Normal file
44
gcc/iterator-utils.h
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user