Electroneum
container.h File Reference
#include "serialization.h"
Include dependency graph for container.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 serialization
 
 serialization::detail
 

Functions

template<typename Archive , class T >
bool serialization::detail::serialize_container_element (Archive &ar, T &e)
 
template<typename Archive >
bool serialization::detail::serialize_container_element (Archive &ar, uint32_t &e)
 
template<typename Archive >
bool serialization::detail::serialize_container_element (Archive &ar, uint64_t &e)
 
template<typename C >
void serialization::detail::do_reserve (C &c, size_t N)
 
template<template< bool > class Archive, typename C >
bool do_serialize_container (Archive< false > &ar, C &v)
 
template<template< bool > class Archive, typename C >
bool do_serialize_container (Archive< true > &ar, C &v)
 

Function Documentation

◆ do_serialize_container() [1/2]

template<template< bool > class Archive, typename C >
bool do_serialize_container ( Archive< false > &  ar,
C &  v 
)

Definition at line 65 of file container.h.

66 {
67  size_t cnt;
68  ar.begin_array(cnt);
69  if (!ar.stream().good())
70  return false;
71  v.clear();
72 
73  // very basic sanity check
74  if (ar.remaining_bytes() < cnt) {
75  ar.stream().setstate(std::ios::failbit);
76  return false;
77  }
78 
80 
81  for (size_t i = 0; i < cnt; i++) {
82  if (i > 0)
83  ar.delimit_array();
84  typename C::value_type e;
86  return false;
88  if (!ar.stream().good())
89  return false;
90  }
91  ar.end_array();
92  return true;
93 }
bool serialize_container_element(Archive &ar, T &e)
Definition: container.h:40
void do_reserve(C &c, size_t N)
Definition: container.h:60
void do_add(std::deque< T > &c, T &&e)
Definition: deque.h:51
const T & move(const T &t)
Definition: gtest-port.h:1317
Here is the call graph for this function:
Here is the caller graph for this function:

◆ do_serialize_container() [2/2]

template<template< bool > class Archive, typename C >
bool do_serialize_container ( Archive< true > &  ar,
C &  v 
)

Definition at line 96 of file container.h.

97 {
98  size_t cnt = v.size();
99  ar.begin_array(cnt);
100  for (auto i = v.begin(); i != v.end(); ++i)
101  {
102  if (!ar.stream().good())
103  return false;
104  if (i != v.begin())
105  ar.delimit_array();
106  if(!::serialization::detail::serialize_container_element(ar, const_cast<typename C::value_type&>(*i)))
107  return false;
108  if (!ar.stream().good())
109  return false;
110  }
111  ar.end_array();
112  return true;
113 }
bool serialize_container_element(Archive &ar, T &e)
Definition: container.h:40
Here is the call graph for this function: