ICU 62.1 62.1
Data Structures | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes
icu::StringTrieBuilder Class Referenceabstract

Base class for string trie builder classes. More...

#include <stringtriebuilder.h>

Inheritance diagram for icu::StringTrieBuilder:
icu::UObject icu::UMemory icu::BytesTrieBuilder icu::UCharsTrieBuilder

Data Structures

class  BranchHeadNode
 
class  BranchNode
 
class  FinalValueNode
 
class  IntermediateValueNode
 
class  LinearMatchNode
 
class  ListBranchNode
 
class  Node
 
class  SplitBranchNode
 
class  ValueNode
 

Static Public Member Functions

static UBool hashNode (const void *node)
 
static UBool equalNodes (const void *left, const void *right)
 

Protected Member Functions

 StringTrieBuilder ()
 
virtual ~StringTrieBuilder ()
 
void createCompactBuilder (int32_t sizeGuess, UErrorCode &errorCode)
 
void deleteCompactBuilder ()
 
void build (UStringTrieBuildOption buildOption, int32_t elementsLength, UErrorCode &errorCode)
 
int32_t writeNode (int32_t start, int32_t limit, int32_t unitIndex)
 
int32_t writeBranchSubNode (int32_t start, int32_t limit, int32_t unitIndex, int32_t length)
 
NodemakeNode (int32_t start, int32_t limit, int32_t unitIndex, UErrorCode &errorCode)
 
NodemakeBranchSubNode (int32_t start, int32_t limit, int32_t unitIndex, int32_t length, UErrorCode &errorCode)
 
virtual int32_t getElementStringLength (int32_t i) const =0
 
virtual char16_t getElementUnit (int32_t i, int32_t unitIndex) const =0
 
virtual int32_t getElementValue (int32_t i) const =0
 
virtual int32_t getLimitOfLinearMatch (int32_t first, int32_t last, int32_t unitIndex) const =0
 
virtual int32_t countElementUnits (int32_t start, int32_t limit, int32_t unitIndex) const =0
 
virtual int32_t skipElementsBySomeUnits (int32_t i, int32_t unitIndex, int32_t count) const =0
 
virtual int32_t indexOfElementWithNextUnit (int32_t i, int32_t unitIndex, char16_t unit) const =0
 
virtual UBool matchNodesCanHaveValues () const =0
 
virtual int32_t getMaxBranchLinearSubNodeLength () const =0
 
virtual int32_t getMinLinearMatch () const =0
 
virtual int32_t getMaxLinearMatchLength () const =0
 
NoderegisterNode (Node *newNode, UErrorCode &errorCode)
 Makes sure that there is only one unique node registered that is equivalent to newNode.
 
NoderegisterFinalValue (int32_t value, UErrorCode &errorCode)
 Makes sure that there is only one unique FinalValueNode registered with this value.
 
virtual NodecreateLinearMatchNode (int32_t i, int32_t unitIndex, int32_t length, Node *nextNode) const =0
 
virtual int32_t write (int32_t unit)=0
 
virtual int32_t writeElementUnits (int32_t i, int32_t unitIndex, int32_t length)=0
 
virtual int32_t writeValueAndFinal (int32_t i, UBool isFinal)=0
 
virtual int32_t writeValueAndType (UBool hasValue, int32_t value, int32_t node)=0
 
virtual int32_t writeDeltaTo (int32_t jumpTarget)=0
 

Protected Attributes

UHashtable * nodes
 

Static Protected Attributes

static const int32_t kMaxBranchLinearSubNodeLength =5
 
static const int32_t kMaxSplitBranchLevels =14
 

Additional Inherited Members

- Public Member Functions inherited from icu::UObject
virtual ~UObject ()
 Destructor.
 
virtual UClassID getDynamicClassID () const
 ICU4C "poor man's RTTI", returns a UClassID for the actual ICU class.
 

Detailed Description

Base class for string trie builder classes.

This class is not intended for public subclassing.

Stable
ICU 4.8

Definition at line 63 of file stringtriebuilder.h.

Constructor & Destructor Documentation

◆ StringTrieBuilder()

icu::StringTrieBuilder::StringTrieBuilder ( )
protected
Internal
Do not use. This API is for internal use only.

◆ ~StringTrieBuilder()

virtual icu::StringTrieBuilder::~StringTrieBuilder ( )
protectedvirtual
Internal
Do not use. This API is for internal use only.

Member Function Documentation

◆ build()

void icu::StringTrieBuilder::build ( UStringTrieBuildOption buildOption,
int32_t elementsLength,
UErrorCode & errorCode )
protected
Internal
Do not use. This API is for internal use only.

◆ countElementUnits()

