Skip to content

Commit

Permalink
Remove TypeWithDict from public_base_classes API
Browse files Browse the repository at this point in the history
TypeID is all that is needed from the caller.
  • Loading branch information
Dr15Jones committed Jul 18, 2022
1 parent b2955a6 commit 65cc04c
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 24 deletions.
5 changes: 2 additions & 3 deletions DataFormats/Provenance/interface/ProductRegistry.h
Expand Up @@ -32,7 +32,6 @@ namespace edm {

class ProductResolverIndexHelper;
class TypeID;
class TypeWithDict;

class ProductRegistry {
public:
Expand Down Expand Up @@ -172,12 +171,12 @@ namespace edm {
std::string const* processName);
void addElementTypesForAliases(std::set<TypeID> const* elementTypesConsumed,
std::map<TypeID, TypeID> const& containedTypeMap,
std::map<TypeID, std::vector<TypeWithDict>> const& containedTypeToBaseTypesMap);
std::map<TypeID, std::vector<TypeID>> const& containedTypeToBaseTypesMap);

void checkDictionariesOfConsumedTypes(std::set<TypeID> const* productTypesConsumed,
std::set<TypeID> const* elementTypesConsumed,
std::map<TypeID, TypeID> const& containedTypeMap,
std::map<TypeID, std::vector<TypeWithDict>>& containedTypeToBaseTypesMap);
std::map<TypeID, std::vector<TypeID>>& containedTypeToBaseTypesMap);

void checkForDuplicateProcessName(BranchDescription const& desc, std::string const* processName) const;

Expand Down
Expand Up @@ -186,7 +186,7 @@ namespace edm {
char const* instance,
char const* process,
TypeID const& containedTypeID,
std::vector<TypeWithDict>* baseTypesOfContainedType);
std::vector<TypeID>* baseTypesOfContainedType);

