Added boost header
This commit is contained in:
77
test/external/boost/graph/detail/incremental_components.hpp
vendored
Normal file
77
test/external/boost/graph/detail/incremental_components.hpp
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
//=======================================================================
|
||||
// Copyright 2002 Indiana University.
|
||||
// Copyright 2009 Trustees of Indiana University.
|
||||
// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek, Michael Hansen
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//=======================================================================
|
||||
|
||||
#ifndef BOOST_GRAPH_DETAIL_INCREMENTAL_COMPONENTS_HPP
|
||||
#define BOOST_GRAPH_DETAIL_INCREMENTAL_COMPONENTS_HPP
|
||||
|
||||
#include <boost/operators.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
namespace detail {
|
||||
|
||||
// Iterator for a component index linked list. The contents of
|
||||
// each array element represent the next index in the list. A
|
||||
// special value (the maximum index + 1) is used to terminate a
|
||||
// list.
|
||||
template <typename IndexRandomAccessIterator>
|
||||
class component_index_iterator :
|
||||
boost::forward_iterator_helper<component_index_iterator<IndexRandomAccessIterator>,
|
||||
typename std::iterator_traits<IndexRandomAccessIterator>::value_type,
|
||||
typename std::iterator_traits<IndexRandomAccessIterator>::difference_type,
|
||||
typename std::iterator_traits<IndexRandomAccessIterator>::pointer,
|
||||
typename std::iterator_traits<IndexRandomAccessIterator>::reference> {
|
||||
|
||||
private:
|
||||
typedef component_index_iterator<IndexRandomAccessIterator> self;
|
||||
|
||||
public:
|
||||
typedef std::forward_iterator_tag iterator_category;
|
||||
typedef typename std::iterator_traits<IndexRandomAccessIterator>::value_type value_type;
|
||||
typedef typename std::iterator_traits<IndexRandomAccessIterator>::difference_type reference;
|
||||
typedef typename std::iterator_traits<IndexRandomAccessIterator>::pointer pointer;
|
||||
typedef typename std::iterator_traits<IndexRandomAccessIterator>::reference difference_type;
|
||||
|
||||
// Constructor for "begin" iterator
|
||||
component_index_iterator(IndexRandomAccessIterator index_iterator,
|
||||
value_type begin_index) :
|
||||
m_index_iterator(index_iterator),
|
||||
m_current_index(begin_index) { }
|
||||
|
||||
// Constructor for "end" iterator (end_index should be the linked
|
||||
// list terminator).
|
||||
component_index_iterator(value_type end_index) :
|
||||
m_current_index(end_index) { }
|
||||
|
||||
inline value_type operator*() const {
|
||||
return (m_current_index);
|
||||
}
|
||||
|
||||
self& operator++() {
|
||||
// Move to the next element in the linked list
|
||||
m_current_index = m_index_iterator[m_current_index];
|
||||
return (*this);
|
||||
}
|
||||
|
||||
bool operator==(const self& other_iterator) const {
|
||||
return (m_current_index == *other_iterator);
|
||||
}
|
||||
|
||||
protected:
|
||||
IndexRandomAccessIterator m_index_iterator;
|
||||
value_type m_current_index;
|
||||
|
||||
}; // class component_index_iterator
|
||||
|
||||
} // namespace detail
|
||||
|
||||
} // namespace detail
|
||||
|
||||
#endif // BOOST_GRAPH_DETAIL_INCREMENTAL_COMPONENTS_HPP
|
||||
Reference in New Issue
Block a user