xref: /aosp_15_r20/external/icu/libicu/cts_headers/brkeng.h (revision 0e209d3975ff4a8c132096b14b0e9364a753506e)
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