ProductResolverIndex insert(TypeID const& typeID,
char const* moduleLabel,
Expand Down
19 changes: 9 additions & 10 deletions DataFormats/Provenance/src/ProductRegistry.cc
Expand Up @@ -297,7 +297,7 @@ namespace edm {
std::set<TypeID> const* elementTypesConsumed,
std::string const* processName) {
std::map<TypeID, TypeID> containedTypeMap;
std::map<TypeID, std::vector<TypeWithDict>> containedTypeToBaseTypesMap;
std::map<TypeID, std::vector<TypeID>> containedTypeToBaseTypesMap;

std::vector<std::string> missingDictionaries;
std::vector<std::string> branchNamesForMissing;
Expand Down Expand Up @@ -351,7 +351,7 @@ namespace edm {
}
bool hasContainedType = (containedTypeID != TypeID(typeid(void)) && containedTypeID != TypeID());

std::vector<TypeWithDict>* baseTypesOfContainedType = nullptr;
std::vector<TypeID>* baseTypesOfContainedType = nullptr;

if (!alreadySawThisType) {
bool alreadyCheckedConstituents = desc.produced() && !desc.transient();
Expand All @@ -367,7 +367,7 @@ namespace edm {
if (hasContainedType) {
auto iterBaseTypes = containedTypeToBaseTypesMap.find(containedTypeID);
if (iterBaseTypes == containedTypeToBaseTypesMap.end()) {
std::vector<TypeWithDict> baseTypes;
std::vector<TypeID> baseTypes;
if (!public_base_classes(missingDictionaries, containedTypeID, baseTypes)) {
branchNamesForMissing.emplace_back(desc.branchName());
if (desc.produced()) {
Expand Down Expand Up @@ -399,7 +399,7 @@ namespace edm {
bool containedTypeConsumed =
hasContainedType && (elementTypesConsumed->find(containedTypeID) != elementTypesConsumed->end());
if (hasContainedType && !containedTypeConsumed && baseTypesOfContainedType != nullptr) {
for (TypeWithDict const& baseType : *baseTypesOfContainedType) {
for (TypeID const& baseType : *baseTypesOfContainedType) {
if (elementTypesConsumed->find(TypeID(baseType.typeInfo())) != elementTypesConsumed->end()) {
containedTypeConsumed = true;
break;
Expand Down Expand Up @@ -466,7 +466,7 @@ namespace edm {
void ProductRegistry::addElementTypesForAliases(
std::set<TypeID> const* elementTypesConsumed,
std::map<TypeID, TypeID> const& containedTypeMap,
std::map<TypeID, std::vector<TypeWithDict>> const& containedTypeToBaseTypesMap) {
std::map<TypeID, std::vector<TypeID>> const& containedTypeToBaseTypesMap) {
Transients::AliasToOriginalVector elementAliases;
for (auto& item : transient_.aliasToOriginal_) {
auto iterContainedType = containedTypeMap.find(std::get<Transients::kType>(item));
Expand Down Expand Up @@ -496,8 +496,7 @@ namespace edm {
if (iterBaseTypes == containedTypeToBaseTypesMap.end()) {
continue;
}
for (TypeWithDict const& baseType : iterBaseTypes->second) {
TypeID baseTypeID(baseType.typeInfo());
for (TypeID const& baseTypeID : iterBaseTypes->second) {
if (elementTypesConsumed->find(baseTypeID) != elementTypesConsumed->end()) {
elementAliases.emplace_back(ELEMENT_TYPE,
baseTypeID,
Expand All @@ -516,7 +515,7 @@ namespace edm {
std::set<TypeID> const* productTypesConsumed,
std::set<TypeID> const* elementTypesConsumed,
std::map<TypeID, TypeID> const& containedTypeMap,
std::map<TypeID, std::vector<TypeWithDict>>& containedTypeToBaseTypesMap) {
std::map<TypeID, std::vector<TypeID>>& containedTypeToBaseTypesMap) {
std::vector<std::string> missingDictionaries;
std::set<std::string> consumedTypesWithMissingDictionaries;

Expand Down Expand Up @@ -549,7 +548,7 @@ namespace edm {
bool hasContainedType = (containedTypeID != TypeID(typeid(void)) && containedTypeID != TypeID());
if (hasContainedType) {
if (containedTypeToBaseTypesMap.find(containedTypeID) == containedTypeToBaseTypesMap.end()) {
std::vector<TypeWithDict> bases;
std::vector<TypeID> bases;
// Run this to check for missing dictionaries, bases is not really used
if (!public_base_classes(missingDictionaries, containedTypeID, bases)) {
consumedTypesWithMissingDictionaries.emplace(consumedTypeID.className());
Expand All @@ -576,7 +575,7 @@ namespace edm {
consumedTypesWithMissingDictionaries.clear();
for (auto const& consumedTypeID : *elementTypesConsumed) {
if (containedTypeToBaseTypesMap.find(consumedTypeID) == containedTypeToBaseTypesMap.end()) {
std::vector<TypeWithDict> bases;
std::vector<TypeID> bases;
// Run this to check for missing dictionaries, bases is not really used
if (!public_base_classes(missingDictionaries, consumedTypeID, bases)) {
consumedTypesWithMissingDictionaries.emplace(consumedTypeID.className());
Expand Down
11 changes: 5 additions & 6 deletions DataFormats/Provenance/src/ProductResolverIndexHelper.cc
Expand Up @@ -84,7 +84,7 @@ namespace edm {
}
//need to check for inheritance match
std::vector<std::string> missingDictionaries;
std::vector<TypeWithDict> baseTypes;
std::vector<TypeID> baseTypes;
if (!public_base_classes(missingDictionaries, elementType, baseTypes)) {
return false;
}
Expand Down Expand Up @@ -217,7 +217,7 @@ namespace edm {
char const* instance,
char const* process,
TypeID const& containedTypeID,
std::vector<TypeWithDict>* baseTypesOfContainedType) {
std::vector<TypeID>* baseTypesOfContainedType) {
if (!items_) {
throw Exception(errors::LogicError)
<< "ProductResolverIndexHelper::insert - Attempt to insert more elements after frozen.\n";
Expand Down Expand Up @@ -274,8 +274,7 @@ namespace edm {

// Repeat this for all public base classes of the contained type
if (baseTypesOfContainedType) {
for (TypeWithDict const& baseType : *baseTypesOfContainedType) {
TypeID baseTypeID(baseType.typeInfo());
for (TypeID const& baseTypeID : *baseTypesOfContainedType) {
Item baseItem(ELEMENT_TYPE, baseTypeID, moduleLabel, instance, process, savedProductIndex);
iter = items_->find(baseItem);
if (iter != items_->end()) {
Expand Down Expand Up @@ -303,8 +302,8 @@ namespace edm {
char const* process) {
TypeID containedTypeID = productholderindexhelper::getContainedType(typeID);
bool hasContainedType = (containedTypeID != TypeID(typeid(void)) && containedTypeID != TypeID());
std::vector<TypeWithDict> baseTypes;
std::vector<TypeWithDict>* baseTypesOfContainedType = &baseTypes;
std::vector<TypeID> baseTypes;
std::vector<TypeID>* baseTypesOfContainedType = &baseTypes;
if (hasContainedType) {
std::vector<std::string> missingDictionaries;
public_base_classes(missingDictionaries, containedTypeID, baseTypes);
Expand Down
2 changes: 1 addition & 1 deletion FWCore/Reflection/interface/DictionaryTools.h
Expand Up @@ -59,7 +59,7 @@ namespace edm {

bool public_base_classes(std::vector<std::string>& missingDictionaries,
TypeID const& typeID,
std::vector<TypeWithDict>& baseTypes);
std::vector<TypeID>& baseTypes);
} // namespace edm

#endif // FWCore_Reflection_DictionaryTools_h
6 changes: 3 additions & 3 deletions FWCore/Reflection/src/DictionaryTools.cc
Expand Up @@ -318,7 +318,7 @@ namespace edm {

bool public_base_classes(std::vector<std::string>& missingDictionaries,
TypeID const& typeID,
std::vector<TypeWithDict>& baseTypes) {
std::vector<TypeID>& baseTypes) {
if (!checkDictionary(missingDictionaries, typeID)) {
return false;
}
Expand All @@ -340,13 +340,13 @@ namespace edm {
returnValue = false;
continue;
}
TypeWithDict baseType(baseRflxType.typeInfo());
TypeID baseType{baseRflxType.typeInfo()};
// Check to make sure this base appears only once in the
// inheritance hierarchy.
if (!search_all(baseTypes, baseType)) {
// Save the type and recursive look for its base types
baseTypes.push_back(baseType);
if (!public_base_classes(missingDictionaries, TypeID(baseType.typeInfo()), baseTypes)) {
if (!public_base_classes(missingDictionaries, baseType, baseTypes)) {
returnValue = false;
continue;
}
Expand Down

0 comments on commit 65cc04c

Please sign in to comment.