1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others. 2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html 3*0e209d39SAndroid Build Coastguard Worker /** 4*0e209d39SAndroid Build Coastguard Worker ************************************************************************************ 5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 2006-2012, International Business Machines Corporation and others. * 6*0e209d39SAndroid Build Coastguard Worker * All Rights Reserved. * 7*0e209d39SAndroid Build Coastguard Worker ************************************************************************************ 8*0e209d39SAndroid Build Coastguard Worker */ 9*0e209d39SAndroid Build Coastguard Worker 10*0e209d39SAndroid Build Coastguard Worker #ifndef BRKENG_H 11*0e209d39SAndroid Build Coastguard Worker #define BRKENG_H 12*0e209d39SAndroid Build Coastguard Worker 13*0e209d39SAndroid Build Coastguard Worker #include "unicode/umisc.h" 14*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h" 15*0e209d39SAndroid Build Coastguard Worker #include "unicode/uobject.h" 16*0e209d39SAndroid Build Coastguard Worker #include "unicode/utext.h" 17*0e209d39SAndroid Build Coastguard Worker #include "unicode/uscript.h" 18*0e209d39SAndroid Build Coastguard Worker 19*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 20*0e209d39SAndroid Build Coastguard Worker 21*0e209d39SAndroid Build Coastguard Worker class UnicodeSet; 22*0e209d39SAndroid Build Coastguard Worker class UStack; 23*0e209d39SAndroid Build Coastguard Worker class UVector32; 24*0e209d39SAndroid Build Coastguard Worker class DictionaryMatcher; 25*0e209d39SAndroid Build Coastguard Worker class ExternalBreakEngine; 26*0e209d39SAndroid Build Coastguard Worker 27*0e209d39SAndroid Build Coastguard Worker /******************************************************************* 28*0e209d39SAndroid Build Coastguard Worker * LanguageBreakEngine 29*0e209d39SAndroid Build Coastguard Worker */ 30*0e209d39SAndroid Build Coastguard Worker 31*0e209d39SAndroid Build Coastguard Worker /** 32*0e209d39SAndroid Build Coastguard Worker * <p>LanguageBreakEngines implement language-specific knowledge for 33*0e209d39SAndroid Build Coastguard Worker * finding text boundaries within a run of characters belonging to a 34*0e209d39SAndroid Build Coastguard Worker * specific set. The boundaries will be of a specific kind, e.g. word, 35*0e209d39SAndroid Build Coastguard Worker * line, etc.</p> 36*0e209d39SAndroid Build Coastguard Worker * 37*0e209d39SAndroid Build Coastguard Worker * <p>LanguageBreakEngines should normally be implemented so as to 38*0e209d39SAndroid Build Coastguard Worker * be shared between threads without locking.</p> 39*0e209d39SAndroid Build Coastguard Worker */ 40*0e209d39SAndroid Build Coastguard Worker class LanguageBreakEngine : public UObject { 41*0e209d39SAndroid Build Coastguard Worker public: 42*0e209d39SAndroid Build Coastguard Worker 43*0e209d39SAndroid Build Coastguard Worker /** 44*0e209d39SAndroid Build Coastguard Worker * <p>Default constructor.</p> 45*0e209d39SAndroid Build Coastguard Worker * 46*0e209d39SAndroid Build Coastguard Worker */ 47*0e209d39SAndroid Build Coastguard Worker LanguageBreakEngine(); 48*0e209d39SAndroid Build Coastguard Worker 49*0e209d39SAndroid Build Coastguard Worker /** 50*0e209d39SAndroid Build Coastguard Worker * <p>Virtual destructor.</p> 51*0e209d39SAndroid Build Coastguard Worker */ 52*0e209d39SAndroid Build Coastguard Worker virtual ~LanguageBreakEngine(); 53*0e209d39SAndroid Build Coastguard Worker 54*0e209d39SAndroid Build Coastguard Worker /** 55*0e209d39SAndroid Build Coastguard Worker * <p>Indicate whether this engine handles a particular character for 56*0e209d39SAndroid Build Coastguard Worker * a particular kind of break.</p> 57*0e209d39SAndroid Build Coastguard Worker * 58*0e209d39SAndroid Build Coastguard Worker * @param c A character which begins a run that the engine might handle 59*0e209d39SAndroid Build Coastguard Worker * @param locale The locale. 60*0e209d39SAndroid Build Coastguard Worker * @return true if this engine handles the particular character and break 61*0e209d39SAndroid Build Coastguard Worker * type. 62*0e209d39SAndroid Build Coastguard Worker */ 63*0e209d39SAndroid Build Coastguard Worker virtual UBool handles(UChar32 c, const char* locale) const = 0; 64*0e209d39SAndroid Build Coastguard Worker 65*0e209d39SAndroid Build Coastguard Worker /** 66*0e209d39SAndroid Build Coastguard Worker * <p>Find any breaks within a run in the supplied text.</p> 67*0e209d39SAndroid Build Coastguard Worker * 68*0e209d39SAndroid Build Coastguard Worker * @param text A UText representing the text. The 69*0e209d39SAndroid Build Coastguard Worker * iterator is left at the end of the run of characters which the engine 70*0e209d39SAndroid Build Coastguard Worker * is capable of handling. 71*0e209d39SAndroid Build Coastguard Worker * @param startPos The start of the run within the supplied text. 72*0e209d39SAndroid Build Coastguard Worker * @param endPos The end of the run within the supplied text. 73*0e209d39SAndroid Build Coastguard Worker * @param foundBreaks A Vector of int32_t to receive the breaks. 74*0e209d39SAndroid Build Coastguard Worker * @param status Information on any errors encountered. 75*0e209d39SAndroid Build Coastguard Worker * @return The number of breaks found. 76*0e209d39SAndroid Build Coastguard Worker */ 77*0e209d39SAndroid Build Coastguard Worker virtual int32_t findBreaks( UText *text, 78*0e209d39SAndroid Build Coastguard Worker int32_t startPos, 79*0e209d39SAndroid Build Coastguard Worker int32_t endPos, 80*0e209d39SAndroid Build Coastguard Worker UVector32 &foundBreaks, 81*0e209d39SAndroid Build Coastguard Worker UBool isPhraseBreaking, 82*0e209d39SAndroid Build Coastguard Worker UErrorCode &status) const = 0; 83*0e209d39SAndroid Build Coastguard Worker 84*0e209d39SAndroid Build Coastguard Worker }; 85*0e209d39SAndroid Build Coastguard Worker 86*0e209d39SAndroid Build Coastguard Worker /******************************************************************* 87*0e209d39SAndroid Build Coastguard Worker * BreakEngineWrapper 88*0e209d39SAndroid Build Coastguard Worker */ 89*0e209d39SAndroid Build Coastguard Worker 90*0e209d39SAndroid Build Coastguard Worker /** 91*0e209d39SAndroid Build Coastguard Worker * <p>BreakEngineWrapper implement LanguageBreakEngine by 92*0e209d39SAndroid Build Coastguard Worker * a thin wrapper that delegate the task to ExternalBreakEngine 93*0e209d39SAndroid Build Coastguard Worker * </p> 94*0e209d39SAndroid Build Coastguard Worker */ 95*0e209d39SAndroid Build Coastguard Worker class BreakEngineWrapper : public LanguageBreakEngine { 96*0e209d39SAndroid Build Coastguard Worker public: 97*0e209d39SAndroid Build Coastguard Worker 98*0e209d39SAndroid Build Coastguard Worker BreakEngineWrapper(ExternalBreakEngine* engine, UErrorCode &status); 99*0e209d39SAndroid Build Coastguard Worker 100*0e209d39SAndroid Build Coastguard Worker virtual ~BreakEngineWrapper(); 101*0e209d39SAndroid Build Coastguard Worker 102*0e209d39SAndroid Build Coastguard Worker virtual UBool handles(UChar32 c, const char* locale) const override; 103*0e209d39SAndroid Build Coastguard Worker 104*0e209d39SAndroid Build Coastguard Worker virtual int32_t findBreaks( UText *text, 105*0e209d39SAndroid Build Coastguard Worker int32_t startPos, 106*0e209d39SAndroid Build Coastguard Worker int32_t endPos, 107*0e209d39SAndroid Build Coastguard Worker UVector32 &foundBreaks, 108*0e209d39SAndroid Build Coastguard Worker UBool isPhraseBreaking, 109*0e209d39SAndroid Build Coastguard Worker UErrorCode &status) const override; 110*0e209d39SAndroid Build Coastguard Worker 111*0e209d39SAndroid Build Coastguard Worker private: 112*0e209d39SAndroid Build Coastguard Worker LocalPointer<ExternalBreakEngine> delegate; 113*0e209d39SAndroid Build Coastguard Worker }; 114*0e209d39SAndroid Build Coastguard Worker 115*0e209d39SAndroid Build Coastguard Worker /******************************************************************* 116*0e209d39SAndroid Build Coastguard Worker * LanguageBreakFactory 117*0e209d39SAndroid Build Coastguard Worker */ 118*0e209d39SAndroid Build Coastguard Worker 119*0e209d39SAndroid Build Coastguard Worker /** 120*0e209d39SAndroid Build Coastguard Worker * <p>LanguageBreakFactorys find and return a LanguageBreakEngine 121*0e209d39SAndroid Build Coastguard Worker * that can determine breaks for characters in a specific set, if 122*0e209d39SAndroid Build Coastguard Worker * such an object can be found.</p> 123*0e209d39SAndroid Build Coastguard Worker * 124*0e209d39SAndroid Build Coastguard Worker * <p>If a LanguageBreakFactory is to be shared between threads, 125*0e209d39SAndroid Build Coastguard Worker * appropriate synchronization must be used; there is none internal 126*0e209d39SAndroid Build Coastguard Worker * to the factory.</p> 127*0e209d39SAndroid Build Coastguard Worker * 128*0e209d39SAndroid Build Coastguard Worker * <p>A LanguageBreakEngine returned by a LanguageBreakFactory can 129*0e209d39SAndroid Build Coastguard Worker * normally be shared between threads without synchronization, unless 130*0e209d39SAndroid Build Coastguard Worker * the specific subclass of LanguageBreakFactory indicates otherwise.</p> 131*0e209d39SAndroid Build Coastguard Worker * 132*0e209d39SAndroid Build Coastguard Worker * <p>A LanguageBreakFactory is responsible for deleting any LanguageBreakEngine 133*0e209d39SAndroid Build Coastguard Worker * it returns when it itself is deleted, unless the specific subclass of 134*0e209d39SAndroid Build Coastguard Worker * LanguageBreakFactory indicates otherwise. Naturally, the factory should 135*0e209d39SAndroid Build Coastguard Worker * not be deleted until the LanguageBreakEngines it has returned are no 136*0e209d39SAndroid Build Coastguard Worker * longer needed.</p> 137*0e209d39SAndroid Build Coastguard Worker */ 138*0e209d39SAndroid Build Coastguard Worker class LanguageBreakFactory : public UMemory { 139*0e209d39SAndroid Build Coastguard Worker public: 140*0e209d39SAndroid Build Coastguard Worker 141*0e209d39SAndroid Build Coastguard Worker /** 142*0e209d39SAndroid Build Coastguard Worker * <p>Default constructor.</p> 143*0e209d39SAndroid Build Coastguard Worker * 144*0e209d39SAndroid Build Coastguard Worker */ 145*0e209d39SAndroid Build Coastguard Worker LanguageBreakFactory(); 146*0e209d39SAndroid Build Coastguard Worker 147*0e209d39SAndroid Build Coastguard Worker /** 148*0e209d39SAndroid Build Coastguard Worker * <p>Virtual destructor.</p> 149*0e209d39SAndroid Build Coastguard Worker */ 150*0e209d39SAndroid Build Coastguard Worker virtual ~LanguageBreakFactory(); 151*0e209d39SAndroid Build Coastguard Worker 152*0e209d39SAndroid Build Coastguard Worker /** 153*0e209d39SAndroid Build Coastguard Worker * <p>Find and return a LanguageBreakEngine that can find the desired 154*0e209d39SAndroid Build Coastguard Worker * kind of break for the set of characters to which the supplied 155*0e209d39SAndroid Build Coastguard Worker * character belongs. It is up to the set of available engines to 156*0e209d39SAndroid Build Coastguard Worker * determine what the sets of characters are.</p> 157*0e209d39SAndroid Build Coastguard Worker * 158*0e209d39SAndroid Build Coastguard Worker * @param c A character that begins a run for which a LanguageBreakEngine is 159*0e209d39SAndroid Build Coastguard Worker * sought. 160*0e209d39SAndroid Build Coastguard Worker * @param locale The locale. 161*0e209d39SAndroid Build Coastguard Worker * @return A LanguageBreakEngine with the desired characteristics, or 0. 162*0e209d39SAndroid Build Coastguard Worker */ 163*0e209d39SAndroid Build Coastguard Worker virtual const LanguageBreakEngine *getEngineFor(UChar32 c, const char* locale) = 0; 164*0e209d39SAndroid Build Coastguard Worker 165*0e209d39SAndroid Build Coastguard Worker }; 166*0e209d39SAndroid Build Coastguard Worker 167*0e209d39SAndroid Build Coastguard Worker /******************************************************************* 168*0e209d39SAndroid Build Coastguard Worker * UnhandledEngine 169*0e209d39SAndroid Build Coastguard Worker */ 170*0e209d39SAndroid Build Coastguard Worker 171*0e209d39SAndroid Build Coastguard Worker /** 172*0e209d39SAndroid Build Coastguard Worker * <p>UnhandledEngine is a special subclass of LanguageBreakEngine that 173*0e209d39SAndroid Build Coastguard Worker * handles characters that no other LanguageBreakEngine is available to 174*0e209d39SAndroid Build Coastguard Worker * handle. It is told the character and the type of break; at its 175*0e209d39SAndroid Build Coastguard Worker * discretion it may handle more than the specified character (e.g., 176*0e209d39SAndroid Build Coastguard Worker * the entire script to which that character belongs.</p> 177*0e209d39SAndroid Build Coastguard Worker * 178*0e209d39SAndroid Build Coastguard Worker * <p>UnhandledEngines may not be shared between threads without 179*0e209d39SAndroid Build Coastguard Worker * external synchronization.</p> 180*0e209d39SAndroid Build Coastguard Worker */ 181*0e209d39SAndroid Build Coastguard Worker 182*0e209d39SAndroid Build Coastguard Worker class UnhandledEngine : public LanguageBreakEngine { 183*0e209d39SAndroid Build Coastguard Worker private: 184*0e209d39SAndroid Build Coastguard Worker 185*0e209d39SAndroid Build Coastguard Worker /** 186*0e209d39SAndroid Build Coastguard Worker * The sets of characters handled. 187*0e209d39SAndroid Build Coastguard Worker * @internal 188*0e209d39SAndroid Build Coastguard Worker */ 189*0e209d39SAndroid Build Coastguard Worker 190*0e209d39SAndroid Build Coastguard Worker UnicodeSet *fHandled; 191*0e209d39SAndroid Build Coastguard Worker 192*0e209d39SAndroid Build Coastguard Worker public: 193*0e209d39SAndroid Build Coastguard Worker 194*0e209d39SAndroid Build Coastguard Worker /** 195*0e209d39SAndroid Build Coastguard Worker * <p>Default constructor.</p> 196*0e209d39SAndroid Build Coastguard Worker * 197*0e209d39SAndroid Build Coastguard Worker */ 198*0e209d39SAndroid Build Coastguard Worker UnhandledEngine(UErrorCode &status); 199*0e209d39SAndroid Build Coastguard Worker 200*0e209d39SAndroid Build Coastguard Worker /** 201*0e209d39SAndroid Build Coastguard Worker * <p>Virtual destructor.</p> 202*0e209d39SAndroid Build Coastguard Worker */ 203*0e209d39SAndroid Build Coastguard Worker virtual ~UnhandledEngine(); 204*0e209d39SAndroid Build Coastguard Worker 205*0e209d39SAndroid Build Coastguard Worker /** 206*0e209d39SAndroid Build Coastguard Worker * <p>Indicate whether this engine handles a particular character for 207*0e209d39SAndroid Build Coastguard Worker * a particular kind of break.</p> 208*0e209d39SAndroid Build Coastguard Worker * 209*0e209d39SAndroid Build Coastguard Worker * @param c A character which begins a run that the engine might handle 210*0e209d39SAndroid Build Coastguard Worker * @param locale The locale. 211*0e209d39SAndroid Build Coastguard Worker * @return true if this engine handles the particular character and break 212*0e209d39SAndroid Build Coastguard Worker * type. 213*0e209d39SAndroid Build Coastguard Worker */ 214*0e209d39SAndroid Build Coastguard Worker virtual UBool handles(UChar32 c, const char* locale) const override; 215*0e209d39SAndroid Build Coastguard Worker 216*0e209d39SAndroid Build Coastguard Worker /** 217*0e209d39SAndroid Build Coastguard Worker * <p>Find any breaks within a run in the supplied text.</p> 218*0e209d39SAndroid Build Coastguard Worker * 219*0e209d39SAndroid Build Coastguard Worker * @param text A UText representing the text (TODO: UText). The 220*0e209d39SAndroid Build Coastguard Worker * iterator is left at the end of the run of characters which the engine 221*0e209d39SAndroid Build Coastguard Worker * is capable of handling. 222*0e209d39SAndroid Build Coastguard Worker * @param startPos The start of the run within the supplied text. 223*0e209d39SAndroid Build Coastguard Worker * @param endPos The end of the run within the supplied text. 224*0e209d39SAndroid Build Coastguard Worker * @param foundBreaks An allocated C array of the breaks found, if any 225*0e209d39SAndroid Build Coastguard Worker * @param status Information on any errors encountered. 226*0e209d39SAndroid Build Coastguard Worker * @return The number of breaks found. 227*0e209d39SAndroid Build Coastguard Worker */ 228*0e209d39SAndroid Build Coastguard Worker virtual int32_t findBreaks( UText *text, 229*0e209d39SAndroid Build Coastguard Worker int32_t startPos, 230*0e209d39SAndroid Build Coastguard Worker int32_t endPos, 231*0e209d39SAndroid Build Coastguard Worker UVector32 &foundBreaks, 232*0e209d39SAndroid Build Coastguard Worker UBool isPhraseBreaking, 233*0e209d39SAndroid Build Coastguard Worker UErrorCode &status) const override; 234*0e209d39SAndroid Build Coastguard Worker 235*0e209d39SAndroid Build Coastguard Worker /** 236*0e209d39SAndroid Build Coastguard Worker * <p>Tell the engine to handle a particular character and break type.</p> 237*0e209d39SAndroid Build Coastguard Worker * 238*0e209d39SAndroid Build Coastguard Worker * @param c A character which the engine should handle 239*0e209d39SAndroid Build Coastguard Worker */ 240*0e209d39SAndroid Build Coastguard Worker virtual void handleCharacter(UChar32 c); 241*0e209d39SAndroid Build Coastguard Worker 242*0e209d39SAndroid Build Coastguard Worker }; 243*0e209d39SAndroid Build Coastguard Worker 244*0e209d39SAndroid Build Coastguard Worker /******************************************************************* 245*0e209d39SAndroid Build Coastguard Worker * ICULanguageBreakFactory 246*0e209d39SAndroid Build Coastguard Worker */ 247*0e209d39SAndroid Build Coastguard Worker 248*0e209d39SAndroid Build Coastguard Worker /** 249*0e209d39SAndroid Build Coastguard Worker * <p>ICULanguageBreakFactory is the default LanguageBreakFactory for 250*0e209d39SAndroid Build Coastguard Worker * ICU. It creates dictionary-based LanguageBreakEngines from dictionary 251*0e209d39SAndroid Build Coastguard Worker * data in the ICU data file.</p> 252*0e209d39SAndroid Build Coastguard Worker */ 253*0e209d39SAndroid Build Coastguard Worker class ICULanguageBreakFactory : public LanguageBreakFactory { 254*0e209d39SAndroid Build Coastguard Worker private: 255*0e209d39SAndroid Build Coastguard Worker 256*0e209d39SAndroid Build Coastguard Worker /** 257*0e209d39SAndroid Build Coastguard Worker * The stack of break engines created by this factory 258*0e209d39SAndroid Build Coastguard Worker * @internal 259*0e209d39SAndroid Build Coastguard Worker */ 260*0e209d39SAndroid Build Coastguard Worker 261*0e209d39SAndroid Build Coastguard Worker UStack *fEngines; 262*0e209d39SAndroid Build Coastguard Worker 263*0e209d39SAndroid Build Coastguard Worker public: 264*0e209d39SAndroid Build Coastguard Worker 265*0e209d39SAndroid Build Coastguard Worker /** 266*0e209d39SAndroid Build Coastguard Worker * <p>Standard constructor.</p> 267*0e209d39SAndroid Build Coastguard Worker * 268*0e209d39SAndroid Build Coastguard Worker */ 269*0e209d39SAndroid Build Coastguard Worker ICULanguageBreakFactory(UErrorCode &status); 270*0e209d39SAndroid Build Coastguard Worker 271*0e209d39SAndroid Build Coastguard Worker /** 272*0e209d39SAndroid Build Coastguard Worker * <p>Virtual destructor.</p> 273*0e209d39SAndroid Build Coastguard Worker */ 274*0e209d39SAndroid Build Coastguard Worker virtual ~ICULanguageBreakFactory(); 275*0e209d39SAndroid Build Coastguard Worker 276*0e209d39SAndroid Build Coastguard Worker /** 277*0e209d39SAndroid Build Coastguard Worker * <p>Find and return a LanguageBreakEngine that can find the desired 278*0e209d39SAndroid Build Coastguard Worker * kind of break for the set of characters to which the supplied 279*0e209d39SAndroid Build Coastguard Worker * character belongs. It is up to the set of available engines to 280*0e209d39SAndroid Build Coastguard Worker * determine what the sets of characters are.</p> 281*0e209d39SAndroid Build Coastguard Worker * 282*0e209d39SAndroid Build Coastguard Worker * @param c A character that begins a run for which a LanguageBreakEngine is 283*0e209d39SAndroid Build Coastguard Worker * sought. 284*0e209d39SAndroid Build Coastguard Worker * @param locale The locale. 285*0e209d39SAndroid Build Coastguard Worker * @return A LanguageBreakEngine with the desired characteristics, or 0. 286*0e209d39SAndroid Build Coastguard Worker */ 287*0e209d39SAndroid Build Coastguard Worker virtual const LanguageBreakEngine *getEngineFor(UChar32 c, const char* locale) override; 288*0e209d39SAndroid Build Coastguard Worker 289*0e209d39SAndroid Build Coastguard Worker /** 290*0e209d39SAndroid Build Coastguard Worker * Add and adopt the engine and return an URegistryKey. 291*0e209d39SAndroid Build Coastguard Worker * @param engine The ExternalBreakEngine to be added and adopt. The caller 292*0e209d39SAndroid Build Coastguard Worker * pass the ownership and should not release the memory after this. 293*0e209d39SAndroid Build Coastguard Worker * @param status the error code. 294*0e209d39SAndroid Build Coastguard Worker */ 295*0e209d39SAndroid Build Coastguard Worker virtual void addExternalEngine(ExternalBreakEngine* engine, UErrorCode& status); 296*0e209d39SAndroid Build Coastguard Worker 297*0e209d39SAndroid Build Coastguard Worker protected: 298*0e209d39SAndroid Build Coastguard Worker /** 299*0e209d39SAndroid Build Coastguard Worker * <p>Create a LanguageBreakEngine for the set of characters to which 300*0e209d39SAndroid Build Coastguard Worker * the supplied character belongs, for the specified break type.</p> 301*0e209d39SAndroid Build Coastguard Worker * 302*0e209d39SAndroid Build Coastguard Worker * @param c A character that begins a run for which a LanguageBreakEngine is 303*0e209d39SAndroid Build Coastguard Worker * sought. 304*0e209d39SAndroid Build Coastguard Worker * @param locale The locale. 305*0e209d39SAndroid Build Coastguard Worker * @return A LanguageBreakEngine with the desired characteristics, or 0. 306*0e209d39SAndroid Build Coastguard Worker */ 307*0e209d39SAndroid Build Coastguard Worker virtual const LanguageBreakEngine *loadEngineFor(UChar32 c, const char* locale); 308*0e209d39SAndroid Build Coastguard Worker 309*0e209d39SAndroid Build Coastguard Worker /** 310*0e209d39SAndroid Build Coastguard Worker * <p>Create a DictionaryMatcher for the specified script and break type.</p> 311*0e209d39SAndroid Build Coastguard Worker * @param script An ISO 15924 script code that identifies the dictionary to be 312*0e209d39SAndroid Build Coastguard Worker * created. 313*0e209d39SAndroid Build Coastguard Worker * @return A DictionaryMatcher with the desired characteristics, or nullptr. 314*0e209d39SAndroid Build Coastguard Worker */ 315*0e209d39SAndroid Build Coastguard Worker virtual DictionaryMatcher *loadDictionaryMatcherFor(UScriptCode script); 316*0e209d39SAndroid Build Coastguard Worker 317*0e209d39SAndroid Build Coastguard Worker private: 318*0e209d39SAndroid Build Coastguard Worker void ensureEngines(UErrorCode& status); 319*0e209d39SAndroid Build Coastguard Worker }; 320*0e209d39SAndroid Build Coastguard Worker 321*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 322*0e209d39SAndroid Build Coastguard Worker 323*0e209d39SAndroid Build Coastguard Worker /* BRKENG_H */ 324*0e209d39SAndroid Build Coastguard Worker #endif 325