34 #ifndef __INCLUDE_MIST_ITERATOR_H__
35 #define __INCLUDE_MIST_ITERATOR_H__
40 #ifndef __INCLUDE_MIST_CONF_H__
58 template<
class T,
class Distance = ptrdiff_t,
class Po
inter = T*,
class Reference = T& >
59 #if defined( __MIST_MSVC__ ) && __MIST_MSVC__ <= 6
60 class mist_iterator1 :
public std::iterator< std::random_access_iterator_tag, T, Distance >
62 class
mist_iterator1 :
public std::iterator< std::random_access_iterator_tag, T, Distance, Pointer, Reference >
82 template<
class TT,
class DD,
class PP,
class RR >
87 template<
class TT,
class DD,
class PP,
class RR >
91 diff_pointer_ = ite.diff( );
127 size_type diff( )
const
129 return( diff_pointer_ );
166 data_ += dist * diff_pointer_;
173 data_ -= dist * diff_pointer_;
179 template<
class TT,
class DD,
class PP,
class RR >
182 return( ( data_ - ite.
data( ) ) / diff_pointer_ );
187 template<
class TT,
class DD,
class PP,
class RR >
191 template<
class TT,
class DD,
class PP,
class RR >
195 template<
class TT,
class DD,
class PP,
class RR >
196 bool operator < ( const mist_iterator1< TT, DD, PP, RR > &ite )
const {
return( data_ < ite.data( ) ); }
199 template<
class TT,
class DD,
class PP,
class RR >
200 bool operator <=( const mist_iterator1< TT, DD, PP, RR > &ite )
const {
return( data_ <= ite.data( ) ); }
203 template<
class TT,
class DD,
class PP,
class RR >
207 template<
class TT,
class DD,
class PP,
class RR >
213 template<
class T,
class Distance,
class Po
inter,
class Reference >
214 inline const mist_iterator1< T, Distance, Pointer, Reference > operator +(
const mist_iterator1< T, Distance, Pointer, Reference > &ite,
typename mist_iterator1< T, Distance, Pointer, Reference >::difference_type dist )
220 template<
class T,
class Distance,
class Po
inter,
class Reference >
221 inline const mist_iterator1< T, Distance, Pointer, Reference > operator +(
typename mist_iterator1< T, Distance, Pointer, Reference >::difference_type dist,
const mist_iterator1< T, Distance, Pointer, Reference > &ite )
227 template<
class T,
class Distance,
class Po
inter,
class Reference >
228 inline const mist_iterator1< T, Distance, Pointer, Reference > operator -(
const mist_iterator1< T, Distance, Pointer, Reference > &ite,
typename mist_iterator1< T, Distance, Pointer, Reference >::difference_type dist )
244 template<
class T,
class Distance = ptrdiff_t,
class Po
inter = T*,
class Reference = T& >
245 #if defined( __MIST_MSVC__ ) && __MIST_MSVC__ <= 6
246 class mist_iterator2 :
public std::iterator< std::random_access_iterator_tag, T, Distance >
248 class
mist_iterator2 :
public std::iterator< std::random_access_iterator_tag, T, Distance, Pointer, Reference >
268 : data_( p ), index_( index ), width_( width ), step_( step )
273 template<
class TT,
class DD,
class PP,
class RR >
280 template<
class TT,
class DD,
class PP,
class RR >
286 index_ = ite.
index( );
287 width_ = ite.
width( );
318 difference_type step( )
const
328 return( *( data_ + rest + step * step_ ) );
336 return( *( data_ + rest + step * step_ ) );
398 template<
class TT,
class DD,
class PP,
class RR >
401 return( index_ - ite.
index( ) );
405 template<
class TT,
class DD,
class PP,
class RR >
409 template<
class TT,
class DD,
class PP,
class RR >
413 template<
class TT,
class DD,
class PP,
class RR >
414 bool operator < ( const mist_iterator2< TT, DD, PP, RR > &ite )
const {
return( *
this - ite < 0 ); }
417 template<
class TT,
class DD,
class PP,
class RR >
418 bool operator <=( const mist_iterator2< TT, DD, PP, RR > &ite )
const {
return( !( *
this > ite ) ); }
421 template<
class TT,
class DD,
class PP,
class RR >
425 template<
class TT,
class DD,
class PP,
class RR >
432 template<
class T,
class Distance,
class Po
inter,
class Reference >
433 inline const mist_iterator2< T, Distance, Pointer, Reference > operator +(
const mist_iterator2< T, Distance, Pointer, Reference > &ite,
typename mist_iterator2< T, Distance, Pointer, Reference >::difference_type dist )
439 template<
class T,
class Distance,
class Po
inter,
class Reference >
440 inline const mist_iterator2< T, Distance, Pointer, Reference > operator +(
typename mist_iterator2< T, Distance, Pointer, Reference >::difference_type dist,
const mist_iterator2< T, Distance, Pointer, Reference > &ite )
446 template<
class T,
class Distance,
class Po
inter,
class Reference >
447 inline const mist_iterator2< T, Distance, Pointer, Reference > operator -(
const mist_iterator2< T, Distance, Pointer, Reference > &ite,
typename mist_iterator2< T, Distance, Pointer, Reference >::difference_type dist )
462 #if defined( __MIST_MSVC__ ) && __MIST_MSVC__ <= 6
463 public std::iterator<
464 typename T::iterator_category,
465 typename T::value_type,
466 typename T::difference_type
469 public std::iterator<
470 typename T::iterator_category,
471 typename T::value_type,
472 typename T::difference_type,
474 typename T::reference
479 typedef T iterator_type;
506 current_iterator_ = ite;
521 iterator_type _tmp = current_iterator_;
522 return( *( --_tmp ) );
528 iterator_type _tmp = current_iterator_;
529 return( *( --_tmp ) );
578 current_iterator_ -= dist;
585 current_iterator_ += dist;
657 #endif // __INCLUDE_MIST_ITERATOR_H__