All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Dictionary.cpp
Go to the documentation of this file.
1 #include "GaudiKernel/System.h"
2 namespace GaudiDict {
6  std::string pairName(const std::type_info& typ1, const std::type_info& typ2);
10  std::string templateName2(std::string templ, const std::type_info& typ1, const std::type_info& typ2);
11  std::string templateName3(std::string templ, const std::type_info& typ1, const std::type_info& typ2, const std::type_info& typ3);
13 }
14 
15 static std::string clean(std::string c) {
16  for(size_t occ=c.find(" *"); occ != std::string::npos; occ=c.find(" *"))
17  c.replace(occ,2,"*");
18  return c;
19 }
20 
22  std::string r = clean(System::typeinfoName(typ));
23  //if ( r.compare(0,4,"enum") == 0 ) {
24  // r = "int";
25  //}
26  return r;
27 }
28 
30  return templateName1(std::move(templ), typeName(typ));
31 }
32 
34  s += "<";
35  s += typ;
36  s += ( s.back() == '>') ? " >" : ">"; // with C++11, we can have <somename<T>>...
37  return clean(s);
38 }
39 
41  s += "<";
42  s += typeName(typ1);
43  s += ",";
44  s += typeName(typ2);
45  s += (s.back() == '>') ? " >" : ">";
46  return clean(s);
47 }
48 
50  s += "<";
51  s += typeName(typ1);
52  s += ",";
53  s += typeName(typ2);
54  s += ",";
55  s += typeName(typ3);
56  s += (s.back() == '>') ? " >" : ">";
57  return clean(s);
58 }
59 
61  return templateName1("std::vector", typ);
62 }
63 
65  return templateName1("std::vector", typ);
66 }
67 
69  return templateName2("std::pair", typ1, typ2);
70 }
71 
73  std::string s = "KeyedContainer<";
74  s += typeName(typ1);
75  s += ",";
76  s += mgr_typ;
77  if ( mgr_typ[mgr_typ.length()-1]=='>' ) s += " ";
78  s += ">";
79  return clean(s);
80 }
81 
82 std::string GaudiDict::relationName(const std::string& /* prefix */, const std::type_info& /* typ1 */, const std::type_info& /* typ2 */) {
83  return "";
84 }
std::string templateName3(std::string templ, const std::type_info &typ1, const std::type_info &typ2, const std::type_info &typ3)
Definition: Dictionary.cpp:49
GAUDI_API const std::string typeinfoName(const std::type_info &)
Get platform independent information about the class type.
Definition: System.cpp:299
std::string templateName2(std::string templ, const std::type_info &typ1, const std::type_info &typ2)
Definition: Dictionary.cpp:40
std::string keyedContainerName(const std::string &prefix, const std::type_info &typ1)
Definition: Dictionary.cpp:72
STL class.
T replace(T...args)
std::string pairName(const std::type_info &typ1, const std::type_info &typ2)
Definition: Dictionary.cpp:68
T move(T...args)
T find(T...args)
T length(T...args)
std::string relationName(const std::string &prefix, const std::type_info &typ1, const std::type_info &typ2)
Definition: Dictionary.cpp:82
std::string templateName1(std::string templ, const std::type_info &typ)
Definition: Dictionary.cpp:29
T back(T...args)
string s
Definition: gaudirun.py:245
std::string typeName(const std::type_info &typ)
Definition: Dictionary.cpp:21
std::string vectorName(const std::type_info &typ)
Definition: Dictionary.cpp:60