Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
UNICODE::LINEBREAK(3)	     Courier Unicode Library	   UNICODE::LINEBREAK(3)

NAME
     unicode::linebreak_callback_base,	   unicode::linebreak_callback_save_buf,
     unicode::linebreakc_callback_base, unicode::linebreak_iter,  unicode::line-
     breakc_iter - unicode line-breaking rules

SYNOPSIS
     #include <courier-unicode.h>

     class linebreak : public unicode::linebreak_callback_base {

     public:

	 using unicode::linebreak_callback_base::operator<<;
	 using unicode::linebreak_callback_base::operator();
	 int callback(int linebreak_code)
	 {
	     // ...
	 }
     };

     char32_t c;
     std::u32string buf;

     linebreak compute_linebreak;

     compute_linebreak.set_opts(UNICODE_LB_OPT_SYBREAK);
     compute_linebreak << c;

     compute_linebreak(buf);
     compute_linebreak(buf.begin(), buf.end());

     compute_linebreak.finish();

     // ...

     unicode::linebreak_callback_save_buf linebreaks;

     std::list<int> lb=linebreaks.lb_buf;

     class linebreakc : public unicode::linebreakc_callback_base {

     public:

	 using unicode::linebreak_callback_base::operator<<;
	 using unicode::linebreak_callback_base::operator();
	 int callback(int linebreak_code, char32_t ch)
	 {
	     // ...
	 }
     };

     // ...

     std::u32string buf;

     typedef unicode::linebreak_iter<std::u32string::const_iterator> iter_t;

     iter_t beg_iter(buf.begin(), buf.end()), end_iter;

     beg_iter.set_opts(UNICODE_LB_OPT_SYBREAK);

     std::vector<int> linebreaks;

     std::copy(beg_iter, end_iter, std::back_insert_iterator<std::vector<int>>(linebreaks));

     // ...

     typedef unicode::linebreakc_iter<std::u32string::const_iterator> iter_t;

     iter_t beg_iter(buf.begin(), buf.end()), end_iter;

     beg_iter.set_opts(UNICODE_LB_OPT_SYBREAK);

     std::vector<std::pair<int, char32_t>> linebreaks;

     std::copy(beg_iter, end_iter, std::back_insert_iterator<std::vector<int>>(linebreaks));

DESCRIPTION
     unicode::linebreak_callback_base	is   a	 C++  binding  for  the  unicode
     line-breaking rule implementation described in unicode_line_break(3).

     Subclass unicode::linebreak_callback_base and implement  callback()  that's
     virtually	inherited  from unicode::linebreak_callback_base. The callback()
     callback function receives the output values from the  line-breaking  algo-
     rithm, the UNICODE_LB_MANDATORY, UNICODE_LB_NONE, or the UNICODE_LB_ALLOWED
     value, for each unicode character.

     callback()  should return 0. A non-zero return reports an error, that stops
     the line-breaking algorithm. See unicode_line_break(3)  for  more	informa-
     tion.

     The  alternate unicode::linebreakc_callback_base interface uses a virtually
     inherited callback() that receives  two  parameters,  the	line-break  code
     value, and the corresponding unicode character.

     The  input  unicode characters for the line-breaking algorithm are provided
     by the << operator, one unicode character at a time; or by the () operator,
     passing either a container, or a beginning and an ending iterator value for
     an input sequence of unicode characters.  finish() indicates the end of the
     unicode character sequence.

     set_opts sets line-breaking options (see unicode_lb_set_opts() for more in-
     formation).

     unicode::linebreak_callback_save_buf is a subclass  that  implements  call-
     back() by saving the linebreaks codes into a std::list.

     The  linebreak_iter  template  implements	an input iterator over ints. The
     template parameter is an input iterator over unicode chars.  The  construc-
     tor's  parameters	are  a	beginning and an ending iterator value for a se-
     quence of char32_t. This constructs the beginning iterator value for a  se-
     quence  of ints consisting of line-break values (UNICODE_LB_MANDATORY, UNI-
     CODE_LB_NONE, or UNICODE_LB_ALLOWED) corresponding to each char32_t in  the
     underlying  sequence.  The  default constructor creates the ending iterator
     value for the sequence.

     The iterator implements a set_opts() methods that sets the options for  the
     line-breaking algorithm.

     The  linebreakc_iter template implements a similar input iterator, with the
     difference that it ends up iterating over a std::pair of line-breaking val-
     ues and the corresponding char32_t from the underlying input sequence.

SEE ALSO
     courier-unicode(7), unicode_line_break(3).

AUTHOR
     Sam Varshavchik
	 Author

Courier Unicode Library 	   04/12/2026		   UNICODE::LINEBREAK(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=unicode::linebreak_iter&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help