17 #ifndef VCSN_MISC_WINDOW_HXX
18 # define VCSN_MISC_WINDOW_HXX
36 template <
class InputIterator,
class Letter>
38 const iterator_t& eof,
47 precondition (length > 0);
52 template <
class InputIterator,
class Letter>
56 return stream_ == end_;
59 template <
class InputIterator,
class Letter>
63 return eof () || (*stream_ == eol_);
66 template <
class InputIterator,
class Letter>
70 precondition (n <= size_);
72 if ((stream_ != end_) && (*stream_ == eol_))
79 template <
class InputIterator,
class Letter>
86 template <
class InputIterator,
class Letter>
90 stream_ = begin_ + offset;
94 template <
class InputIterator,
class Letter>
102 template <
class InputIterator,
class Letter>
103 typename Window<InputIterator, Letter>::length_t
109 template <
class InputIterator,
class Letter>
110 typename Window<InputIterator, Letter>::letter_t
113 precondition (i < size_);
118 template <
class InputIterator,
class Letter>
122 return ostr << window ();
125 template <
class InputIterator,
class Letter>
126 typename Window<InputIterator, Letter>::letter_t
132 template <
class InputIterator,
class Letter>
133 typename Window<InputIterator, Letter>::iterator_t
139 template <
class InputIterator,
class Letter>
140 typename Window<InputIterator, Letter>::iterator_t
146 template <
class InputIterator,
class Letter>
147 typename Window<InputIterator, Letter>::iterator_t
153 template <
class InputIterator,
class Letter>
157 return stream_ - begin_;
160 template <
class InputIterator,
class Letter>
161 typename Window<InputIterator, Letter>::length_t
167 template <
class InputIterator,
class Letter>
168 typename Window<InputIterator, Letter>::string_t
171 return string_t (stream_, stream_ + size_);
174 template <
class InputIterator,
class Letter>
179 while ((size_ < length_) &&
180 (stream_ + size_ != end_) &&
181 (stream_[size_] != eol_))
185 template <
class InputIterator,
class Letter>
187 operator<< (std::ostream& ostr, const Window<InputIterator, Letter>& w)
189 return w.
print (ostr);
197 #endif // ! VCSN_MISC_WINDOW_HXX