Electroneum
Loading...
Searching...
No Matches
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

namespace  serialization
namespace  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;
87 ::serialization::detail::do_add(v, std::move(e));
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_add(std::deque< T > &c, T &&e)
Definition deque.h:51
void do_reserve(C &c, size_t N)
Definition container.h:60
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}
Here is the call graph for this function: