PIP 5.9.0
Platform-Independent Primitives
Загрузка...
Поиск...
Не найдено
Класс PIByteArray

Класс PIByteArray предоставляет массив байтов с эффективным управлением памятью и различными операциями манипулирования. Подробнее...

#include <pibytearray.h>

Граф наследования:PIByteArray:

Открытые члены

 PIByteArray ()
 Создает пустой байтовый массив.
 PIByteArray (const PIByteArray &o)
 Создает копию байтового массива "o".
 PIByteArray (const PIDeque< uchar > &o)
 Создает копию байтового массива "o".
 PIByteArray (PIByteArray &&o)
 Конструктор перемещения.
 PIByteArray (const uint size)
 Создает заполненный "0" байтовый массив размером "size".
 PIByteArray (const void *data, const uint size)
 Создает байтовый массив из данных по указателю "data" размером "size".
 PIByteArray (const uint size, uchar t)
 Создает заполненный "t" байтовый массив размером "size".
 PIByteArray (std::initializer_list< uchar > init_list)
 Создает массив из списка инициализации C++11.
void swap (PIByteArray &other)
 Меняет местами массив v с этим массивом.
PIDeque< uchar >::iterator begin ()
 Итератор на первый элемент.
PIDeque< uchar >::iterator end ()
 Итератор на элемент, следующий за последним элементом.
PIDeque< uchar >::reverse_iterator rbegin ()
 Обратный итератор на первый элемент.
PIDeque< uchar >::reverse_iterator rend ()
 Обратный итератор на элемент, следующий за последним элементом.
size_t size () const
 Количество элементов массива.
ssize_t size_s () const
 Количество элементов массива в виде знакового числа.
size_t length () const
 Синоним size().
size_t capacity () const
 Количество элементов, для которого сейчас выделена память массивом.
bool isEmpty () const
 Проверяет пуст ли массив.
bool isNotEmpty () const
 Проверяет не пуст ли массив.
bool any (std::function< bool(uchar e)> test) const
 Проверяет, удовлетворяет ли какой-либо элемент массива условию, заданному в передаваемой функции test.
bool every (std::function< bool(uchar e)> test) const
 Проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции test.
uchar & operator[] (size_t index)
 Полный доступ к элементу по индексу index.
uchar at (size_t index) const
 Доступ исключительно на чтение к элементу по индексу index.
uchar & back ()
 Последний элемент массива.
uchar & front ()
 Первый элемент массива.
bool contains (uchar e, ssize_t start=0) const
 Проверяет наличие элемента e в массиве.
int entries (uchar e, ssize_t start=0) const
 Подсчитывает количество элементов, совпадающих с элементом e в массиве.
int entries (std::function< bool(uchar e)> test, ssize_t start=0) const
 Подсчитывает количество элементов в массиве, проходящих по условию, заданному в передаваемой функции test.
ssize_t indexOf (const uchar &e, ssize_t start=0) const
 Возвращает первый индекс, по которому данный элемент e может быть найден в массиве или -1, если такого индекса нет.
ssize_t indexWhere (std::function< bool(const uchar &e)> test, ssize_t start=0) const
 Возвращает первый индекс элемента проходящего по условию, заданному в передаваемой функции test, или -1, если таких элементов нет.
ssize_t lastIndexOf (const uchar &e, ssize_t start=-1) const
 Возвращает последний индекс, по которому данный элемент e может быть найден в массиве или -1, если такого индекса нет.
ssize_t lastIndexWhere (std::function< bool(const uchar &e)> test, ssize_t start=-1) const
 Возвращает последний индекс элемента проходящего по условию, заданному в передаваемой функции test, или -1, если таких элементов нет.
uchar * data (size_t index=0)
 Указатель на память массива
const uchar * data (size_t index=0) const
 Указатель на память массива только для чтения.
PIByteArray & clear ()
 Очищает массив, удаляет все элементы.
PIByteArray & fill (uchar e=0)
 Заполняет весь массив копиями элемента 'e'.
PIByteArray & fill (std::function< uchar(size_t i)> f)
 Заполняет весь массив результатом вызова функции 'f(size_t i)'.
PIByteArray & assign (uchar e=0)
 Тоже самое что и fill().
PIByteArray & assign (size_t new_size, uchar e)
 Сначала делает resize(new_size), затем fill(e).
PIByteArray & resize (size_t new_size, uchar e=0)
 Устанавливает размер массива, новые элементы копируются из e.
