SUNphi  1.0
Sequence.hpp File Reference

Container mapping a sequence. More...

#include <cstddef>
#include <metaprogramming/TypeTraits.hpp>
#include <serialize/Binarize.hpp>
#include <serialize/Default.hpp>
#include <tuple/TupleElements.hpp>

Go to the source code of this file.

Classes

class  SUNphi::SerializableSequence< S >
 

Macros

#define SERIALIZABLE_SEQUENCE_WITH_TAG(CONTAINER, NAME, TAG, ...)
 Create a serializable sequence with a given tag. More...
 
#define SERIALIZABLE_SEQUENCE(CONTAINER, NAME, ...)   SERIALIZABLE_SEQUENCE_WITH_TAG(CONTAINER,NAME,#NAME,__VA_ARGS__)
 Create a serializable sequence.
 
#define SERIALIZABLE_VECTOR_WITH_TAG(TYPE, NAME, TAG, ...)   SERIALIZABLE_SEQUENCE_WITH_TAG(std::vector<TYPE>,NAME,TAG,__VA_ARGS__)
 Create a serializable vector with a given tag.
 
#define SERIALIZABLE_VECTOR(TYPE, NAME, ...)   SERIALIZABLE_VECTOR_WITH_TAG(TYPE,NAME,#NAME,__VA_ARGS__)
 Create a serializable vector.
 
#define SERIALIZABLE_PAIR_WITH_TAG(TYPE1, TYPE2, NAME, TAG, ...)
 Create a serializable pair with a given tag. More...
 
#define SERIALIZABLE_PAIR(TYPE1, TYPE2, NAME, ...)   SERIALIZABLE_PAIR_WITH_TAG(TYPE1,TYPE2,NAME,#NAME,__VA_ARGS__)
 Create a serializable pair.
 

Typedefs

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsSerializableSequence = EnableIf< isSerializableSequence< T >,Ret >
 

Functions

template<typename T >
constexpr bool SUNphi::_isSerializableSequence (const T *)
 
template<typename... Ts>
constexpr bool SUNphi::_isSerializableSequence (const SerializableSequence< Ts... > *)
 

Variables

template<typename T >
constexpr bool SUNphi::isSerializableSequence = _isSerializableSequence ((RemRef<T>*)nullptr)
 

Detailed Description

Container mapping a sequence.

A Serializable container contains a begin, end and size methods, as an STL container

Definition in file Sequence.hpp.

Macro Definition Documentation

#define SERIALIZABLE_PAIR_WITH_TAG (   TYPE1,
  TYPE2,
  NAME,
  TAG,
  ... 
)
Value:
SerializableSequence<std::pair<TYPE1,TYPE2>> \
NAME{TAG,__VA_ARGS__}

Create a serializable pair with a given tag.

Definition at line 172 of file Sequence.hpp.

#define SERIALIZABLE_SEQUENCE_WITH_TAG (   CONTAINER,
  NAME,
  TAG,
  ... 
)
Value:
SerializableSequence<CONTAINER> \
NAME{TAG,__VA_ARGS__}

Create a serializable sequence with a given tag.

Definition at line 145 of file Sequence.hpp.

Typedef Documentation

template<typename T , typename Ret = void>
using SUNphi::EnableIfIsSerializableSequence = typedef EnableIf< isSerializableSequence <T> ,Ret>

Provides the class itself if T is of the given type

Provides the class itself if T satisfies the condition

Definition at line 187 of file Sequence.hpp.

Function Documentation

template<typename T >
constexpr bool SUNphi::_isSerializableSequence ( const T *  )

Check if the class is a SerializableSequence

False case

Definition at line 187 of file Sequence.hpp.

template<typename... Ts>
constexpr bool SUNphi::_isSerializableSequence ( const SerializableSequence< Ts... > *  )

Check if the class is a SerializableSequence

True case

Definition at line 187 of file Sequence.hpp.

Variable Documentation

template<typename T >
constexpr bool SUNphi::isSerializableSequence = _isSerializableSequence ((RemRef<T>*)nullptr)

Check if the class is a SerializableSequence

Calls the internal implementation

Definition at line 187 of file Sequence.hpp.