PHP 8.2.30
Preview: bytestriebuilder.h Size: 7.08 KB
/proc/self/root/proc/thread-self/root/proc/thread-self/root/opt/alt/libicu65/usr/include/unicode/bytestriebuilder.h

// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
/*
*******************************************************************************
*   Copyright (C) 2010-2016, International Business Machines
*   Corporation and others.  All Rights Reserved.
*******************************************************************************
*   file name:  bytestriebuilder.h
*   encoding:   UTF-8
*   tab size:   8 (not used)
*   indentation:4
*
*   created on: 2010sep25
*   created by: Markus W. Scherer
*/

/**
 * \file
 * \brief C++ API: Builder for icu::BytesTrie
 */

#ifndef __BYTESTRIEBUILDER_H__
#define __BYTESTRIEBUILDER_H__

#include "unicode/utypes.h"

#if U_SHOW_CPLUSPLUS_API

#include "unicode/bytestrie.h"
#include "unicode/stringpiece.h"
#include "unicode/stringtriebuilder.h"

U_NAMESPACE_BEGIN

class BytesTrieElement;
class CharString;
/**
 * Builder class for BytesTrie.
 *
 * This class is not intended for public subclassing.
 * @stable ICU 4.8
 */
class U_COMMON_API BytesTrieBuilder : public StringTrieBuilder {
public:
    /**
     * Constructs an empty builder.
     * @param errorCode Standard ICU error code.
     * @stable ICU 4.8
     */
    BytesTrieBuilder(UErrorCode &errorCode);

    /**
     * Destructor.
     * @stable ICU 4.8
     */
    virtual ~BytesTrieBuilder();

    /**
     * Adds a (byte sequence, value) pair.
     * The byte sequence must be unique.
     * The bytes will be copied; the builder does not keep
     * a reference to the input StringPiece or its data().
     * @param s The input byte sequence.
     * @param value The value associated with this byte sequence.
     * @param errorCode Standard ICU error code. Its input value must
     *                  pass the U_SUCCESS() test, or else the function returns
     *                  immediately. Check for U_FAILURE() on output or use with
     *                  function chaining. (See User Guide for details.)
     * @return *this
     * @stable ICU 4.8
     */
    BytesTrieBuilder &add(StringPiece s, int32_t value, UErrorCode &errorCode);

    /**
     * Builds a BytesTrie for the add()ed data.
     * Once built, no further data can be add()ed until clear() is called.
     *
     * A BytesTrie cannot be empty. At least one (byte sequence, value) pair
     * must have been add()ed.
     *
     * This method passes ownership of the builder's internal result array to the new trie object.
     * Another call to any build() variant will re-serialize the trie.
     * After clear() has been called, a new array will be used as well.
     * @param buildOption Build option, see UStringTrieBuildOption.
     * @param errorCode Standard ICU error code. Its input value must
     *                  pass the U_SUCCESS() test, or else the function returns
     *                  immediately. Check for U_FAILURE() on output or use with
     *                  function chaining. (See User Guide for details.)
     * @return A new BytesTrie for the add()ed data.
     * @stable ICU 4.8
     */
    BytesTrie *build(UStringTrieBuildOption buildOption, UErrorCode &errorCode);

    /**
     * Builds a BytesTrie for the add()ed data and byte-serializes it.
     * Once built, no further data can be add()ed until clear() is called.
     *
     * A BytesTrie cannot be empty. At least one (byte sequence, value) pair
     * must have been add()ed.
     *
     * Multiple calls to buildStringPiece() return StringPieces referring to the
     * builder's same byte array, without rebuilding.
     * If buildStringPiece() is called after build(), the trie will be
     * re-serialized into a new array.
     * If build() is called after buildStringPiece(), the trie object will become
     * the owner of the previously returned array.
     * After clear() has been called, a new array will be used as well.
     * @param buildOption Build option, see UStringTrieBuildOption.
     * @param errorCode Standard ICU error code. Its input value must
     *                  pass the U_SUCCESS() test, or else the function returns
     *                  immediately. Check for U_FAILURE() on output or use with
     *                  function chaining. (See User Guide for details.)
     * @return A StringPiece which refers to the byte-serialized BytesTrie for the add()ed data.
     * @stable ICU 4.8
     */
    StringPiece buildStringPiece(UStringTrieBuildOption buildOption, UErrorCode &errorCode);

    /**
     * Removes all (byte sequence, value) pairs.
     * New data can then be add()ed and a new trie can be built.
     * @return *this
     * @stable ICU 4.8
     */
    BytesTrieBuilder &clear();

private:
    BytesTrieBuilder(const BytesTrieBuilder &other);  // no copy constructor
    BytesTrieBuilder &operator=(const BytesTrieBuilder &other);  // no assignment operator

    void buildBytes(UStringTrieBuildOption buildOption, UErrorCode &errorCode);

    virtual int32_t getElementStringLength(int32_t i) const;
    virtual char16_t getElementUnit(int32_t i, int32_t byteIndex) const;
    virtual int32_t getElementValue(int32_t i) const;

    virtual int32_t getLimitOfLinearMatch(int32_t first, int32_t last, int32_t byteIndex) const;

