godot/thirdparty/icu4c/common/unicode/rbbi.h

// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
***************************************************************************
*   Copyright (C) 1999-2016 International Business Machines Corporation   *
*   and others. All rights reserved.                                      *
***************************************************************************

**********************************************************************
*   Date        Name        Description
*   10/22/99    alan        Creation.
*   11/11/99    rgillam     Complete port from Java.
**********************************************************************
*/

#ifndef RBBI_H
#define RBBI_H

#include "unicode/utypes.h"

#if U_SHOW_CPLUSPLUS_API

/**
 * \file
 * \brief C++ API: Rule Based Break Iterator
 */

#if !UCONFIG_NO_BREAK_ITERATION

#include "unicode/brkiter.h"
#include "unicode/udata.h"
#include "unicode/parseerr.h"
#include "unicode/schriter.h"

struct UCPTrie;

U_NAMESPACE_BEGIN

/** @internal */
class  LanguageBreakEngine;
struct RBBIDataHeader;
class  RBBIDataWrapper;
class  UnhandledEngine;
class  UStack;


#ifndef U_HIDE_INTERNAL_API
/**
 * The ExternalBreakEngine class define an abstract interface for the host environment
 * to provide a low level facility to break text for unicode text in script that the text boundary
 * cannot be handled by upper level rule based logic, for example, for Chinese and Japanese
 * word breaking, Thai, Khmer, Burmese, Lao and other Southeast Asian scripts.
 * The host environment implement one or more subclass of ExternalBreakEngine and
 * register them in the initialization time by calling
 * RuleBasedBreakIterator::registerExternalBreakEngine(). ICU adopt and own the engine and will
 * delete the registered external engine in proper time during the clean up
 * event.
 * @internal ICU 74 technology preview
 */
class ExternalBreakEngine : public UObject {};
#endif  /* U_HIDE_INTERNAL_API */


/**
 *
 * A subclass of BreakIterator whose behavior is specified using a list of rules.
 * <p>Instances of this class are most commonly created by the factory methods of
 *  BreakIterator::createWordInstance(), BreakIterator::createLineInstance(), etc.,
 *  and then used via the abstract API in class BreakIterator</p>
 *
 * <p>See the ICU User Guide for information on Break Iterator Rules.</p>
 *
 * <p>This class is not intended to be subclassed.</p>
 */
class U_COMMON_API RuleBasedBreakIterator /*final*/ : public BreakIterator {};


U_NAMESPACE_END

#endif /* #if !UCONFIG_NO_BREAK_ITERATION */

#endif /* U_SHOW_CPLUSPLUS_API */

#endif