9 #include <boost/regex.hpp>
11 #include "tbb/concurrent_unordered_map.h"
19 namespace friendlyname {
23 static boost::regex
const reColons(
"::");
24 static boost::regex
const reComma(
",");
42 static boost::regex
const reWrapper(
"edm::Wrapper<(.*)>");
43 static boost::regex
const reString(
"std::basic_string<char>");
44 static boost::regex
const reString2(
"std::string");
45 static boost::regex
const reSorted(
"edm::SortedCollection<(.*), *edm::StrictWeakOrdering<\\1 *> >");
47 static boost::regex
const reLongLong(
"Long64_t");
48 static boost::regex
const reUnsigned(
"unsigned ");
49 static boost::regex
const reLong(
"long ");
50 static boost::regex
const reVector(
"std::vector");
51 static boost::regex
const reAIKR(
", *edm::helper::AssociationIdenticalKeyReference");
54 static boost::regex
const reOwnVector(
"edm::OwnVector<(.*), *edm::ClonePolicy<\\1 *> >");
58 static boost::regex
const reOneToOne(
"edm::AssociationMap< *edm::OneToOne<(.*?),(.*?), *u[a-z]*> >");
59 static boost::regex
const reOneToMany(
"edm::AssociationMap< *edm::OneToMany<(.*?),(.*?), *u[a-z]*> >");
60 static boost::regex
const reOneToValue(
"edm::AssociationMap< *edm::OneToValue<(.*?),(.*?), *u[a-z]*> >");
61 static boost::regex
const reOneToManyWithQuality(
"edm::AssociationMap<edm::OneToManyWithQuality<(.*?), *(.*?), *(.*?), *u[a-z]*> >");
62 static boost::regex
const reToVector(
"edm::AssociationVector<(.*), *(.*), *edm::Ref.*,.*>");
64 static boost::regex
const reToRangeMap(
"edm::RangeMap< *(.*), *(.*), *edm::ClonePolicy<([^>]*)> >");
66 static boost::regex
const reToRefs1(
"edm::RefVector< *(.*)< *(.*) *>, *\\2 *, *edm::refhelper::FindUsingAdvance< *\\1< *\\2 *> *, *\\2 *> *>");
67 static boost::regex
const reToRefs2(
"edm::RefVector< *(.*) *, *(.*) *, *edm::refhelper::FindUsingAdvance< *\\1, *\\2 *> *>");
68 static boost::regex
const reToRefsAssoc(
"edm::RefVector< *Association(.*) *, *edm::helper(.*), *Association(.*)::Find>");
71 using boost::regex_replace;
74 name = regex_replace(name,
reAIKR,
"");
75 name = regex_replace(name,
reString,
"String");
76 name = regex_replace(name,
reString2,
"String");
77 name = regex_replace(name,
reSorted,
"sSorted<$1>");
81 name = regex_replace(name,
reLong,
"l");
82 name = regex_replace(name,
reVector,
"s");
83 name = regex_replace(name,
reOwnVector,
"sOwned<$1>");
84 name = regex_replace(name,
reToVector,
"AssociationVector<$1,To,$2>");
85 name = regex_replace(name,
reOneToOne,
"Association<$1,ToOne,$2>");
86 name = regex_replace(name,
reOneToMany,
"Association<$1,ToMany,$2>");
87 name = regex_replace(name,
reOneToValue,
"Association<$1,ToValue,$2>");
89 name = regex_replace(name,
reToRangeMap,
"RangeMap<$1,$2>");
90 name = regex_replace(name,
reToRefs1,
"Refs<$1<$2>>");
91 name = regex_replace(name,
reToRefs2,
"Refs<$1,$2>");
92 name = regex_replace(name,
reToRefsAssoc,
"Refs<Association$1>");
99 using namespace boost;
109 regex
const eMatch(
std::string(
"(^[^<]*)<")+aMatch+
">");
116 using namespace boost;
118 bool shouldStop =
false;
120 if(std::string::npos !=
result.find_first_of(
"<")) {
127 result = regex_replace(
result, regex(templateClass),friendlierName);
132 assert(0 ==
"failed to find a match for template class");
142 typedef tbb::concurrent_unordered_map<std::string, std::string> Map;
143 static Map s_fillToFriendlyName;
144 auto itFound = s_fillToFriendlyName.find(iFullName);
145 if(s_fillToFriendlyName.end()==itFound) {
148 return itFound->second;
static boost::regex const reOneToValue("edm::AssociationMap< *edm::OneToValue<(.*?),(.*?), *u[a-z]*> >")
static boost::regex const reTemplateArgs("[^<]*<(.*)>$")
static boost::regex const reOwnVector("edm::OwnVector<(.*), *edm::ClonePolicy<\\1 *> >")
static boost::regex const reLong("long ")
static boost::regex const reUnsigned("unsigned ")
static boost::regex const reToRangeMap("edm::RangeMap< *(.*), *(.*), *edm::ClonePolicy<([^>]*)> >")
static boost::regex const reSorted("edm::SortedCollection<(.*), *edm::StrictWeakOrdering<\\1 *> >")
static boost::regex const reToRefs2("edm::RefVector< *(.*) *, *(.*) *, *edm::refhelper::FindUsingAdvance< *\\1, *\\2 *> *>")
static boost::regex const reAllSpaces(" +")
std::string removeAllSpaces(std::string const &iIn)
std::string subFriendlyName(std::string const &iFullName)
static boost::regex const reTemplateClass("([^<>,]+<[^<>]*>)")
static boost::regex const reOneToMany("edm::AssociationMap< *edm::OneToMany<(.*?),(.*?), *u[a-z]*> >")
static boost::regex const reOneToOne("edm::AssociationMap< *edm::OneToOne<(.*?),(.*?), *u[a-z]*> >")
static boost::regex const reVector("std::vector")
static boost::regex const reLongLong("Long64_t")
static boost::regex const reToVector("edm::AssociationVector<(.*), *(.*), *edm::Ref.*,.*>")
static boost::regex const reOneToManyWithQuality("edm::AssociationMap<edm::OneToManyWithQuality<(.*?), *(.*?), *(.*?), *u[a-z]*> >")
std::string friendlyName(std::string const &iFullName)
static boost::regex const reToRefs1("edm::RefVector< *(.*)< *(.*) *>, *\\2 *, *edm::refhelper::FindUsingAdvance< *\\1< *\\2 *> *, *\\2 *> *>")
std::string handleNamespaces(std::string const &iIn)
Container::value_type value_type
static boost::regex const reAIKR(", *edm::helper::AssociationIdenticalKeyReference")
static boost::regex const reULongLong("ULong64_t")
static boost::regex const reBeginSpace("^ +")
std::string standardRenames(std::string const &iIn)
std::string handleTemplateArguments(std::string const &)
static boost::regex const reComma(",")
static boost::regex const reColons("::")
static std::string const emptyString("")
static boost::regex const reString("std::basic_string<char>")
static boost::regex const reEndSpace(" +$")
static boost::regex const reWrapper("edm::Wrapper<(.*)>")
static boost::regex const reString2("std::string")
std::string removeExtraSpaces(std::string const &iIn)
static boost::regex const reToRefsAssoc("edm::RefVector< *Association(.*) *, *edm::helper(.*), *Association(.*)::Find>")