39 # define __attribute__(x)
45 #include "lsst/pex/exceptions.h"
49 namespace persistence {
68 std::string
const& persistableName, std::type_info
const& persistableType,
70 _byName.insert(FactoryMap::value_type(persistableName, factory));
71 _nameForType.insert(StringMap::value_type(persistableType.name(),
82 std::type_info
const& persistableType,
83 lsst::pex::policy::Policy::Ptr policy) {
84 StringMap::const_iterator it = _nameForType.find(persistableType.name());
85 if (it == _nameForType.end()) {
86 throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError,
87 std::string(
"No Formatter registered for Persistable type: ") +
88 persistableType.name());
100 std::string
const& persistableName,
101 lsst::pex::policy::Policy::Ptr policy) {
102 FactoryMap::const_iterator it = _byName.find(persistableName);
103 if (it == _byName.end()) {
104 throw LSST_EXCEPT(lsst::pex::exceptions::InvalidParameterError,
105 "No Formatter registered for Persistable name: " +
108 lsst::pex::policy::Policy::Ptr formatterPolicy;
109 if (policy && policy->exists(persistableName)) {
110 formatterPolicy = policy->getPolicy(persistableName);
112 return (*(it->second))(formatterPolicy);
117 FormatterRegistry::FormatterRegistry(
void) :
118 lsst::daf::base::Citizen(typeid(*this)) {
124 FormatterRegistry::~FormatterRegistry(
void) {