1// © 2016 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html 3/* 4******************************************************************************* 5* Copyright (C) 2011, International Business Machines 6* Corporation and others. All Rights Reserved. 7******************************************************************************* 8* file name: unistr_titlecase_brkiter.cpp 9* encoding: UTF-8 10* tab size: 8 (not used) 11* indentation:2 12* 13* created on: 2011may30 14* created by: Markus W. Scherer 15* 16* Titlecasing functions that are based on BreakIterator 17* were moved here to break dependency cycles among parts of the common library. 18*/ 19 20#include "unicode/utypes.h" 21 22#if !UCONFIG_NO_BREAK_ITERATION 23 24#include "unicode/brkiter.h" 25#include "unicode/locid.h" 26#include "unicode/ucasemap.h" 27#include "unicode/unistr.h" 28#include "ucasemap_imp.h" 29 30U_NAMESPACE_BEGIN 31 32UnicodeString & 33UnicodeString::toTitle(BreakIterator *iter) { 34 return toTitle(iter, Locale::getDefault(), 0); 35} 36 37UnicodeString & 38UnicodeString::toTitle(BreakIterator *iter, const Locale &locale) { 39 return toTitle(iter, locale, 0); 40} 41 42UnicodeString & 43UnicodeString::toTitle(BreakIterator *iter, const Locale &locale, uint32_t options) { 44 LocalPointer<BreakIterator> ownedIter; 45 UErrorCode errorCode = U_ZERO_ERROR; 46 iter = ustrcase_getTitleBreakIterator(&locale, "", options, iter, ownedIter, errorCode); 47 if (iter == nullptr) { 48 setToBogus(); 49 return *this; 50 } 51 caseMap(ustrcase_getCaseLocale(locale.getBaseName()), options, iter, ustrcase_internalToTitle); 52 return *this; 53} 54 55U_NAMESPACE_END 56 57#endif // !UCONFIG_NO_BREAK_ITERATION 58