ATLAS Offline Software
Loading...
Searching...
No Matches
DecorKeyHelpers.cxx
Go to the documentation of this file.
1/*
2 * Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration.
3 */
10
11
15
16
17namespace SG {
18
19
26std::string contKeyFromKey (const std::string& key)
27{
28 std::string::size_type ipos = key.find ('.');
29 if (ipos == std::string::npos)
30 return key;
31 return key.substr (0, ipos);
32}
33
34
42std::string decorKeyFromKey (const std::string& key, const std::string& deflt /*= ""*/)
43{
44 std::string::size_type ipos = key.find ('.');
45 if (ipos == std::string::npos)
46 return deflt;
47 return key.substr (ipos+1, std::string::npos);
48}
49
50
59std::string makeContDecorKey(const std::string& cont, const std::string& decor)
60{
61 if (cont.empty()) return decor;
62 if (decor.empty()) return cont;
63 return cont + '.' + decor;
64}
65
66
77std::string makeContDecorKey(const VarHandleKey& contKey, const std::string& key)
78{
79 if (key.empty() || key.ends_with ('+')) {
80 return "";
81 }
82 if (key.find('.') != std::string::npos) {
83 throw SG::ExcBadHandleKey(key + " (DecorHandleKey has been declared with a parent container. "
84 "Its value should not contain any container name.)");
85 }
86
87 // Note: VHK::fullKey().key() contains the store prefix, key() does not.
88 return makeContDecorKey( contKey.fullKey().key(), key);
89}
90
91
99void removeContFromDecorKey(const VarHandleKey& contKey, std::string& key)
100{
101 // Remove container name from key
102 const std::string toerase = contKey.fullKey().key() + ".";
103 const size_t pos = key.find(toerase);
104 if (pos != std::string::npos) {
105 key.erase(pos, toerase.size());
106 }
107
108}
109
110} // namespace SG
Exceptions that can be thrown from StoreGate.
Some common helper functions used by decoration handles.
A property holding a SG store/key/clid from which a VarHandle is made.
Exception — Bad key format for VarHandleKey.
A property holding a SG store/key/clid from which a VarHandle is made.
const std::string & key() const
Return the StoreGate ID for the referenced object.
Forward declaration.
void removeContFromDecorKey(const VarHandleKey &contKey, std::string &key)
Remove container name from decoration key.
std::string makeContDecorKey(const std::string &cont, const std::string &decor)
Make a StoreGate key from container and decoration name.
std::string contKeyFromKey(const std::string &key)
Extract the container part of key.
std::string decorKeyFromKey(const std::string &key, const std::string &deflt)
Extract the decoration part of key.