virtual int32_t icu::StringTrieBuilder::countElementUnits ( int32_t start,
int32_t limit,
int32_t unitIndex ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ createCompactBuilder()

void icu::StringTrieBuilder::createCompactBuilder ( int32_t sizeGuess,
UErrorCode & errorCode )
protected
Internal
Do not use. This API is for internal use only.

◆ createLinearMatchNode()

virtual Node * icu::StringTrieBuilder::createLinearMatchNode ( int32_t i,
int32_t unitIndex,
int32_t length,
Node * nextNode ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ deleteCompactBuilder()

void icu::StringTrieBuilder::deleteCompactBuilder ( )
protected
Internal
Do not use. This API is for internal use only.

◆ equalNodes()

static UBool icu::StringTrieBuilder::equalNodes ( const void * left,
const void * right )
static
Internal
Do not use. This API is for internal use only.

◆ getElementStringLength()

virtual int32_t icu::StringTrieBuilder::getElementStringLength ( int32_t i) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ getElementUnit()

virtual char16_t icu::StringTrieBuilder::getElementUnit ( int32_t i,
int32_t unitIndex ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ getElementValue()

virtual int32_t icu::StringTrieBuilder::getElementValue ( int32_t i) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ getLimitOfLinearMatch()

virtual int32_t icu::StringTrieBuilder::getLimitOfLinearMatch ( int32_t first,
int32_t last,
int32_t unitIndex ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ getMaxBranchLinearSubNodeLength()

virtual int32_t icu::StringTrieBuilder::getMaxBranchLinearSubNodeLength ( ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ getMaxLinearMatchLength()

virtual int32_t icu::StringTrieBuilder::getMaxLinearMatchLength ( ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ getMinLinearMatch()

virtual int32_t icu::StringTrieBuilder::getMinLinearMatch ( ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ hashNode()

static UBool icu::StringTrieBuilder::hashNode ( const void * node)
static
Internal
Do not use. This API is for internal use only.

◆ indexOfElementWithNextUnit()

virtual int32_t icu::StringTrieBuilder::indexOfElementWithNextUnit ( int32_t i,
int32_t unitIndex,
char16_t unit ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ makeBranchSubNode()

Node * icu::StringTrieBuilder::makeBranchSubNode ( int32_t start,
int32_t limit,
int32_t unitIndex,
int32_t length,
UErrorCode & errorCode )
protected
Internal
Do not use. This API is for internal use only.

◆ makeNode()

Node * icu::StringTrieBuilder::makeNode ( int32_t start,
int32_t limit,
int32_t unitIndex,
UErrorCode & errorCode )
protected
Internal
Do not use. This API is for internal use only.

◆ matchNodesCanHaveValues()

virtual UBool icu::StringTrieBuilder::matchNodesCanHaveValues ( ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ registerFinalValue()

Node * icu::StringTrieBuilder::registerFinalValue ( int32_t value,
UErrorCode & errorCode )
protected

Makes sure that there is only one unique FinalValueNode registered with this value.

Avoids creating a node if the value is a duplicate.

Parameters
valueA final value.
errorCodeICU in/out UErrorCode. Set to U_MEMORY_ALLOCATION_ERROR if it was success but newNode==NULL.
Returns
A FinalValueNode with the given value.
Internal
Do not use. This API is for internal use only.

◆ registerNode()

Node * icu::StringTrieBuilder::registerNode ( Node * newNode,
UErrorCode & errorCode )
protected

Makes sure that there is only one unique node registered that is equivalent to newNode.

Parameters
newNodeInput node. The builder takes ownership.
errorCodeICU in/out UErrorCode. Set to U_MEMORY_ALLOCATION_ERROR if it was success but newNode==NULL.
Returns
newNode if it is the first of its kind, or an equivalent node if newNode is a duplicate.
Internal
Do not use. This API is for internal use only.

◆ skipElementsBySomeUnits()

virtual int32_t icu::StringTrieBuilder::skipElementsBySomeUnits ( int32_t i,
int32_t unitIndex,
int32_t count ) const
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ write()

virtual int32_t icu::StringTrieBuilder::write ( int32_t unit)
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ writeBranchSubNode()

int32_t icu::StringTrieBuilder::writeBranchSubNode ( int32_t start,
int32_t limit,
int32_t unitIndex,
int32_t length )
protected
Internal
Do not use. This API is for internal use only.

◆ writeDeltaTo()

virtual int32_t icu::StringTrieBuilder::writeDeltaTo ( int32_t jumpTarget)
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ writeElementUnits()

virtual int32_t icu::StringTrieBuilder::writeElementUnits ( int32_t i,
int32_t unitIndex,
int32_t length )
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ writeNode()

int32_t icu::StringTrieBuilder::writeNode ( int32_t start,
int32_t limit,
int32_t unitIndex )
protected
Internal
Do not use. This API is for internal use only.

◆ writeValueAndFinal()

virtual int32_t icu::StringTrieBuilder::writeValueAndFinal ( int32_t i,
UBool isFinal )
protectedpure virtual
Internal
Do not use. This API is for internal use only.

◆ writeValueAndType()

virtual int32_t icu::StringTrieBuilder::writeValueAndType ( UBool hasValue,
int32_t value,
int32_t node )
protectedpure virtual
Internal
Do not use. This API is for internal use only.

Field Documentation

◆ kMaxBranchLinearSubNodeLength

const int32_t icu::StringTrieBuilder::kMaxBranchLinearSubNodeLength =5
staticprotected
Internal
Do not use. This API is for internal use only.

Definition at line 138 of file stringtriebuilder.h.

◆ kMaxSplitBranchLevels

const int32_t icu::StringTrieBuilder::kMaxSplitBranchLevels =14
staticprotected
Internal
Do not use. This API is for internal use only.

Definition at line 143 of file stringtriebuilder.h.

◆ nodes

UHashtable* icu::StringTrieBuilder::nodes
protected
Internal
Do not use. This API is for internal use only.

Definition at line 187 of file stringtriebuilder.h.


The documentation for this class was generated from the following file: