class axl::enc::CodePointDecoder

#include <axl_enc_CharCodec.h>

class CodePointDecoder
{
public:
    // fields

    char m_accumulator[4];
    uint32_t m_accumulator_i32;

    // construction

    CodePointDecoder(
        CharCodecKind codecKind = CharCodecKind_Utf8,
        uint32_t state = 0
        );

    // methods

    CharCodec*
    getCharCodec();

    size_t
    getAccumulatorCount();

    const char*
    getAccumulator();

    uint32_t
    getAccumulator_i32();

    void
    setup(
        CharCodecKind codecKind,
        uint32_t state = 0
        );

    void
    setup(
        CharCodec* codec,
        uint32_t state = 0
        );

    void
    clear();

    void
    resetAccumulator();

    void
    loadState(uint32_t state);

    uint32_t
    saveState();

    size_t
    decode(
        utf32_t* buffer,
        size_t bufferLength,
        const void* p,
        size_t size,
        size_t* takenSize
        );

    size_t
    decode(
        uchar_t* cplBuffer,
        utf32_t* textBuffer,
        size_t bufferLength,
        const void* p,
        size_t size,
        size_t* takenSize
        );
};