Boost.Locale
boost::locale::boundary::segment_index< BaseIterator > Class Template Reference

This class holds an index of segments in the text range and allows to iterate over them. More...

#include <boost/locale/boundary/index.hpp>

Public Types

typedef BaseIterator base_iterator
 
typedef unspecified_iterator_type iterator
 
typedef unspecified_iterator_type const_iterator
 
typedef segment< base_iteratorvalue_type
 

Public Member Functions

 segment_index ()
 
 segment_index (boundary_type type, base_iterator begin, base_iterator end, rule_type mask, std::locale const &loc=std::locale())
 
 segment_index (boundary_type type, base_iterator begin, base_iterator end, std::locale const &loc=std::locale())
 
 segment_index (boundary_point_index< base_iterator > const &)
 
segment_index const & operator= (boundary_point_index< base_iterator > const &)
 
void map (boundary_type type, base_iterator begin, base_iterator end, std::locale const &loc=std::locale())
 
iterator begin () const
 
iterator end () const
 
iterator find (base_iterator p) const
 
rule_type rule () const
 
void rule (rule_type v)
 
bool full_select () const
 
void full_select (bool v)
 

Friends

class boundary_point_index< base_iterator >
 

Detailed Description

template<typename BaseIterator>
class boost::locale::boundary::segment_index< BaseIterator >

This class holds an index of segments in the text range and allows to iterate over them.

This class is provides begin() and end() member functions that return bidirectional iterators to the segment objects.

It provides two options on way of selecting segments:

  • rule(rule_type mask) - a mask that allows to select only specific types of segments according to various masks as word_any.
    The default is to select any types of boundaries.
    For example: using word boundary analysis, when the provided mask is word_kana then the iterators would iterate only over the words containing Kana letters and word_any would select all types of words excluding ranges that consist of white space and punctuation marks. So iterating over the text "to be or not to be?" with word_any rule would return segments "to", "be", "or", "not", "to", "be", instead of default "to", " ", "be", " ", "or", " ", "not", " ", "to", " ", "be", "?".
  • full_select(bool how) - a flag that defines the way a range is selected if the rule of the previous boundary point does not fit the selected rule.
    For example: We want to fetch all sentences from the following text: "Hello! How\nare you?".
    This text contains three boundary points separating it to sentences by different rules:
    • The exclamation mark "!" ends the sentence "Hello!"
    • The line feed that splits the sentence "How\nare you?" into two parts.
    • The question mark that ends the second sentence.
      If you would only change the rule() to sentence_term then the segment_index would provide two sentences "Hello!" and "are you?" as only them actually terminated with required terminator "!" or "?". But changing full_select() to true, the selected segment would include all the text up to previous valid boundary point and would return two expected sentences: "Hello!" and "How\nare you?".

This class allows to find a segment according to the given iterator in range using find() member function.

Note
See Also
Examples:
boundary.cpp, and wboundary.cpp.

The documentation for this class was generated from the following file: