PIP 5.6.1
Platform-Independent Primitives
Классы | Функции
Файл pibinarystream.h

Интерфейс бинарной сериализации Подробнее...

#include "pibitarray.h"
#include "pimap.h"
#include "pimemoryblock.h"
#include "piset.h"
#include "pivector2d.h"

Классы

class  PIBinaryStream< P >
 CRTP-интерфейс для потоков бинарной сериализации. Подробнее...
 
class  PIBinaryStreamTrivialRef< P >
 Вспомогательная обертка для определения операторов потоковой обработки тривиальных типов по умолчанию. Вспомогательный класс для обнаружения операторов по умолчанию Подробнее...
 

Функции

template<typename P , typename T >
PIBinaryStream< P > & operator<< (PIBinaryStreamTrivialRef< P > s, const T &v)
 Перенаправляет операцию записи через PIBinaryStreamTrivialRef.
 
template<typename P , typename T >
PIBinaryStream< P > & operator>> (PIBinaryStreamTrivialRef< P > s, T &v)
 Перенаправляет операцию чтения через PIBinaryStreamTrivialRef.
 
template<typename P >
PIBinaryStream< P > & operator<< (PIBinaryStreamTrivialRef< P > s, const PIMemoryBlock v)
 Перенаправляет запись блока памяти через PIBinaryStreamTrivialRef.
 
template<typename P >
PIBinaryStream< P > & operator>> (PIBinaryStreamTrivialRef< P > s, PIMemoryBlock v)
 Перенаправляет чтение блока памяти через PIBinaryStreamTrivialRef.
 
template<typename P >
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const bool v)
 Сохраняет bool как один беззнаковый байт.
 
template<typename P >
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, bool &v)
 Восстанавливает bool из одного беззнакового байта.
 
template<typename P >
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIMemoryBlock v)
 Записывает сырые байты из PIMemoryBlock.
 
template<typename P >
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIMemoryBlock v)
 Читает сырые байты в PIMemoryBlock.
 
template<typename P , typename T , typename std::enable_if< std::is_enum< T >::value, int >::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const T &v)
 Сохраняет значения перечислений как int. Подробнее...
 
template<typename P , typename T , typename std::enable_if<!std::is_enum< T >::value, int >::type = 0, typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStreamTrivialRef< P > operator<< (PIBinaryStream< P > &s, const T &v)
 Сохраняет тривиально копируемые значения прямым копированием памяти и возвращает вспомогательный маркер для контейнерных путей с пакетной записью.
 
template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >()<< std::declval< const T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIVector< T > &v)
 Сохраняет PIVector из тривиальных элементов пакетно. Подробнее...
 
template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >()<< std::declval< const T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIDeque< T > &v)
 Сохраняет PIDeque из тривиальных элементов пакетно. Подробнее...
 
template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >()<< std::declval< const T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIVector2D< T > &v)
 Сохраняет PIVector2D из тривиальных элементов пакетно. Подробнее...
 
template<typename P >
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIBitArray &v)
 Сохраняет содержимое PIBitArray.
 
template<typename P , typename Type0 , typename Type1 >
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIPair< Type0, Type1 > &v)
 Сохраняет оба элемента PIPair.
 
template<typename P , typename T , typename std::enable_if< std::is_enum< T >::value, int >::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, T &v)
 Восстанавливает значения перечислений из int. Подробнее...
 
template<typename P , typename T , typename std::enable_if<!std::is_enum< T >::value, int >::type = 0, typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStreamTrivialRef< P > operator>> (PIBinaryStream< P > &s, T &v)
 Восстанавливает тривиально копируемые значения прямым копированием памяти и возвращает вспомогательный маркер для контейнерных путей с пакетным чтением.
 
template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >() > > std::declval< T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIVector< T > &v)
 Восстанавливает PIVector из тривиальных элементов пакетно. Подробнее...
 
template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >() > > std::declval< T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIDeque< T > &v)
 Восстанавливает PIDeque из тривиальных элементов пакетно. Подробнее...
 
template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >() > > std::declval< T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIVector2D< T > &v)
 Восстанавливает PIVector2D из тривиальных элементов пакетно. Подробнее...
 
template<typename P >
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIBitArray &v)
 Восстанавливает содержимое PIBitArray.
 
template<typename P , typename Type0 , typename Type1 >
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIPair< Type0, Type1 > &v)
 Восстанавливает оба элемента PIPair.
 
template<typename P , typename T , typename std::enable_if<!std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIVector< T > &v)
 Сохраняет PIVector из нетривиальных элементов по одному.
 
template<typename P , typename T , typename std::enable_if<!std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIDeque< T > &v)
 Сохраняет PIDeque из нетривиальных элементов по одному.
 
template<typename P , typename T , typename std::enable_if<!std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIVector2D< T > &v)
 Сохраняет PIVector2D из нетривиальных элементов через его плоское векторное представление.
 
template<typename P , typename T , typename std::enable_if<!std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIVector< T > &v)
 Восстанавливает PIVector из нетривиальных элементов по одному.
 
template<typename P , typename T , typename std::enable_if<!std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIDeque< T > &v)
 Восстанавливает PIDeque из нетривиальных элементов по одному.
 
template<typename P , typename T , typename std::enable_if<!std::is_trivially_copyable< T >::value, int >::type = 0>
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIVector2D< T > &v)
 Восстанавливает PIVector2D из нетривиальных элементов через промежуточный плоский вектор.
 
template<typename P , typename Key , typename T >
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PIMap< Key, T > &v)
 Сохраняет ключи и значения PIMap.
 
template<typename P , typename Key , typename T >
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PIMap< Key, T > &v)
 Восстанавливает ключи и значения PIMap.
 
template<typename P , typename Key >
PIBinaryStream< P > & operator<< (PIBinaryStream< P > &s, const PISet< Key > &v)
 Сохраняет ключи PISet.
 
template<typename P , typename Key >
PIBinaryStream< P > & operator>> (PIBinaryStream< P > &s, PISet< Key > &v)
 Восстанавливает ключи PISet.
 

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

Интерфейс бинарной сериализации

Функции

◆ operator<<() [1/4]

template<typename P , typename T , typename std::enable_if< std::is_enum< T >::value, int >::type = 0>
PIBinaryStream< P > & operator<< ( PIBinaryStream< P > &  s,
const T &  v 
)
inline

Сохраняет значения перечислений как int.

Резервная перегрузка, которая намеренно завершает компиляцию ошибкой для неподдерживаемых нетривиальных типов записи.

◆ operator<<() [2/4]

template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >()<< std::declval< const T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator<< ( PIBinaryStream< P > &  s,
const PIVector< T > &  v 
)
inline

Сохраняет PIVector из тривиальных элементов пакетно.

Сохраняет PIVector поэлементно, когда тип элемента использует собственные операторы бинарного потока.

◆ operator<<() [3/4]

template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >()<< std::declval< const T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator<< ( PIBinaryStream< P > &  s,
const PIDeque< T > &  v 
)
inline

Сохраняет PIDeque из тривиальных элементов пакетно.

Сохраняет PIDeque поэлементно, когда тип элемента использует собственные операторы бинарного потока.

◆ operator<<() [4/4]

template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >()<< std::declval< const T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator<< ( PIBinaryStream< P > &  s,
const PIVector2D< T > &  v 
)
inline

Сохраняет PIVector2D из тривиальных элементов пакетно.

Сохраняет данные PIVector2D через путь потоковой обработки элементов.

◆ operator>>() [1/4]

template<typename P , typename T , typename std::enable_if< std::is_enum< T >::value, int >::type = 0>
PIBinaryStream< P > & operator>> ( PIBinaryStream< P > &  s,
T &  v 
)
inline

Восстанавливает значения перечислений из int.

Резервная перегрузка, которая намеренно завершает компиляцию ошибкой для неподдерживаемых нетривиальных типов чтения.

◆ operator>>() [2/4]

template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >() > > std::declval< T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator>> ( PIBinaryStream< P > &  s,
PIVector< T > &  v 
)
inline

Восстанавливает PIVector из тривиальных элементов пакетно.

Восстанавливает PIVector поэлементно, когда тип элемента использует собственные операторы бинарного потока.

◆ operator>>() [3/4]

template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >() > > std::declval< T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator>> ( PIBinaryStream< P > &  s,
PIDeque< T > &  v 
)
inline

Восстанавливает PIDeque из тривиальных элементов пакетно.

Восстанавливает PIDeque поэлементно, когда тип элемента использует собственные операторы бинарного потока.

◆ operator>>() [4/4]

template<typename P , typename T , typename std::enable_if< std::is_trivially_copyable< T >::value, int >::type = 0, typename std::enable_if< std::is_same< decltype(std::declval< PIBinaryStream< P > & >() > > std::declval< T & >()), PIBinaryStreamTrivialRef< P > >::value , int , ::type = 0>
PIBinaryStream< P > & operator>> ( PIBinaryStream< P > &  s,
PIVector2D< T > &  v 
)
inline

Восстанавливает PIVector2D из тривиальных элементов пакетно.

Восстанавливает PIVector2D через путь потоковой обработки элементов.