19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1994
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Hewlett-Packard Company
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1996,1997
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc.
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1997
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Moscow Center for SPARC Technology
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk.
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies.
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted,
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice.
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* NOTE: This is an internal header file, included by other STL headers.
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * You should not attempt to use it directly.
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_iterator_base.h>
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _ForwardIterator, class _Tp>
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass raw_storage_iterator
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      : public iterator<output_iterator_tag,void,void,void,void>
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block{
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected:
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  _ForwardIterator _M_iter;
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic:
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef output_iterator_tag iterator_category;
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef void                value_type;
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef void                difference_type;
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef void                pointer;
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef void                reference;
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {}
549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  raw_storage_iterator<_ForwardIterator, _Tp>& operator*() { return *this; }
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  raw_storage_iterator<_ForwardIterator, _Tp>& operator=(const _Tp& __element) {
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _Param_Construct(&*_M_iter, __element);
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return *this;
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  raw_storage_iterator<_ForwardIterator, _Tp>& operator++() {
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    ++_M_iter;
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return *this;
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) {
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this;
659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    ++_M_iter;
669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    return __tmp;
679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  }
689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block};
699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class _ForwardIterator, class _Tp>
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockinline output_iterator_tag iterator_category(const raw_storage_iterator<_ForwardIterator, _Tp>&) { return output_iterator_tag(); }
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H */
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables:
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End:
81