lsst.daf.base
21.0.0+0e33d5f78f
include
lsst
daf
base
Persistable.h
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2008, 2009, 2010 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
25
#ifndef LSST_DAF_BASE_PERSISTABLE_H
26
#define LSST_DAF_BASE_PERSISTABLE_H
27
50
#include <memory>
51
#include <typeinfo>
52
53
#include "
lsst/base.h
"
54
55
namespace
lsst
{
56
namespace
daf {
57
namespace
base {
58
59
// Forward declarations.
60
class
Persistable;
61
62
}
// namespace base
63
64
namespace
persistence {
65
// Template global function used to connect with boost::serialization.
66
// Definition is in daf/persistence/FormatterImpl.h, but is not needed by
67
// Persistable clients, only Formatter subclasses.
68
template
<
class
Form,
class
Archive>
69
void
delegateSerialize
(Archive& ar,
unsigned
int
const
version,
lsst::daf::base::Persistable
* persistable);
70
71
}
// namespace persistence
72
73
namespace
base {
74
75
class
LSST_EXPORT
Persistable
{
76
public
:
77
typedef
std::shared_ptr<Persistable>
Ptr
;
78
79
Persistable
(
void
);
80
virtual
~
Persistable
(
void
);
81
86
template
<
class
Archive>
87
void
serialize
(Archive&,
unsigned
int
const
) {}
88
};
89
99
#define LSST_PERSIST_FORMATTER(formatter...) \
100
friend class boost::serialization::access; \
101
friend class formatter; \
102
template <class Archive> \
103
void serialize(Archive& ar, unsigned int const version) { \
104
lsst::daf::persistence::delegateSerialize<formatter, Archive>(ar, version, this); \
105
}
106
107
}
// namespace base
108
}
// namespace daf
109
}
// namespace lsst
110
111
// Forward declaration of the boost::serialization::access class.
112
namespace
boost
{
113
namespace
serialization {
114
class
access;
115
}
116
}
// namespace boost
117
118
#endif
std::shared_ptr
STL class.
lsst::daf::base::Persistable::Ptr
std::shared_ptr< Persistable > Ptr
Definition:
Persistable.h:77
LSST_EXPORT
#define LSST_EXPORT
boost
Definition:
DateTime.h:54
base.h
lsst::daf::persistence::delegateSerialize
void delegateSerialize(Archive &ar, unsigned int const version, lsst::daf::base::Persistable *persistable)
lsst
lsst::daf::base::Persistable
Base class for all persistable classes.
Definition:
Persistable.h:75
lsst::daf::base::Persistable::serialize
void serialize(Archive &, unsigned int const)
Template boost::serialization function for the base class.
Definition:
Persistable.h:87
Generated on Thu Dec 17 2020 10:10:41 for lsst.daf.base by
1.8.18