tool::window< InputIterator, WSize, Step, Bottom > Struct Template Reference

Sliding window. More...

#include <wipal/tool/window.hh>

List of all members.

Public Types

enum  { max_size = WSize, step = Step }

Public Member Functions

template<class Iterable>
 window (Iterable &, bool)
const InputIterator::value_type & operator[] (unsigned i) const
Static hierarchies related types
typedef wp_get_exact (Bottom, window< InputIterator, WSize, Step, Bottom >) exact_type
typedef wp_type (value_type, exact_type) value_type
Abstract method implementations
bool equal (const window &) const
void increment ()
const value_type & get () const
const value_type * get_ptr () const

Protected Attributes

bool at_end_
InputIterator next_
InputIterator last_
value_type v_


Detailed Description

template<class InputIterator, unsigned WSize, unsigned Step = 1, class Bottom = bottom>
struct tool::window< InputIterator, WSize, Step, Bottom >

Sliding window.

window provides a sliding window over a sequence. It behaves as an iterator which value type is a container for the window's elements. Slide the window using its operator++() . An operator[]() is provided for convenience.

Parameters:
InputIterator The sequence's input iterator type.
WSize The window's size (length).
Step Number of elements to "eat" when calling increment().
Bottom Exact type or bottom (see static_base).
 typedef std::vector<int>          vector_type;
 typedef vector_type::iterator     iterator_type;
 typedef window<iterator_type, 2>  window_type;

 vector_type v;
 // Fill the vector.

 window_type w (v, false);
 window_type end (v, true);

 while(w != end)
   {
      std::cout << w[0] << std::endl << w[1] << std::endl << std::endl;
      ++w;
   }

See also:
window_maker

Member Enumeration Documentation

template<class InputIterator, unsigned WSize, unsigned Step = 1, class Bottom = bottom>
anonymous enum

Enumerator:
max_size  < Window's maximum size.
step  < Window's increment step.


Constructor & Destructor Documentation

template<class I, unsigned Ws, unsigned S, class B>
template<class Iterable>
tool::window< I, Ws, S, B >::window ( Iterable &  i,
bool  end 
) [inline]

iterable compatible constructor.


Member Function Documentation

template<class I, unsigned Ws, unsigned S, class B>
const I::value_type & tool::window< I, Ws, S, B >::operator[] ( unsigned  i  )  const [inline]

Access to the window's i 'th element.


Member Data Documentation

template<class InputIterator, unsigned WSize, unsigned Step = 1, class Bottom = bottom>
bool tool::window< InputIterator, WSize, Step, Bottom >::at_end_ [protected]

Is this window the last one.

template<class InputIterator, unsigned WSize, unsigned Step = 1, class Bottom = bottom>
InputIterator tool::window< InputIterator, WSize, Step, Bottom >::next_ [protected]

Iterator to the next element to retrieve.

template<class InputIterator, unsigned WSize, unsigned Step = 1, class Bottom = bottom>
InputIterator tool::window< InputIterator, WSize, Step, Bottom >::last_ [protected]

Iterator past the last element.

template<class InputIterator, unsigned WSize, unsigned Step = 1, class Bottom = bottom>
value_type tool::window< InputIterator, WSize, Step, Bottom >::v_ [protected]

Current window value.


The documentation for this struct was generated from the following files:
Generated on Wed Jan 16 16:15:15 2008 for wipal by  doxygen 1.5.4