12 #include <fmt/format.h> 16 constexpr
struct select1st_t {
17 template <
typename S,
typename T>
21 template <
typename S,
typename T>
36 auto it = catalog_.find( property->
ClientName() );
37 if ( it == catalog_.end() ) {
43 it->second.erase( *property );
44 it->second.insert( property );
50 auto it = catalog_.find( client );
51 if ( it == catalog_.end() )
return nullptr;
53 auto pit =
std::find_if( it->second.begin(), it->second.end(), Property::Equal(
name ) );
54 return ( pit != it->second.end() ) ? &*pit :
nullptr;
59 for (
const auto& client : catalog_ ) {
60 for (
const auto& current : client.second ) { result += current.ToString() +
"\n"; }
68 o << R
"(// ================================================================================== 70 // ================================================================================== 73 size_t nComponents = 0;
74 size_t nProperties = 0;
76 for (
const auto& client :
catalog_ ) {
79 nProperties += client.second.
size();
80 for (
const auto& current : client.second ) {
81 o <<
fmt::format(
"{:<44} = {} ;", current.FullName(), current.ValueAsString() );
84 o <<
fmt::format( R
"(// ================================================================================== 85 // End parser catalog #Components={1} #Properties={2} 86 // ================================================================================== 88 nComponents, nProperties ); GAUDI_API std::string format(const char *,...)
MsgStream format utility "a la sprintf(...)".
Gaudi::Details::PropertyBase Property
\fixme backward compatibility hack for old Property base class
const std::string & ClientName() const
std::ostream & fillStream(std::ostream &out) const
print the content of the catalogue to std::ostream
T back_inserter(T... args)