6 #include "tbb/concurrent_unordered_map.h" 23 static tbb::concurrent_unordered_map<size_t, string> s_nameMap;
24 auto hash_code = typeInfo().hash_code();
25 auto entry = s_nameMap.find(hash_code);
26 if (entry == s_nameMap.end()) {
50 auto comma_count = 0ul;
51 auto template_level = 0ul;
52 auto arg_start = string::npos;
54 pos = template_instance.find_first_of(
"<>,", pos);
55 while (pos != string::npos) {
56 switch (template_instance[pos]) {
59 if ((desired_arg == 0ul) && (template_level == 1ul)) {
66 if ((desired_arg == comma_count) && (template_level == 0ul)) {
70 template_instance.find_last_not_of(
" \t", pos - 1) + 1;
71 result = template_instance.substr(arg_start, arg_end - arg_start);
76 if (template_level != 1ul) {
80 if (comma_count == desired_arg) {
82 result = template_instance.substr(arg_start, pos - arg_start);
86 if (comma_count == desired_arg) {
93 pos = template_instance.find_first_of(
"<>,", pos);
105 static std::string
const assns_start =
"art::Assns<"s;
109 result = assns_start + arg1 +
',' + arg0 +
',' + arg2 +
'>';
121 static std::string
const assns_start =
"art::Assns<"s;
137 <<
"-- attempted to get unwrapped product from non-instance of art::Wrapper."s;
std::ostream & operator<<(std::ostream &os, EDAnalyzer::Table< T > const &t)
std::string friendlyClassName() const
std::string name_of_assns_partner(std::string assns_type_name)
void print(std::ostream &) const
std::string uniform_type_name(std::type_info const &tid)
std::string name_of_unwrapped_product(std::string const &wrapped_name)
std::string name_of_assns_base(std::string assns_type_name)
bool is_instantiation_of(std::string const &type_name, std::string const &template_name)
bool is_assns(TypeID const &tid)
std::string className() const
std::string friendlyName(std::string const &iFullName)
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
std::string name_of_template_arg(std::string const &template_instance, size_t desired_arg)