11 #include "TInterpreter.h"
12 #include "THashTable.h"
14 #include "boost/algorithm/string.hpp"
15 #include "boost/thread/tss.hpp"
32 TClass *
cl = TClass::GetClass(type.
typeInfo(),
true);
37 if(!cl->HasDictionary()) {
46 TClass *
cl = TClass::GetClass(type.
typeInfo(),
true);
52 cl->GetMissingDictionaries(result, recursive);
53 for(
auto const& item : result) {
54 TClass
const* cl =
static_cast<TClass
const*
>(item);
61 TClass *
cl = TClass::GetClass(type.
typeInfo(),
true);
64 <<
"No TClass for class: '" << type.
className() <<
"'" << std::endl;
66 if(!cl->HasDictionary()) {
75 TClass *
cl = TClass::GetClass(type.
typeInfo(),
true);
78 <<
"No TClass for class: '" << type.
className() <<
"'" << std::endl;
81 cl->GetMissingDictionaries(result, recursive);
82 for(
auto const& item : result) {
83 TClass
const* cl =
static_cast<TClass
const*
>(item);
91 std::ostringstream ostr;
93 ostr << item <<
"\n\n";
96 <<
"No data dictionary found for the following classes:\n\n"
98 <<
"Most likely each dictionary was never generated,\n"
99 <<
"but it may be that it was generated in the wrong package.\n"
100 <<
"Please add (or move) the specification\n"
101 <<
"<class name=\"whatever\"/>\n"
102 <<
"to the appropriate classes_def.xml file.\n"
103 <<
"If the class is a template instance, you may need\n"
104 <<
"to define a dummy variable of this type in classes.h.\n"
105 <<
"Also, if this class has any transient members,\n"
106 <<
"you need to specify them in classes_def.xml.";
114 for(
auto const& item : missing) {
116 TClass::GetClass(item.typeInfo(), kTRUE);
122 for(
auto const& item : missing) {
137 std::vector<TypeWithDict>& baseTypes) {
143 for (
auto const& basex : bases) {
149 if (!
bool(baseRflxType)) {
157 baseTypes.push_back(baseType);
bool checkTypeDictionary(TypeID const &type)
void checkTypeDictionaries(TypeID const &type, bool recursive=true)
void checkClassDictionaries(TypeID const &type, bool recursive=true)
static TypeSet missingTypes_
const std::type_info & typeInfo() const
void public_base_classes(TypeWithDict const &type, std::vector< TypeWithDict > &baseTypes)
std::set< TypeID > TypeSet
std::type_info const & typeInfo() const
TypeWithDict typeOf() const
void throwMissingDictionariesException()
bool search_all(ForwardSequence const &s, Datum const &d)
void loadMissingDictionaries()
std::string const & className() const
bool checkClassDictionary(TypeID const &type)