// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html // // rbbirb.h // // Copyright (C) 2002-2008, International Business Machines Corporation and others. // All Rights Reserved. // // This file contains declarations for several classes from the // Rule Based Break Iterator rule builder. // #ifndef RBBIRB_H #define RBBIRB_H #include "unicode/utypes.h" #if !UCONFIG_NO_BREAK_ITERATION #include <utility> #include "unicode/uobject.h" #include "unicode/rbbi.h" #include "unicode/uniset.h" #include "unicode/parseerr.h" #include "uhash.h" #include "uvector.h" #include "unicode/symtable.h"// For UnicodeSet parsing, is the interface that // looks up references to $variables within a set. U_NAMESPACE_BEGIN class RBBIRuleScanner; struct RBBIRuleTableEl; class RBBISetBuilder; class RBBINode; class RBBITableBuilder; //-------------------------------------------------------------------------------- // // RBBISymbolTable. Implements SymbolTable interface that is used by the // UnicodeSet parser to resolve references to $variables. // //-------------------------------------------------------------------------------- class RBBISymbolTableEntry : public UMemory { … }; class RBBISymbolTable : public UMemory, public SymbolTable { … }; //-------------------------------------------------------------------------------- // // class RBBIRuleBuilder The top-level class handling RBBI rule compiling. // //-------------------------------------------------------------------------------- class RBBIRuleBuilder : public UMemory { … }; //---------------------------------------------------------------------------- // // RBBISetTableEl is an entry in the hash table of UnicodeSets that have // been encountered. The val Node will be of nodetype uset // and contain pointers to the actual UnicodeSets. // The Key is the source string for initializing the set. // // The hash table is used to avoid creating duplicate // unnamed (not $var references) UnicodeSets. // // Memory Management: // The Hash Table owns these RBBISetTableEl structs and // the key strings. It does NOT own the val nodes. // //---------------------------------------------------------------------------- struct RBBISetTableEl { … }; /** * A pair of ints, used to bundle pairs of states or pairs of character classes. */ IntPair; //---------------------------------------------------------------------------- // // RBBIDebugPrintf Printf equivalent, for debugging output. // Conditional compilation of the implementation lets us // get rid of the stdio dependency in environments where it // is unavailable. // //---------------------------------------------------------------------------- #ifdef RBBI_DEBUG #include <stdio.h> #define RBBIDebugPrintf … #define RBBIDebugPuts … #else #undef RBBIDebugPrintf #define RBBIDebugPuts(arg) … #endif U_NAMESPACE_END #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ #endif