lsst.daf.persistence
15.0-4-g45f767a+6
include
lsst
daf
persistence
FormatterRegistry.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_MWI_PERSISTENCE_FORMATTERREGISTRY_H
26
#define LSST_MWI_PERSISTENCE_FORMATTERREGISTRY_H
27
46
#include "
lsst/daf/base/Citizen.h
"
47
#include "
lsst/daf/persistence/Formatter.h
"
48
49
namespace
lsst
{
50
namespace
daf {
51
namespace
persistence {
52
53
class
FormatterRegistry
:
public
lsst::daf::base::Citizen
{
54
public
:
55
void
registerFormatter
(
std::string
const
& persistableName,
56
std::type_info
const
& persistableType,
57
Formatter::FactoryPtr
factory);
58
Formatter::Ptr
lookupFormatter
(
std::type_info
const
& persistableType,
59
lsst::pex::policy::Policy::Ptr
policy);
60
Formatter::Ptr
lookupFormatter
(
std::string
const
& persistableName,
61
lsst::pex::policy::Policy::Ptr
policy);
62
63
static
FormatterRegistry
&
getInstance
(
void
);
64
65
private
:
66
typedef
std::map<std::string, Formatter::FactoryPtr>
FactoryMap
;
67
typedef
std::map<std::string, std::string>
StringMap
;
68
69
FormatterRegistry
(
void
);
70
~
FormatterRegistry
(
void
);
71
72
// Do not copy or assign a FormatterRegistry.
73
FormatterRegistry
(
FormatterRegistry
const
&);
74
FormatterRegistry
& operator=(
FormatterRegistry
const
&);
75
76
FactoryMap _byName;
78
StringMap _nameForType;
80
};
81
82
}}}
// namespace lsst::daf::persistence
83
84
#endif
std::shared_ptr
lsst::daf::persistence::FormatterRegistry
Class that registers all Formatter subclasses.
Definition:
FormatterRegistry.h:53
lsst::daf::persistence::FormatterRegistry::getInstance
static FormatterRegistry & getInstance(void)
Get a reference to the singleton instance of the FormatterRegistry.
Definition:
FormatterRegistry.cc:56
std::map< std::string, Formatter::FactoryPtr >
std::type_info
std::string
STL class.
Formatter.h
Interface for Formatter abstract base class.
lsst
lsst::daf::persistence::FormatterRegistry::registerFormatter
void registerFormatter(std::string const &persistableName, std::type_info const &persistableType, Formatter::FactoryPtr factory)
Register a factory for a Formatter subclass using the name and type of the Persistable subclass it fo...
Definition:
FormatterRegistry.cc:67
Citizen.h
lsst::daf::persistence::FormatterRegistry::lookupFormatter
Formatter::Ptr lookupFormatter(std::type_info const &persistableType, lsst::pex::policy::Policy::Ptr policy)
Create a new instance of a Formatter subclass given the typeid() of its corresponding Persistable sub...
Definition:
FormatterRegistry.cc:81
lsst::daf::base::Citizen
lsst::daf::persistence::Formatter::FactoryPtr
Ptr(* FactoryPtr)(lsst::pex::policy::Policy::Ptr)
Pointer to a (static) factory function for a Formatter subclass.
Definition:
Formatter.h:85
Generated on Tue Apr 17 2018 00:20:27 for lsst.daf.persistence by
1.8.13