ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
AthenaPOOL
RootConversions
RootConversions
TConverterRegistry.h
Go to the documentation of this file.
1
// This file's extension implies that it's C, but it's really -*- C++ -*-.
2
3
/*
4
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
5
*/
23
24
25
#ifndef ROOTCONVERSIONS_TCONVERTERREGISTRY_H
26
#define ROOTCONVERSIONS_TCONVERTERREGISTRY_H
27
28
#include <map>
29
#include <mutex>
30
#include <string>
31
#include "Rtypes.h"
32
33
class
TVirtualConverter
;
34
class
TMemberStreamer;
35
36
40
class
TConverterRegistry
41
{
42
public
:
46
static
TConverterRegistry
*
Instance
();
47
48
49
//==========================================================================
50
// @c TConvertingBranchElement converters.
51
//
52
62
void
AddConverter
(
TVirtualConverter
* conv);
63
72
void
AddConverter
(
TVirtualConverter
* conv,
bool
takeown);
73
82
bool
AddConverter
(
const
char
* convname);
83
90
TVirtualConverter
*
GetConverter
(
const
char
* name,
int
checksum)
const
;
91
92
93
//==========================================================================
94
// @c TConvertingStreamerInfo converters.
95
//
96
97
void
AddStreamerConverter
(
const
std::string& from_type,
98
const
std::string& to_type,
99
TMemberStreamer* streamer);
100
101
TMemberStreamer*
GetStreamerConverter
(
const
std::string& from_type,
102
const
std::string& to_type)
const
;
103
104
105
private
:
107
~TConverterRegistry
();
108
109
// We store a map of names to maps of checksums to converters.
110
// The bool flag tells whether or not we own this converter.
111
using
Payload
= std::pair<TVirtualConverter*, bool>;
112
using
CheckSumMap
= std::map<UInt_t, Payload>;
113
using
MapType
= std::map<std::string, CheckSumMap, std::less<>>;
114
116
MapType
fMap
;
117
119
mutable
std::mutex
fMutex
;
120
using
lock_t
= std::lock_guard<std::mutex>;
121
123
#ifndef __CLING__
124
using
SMapType
= std::map<std::string, TMemberStreamer*>;
125
SMapType
fSMap
;
126
#endif
127
};
128
129
130
#endif
// not ROOTCONVERSIONS_TCONVERTERREGISTRY_H
TConverterRegistry
Registry for Root converters.
Definition
TConverterRegistry.h:41
TConverterRegistry::MapType
std::map< std::string, CheckSumMap, std::less<> > MapType
Definition
TConverterRegistry.h:113
TConverterRegistry::fMap
MapType fMap
Map of registered converters.
Definition
TConverterRegistry.h:116
TConverterRegistry::GetStreamerConverter
TMemberStreamer * GetStreamerConverter(const std::string &from_type, const std::string &to_type) const
Definition
TConverterRegistry.cxx:127
TConverterRegistry::CheckSumMap
std::map< UInt_t, Payload > CheckSumMap
Definition
TConverterRegistry.h:112
TConverterRegistry::SMapType
std::map< std::string, TMemberStreamer * > SMapType
Streamer converters.
Definition
TConverterRegistry.h:124
TConverterRegistry::Payload
std::pair< TVirtualConverter *, bool > Payload
Definition
TConverterRegistry.h:111
TConverterRegistry::fSMap
SMapType fSMap
Definition
TConverterRegistry.h:125
TConverterRegistry::lock_t
std::lock_guard< std::mutex > lock_t
Definition
TConverterRegistry.h:120
TConverterRegistry::Instance
static TConverterRegistry * Instance()
Return a pointer to the global registry instance.
Definition
TConverterRegistry.cxx:142
TConverterRegistry::~TConverterRegistry
~TConverterRegistry()
Destructor.
Definition
TConverterRegistry.cxx:156
TConverterRegistry::AddConverter
void AddConverter(TVirtualConverter *conv)
Add a new converter to the registry.
Definition
TConverterRegistry.cxx:35
TConverterRegistry::fMutex
std::mutex fMutex
Protect access to the map.
Definition
TConverterRegistry.h:119
TConverterRegistry::AddStreamerConverter
void AddStreamerConverter(const std::string &from_type, const std::string &to_type, TMemberStreamer *streamer)
Definition
TConverterRegistry.cxx:113
TConverterRegistry::GetConverter
TVirtualConverter * GetConverter(const char *name, int checksum) const
Look up a converter in the registry by name and checksum.
Definition
TConverterRegistry.cxx:99
TVirtualConverter
Base class for converters for Root schema evolution.
Definition
TVirtualConverter.h:110
Generated on
for ATLAS Offline Software by
1.17.0