GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
UNICODE::LINEBREAK(3) Courier Unicode Library UNICODE::LINEBREAK(3)

unicode::linebreak_callback_base, unicode::linebreak_callback_save_buf, unicode::linebreakc_callback_base, unicode::linebreak_iter, unicode::linebreakc_iter - unicode line-breaking rules

#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));

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 algorithm, 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 information.

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 information).

unicode::linebreak_callback_save_buf is a subclass that implements callback() 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 constructor's parameters are a beginning and an ending iterator value for a sequence of char32_t. This constructs the beginning iterator value for a sequence of ints consisting of line-break values (UNICODE_LB_MANDATORY, UNICODE_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 values and the corresponding char32_t from the underlying input sequence.

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

Sam Varshavchik
Author
03/12/2021 Courier Unicode Library

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.