PIByteArray & resize (size_t new_size, std::function< uchar(size_t i)> f)
 Устанавливает размер массива, новые элементы создаются функцией f(size_t i).
PIByteArray resized (uint new_size) const
 Возвращает копию байтового массива с измененным размером
PIByteArray & reserve (size_t new_size)
 Резервируется память под как минимум new_size элементов.
PIByteArray & insert (size_t index, uchar e=0)
 Вставляет значение e в позицию index в массиве.
PIByteArray & insert (size_t index, const PIByteArray &v)
 Вставляет массив v в позицию index в массиве.
PIByteArray & insert (size_t index, std::initializer_list< uchar > init_list)
 Вставляет элементы в позицию index в массиве.
PIByteArray & remove (size_t index, size_t count=1)
 Удаляет элементы из массива, начиная с позиции index в количестве count.
PIByteArray getRange (size_t index, size_t count) const
 Возвращает подмассив с данными от индекса "index" и размером не более "count".
PIByteArray takeRange (size_t index, size_t count)
 Вырезает подмассив, то есть кусок из текущего массива.
PIByteArray & reverse ()
 Обращает порядок следования элементов этого массива.
PIByteArray reversed () const
 Возвращает перевернутый массив.
PIByteArray & enlarge (ssize_t add_size, uchar e=0)
 Увеличивает или уменьшает размер массива на add_size элементов.
PIByteArray & removeOne (uchar e)
 Удаляет первый элемент, который равен элементу e.
PIByteArray & removeAll (uchar e)
 Удаляет все элементы, равные элементу e.
PIByteArray & removeWhere (std::function< bool(uchar e)> test)
 Удаляет все элементы, удовлетворяющие условию, заданному в передаваемой функции test.
PIByteArray & push_back (uchar e)
 Добавляет элемент e в конец массива.
PIByteArray & push_back (std::initializer_list< uchar > init_list)
 Добавляет элементы в конец массива.
PIByteArray & push_back (const PIByteArray &v)
 Добавляет массив v в конец массива.
PIByteArray & push_back (const void *data_, int size_)
 Добавляет в конец массива данные по указателю "data" размером "size".
PIByteArray & push_front (uchar e)
 Добавляет элемент e в начало массива.
PIByteArray & push_front (const PIByteArray &v)
 Добавляет массив v в начало массива.
PIByteArray & push_front (std::initializer_list< uchar > init_list)
 Добавляет элементы в начало массива.
PIByteArray & prepend (uchar e)
 Добавляет элемент e в начало массива.
PIByteArray & prepend (const PIByteArray &v)
 Добавляет массив v в начало массива.
PIByteArray & prepend (std::initializer_list< uchar > init_list)
 Добавляет элементы в начало массива.
PIByteArray & pop_back ()
 Удаляет один элемент с конца массива.
PIByteArray & pop_front ()
 Удаляет один элемент с начала массива.
uchar take_back ()
 Удаляет один элемент с начала массива и возвращает его.
uchar take_front ()
 Удаляет один элемент с конца массива и возвращает его.
PIByteArray filter (std::function< bool(const uchar &e)> test) const
 Возвращает новый массив со всеми элементами, прошедшими проверку, задаваемую в передаваемой функции test.
void forEach (std::function< void(const uchar &e)> f) const
 Выполняет функцию void f(const uchar & e) для каждого элемента массива.
PIByteArray & forEach (std::function< void(uchar &e)> f)
 Выполняет функцию void f(uchar & e) для каждого элемента массива.
template<typename ST>
PIDeque< ST > map (std::function< ST(const uchar &e)> f) const
 Создаёт новый массив с результатом вызова указанной функции ST f(const T & e) для каждого элемента массива.
template<typename ST>
ST reduce (std::function< ST(const uchar &e, const ST &acc)> f, const ST &initial=ST()) const
 Применяет функцию ST f(const uchar & e, const ST & acc) к каждому элементу массива (слева-направо), возвращает одно значение.
PIByteArray & convertToBase64 ()
 Преобразует данные в Base 64 и возвращает текущий массив
PIByteArray & convertFromBase64 ()
 Преобразует данные из Base 64 и возвращает текущий массив
PIByteArray toBase64 () const
 Возвращает копию байтового массива, преобразованного в Base 64.
PIString toString (int base=16) const
 Возвращает текстовое представление байтового массива, каждый байт в "base" системе, с пробелами
PIString toHex () const
 Возвращает шестнадцатеричное представление массива, без пробелов. Оно использует цифры 0-9 и буквы a-f.
PIByteArray & append (const void *data_, int size_)
 Добавляет в конец массива данные по указателю "data" размером "size".
