QxOrm
1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches
QxBoostSerializeHelper.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_BOOST_SERIALIZE_HELPER_H_
34
#define _QX_BOOST_SERIALIZE_HELPER_H_
35
36
#ifdef _MSC_VER
37
#pragma once
38
#endif
39
40
#include <boost/serialization/void_cast.hpp>
41
42
#include <
QxTraits/get_base_class.h
>
43
44
#include <
QxSerialize/QxBoostSerializeHelper/QxBoostInitGuid.h
>
45
46
namespace
qx
{
47
48
template
<
class
T>
49
class
QxBoostSerializeHelper
50
{
51
52
private
:
53
54
typedef
T
type_derived
;
55
typedef
typename
qx::trait::get_base_class<type_derived>::type
type_base
;
56
57
public
:
58
59
template
<
class
Archive>
60
static
inline
void
register_type_helper
(Archive & ar,
const
T * t)
61
{ Q_UNUSED(t); ar.template register_type<type_derived>(); }
62
63
static
inline
void
void_cast_register_helper
(
const
T * t)
64
{ Q_UNUSED(t);
QxBoostVoidCastRegisterHelper<std::is_same<type_base, qx::trait::no_base_class_defined>::value
, 0>::helper(); }
65
66
static
inline
void
init_guid
(
const
T * t)
67
{ Q_UNUSED(t);
QxBoostInitGuid<T>::init
(); }
68
69
private
:
70
71
template
<
bool
bNoBaseClass
/* = false */
,
int
dummy>
72
struct
QxBoostVoidCastRegisterHelper
73
{
static
inline
void
helper
() { boost::serialization::void_cast_register(
static_cast<
type_derived
*
>
(NULL),
static_cast<
type_base
*
>
(NULL)); } };
74
75
template
<
int
dummy>
76
struct
QxBoostVoidCastRegisterHelper
<true, dummy>
77
{
static
inline
void
helper
() {
/* Nothing */
; } };
78
79
};
80
81
}
// namespace qx
82
83
#endif
// _QX_BOOST_SERIALIZE_HELPER_H_
84
#endif
// _QX_ENABLE_BOOST_SERIALIZATION
QxBoostInitGuid.h
qx::QxBoostInitGuid::init
static void init()
Definition
QxBoostInitGuid.h:56
qx::QxBoostSerializeHelper
Definition
QxBoostSerializeHelper.h:50
qx::QxBoostSerializeHelper::type_base
qx::trait::get_base_class< type_derived >::type type_base
Definition
QxBoostSerializeHelper.h:55
qx::QxBoostSerializeHelper::type_derived
T type_derived
Definition
QxBoostSerializeHelper.h:54
qx::QxBoostSerializeHelper::register_type_helper
static void register_type_helper(Archive &ar, const T *t)
Definition
QxBoostSerializeHelper.h:60
qx::QxBoostSerializeHelper::void_cast_register_helper
static void void_cast_register_helper(const T *t)
Definition
QxBoostSerializeHelper.h:63
qx::QxBoostSerializeHelper::init_guid
static void init_guid(const T *t)
Definition
QxBoostSerializeHelper.h:66
qx::trait::no_base_class_defined
Definition
get_base_class.h:52
get_base_class.h
qx::trait::get_base_class<T>::type : retrieve base class of type T registered into QxOrm context and ...
qx
Root namespace for all QxOrm library features.
Definition
IxCollection.h:50
qx::QxBoostSerializeHelper::QxBoostVoidCastRegisterHelper< true, dummy >::helper
static void helper()
Definition
QxBoostSerializeHelper.h:77
qx::QxBoostSerializeHelper::QxBoostVoidCastRegisterHelper
Definition
QxBoostSerializeHelper.h:73
qx::QxBoostSerializeHelper::QxBoostVoidCastRegisterHelper::helper
static void helper()
Definition
QxBoostSerializeHelper.h:73
include
QxSerialize
QxBoostSerializeHelper
QxBoostSerializeHelper.h
Generated on Wed Jul 24 2024 21:08:17 for QxOrm by
1.11.0