// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /** ************************************************************************************ * Copyright (C) 2006-2012, International Business Machines Corporation and others. * * All Rights Reserved. * ************************************************************************************ */ #ifndef BRKENG_H #define BRKENG_H #include "unicode/umisc.h" #include "unicode/utypes.h" #include "unicode/uobject.h" #include "unicode/utext.h" #include "unicode/uscript.h" U_NAMESPACE_BEGIN class UnicodeSet; class UStack; class UVector32; class DictionaryMatcher; class ExternalBreakEngine; /******************************************************************* * LanguageBreakEngine */ /** * <p>LanguageBreakEngines implement language-specific knowledge for * finding text boundaries within a run of characters belonging to a * specific set. The boundaries will be of a specific kind, e.g. word, * line, etc.</p> * * <p>LanguageBreakEngines should normally be implemented so as to * be shared between threads without locking.</p> */ class LanguageBreakEngine : public UObject { … }; /******************************************************************* * BreakEngineWrapper */ /** * <p>BreakEngineWrapper implement LanguageBreakEngine by * a thin wrapper that delegate the task to ExternalBreakEngine * </p> */ class BreakEngineWrapper : public LanguageBreakEngine { … }; /******************************************************************* * LanguageBreakFactory */ /** * <p>LanguageBreakFactorys find and return a LanguageBreakEngine * that can determine breaks for characters in a specific set, if * such an object can be found.</p> * * <p>If a LanguageBreakFactory is to be shared between threads, * appropriate synchronization must be used; there is none internal * to the factory.</p> * * <p>A LanguageBreakEngine returned by a LanguageBreakFactory can * normally be shared between threads without synchronization, unless * the specific subclass of LanguageBreakFactory indicates otherwise.</p> * * <p>A LanguageBreakFactory is responsible for deleting any LanguageBreakEngine * it returns when it itself is deleted, unless the specific subclass of * LanguageBreakFactory indicates otherwise. Naturally, the factory should * not be deleted until the LanguageBreakEngines it has returned are no * longer needed.</p> */ class LanguageBreakFactory : public UMemory { … }; /******************************************************************* * UnhandledEngine */ /** * <p>UnhandledEngine is a special subclass of LanguageBreakEngine that * handles characters that no other LanguageBreakEngine is available to * handle. It is told the character and the type of break; at its * discretion it may handle more than the specified character (e.g., * the entire script to which that character belongs.</p> * * <p>UnhandledEngines may not be shared between threads without * external synchronization.</p> */ class UnhandledEngine : public LanguageBreakEngine { … }; /******************************************************************* * ICULanguageBreakFactory */ /** * <p>ICULanguageBreakFactory is the default LanguageBreakFactory for * ICU. It creates dictionary-based LanguageBreakEngines from dictionary * data in the ICU data file.</p> */ class ICULanguageBreakFactory : public LanguageBreakFactory { … }; U_NAMESPACE_END /* BRKENG_H */ #endif