class jnc.RegexState

class RegexState {
    // fields

    jnc.RegexExecResult readonly m_lastExecResult;

    // properties

    jnc.RegexExecFlags const property m_execFlags;
    uint64_t const property m_baseOffset;
    int const property m_baseChar;
    uint64_t const property m_eofOffset;
    int const property m_eofChar;
    jnc.RegexMatch const* const property m_match;

    // construction

    construct(
        jnc.RegexExecFlags flags = 0,
        uint64_t baseOffset = 0,
        int baseChar = RegexEofChar,
        uint64_t eofOffset = -1,
        int eofChar = RegexEofChar
    );
    destruct();

    // methods

    void reset(
        jnc.RegexExecFlags flags,
        uint64_t baseOffset,
        int baseChar,
        uint64_t eofOffset,
        int eofChar = RegexEofChar
    );

    void reset(jnc.RegexExecFlags flags = 0);

    void setEofOffset(
        uint64_t offset,
        int eofChar = RegexEofChar
    );

    void setEof(int eofChar = RegexEofChar);
};