111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1994
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Hewlett-Packard Company
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1996,1997
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Silicon Graphics Computer Systems, Inc.
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1997
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Moscow Center for SPARC Technology
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 1999
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Boris Fomitchev
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * This material is provided "as is", with absolutely no warranty expressed
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * or implied. Any use is at your own risk.
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to use or copy this software for any purpose is hereby granted
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * without fee, provided the above notices are retained on all copies.
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission to modify the code and to distribute modified code is granted,
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * provided the above notices are retained, and a notice that the code was
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * modified is included with the above copyright notice.
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NOTE: This is an internal header file, included by other STL headers.
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * You should not attempt to use it directly.
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _STLP_INTERNAL_ITERATOR_BASE_H
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#  include <stl/_iterator_base.h>
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_BEGIN_NAMESPACE
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _ForwardIterator, class _Tp>
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertclass raw_storage_iterator
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert      : public iterator<output_iterator_tag,void,void,void,void>
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert{
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertprotected:
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  _ForwardIterator _M_iter;
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertpublic:
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef output_iterator_tag iterator_category;
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifdef _STLP_CLASS_PARTIAL_SPECIALIZATION
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef void                value_type;
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef void                difference_type;
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef void                pointer;
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  typedef void                reference;
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# endif
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  explicit raw_storage_iterator(_ForwardIterator __x) : _M_iter(__x) {}
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  raw_storage_iterator<_ForwardIterator, _Tp>& operator*() { return *this; }
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  raw_storage_iterator<_ForwardIterator, _Tp>& operator=(const _Tp& __element) {
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    _Param_Construct(&*_M_iter, __element);
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *this;
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  raw_storage_iterator<_ForwardIterator, _Tp>& operator++() {
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ++_M_iter;
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return *this;
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  raw_storage_iterator<_ForwardIterator, _Tp> operator++(int) {
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    raw_storage_iterator<_ForwardIterator, _Tp> __tmp = *this;
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ++_M_iter;
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    return __tmp;
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  }
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert# ifdef _STLP_USE_OLD_HP_ITERATOR_QUERIES
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttemplate <class _ForwardIterator, class _Tp>
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertinline output_iterator_tag iterator_category(const raw_storage_iterator<_ForwardIterator, _Tp>&) { return output_iterator_tag(); }
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert_STLP_END_NAMESPACE
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _STLP_INTERNAL_RAW_STORAGE_ITERATOR_H */
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// Local Variables:
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// mode:C++
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert// End:
81