1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho******************************************************************************** 359d709d503bab6e2b61931737e662dd293b40578ccornelius* Copyright (C) 1996-2013, International Business Machines 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho******************************************************************************** 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_BREAK_ITERATION 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ubrk.h" 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/brkiter.h" 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uloc.h" 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/ustring.h" 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/uchriter.h" 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/rbbi.h" 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "rbbirb.h" 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "uassert.h" 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_USE 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 2485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//------------------------------------------------------------------------------ 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// ubrk_open Create a canned type of break iterator based on type (word, line, etc.) 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// and locale. 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// 2985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//------------------------------------------------------------------------------ 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI UBreakIterator* U_EXPORT2 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_open(UBreakIteratorType type, 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const char *locale, 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar *text, 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t textLength, 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode *status) 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(*status)) return 0; 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru BreakIterator *result = 0; 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru switch(type) { 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru case UBRK_CHARACTER: 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru result = BreakIterator::createCharacterInstance(Locale(locale), *status); 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru break; 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru case UBRK_WORD: 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru result = BreakIterator::createWordInstance(Locale(locale), *status); 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru break; 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru case UBRK_LINE: 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru result = BreakIterator::createLineInstance(Locale(locale), *status); 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru break; 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru case UBRK_SENTENCE: 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru result = BreakIterator::createSentenceInstance(Locale(locale), *status); 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru break; 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru case UBRK_TITLE: 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru result = BreakIterator::createTitleInstance(Locale(locale), *status); 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru break; 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru default: 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *status = U_ILLEGAL_ARGUMENT_ERROR; 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // check for allocation error 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (U_FAILURE(*status)) { 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(result == 0) { 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *status = U_MEMORY_ALLOCATION_ERROR; 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBreakIterator *uBI = (UBreakIterator *)result; 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (text != NULL) { 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ubrk_setText(uBI, text, textLength, status); 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return uBI; 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 8785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//------------------------------------------------------------------------------ 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// ubrk_openRules open a break iterator from a set of break rules. 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// Invokes the rule builder. 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru// 9285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho//------------------------------------------------------------------------------ 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI UBreakIterator* U_EXPORT2 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_openRules( const UChar *rules, 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t rulesLength, 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar *text, 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t textLength, 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UParseError *parseErr, 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode *status) { 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (status == NULL || U_FAILURE(*status)){ 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru BreakIterator *result = 0; 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString ruleString(rules, rulesLength); 10785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho result = RBBIRuleBuilder::createRuleBasedBreakIterator(ruleString, parseErr, *status); 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if(U_FAILURE(*status)) { 109ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return 0; 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 112ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBreakIterator *uBI = (UBreakIterator *)result; 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (text != NULL) { 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ubrk_setText(uBI, text, textLength, status); 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return uBI; 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI UBreakIterator * U_EXPORT2 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_safeClone( 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UBreakIterator *bi, 12659d709d503bab6e2b61931737e662dd293b40578ccornelius void * /*stackBuffer*/, 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t *pBufferSize, 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode *status) 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (status == NULL || U_FAILURE(*status)){ 13159d709d503bab6e2b61931737e662dd293b40578ccornelius return NULL; 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 13359d709d503bab6e2b61931737e662dd293b40578ccornelius if (bi == NULL) { 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *status = U_ILLEGAL_ARGUMENT_ERROR; 13559d709d503bab6e2b61931737e662dd293b40578ccornelius return NULL; 13659d709d503bab6e2b61931737e662dd293b40578ccornelius } 13759d709d503bab6e2b61931737e662dd293b40578ccornelius if (pBufferSize != NULL) { 13859d709d503bab6e2b61931737e662dd293b40578ccornelius int32_t inputSize = *pBufferSize; 13959d709d503bab6e2b61931737e662dd293b40578ccornelius *pBufferSize = 1; 14059d709d503bab6e2b61931737e662dd293b40578ccornelius if (inputSize == 0) { 14159d709d503bab6e2b61931737e662dd293b40578ccornelius return NULL; // preflighting for deprecated functionality 14259d709d503bab6e2b61931737e662dd293b40578ccornelius } 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 14459d709d503bab6e2b61931737e662dd293b40578ccornelius BreakIterator *newBI = ((BreakIterator *)bi)->clone(); 14559d709d503bab6e2b61931737e662dd293b40578ccornelius if (newBI == NULL) { 14659d709d503bab6e2b61931737e662dd293b40578ccornelius *status = U_MEMORY_ALLOCATION_ERROR; 14759d709d503bab6e2b61931737e662dd293b40578ccornelius } else { 14859d709d503bab6e2b61931737e662dd293b40578ccornelius *status = U_SAFECLONE_ALLOCATED_WARNING; 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 15059d709d503bab6e2b61931737e662dd293b40578ccornelius return (UBreakIterator *)newBI; 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI void U_EXPORT2 156ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_close(UBreakIterator *bi) 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 15859d709d503bab6e2b61931737e662dd293b40578ccornelius delete (BreakIterator *)bi; 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI void U_EXPORT2 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_setText(UBreakIterator* bi, 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru const UChar* text, 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t textLength, 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode* status) 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru BreakIterator *brit = (BreakIterator *)bi; 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UText ut = UTEXT_INITIALIZER; 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru utext_openUChars(&ut, text, textLength, status); 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru brit->setText(&ut, *status); 17159d709d503bab6e2b61931737e662dd293b40578ccornelius // A stack allocated UText wrapping a UChar * string 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru // can be dumped without explicitly closing it. 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI void U_EXPORT2 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_setUText(UBreakIterator *bi, 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UText *text, 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode *status) 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru RuleBasedBreakIterator *brit = (RuleBasedBreakIterator *)bi; 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru brit->RuleBasedBreakIterator::setText(text, *status); 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_current(const UBreakIterator *bi) 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::current(); 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_next(UBreakIterator *bi) 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::next(); 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_previous(UBreakIterator *bi) 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::previous(); 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_first(UBreakIterator *bi) 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::first(); 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_last(UBreakIterator *bi) 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::last(); 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_preceding(UBreakIterator *bi, 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t offset) 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::preceding(offset); 231ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 232ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 233ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 234ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_following(UBreakIterator *bi, 235ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t offset) 236ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 237ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 238ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator*)bi)->RuleBasedBreakIterator::following(offset); 239ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 240ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 241ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI const char* U_EXPORT2 242ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_getAvailable(int32_t index) 243ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 244ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 245ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return uloc_getAvailable(index); 246ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 247ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 248ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 249ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_countAvailable() 250ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 251ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 252ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return uloc_countAvailable(); 253ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 254ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 255ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 256ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI UBool U_EXPORT2 257ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_isBoundary(UBreakIterator *bi, int32_t offset) 258ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 259ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator *)bi)->RuleBasedBreakIterator::isBoundary(offset); 260ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 261ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 262ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 263ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 264ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_getRuleStatus(UBreakIterator *bi) 265ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 266ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator *)bi)->RuleBasedBreakIterator::getRuleStatus(); 267ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 268ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 269ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI int32_t U_EXPORT2 270ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status) 271ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 272ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((RuleBasedBreakIterator *)bi)->RuleBasedBreakIterator::getRuleStatusVec(fillInVec, capacity, *status); 273ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 274ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 275ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 276ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_CAPI const char* U_EXPORT2 277ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruubrk_getLocaleByType(const UBreakIterator *bi, 278ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru ULocDataLocaleType type, 279ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode* status) 280ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru{ 281ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (bi == NULL) { 282ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru if (U_SUCCESS(*status)) { 283ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru *status = U_ILLEGAL_ARGUMENT_ERROR; 284ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 285ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return NULL; 286ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru } 287ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru return ((BreakIterator*)bi)->getLocaleID(type, *status); 288ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru} 289ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 290ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 2914fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughesvoid ubrk_refreshUText(UBreakIterator *bi, 2924fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes UText *text, 2934fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes UErrorCode *status) 2944fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes{ 2954fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes BreakIterator *bii = reinterpret_cast<BreakIterator *>(bi); 2964fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes bii->refreshInputText(text, *status); 2974fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes} 2984fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes 2994fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes 3004fceb0aeb072e9c6879c37fbcdcef2c4286c4719Elliott Hughes 301ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 302