QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches
QxSerialize_QxCollection.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** https://www.qxorm.com/
4** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
5**
6** This file is part of the QxOrm library
7**
8** This software is provided 'as-is', without any express or implied
9** warranty. In no event will the authors be held liable for any
10** damages arising from the use of this software
11**
12** Commercial Usage
13** Licensees holding valid commercial QxOrm licenses may use this file in
14** accordance with the commercial license agreement provided with the
15** Software or, alternatively, in accordance with the terms contained in
16** a written agreement between you and Lionel Marty
17**
18** GNU General Public License Usage
19** Alternatively, this file may be used under the terms of the GNU
20** General Public License version 3.0 as published by the Free Software
21** Foundation and appearing in the file 'license.gpl3.txt' included in the
22** packaging of this file. Please review the following information to
23** ensure the GNU General Public License version 3.0 requirements will be
24** met : http://www.gnu.org/copyleft/gpl.html
25**
26** If you are unsure which license is appropriate for your use, or
27** if you have questions regarding the use of this file, please contact :
28** contact@qxorm.com
29**
30****************************************************************************/
31
32#ifdef _QX_ENABLE_BOOST_SERIALIZATION
33#ifndef _QX_SERIALIZE_QX_COLLECTION_H_
34#define _QX_SERIALIZE_QX_COLLECTION_H_
35
36#ifdef _MSC_VER
37#pragma once
38#endif
39
40#include <boost/serialization/serialization.hpp>
41#include <boost/serialization/split_free.hpp>
42#include <boost/serialization/nvp.hpp>
43#include <boost/serialization/utility.hpp>
44
46
47namespace boost {
48namespace serialization {
49
50template <class Archive, typename Key, typename Value>
51inline void save(Archive & ar, const qx::QxCollection<Key, Value> & t, const unsigned int file_version)
52{
53 Q_UNUSED(file_version);
54 long lCount = t.count();
55 ar << boost::serialization::make_nvp("count", lCount);
56
57 for (long l = 0; l < lCount; l++)
58 {
59 std::pair<Key, Value> pair_key_value = std::make_pair(t.getKeyByIndex(l), t.getByIndex(l));
60 ar << boost::serialization::make_nvp("item", pair_key_value);
61 }
62}
63
64template <class Archive, typename Key, typename Value>
65inline void load(Archive & ar, qx::QxCollection<Key, Value> & t, const unsigned int file_version)
66{
67 Q_UNUSED(file_version);
68 long lCount = 0;
69 ar >> boost::serialization::make_nvp("count", lCount);
70
71 t.clear();
72 t.reserve(lCount);
73 std::pair<Key, Value> pair_key_value;
74
75 for (long l = 0; l < lCount; l++)
76 {
77 ar >> boost::serialization::make_nvp("item", pair_key_value);
78 t.insert(pair_key_value.first, pair_key_value.second);
79 }
80}
81
82template <class Archive, typename Key, typename Value>
83inline void serialize(Archive & ar, qx::QxCollection<Key, Value> & t, const unsigned int file_version)
84{
85 boost::serialization::split_free(ar, t, file_version);
86}
87
88} // namespace boost
89} // namespace serialization
90
91#endif // _QX_SERIALIZE_QX_COLLECTION_H_
92#endif // _QX_ENABLE_BOOST_SERIALIZATION
QxOrm thread-safe container (keep insertion order + quick access by index + quick access by key)
qx::QxCollection<Key, Value> : QxOrm thread-safe container (keep insertion order + quick access by in...
bool insert(const Key &key, const Value &value)
Add element 'value' at the end of the list indexed by 'key'.
const_reference_key getKeyByIndex(long index) const
Return the key associated with the element at index position 'index'.
void reserve(long size)
Request that the capacity of the allocated storage space for the items of the container be at least e...
long count() const
Return the number of items in the list (same as 'size()')
void clear()
Remove all items from the list.
const_reference_value getByIndex(long index) const
Return the item at index position 'index'.
void serialize(Archive &ar, boost::tuple< T0, T1 > &t, const unsigned int file_version)
void load(Archive &ar, boost::unordered_map< Key, Value > &t, const unsigned int)
void save(Archive &ar, const boost::unordered_map< Key, Value > &t, const unsigned int)