Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# QByteArrayMatcher Class Reference

The QByteArrayMatcher class holds a sequence of bytes that can be quickly matched in a byte array. More...

    #include <QByteArrayMatcher>

- List of all members, including inherited members

### Public Functions

- QByteArrayMatcher ()
- QByteArrayMatcher ( const QByteArray & pattern )
- QByteArrayMatcher ( const QByteArrayMatcher & other )
- ~QByteArrayMatcher ()
- int indexIn ( const QByteArray & ba, int from = 0 ) const
- QByteArray pattern () const
- void setPattern ( const QByteArray & pattern )
- QByteArrayMatcher & operator= ( const QByteArrayMatcher & other )

## Detailed Description

The QByteArrayMatcher class holds a sequence of bytes that can be quickly matched in a byte array.

This class is useful when you have a sequence of bytes that you want to repeatedly match against some byte arrays (perhaps in a loop), or when you want to search for the same sequence of bytes multiple times in the same byte array. Using a matcher object and indexIn() is faster than matching a plain QByteArray with indexOf() if repeated matching takes place. This class offers no benefit if you are doing one-off byte array matches.

Create the QByteArrayMatcher with the QByteArray you want to search for. Then call indexIn() on the QByteArray that you want to search.

        // Assumes that list is a QList<QByteArray*>
        QList<QPair<int, int> > indexes; // byte array x index position
        QByteArrayMatcher matcher(QByteArray("ACBD"));
        for (int i = 0; i < list.size(); ++i) {
            int pos = 0;
            while (1) {
                pos = matcher.indexIn(*list[i], pos);
                if (pos > -1)
                    indexes.append(qMakePair(i, pos++));
                else
                    break;
            }
        }

## Member Function Documentation

### QByteArrayMatcher::QByteArrayMatcher ()

Constructs an empty byte array matcher that won't match anything. Call setPattern() to give it a pattern to match.

### QByteArrayMatcher::QByteArrayMatcher ( const QByteArray & pattern )

Constructs a byte array matcher that will search for pattern. Call indexIn() to perform a search.

### QByteArrayMatcher::QByteArrayMatcher ( const QByteArrayMatcher & other )

Copies the other byte array matcher to this byte array matcher.

### QByteArrayMatcher::~QByteArrayMatcher ()

Destroys the byte array matcher.

### int QByteArrayMatcher::indexIn ( const QByteArray & ba, int from = 0 ) const

Searches the byte array ba, from byte position from (default 0, i.e. from the first byte), for the byte array pattern() that was set in the constructor or in the most recent call to setPattern(). Returns the position where the pattern() matched in ba, or -1 if no match was found.

### QByteArray QByteArrayMatcher::pattern () const

Returns the byte array pattern that this byte array matcher will search for. The pattern is set in the constructor, or in a call to setPattern().

### void QByteArrayMatcher::setPattern ( const QByteArray & pattern )

Sets the byte array that this byte array matcher will search for to pattern.

See also indexIn().

### QByteArrayMatcher & QByteArrayMatcher::operator= ( const QByteArrayMatcher & other )

Assignes the other byte array matcher to this byte array matcher.