PIByteArray & append (const PIByteArray &data_)
 Добавляет в конец массива содержимое массива "data".
PIByteArray & append (uchar t)
 Добавляет в конец массива байт "t".
PIByteArray & append (std::initializer_list< uchar > init_list)
 Добавляет элементы в конец массива.
uchar checksumPlain8 (bool inverse=true) const
 Возвращает 8-битную контрольную сумму
uint checksumPlain32 (bool inverse=true) const
 Возвращает 32-битную контрольную сумму
uchar checksumCRC8 () const
 Возвращает 8-битную контрольную сумму CRC-8.
ushort checksumCRC16 () const
 Возвращает 16-битную контрольную сумму CRC-16.
uint checksumCRC32 () const
 Возвращает 32-битную контрольную сумму CRC-32.
uint hash () const
 Возвращает хэш содержимого
Открытые члены унаследованные от PIBinaryStream< PIByteArray >
bool binaryStreamAppend (const void *d, size_t s)
 Записывает сырые байты в нижележащий поток.
bool binaryStreamTake (void *d, size_t s)
 Читает сырые байты из нижележащего потока и устанавливает состояние ошибки чтения при неполном чтении.
ssize_t binaryStreamSize () const
 Возвращает число байтов, доступных для чтения.
int binaryStreamTakeInt ()
 Читает одно значение int из потока.
bool wasReadError () const
 Возвращает было ли неполное чтение с момента последнего вызова resetReadError() или создания потока
void resetReadError ()
 Сбрасывает флаг неполного чтения

Открытые статические члены

static PIByteArray fromBase64 (const PIByteArray &base64)
 Возвращает массив из Base 64 представления

(не члены класса)

bool operator< (const PIByteArray &v0, const PIByteArray &v1)
 Оператор сравнения
bool operator> (const PIByteArray &v0, const PIByteArray &v1)
 Оператор сравнения
bool operator== (const PIByteArray &v0, const PIByteArray &v1)
 Оператор сравнения
bool operator!= (const PIByteArray &v0, const PIByteArray &v1)
 Оператор сравнения
PIByteArray operator& (const PIByteArray &v0, const PIByteArray &v1)
 Возвращает по-битовое "и" Если размеры не совпадают, возвращает пустой PIByteArray.
PIByteArray operator| (const PIByteArray &v0, const PIByteArray &v1)
 Возвращает по-битовое "или" Если размеры не совпадают, возвращает пустой PIByteArray.
PIByteArray operator^ (const PIByteArray &v0, const PIByteArray &v1)
 Возвращает по-битовое "исключающее или" Если размеры не совпадают, возвращает пустой PIByteArray.
PICout operator<< (PICout s, const PIByteArray &ba)
 Оператор вывода в PICout.
template<>
uint piHash (const PIByteArray &ba)
 Возвращает PIByteArray::hash() от "ba".
template<>
void piSwap (PIByteArray &f, PIByteArray &s)
 Меняет содержимое массивов "f" и "s".
template<typename T>
PIByteArray piSerialize (const T &value)
 Сохраняет "value" в байтовый массив и возвращает его
template<typename T>
T piDeserialize (const PIByteArray &data)
 Извлекает тип "T" из байтового массива "data" и возвращает его

Подробное описание

Класс PIByteArray предоставляет массив байтов с эффективным управлением памятью и различными операциями манипулирования.

PIByteArray используется для хранения байтов. Он может быть сконструирован из любых даных. Можно использовать PIByteArray как потоковый объект для сериализации/десериализации любых типов и данных. Подробнее Поток ввода/вывода. Этот класс использует PIDeque<uchar> и предоставляет набор удобных методов для работы с байтами.

Использование

PIByteArray наследован от PIBinaryStream и может быть использован для сохранения любых данных и работы с ними. Операторы сохранения добавляют данные в конец массива, а операторы извлечения берут данные из его начала. Также есть методы для преобразования в Hex и Base64.

Внимание

Потоковый оператор для типа PIByteArray сохраняет его как контейнер, а не просто добавляет его содержимое в конец. Этот оператор полезен для управляемой упаковки произвольных данных в виде PIByteArray. Для добавления содержимого одного байтового массива к другому используется метод append().

PIByteArray ba, sba;
uchar uc(127);
sba << uc; // byte array with one byte
ba << sba; // stream operator
piCout << ba; // result
// {1, 0, 0, 0, 127}
ba.clear();
ba.append(sba);
piCout << ba; // result
// {127}