11 #include "TInterpreter.h"
12 #include "TVirtualMutex.h"
14 #include "boost/algorithm/string.hpp"
15 #include "boost/thread/tss.hpp"
32 int const oneParamArraySize = 6;
41 int const twoParamArraySize = 3;
51 std::auto_ptr<G__ClassInfo> ci(
new G__ClassInfo(name.c_str()));
52 return(ci.get() && ci->IsLoaded());
80 if(hasCintDictionary(name)) {
89 if(noComponents)
return;
91 if(name.find(
"std::") == 0) {
95 if(
std::find(oneParam, oneParam + oneParamArraySize, name.substr(5, n - 5)) != oneParam + oneParamArraySize) {
97 }
else if(
std::find(twoParam, twoParam + twoParamArraySize, name.substr(5, n - 5)) != twoParam + twoParamArraySize) {
100 for(
int i = 0;
i < cnt; ++
i) {
106 for(
auto const& member : members) {
113 R__LOCKGUARD(gCINTMutex);
115 for(
auto const&
base : bases) {
150 std::ostringstream ostr;
153 ostr << *it <<
"\n\n";
156 <<
"No REFLEX data dictionary found for the following classes:\n\n"
158 <<
"Most likely each dictionary was never generated,\n"
159 <<
"but it may be that it was generated in the wrong package.\n"
160 <<
"Please add (or move) the specification\n"
161 <<
"<class name=\"whatever\"/>\n"
162 <<
"to the appropriate classes_def.xml file.\n"
163 <<
"If the class is a template instance, you may need\n"
164 <<
"to define a dummy variable of this type in classes.h.\n"
165 <<
"Also, if this class has any transient members,\n"
166 <<
"you need to specify them in classes_def.xml.";
173 for (StringSet::const_iterator it = missing.begin(), itEnd = missing.end();
176 TClass::GetClass(it->c_str(), kTRUE);
182 for (StringSet::const_iterator it = missing.begin(), itEnd = missing.end();
197 std::vector<TypeWithDict>& baseTypes) {
201 R__LOCKGUARD(gCINTMutex);
203 for(
auto const& basex : bases) {
208 if(
bool(baseRflxType)) {
215 baseTypes.push_back(baseType);
static TypeWithDict byName(std::string const &className)
std::string const & dictionaryPlugInPrefix()
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
TypeWithDict toType() const
void public_base_classes(TypeWithDict const &type, std::vector< TypeWithDict > &baseTypes)
TypeWithDict templateArgumentAt(size_t index) const
bool isTemplateInstance() const
StringSet & missingTypes()
std::set< std::string > StringSet
void checkDictionaries(std::string const &name, bool noComponents=false)
TypeWithDict typeOf() const
bool isFundamental() const
std::type_info const & typeInfo() const
TypeWithDict typeOf() const
void throwMissingDictionariesException()
static StringSet foundTypes_
bool search_all(ForwardSequence const &s, Datum const &d)
void loadMissingDictionaries()
static StringSet missingTypes_