Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-aarch32-jdk8u
Path: blob/jdk8u272-b10-aarch32-20201026/jdk/src/share/native/common/unicode/ubrk.h
48773 views
1
// © 2016 and later: Unicode, Inc. and others.
2
// License & terms of use: http://www.unicode.org/copyright.html
3
/*
4
******************************************************************************
5
* Copyright (C) 1996-2015, International Business Machines Corporation and others.
6
* All Rights Reserved.
7
******************************************************************************
8
*/
9
10
#ifndef UBRK_H
11
#define UBRK_H
12
13
#include "unicode/utypes.h"
14
#include "unicode/uloc.h"
15
#include "unicode/utext.h"
16
#include "unicode/localpointer.h"
17
18
/**
19
* A text-break iterator.
20
* For usage in C programs.
21
*/
22
#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR
23
# define UBRK_TYPEDEF_UBREAK_ITERATOR
24
/**
25
* Opaque type representing an ICU Break iterator object.
26
* @stable ICU 2.0
27
*/
28
typedef struct UBreakIterator UBreakIterator;
29
#endif
30
31
#if !UCONFIG_NO_BREAK_ITERATION
32
33
#include "unicode/parseerr.h"
34
35
/**
36
* \file
37
* \brief C API: BreakIterator
38
*
39
* <h2> BreakIterator C API </h2>
40
*
41
* The BreakIterator C API defines methods for finding the location
42
* of boundaries in text. Pointer to a UBreakIterator maintain a
43
* current position and scan over text returning the index of characters
44
* where boundaries occur.
45
* <p>
46
* Line boundary analysis determines where a text string can be broken
47
* when line-wrapping. The mechanism correctly handles punctuation and
48
* hyphenated words.
49
* <p>
50
* Note: The locale keyword "lb" can be used to modify line break
51
* behavior according to the CSS level 3 line-break options, see
52
* <http://dev.w3.org/csswg/css-text/#line-breaking>. For example:
53
* "ja@lb=strict", "zh@lb=loose".
54
* <p>
55
* Sentence boundary analysis allows selection with correct
56
* interpretation of periods within numbers and abbreviations, and
57
* trailing punctuation marks such as quotation marks and parentheses.
58
* <p>
59
* Note: The locale keyword "ss" can be used to enable use of
60
* segmentation suppression data (preventing breaks in English after
61
* abbreviations such as "Mr." or "Est.", for example), as follows:
62
* "en@ss=standard".
63
* <p>
64
* Word boundary analysis is used by search and replace functions, as
65
* well as within text editing applications that allow the user to
66
* select words with a double click. Word selection provides correct
67
* interpretation of punctuation marks within and following
68
* words. Characters that are not part of a word, such as symbols or
69
* punctuation marks, have word-breaks on both sides.
70
* <p>
71
* Character boundary analysis identifies the boundaries of
72
* "Extended Grapheme Clusters", which are groupings of codepoints
73
* that should be treated as character-like units for many text operations.
74
* Please see Unicode Standard Annex #29, Unicode Text Segmentation,
75
* http://www.unicode.org/reports/tr29/ for additional information
76
* on grapheme clusters and guidelines on their use.
77
* <p>
78
* Title boundary analysis locates all positions,
79
* typically starts of words, that should be set to Title Case
80
* when title casing the text.
81
* <p>
82
* The text boundary positions are found according to the rules
83
* described in Unicode Standard Annex #29, Text Boundaries, and
84
* Unicode Standard Annex #14, Line Breaking Properties. These
85
* are available at http://www.unicode.org/reports/tr14/ and
86
* http://www.unicode.org/reports/tr29/.
87
* <p>
88
* In addition to the plain C API defined in this header file, an
89
* object oriented C++ API with equivalent functionality is defined in the
90
* file brkiter.h.
91
* <p>
92
* Code snippets illustrating the use of the Break Iterator APIs
93
* are available in the ICU User Guide,
94
* http://icu-project.org/userguide/boundaryAnalysis.html
95
* and in the sample program icu/source/samples/break/break.cpp
96
*/
97
98
/** The possible types of text boundaries. @stable ICU 2.0 */
99
typedef enum UBreakIteratorType {
100
/** Character breaks @stable ICU 2.0 */
101
UBRK_CHARACTER = 0,
102
/** Word breaks @stable ICU 2.0 */
103
UBRK_WORD = 1,
104
/** Line breaks @stable ICU 2.0 */
105
UBRK_LINE = 2,
106
/** Sentence breaks @stable ICU 2.0 */
107
UBRK_SENTENCE = 3,
108
109
#ifndef U_HIDE_DEPRECATED_API
110
/**
111
* Title Case breaks
112
* The iterator created using this type locates title boundaries as described for
113
* Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
114
* please use Word Boundary iterator.
115
*
116
* @deprecated ICU 2.8 Use the word break iterator for titlecasing for Unicode 4 and later.
117
*/
118
UBRK_TITLE = 4,
119
/**
120
* One more than the highest normal UBreakIteratorType value.
121
* @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
122
*/
123
UBRK_COUNT = 5
124
#endif // U_HIDE_DEPRECATED_API
125
} UBreakIteratorType;
126
127
/** Value indicating all text boundaries have been returned.
128
* @stable ICU 2.0
129
*/
130
#define UBRK_DONE ((int32_t) -1)
131
132
133
/**
134
* Enum constants for the word break tags returned by
135
* getRuleStatus(). A range of values is defined for each category of
136
* word, to allow for further subdivisions of a category in future releases.
137
* Applications should check for tag values falling within the range, rather
138
* than for single individual values.
139
*
140
* The numeric values of all of these constants are stable (will not change).
141
*
142
* @stable ICU 2.2
143
*/
144
typedef enum UWordBreak {
145
/** Tag value for "words" that do not fit into any of other categories.
146
* Includes spaces and most punctuation. */
147
UBRK_WORD_NONE = 0,
148
/** Upper bound for tags for uncategorized words. */
149
UBRK_WORD_NONE_LIMIT = 100,
150
/** Tag value for words that appear to be numbers, lower limit. */
151
UBRK_WORD_NUMBER = 100,
152
/** Tag value for words that appear to be numbers, upper limit. */
153
UBRK_WORD_NUMBER_LIMIT = 200,
154
/** Tag value for words that contain letters, excluding
155
* hiragana, katakana or ideographic characters, lower limit. */
156
UBRK_WORD_LETTER = 200,
157
/** Tag value for words containing letters, upper limit */
158
UBRK_WORD_LETTER_LIMIT = 300,
159
/** Tag value for words containing kana characters, lower limit */
160
UBRK_WORD_KANA = 300,
161
/** Tag value for words containing kana characters, upper limit */
162
UBRK_WORD_KANA_LIMIT = 400,
163
/** Tag value for words containing ideographic characters, lower limit */
164
UBRK_WORD_IDEO = 400,
165
/** Tag value for words containing ideographic characters, upper limit */
166
UBRK_WORD_IDEO_LIMIT = 500
167
} UWordBreak;
168
169
/**
170
* Enum constants for the line break tags returned by getRuleStatus().
171
* A range of values is defined for each category of
172
* word, to allow for further subdivisions of a category in future releases.
173
* Applications should check for tag values falling within the range, rather
174
* than for single individual values.
175
*
176
* The numeric values of all of these constants are stable (will not change).
177
*
178
* @stable ICU 2.8
179
*/
180
typedef enum ULineBreakTag {
181
/** Tag value for soft line breaks, positions at which a line break
182
* is acceptable but not required */
183
UBRK_LINE_SOFT = 0,
184
/** Upper bound for soft line breaks. */
185
UBRK_LINE_SOFT_LIMIT = 100,
186
/** Tag value for a hard, or mandatory line break */
187
UBRK_LINE_HARD = 100,
188
/** Upper bound for hard line breaks. */
189
UBRK_LINE_HARD_LIMIT = 200
190
} ULineBreakTag;
191
192
193
194
/**
195
* Enum constants for the sentence break tags returned by getRuleStatus().
196
* A range of values is defined for each category of
197
* sentence, to allow for further subdivisions of a category in future releases.
198
* Applications should check for tag values falling within the range, rather
199
* than for single individual values.
200
*
201
* The numeric values of all of these constants are stable (will not change).
202
*
203
* @stable ICU 2.8
204
*/
205
typedef enum USentenceBreakTag {
206
/** Tag value for for sentences ending with a sentence terminator
207
* ('.', '?', '!', etc.) character, possibly followed by a
208
* hard separator (CR, LF, PS, etc.)
209
*/
210
UBRK_SENTENCE_TERM = 0,
211
/** Upper bound for tags for sentences ended by sentence terminators. */
212
UBRK_SENTENCE_TERM_LIMIT = 100,
213
/** Tag value for for sentences that do not contain an ending
214
* sentence terminator ('.', '?', '!', etc.) character, but
215
* are ended only by a hard separator (CR, LF, PS, etc.) or end of input.
216
*/
217
UBRK_SENTENCE_SEP = 100,
218
/** Upper bound for tags for sentences ended by a separator. */
219
UBRK_SENTENCE_SEP_LIMIT = 200
220
/** Tag value for a hard, or mandatory line break */
221
} USentenceBreakTag;
222
223
224
/**
225
* Open a new UBreakIterator for locating text boundaries for a specified locale.
226
* A UBreakIterator may be used for detecting character, line, word,
227
* and sentence breaks in text.
228
* @param type The type of UBreakIterator to open: one of UBRK_CHARACTER, UBRK_WORD,
229
* UBRK_LINE, UBRK_SENTENCE
230
* @param locale The locale specifying the text-breaking conventions. Note that
231
* locale keys such as "lb" and "ss" may be used to modify text break behavior,
232
* see general discussion of BreakIterator C API.
233
* @param text The text to be iterated over. May be null, in which case ubrk_setText() is
234
* used to specify the text to be iterated.
235
* @param textLength The number of characters in text, or -1 if null-terminated.
236
* @param status A UErrorCode to receive any errors.
237
* @return A UBreakIterator for the specified locale.
238
* @see ubrk_openRules
239
* @stable ICU 2.0
240
*/
241
U_STABLE UBreakIterator* U_EXPORT2
242
ubrk_open(UBreakIteratorType type,
243
const char *locale,
244
const UChar *text,
245
int32_t textLength,
246
UErrorCode *status);
247
248
/**
249
* Open a new UBreakIterator for locating text boundaries using specified breaking rules.
250
* The rule syntax is ... (TBD)
251
* @param rules A set of rules specifying the text breaking conventions.
252
* @param rulesLength The number of characters in rules, or -1 if null-terminated.
253
* @param text The text to be iterated over. May be null, in which case ubrk_setText() is
254
* used to specify the text to be iterated.
255
* @param textLength The number of characters in text, or -1 if null-terminated.
256
* @param parseErr Receives position and context information for any syntax errors
257
* detected while parsing the rules.
258
* @param status A UErrorCode to receive any errors.
259
* @return A UBreakIterator for the specified rules.
260
* @see ubrk_open
261
* @stable ICU 2.2
262
*/
263
U_STABLE UBreakIterator* U_EXPORT2
264
ubrk_openRules(const UChar *rules,
265
int32_t rulesLength,
266
const UChar *text,
267
int32_t textLength,
268
UParseError *parseErr,
269
UErrorCode *status);
270
271
/**
272
* Open a new UBreakIterator for locating text boundaries using precompiled binary rules.
273
* Opening a UBreakIterator this way is substantially faster than using ubrk_openRules.
274
* Binary rules may be obtained using ubrk_getBinaryRules. The compiled rules are not
275
* compatible across different major versions of ICU, nor across platforms of different
276
* endianness or different base character set family (ASCII vs EBCDIC).
277
* @param binaryRules A set of compiled binary rules specifying the text breaking
278
* conventions. Ownership of the storage containing the compiled
279
* rules remains with the caller of this function. The compiled
280
* rules must not be modified or deleted during the life of the
281
* break iterator.
282
* @param rulesLength The length of binaryRules in bytes; must be >= 0.
283
* @param text The text to be iterated over. May be null, in which case
284
* ubrk_setText() is used to specify the text to be iterated.
285
* @param textLength The number of characters in text, or -1 if null-terminated.
286
* @param status Pointer to UErrorCode to receive any errors.
287
* @return UBreakIterator for the specified rules.
288
* @see ubrk_getBinaryRules
289
* @stable ICU 59
290
*/
291
U_STABLE UBreakIterator* U_EXPORT2
292
ubrk_openBinaryRules(const uint8_t *binaryRules, int32_t rulesLength,
293
const UChar * text, int32_t textLength,
294
UErrorCode * status);
295
296
/**
297
* Thread safe cloning operation
298
* @param bi iterator to be cloned
299
* @param stackBuffer <em>Deprecated functionality as of ICU 52, use NULL.</em><br>
300
* user allocated space for the new clone. If NULL new memory will be allocated.
301
* If buffer is not large enough, new memory will be allocated.
302
* Clients can use the U_BRK_SAFECLONE_BUFFERSIZE.
303
* @param pBufferSize <em>Deprecated functionality as of ICU 52, use NULL or 1.</em><br>
304
* pointer to size of allocated space.
305
* If *pBufferSize == 0, a sufficient size for use in cloning will
306
* be returned ('pre-flighting')
307
* If *pBufferSize is not enough for a stack-based safe clone,
308
* new memory will be allocated.
309
* @param status to indicate whether the operation went on smoothly or there were errors
310
* An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any allocations were necessary.
311
* @return pointer to the new clone
312
* @stable ICU 2.0
313
*/
314
U_STABLE UBreakIterator * U_EXPORT2
315
ubrk_safeClone(
316
const UBreakIterator *bi,
317
void *stackBuffer,
318
int32_t *pBufferSize,
319
UErrorCode *status);
320
321
#ifndef U_HIDE_DEPRECATED_API
322
323
/**
324
* A recommended size (in bytes) for the memory buffer to be passed to ubrk_saveClone().
325
* @deprecated ICU 52. Do not rely on ubrk_safeClone() cloning into any provided buffer.
326
*/
327
#define U_BRK_SAFECLONE_BUFFERSIZE 1
328
329
#endif /* U_HIDE_DEPRECATED_API */
330
331
/**
332
* Close a UBreakIterator.
333
* Once closed, a UBreakIterator may no longer be used.
334
* @param bi The break iterator to close.
335
* @stable ICU 2.0
336
*/
337
U_STABLE void U_EXPORT2
338
ubrk_close(UBreakIterator *bi);
339
340
#if U_SHOW_CPLUSPLUS_API
341
342
U_NAMESPACE_BEGIN
343
344
/**
345
* \class LocalUBreakIteratorPointer
346
* "Smart pointer" class, closes a UBreakIterator via ubrk_close().
347
* For most methods see the LocalPointerBase base class.
348
*
349
* @see LocalPointerBase
350
* @see LocalPointer
351
* @stable ICU 4.4
352
*/
353
U_DEFINE_LOCAL_OPEN_POINTER(LocalUBreakIteratorPointer, UBreakIterator, ubrk_close);
354
355
U_NAMESPACE_END
356
357
#endif
358
359
/**
360
* Sets an existing iterator to point to a new piece of text.
361
* The break iterator retains a pointer to the supplied text.
362
* The caller must not modify or delete the text while the BreakIterator
363
* retains the reference.
364
*
365
* @param bi The iterator to use
366
* @param text The text to be set
367
* @param textLength The length of the text
368
* @param status The error code
369
* @stable ICU 2.0
370
*/
371
U_STABLE void U_EXPORT2
372
ubrk_setText(UBreakIterator* bi,
373
const UChar* text,
374
int32_t textLength,
375
UErrorCode* status);
376
377
378
/**
379
* Sets an existing iterator to point to a new piece of text.
380
*
381
* All index positions returned by break iterator functions are
382
* native indices from the UText. For example, when breaking UTF-8
383
* encoded text, the break positions returned by \ref ubrk_next, \ref ubrk_previous, etc.
384
* will be UTF-8 string indices, not UTF-16 positions.
385
*
386
* @param bi The iterator to use
387
* @param text The text to be set.
388
* This function makes a shallow clone of the supplied UText. This means
389
* that the caller is free to immediately close or otherwise reuse the
390
* UText that was passed as a parameter, but that the underlying text itself
391
* must not be altered while being referenced by the break iterator.
392
* @param status The error code
393
* @stable ICU 3.4
394
*/
395
U_STABLE void U_EXPORT2
396
ubrk_setUText(UBreakIterator* bi,
397
UText* text,
398
UErrorCode* status);
399
400
401
402
/**
403
* Determine the most recently-returned text boundary.
404
*
405
* @param bi The break iterator to use.
406
* @return The character index most recently returned by \ref ubrk_next, \ref ubrk_previous,
407
* \ref ubrk_first, or \ref ubrk_last.
408
* @stable ICU 2.0
409
*/
410
U_STABLE int32_t U_EXPORT2
411
ubrk_current(const UBreakIterator *bi);
412
413
/**
414
* Advance the iterator to the boundary following the current boundary.
415
*
416
* @param bi The break iterator to use.
417
* @return The character index of the next text boundary, or UBRK_DONE
418
* if all text boundaries have been returned.
419
* @see ubrk_previous
420
* @stable ICU 2.0
421
*/
422
U_STABLE int32_t U_EXPORT2
423
ubrk_next(UBreakIterator *bi);
424
425
/**
426
* Set the iterator position to the boundary preceding the current boundary.
427
*
428
* @param bi The break iterator to use.
429
* @return The character index of the preceding text boundary, or UBRK_DONE
430
* if all text boundaries have been returned.
431
* @see ubrk_next
432
* @stable ICU 2.0
433
*/
434
U_STABLE int32_t U_EXPORT2
435
ubrk_previous(UBreakIterator *bi);
436
437
/**
438
* Set the iterator position to zero, the start of the text being scanned.
439
* @param bi The break iterator to use.
440
* @return The new iterator position (zero).
441
* @see ubrk_last
442
* @stable ICU 2.0
443
*/
444
U_STABLE int32_t U_EXPORT2
445
ubrk_first(UBreakIterator *bi);
446
447
/**
448
* Set the iterator position to the index immediately <EM>beyond</EM> the last character in the text being scanned.
449
* This is not the same as the last character.
450
* @param bi The break iterator to use.
451
* @return The character offset immediately <EM>beyond</EM> the last character in the
452
* text being scanned.
453
* @see ubrk_first
454
* @stable ICU 2.0
455
*/
456
U_STABLE int32_t U_EXPORT2
457
ubrk_last(UBreakIterator *bi);
458
459
/**
460
* Set the iterator position to the first boundary preceding the specified offset.
461
* The new position is always smaller than offset, or UBRK_DONE.
462
* @param bi The break iterator to use.
463
* @param offset The offset to begin scanning.
464
* @return The text boundary preceding offset, or UBRK_DONE.
465
* @see ubrk_following
466
* @stable ICU 2.0
467
*/
468
U_STABLE int32_t U_EXPORT2
469
ubrk_preceding(UBreakIterator *bi,
470
int32_t offset);
471
472
/**
473
* Advance the iterator to the first boundary following the specified offset.
474
* The value returned is always greater than offset, or UBRK_DONE.
475
* @param bi The break iterator to use.
476
* @param offset The offset to begin scanning.
477
* @return The text boundary following offset, or UBRK_DONE.
478
* @see ubrk_preceding
479
* @stable ICU 2.0
480
*/
481
U_STABLE int32_t U_EXPORT2
482
ubrk_following(UBreakIterator *bi,
483
int32_t offset);
484
485
/**
486
* Get a locale for which text breaking information is available.
487
* A UBreakIterator in a locale returned by this function will perform the correct
488
* text breaking for the locale.
489
* @param index The index of the desired locale.
490
* @return A locale for which number text breaking information is available, or 0 if none.
491
* @see ubrk_countAvailable
492
* @stable ICU 2.0
493
*/
494
U_STABLE const char* U_EXPORT2
495
ubrk_getAvailable(int32_t index);
496
497
/**
498
* Determine how many locales have text breaking information available.
499
* This function is most useful as determining the loop ending condition for
500
* calls to \ref ubrk_getAvailable.
501
* @return The number of locales for which text breaking information is available.
502
* @see ubrk_getAvailable
503
* @stable ICU 2.0
504
*/
505
U_STABLE int32_t U_EXPORT2
506
ubrk_countAvailable(void);
507
508
509
/**
510
* Returns true if the specified position is a boundary position. As a side
511
* effect, leaves the iterator pointing to the first boundary position at
512
* or after "offset".
513
* @param bi The break iterator to use.
514
* @param offset the offset to check.
515
* @return True if "offset" is a boundary position.
516
* @stable ICU 2.0
517
*/
518
U_STABLE UBool U_EXPORT2
519
ubrk_isBoundary(UBreakIterator *bi, int32_t offset);
520
521
/**
522
* Return the status from the break rule that determined the most recently
523
* returned break position. The values appear in the rule source
524
* within brackets, {123}, for example. For rules that do not specify a
525
* status, a default value of 0 is returned.
526
* <p>
527
* For word break iterators, the possible values are defined in enum UWordBreak.
528
* @stable ICU 2.2
529
*/
530
U_STABLE int32_t U_EXPORT2
531
ubrk_getRuleStatus(UBreakIterator *bi);
532
533
/**
534
* Get the statuses from the break rules that determined the most recently
535
* returned break position. The values appear in the rule source
536
* within brackets, {123}, for example. The default status value for rules
537
* that do not explicitly provide one is zero.
538
* <p>
539
* For word break iterators, the possible values are defined in enum UWordBreak.
540
* @param bi The break iterator to use
541
* @param fillInVec an array to be filled in with the status values.
542
* @param capacity the length of the supplied vector. A length of zero causes
543
* the function to return the number of status values, in the
544
* normal way, without attempting to store any values.
545
* @param status receives error codes.
546
* @return The number of rule status values from rules that determined
547
* the most recent boundary returned by the break iterator.
548
* @stable ICU 3.0
549
*/
550
U_STABLE int32_t U_EXPORT2
551
ubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status);
552
553
/**
554
* Return the locale of the break iterator. You can choose between the valid and
555
* the actual locale.
556
* @param bi break iterator
557
* @param type locale type (valid or actual)
558
* @param status error code
559
* @return locale string
560
* @stable ICU 2.8
561
*/
562
U_STABLE const char* U_EXPORT2
563
ubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status);
564
565
/**
566
* Set the subject text string upon which the break iterator is operating
567
* without changing any other aspect of the state.
568
* The new and previous text strings must have the same content.
569
*
570
* This function is intended for use in environments where ICU is operating on
571
* strings that may move around in memory. It provides a mechanism for notifying
572
* ICU that the string has been relocated, and providing a new UText to access the
573
* string in its new position.
574
*
575
* Note that the break iterator never copies the underlying text
576
* of a string being processed, but always operates directly on the original text
577
* provided by the user. Refreshing simply drops the references to the old text
578
* and replaces them with references to the new.
579
*
580
* Caution: this function is normally used only by very specialized
581
* system-level code. One example use case is with garbage collection
582
* that moves the text in memory.
583
*
584
* @param bi The break iterator.
585
* @param text The new (moved) text string.
586
* @param status Receives errors detected by this function.
587
*
588
* @stable ICU 49
589
*/
590
U_STABLE void U_EXPORT2
591
ubrk_refreshUText(UBreakIterator *bi,
592
UText *text,
593
UErrorCode *status);
594
595
596
/**
597
* Get a compiled binary version of the rules specifying the behavior of a UBreakIterator.
598
* The binary rules may be used with ubrk_openBinaryRules to open a new UBreakIterator
599
* more quickly than using ubrk_openRules. The compiled rules are not compatible across
600
* different major versions of ICU, nor across platforms of different endianness or
601
* different base character set family (ASCII vs EBCDIC). Supports preflighting (with
602
* binaryRules=NULL and rulesCapacity=0) to get the rules length without copying them to
603
* the binaryRules buffer. However, whether preflighting or not, if the actual length
604
* is greater than INT32_MAX, then the function returns 0 and sets *status to
605
* U_INDEX_OUTOFBOUNDS_ERROR.
606
607
* @param bi The break iterator to use.
608
* @param binaryRules Buffer to receive the compiled binary rules; set to NULL for
609
* preflighting.
610
* @param rulesCapacity Capacity (in bytes) of the binaryRules buffer; set to 0 for
611
* preflighting. Must be >= 0.
612
* @param status Pointer to UErrorCode to receive any errors, such as
613
* U_BUFFER_OVERFLOW_ERROR, U_INDEX_OUTOFBOUNDS_ERROR, or
614
* U_ILLEGAL_ARGUMENT_ERROR.
615
* @return The actual byte length of the binary rules, if <= INT32_MAX;
616
* otherwise 0. If not preflighting and this is larger than
617
* rulesCapacity, *status will be set to an error.
618
* @see ubrk_openBinaryRules
619
* @stable ICU 59
620
*/
621
U_STABLE int32_t U_EXPORT2
622
ubrk_getBinaryRules(UBreakIterator *bi,
623
uint8_t * binaryRules, int32_t rulesCapacity,
624
UErrorCode * status);
625
626
#endif /* #if !UCONFIG_NO_BREAK_ITERATION */
627
628
#endif
629
630