    virtual int32_t countElementUnits(int32_t start, int32_t limit, int32_t byteIndex) const;
    virtual int32_t skipElementsBySomeUnits(int32_t i, int32_t byteIndex, int32_t count) const;
    virtual int32_t indexOfElementWithNextUnit(int32_t i, int32_t byteIndex, char16_t byte) const;

    virtual UBool matchNodesCanHaveValues() const { return FALSE; }

    virtual int32_t getMaxBranchLinearSubNodeLength() const { return BytesTrie::kMaxBranchLinearSubNodeLength; }
    virtual int32_t getMinLinearMatch() const { return BytesTrie::kMinLinearMatch; }
    virtual int32_t getMaxLinearMatchLength() const { return BytesTrie::kMaxLinearMatchLength; }

    /**
     * @internal (private)
     */
    class BTLinearMatchNode : public LinearMatchNode {
    public:
        BTLinearMatchNode(const char *units, int32_t len, Node *nextNode);
        virtual UBool operator==(const Node &other) const;
        virtual void write(StringTrieBuilder &builder);
    private:
        const char *s;
    };
    
    virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length,
                                        Node *nextNode) const;

    UBool ensureCapacity(int32_t length);
    virtual int32_t write(int32_t byte);
    int32_t write(const char *b, int32_t length);
    virtual int32_t writeElementUnits(int32_t i, int32_t byteIndex, int32_t length);
    virtual int32_t writeValueAndFinal(int32_t i, UBool isFinal);
    virtual int32_t writeValueAndType(UBool hasValue, int32_t value, int32_t node);
    virtual int32_t writeDeltaTo(int32_t jumpTarget);

    CharString *strings;  // Pointer not object so we need not #include internal charstr.h.
    BytesTrieElement *elements;
    int32_t elementsCapacity;
    int32_t elementsLength;

    // Byte serialization of the trie.
    // Grows from the back: bytesLength measures from the end of the buffer!
    char *bytes;
    int32_t bytesCapacity;
    int32_t bytesLength;
};

U_NAMESPACE_END

#endif /* U_SHOW_CPLUSPLUS_API */

#endif  // __BYTESTRIEBUILDER_H__

Directory Contents

Dirs: 0 × Files: 187

Name Size Perms Modified Actions
26.48 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
8.49 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
9.15 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
27.80 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
9.60 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
20.77 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.08 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
105.74 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.43 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
25.33 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.22 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
24.05 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
23.91 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
13.76 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
56.23 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.88 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
3.76 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.30 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
4.05 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
40.67 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
1.19 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
20.13 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
87.38 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
6.97 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
37.70 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
3.84 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
46.63 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
18.51 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
25.08 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
8.68 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
20.74 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
2.08 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
4.84 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
8.69 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
5.37 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
24.42 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
12.50 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
10.27 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
3.04 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
3.33 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
31.71 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
1.03 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
11.88 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
12.70 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
9.47 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
11.27 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
22.50 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
19.69 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.12 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
47.40 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
11.33 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
93.31 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
4.32 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
33.71 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
44.11 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
34.03 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
30.94 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
2.69 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
86.31 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
30.14 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
49.81 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
7.19 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
3.08 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
5.56 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
28.08 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
25.20 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
18.39 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
3.49 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.33 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
26.58 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
48.73 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
15.60 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
84.36 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
9.18 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
22.62 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
9.37 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
18.07 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.32 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.40 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
22.22 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
14.30 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
12.59 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
45.44 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
70.97 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
11.18 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
1.05 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
9.92 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
5.79 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.38 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
15.33 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
21.30 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
4.27 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
36.61 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
41.02 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
3.38 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
4.90 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
7.85 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
65.82 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
42.89 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
16.85 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
35.37 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
6.12 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
89.56 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
12.65 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
23.97 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
56.90 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
15.18 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
5.36 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
140.56 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
22.58 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.21 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
13.20 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
11.21 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
83.09 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.14 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.59 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
20.99 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
61.46 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
9.46 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
12.07 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
5.53 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
22.46 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
14.67 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
16.12 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
60.88 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
15.56 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
10.03 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
26.01 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
5.89 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.78 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
4.36 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
10.94 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
12.14 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
2.00 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
33.37 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
22.77 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
10.45 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
8.83 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
52.54 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
11.26 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
14.53 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
1.33 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
24.23 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
8.24 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
3.96 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
4.04 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.10 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
3.38 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
64.90 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
170.43 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
20.52 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
24.66 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
53.62 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
25.36 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
7.21 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
10.68 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.88 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
72.05 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
9.84 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
17.26 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
130.97 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
5.38 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
36.54 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
26.87 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
38.12 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
40.00 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
9.55 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
18.00 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
65.90 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
8.14 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
38.54 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
1.89 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
72.47 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
3.15 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
58.13 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
7.86 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
30.96 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
23.32 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
763 B lrw-r--r-- 2022-02-08 16:22:58
Edit Download
45.83 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
13.78 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
15.73 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
25.52 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download
30.74 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.67 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
6.00 KB lrw-r--r-- 2022-02-08 16:22:58
Edit Download
20.30 KB lrw-r--r-- 2022-02-08 16:22:59
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).