31template <
class K,
class V>
32QDataStream& operator << (QDataStream &out,
const std::map<K, V>& container) {
33 size_t size = container.size();
34 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
35 throw std::runtime_error(
"Too many elements in the map");
37 out << static_cast<LMDBAL::SizeType>(size);
38 for (
const std::pair<const K, V>& pair : container)
44template <
class K,
class V>
45QDataStream& operator >> (QDataStream &in, std::map<K, V>& container) {
51 container.insert(pair);
57template <
class K,
class V>
58QDataStream& operator << (QDataStream &out,
const std::multimap<K, V>& container) {
59 size_t size = container.size();
60 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
61 throw std::runtime_error(
"Too many elements in the multimap");
63 out << static_cast<LMDBAL::SizeType>(size);
64 for (
const std::pair<const K, V>& pair : container)
70template <
class K,
class V>
71QDataStream& operator >> (QDataStream &in, std::multimap<K, V>& container) {
77 container.insert(pair);
83#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
84template <
class K,
class V>
85QDataStream& operator << (QDataStream &out,
const std::pair<K, V>& pair) {
92template <
class K,
class V>
93QDataStream& operator >> (QDataStream &in, std::pair<K, V>& container) {
94 in >> container.first;
95 in >> container.second;
102QDataStream& operator << (QDataStream &out,
const std::set<K>& container) {
103 size_t size = container.size();
104 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
105 throw std::runtime_error(
"Too many elements in the set");
107 out << static_cast<LMDBAL::SizeType>(size);
108 for (
const K& value : container)
115QDataStream& operator >> (QDataStream &in, std::set<K>& container) {
121 container.insert(value);
128QDataStream& operator << (QDataStream &out,
const std::multiset<K>& container) {
129 size_t size = container.size();
130 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
131 throw std::runtime_error(
"Too many elements in the multiset");
133 out << static_cast<LMDBAL::SizeType>(size);
134 for (
const K& value : container)
141QDataStream& operator >> (QDataStream &in, std::multiset<K>& container) {
147 container.insert(value);
154QDataStream& operator << (QDataStream &out,
const std::vector<K>& container) {
155 size_t size = container.size();
156 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
157 throw std::runtime_error(
"Too many elements in the vector");
159 out << static_cast<LMDBAL::SizeType>(size);
160 for (
const K& value : container)
167QDataStream& operator >> (QDataStream &in, std::vector<K>& container) {
170 container.resize(size);
178QDataStream& operator << (QDataStream &out,
const std::deque<K>& container) {
179 size_t size = container.size();
180 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
181 throw std::runtime_error(
"Too many elements in the deque");
183 out << static_cast<LMDBAL::SizeType>(size);
184 for (
const K& value : container)
191QDataStream& operator >> (QDataStream &in, std::deque<K>& container) {
194 container.resize(size);
202QDataStream& operator << (QDataStream &out,
const std::list<K>& container) {
203 size_t size = container.size();
204 if (size > std::numeric_limits<LMDBAL::SizeType>::max())
205 throw std::runtime_error(
"Too many elements in the list");
207 out << static_cast<LMDBAL::SizeType>(size);
208 for (
const K& value : container)
215QDataStream& operator >> (QDataStream &in, std::list<K>& container) {
219 typename std::list<K>::iterator itr = container.emplace(container.end());
uint32_t SizeType
All LMDBAL sizes are uint32.
Definition base.h:53