Skip to content

Commit 364d032

Browse files
authored
Merge pull request #48689 from makortel/productDescriptionTypeIDOnly
Pass type information only via `edm::TypeID` in `ProductDescription` constructor
2 parents f2a060b + 29c6bc4 commit 364d032

20 files changed

+73
-166
lines changed

DataFormats/Provenance/interface/BranchDescription.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,8 @@ namespace edm {
4242
BranchDescription(BranchType const& branchType,
4343
std::string const& moduleLabel,
4444
std::string const& processName,
45-
std::string const& className,
46-
std::string const& friendlyClassName,
4745
std::string const& productInstanceName,
48-
TypeWithDict const& theTypeWithDict,
46+
edm::TypeID const& theType,
4947
bool produced = true,
5048
bool availableOnlyAtEndTransition = false,
5149
std::set<std::string> const& aliases = std::set<std::string>());
@@ -93,9 +91,7 @@ namespace edm {
9391
bool transient() const { return transient_.transient_; }
9492
void setTransient(bool isTransient) { transient_.transient_ = isTransient; }
9593
TypeWithDict const& wrappedType() const { return transient_.wrappedType_; }
96-
void setWrappedType(TypeWithDict const& type) { transient_.wrappedType_ = type; }
9794
TypeWithDict const& unwrappedType() const { return transient_.unwrappedType_; }
98-
void setUnwrappedType(TypeWithDict const& type) { transient_.unwrappedType_ = type; }
9995
TypeID wrappedTypeID() const { return TypeID(transient_.wrappedType_.typeInfo()); }
10096
TypeID unwrappedTypeID() const { return TypeID(transient_.unwrappedType_.typeInfo()); }
10197

DataFormats/Provenance/src/BranchDescription.cc

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -48,27 +48,24 @@ namespace edm {
4848
BranchDescription::BranchDescription(BranchType const& branchType,
4949
std::string const& moduleLabel,
5050
std::string const& processName,
51-
std::string const& className,
52-
std::string const& friendlyClassName,
5351
std::string const& productInstanceName,
54-
TypeWithDict const& theTypeWithDict,
52+
edm::TypeID const& theType,
5553
bool produced,
5654
bool availableOnlyAtEndTransition,
5755
std::set<std::string> const& aliases)
5856
: branchType_(branchType),
5957
moduleLabel_(moduleLabel),
6058
processName_(processName),
6159
branchID_(),
62-
fullClassName_(className),
63-
friendlyClassName_(friendlyClassName),
60+
fullClassName_(theType.className()),
61+
friendlyClassName_(theType.friendlyClassName()),
6462
productInstanceName_(productInstanceName),
6563
branchAliases_(aliases),
6664
transient_() {
6765
setDropped(false);
6866
setProduced(produced);
6967
setOnDemand(false);
7068
transient_.availableOnlyAtEndTransition_ = availableOnlyAtEndTransition;
71-
setUnwrappedType(theTypeWithDict);
7269
init();
7370
}
7471

@@ -89,7 +86,7 @@ namespace edm {
8986
setProduced(aliasForBranch.produced());
9087
setOnDemand(false); // will be re-set externally to the aliasForBranch.onDemand() after that one has been set
9188
transient_.availableOnlyAtEndTransition_ = aliasForBranch.availableOnlyAtEndTransition();
92-
setUnwrappedType(aliasForBranch.unwrappedType());
89+
transient_.unwrappedType_ = aliasForBranch.unwrappedType();
9390
init();
9491
}
9592

@@ -152,7 +149,7 @@ namespace edm {
152149
try {
153150
setWrappedName(wrappedClassName(fullClassName()));
154151
// unwrapped type.
155-
setUnwrappedType(TypeWithDict::byName(fullClassName()));
152+
transient_.unwrappedType_ = TypeWithDict::byName(fullClassName());
156153
if (!bool(unwrappedType())) {
157154
setTransient(false);
158155
return;
@@ -164,7 +161,7 @@ namespace edm {
164161

165162
edm::TypeWithDict wrType(TypeWithDict::byName(wrappedName()));
166163
try {
167-
setWrappedType(wrType);
164+
transient_.wrappedType_ = wrType;
168165
if (!bool(wrappedType())) {
169166
return;
170167
}

DataFormats/Provenance/test/ProductNamePattern_t.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ namespace {
1515
edm::ProductDescription make_ProductDescription(std::string const& module,
1616
std::string const& instance,
1717
std::string const& process) {
18-
edm::TypeWithDict type(typeid(T));
19-
edm::ProductDescription prod(edm::InEvent, module, process, type.name(), type.friendlyClassName(), instance, type);
18+
edm::ProductDescription prod(edm::InEvent, module, process, instance, edm::TypeID(typeid(T)));
2019
//prod.write(std::cerr);
2120
return prod;
2221
}

EventFilter/Utilities/src/DAQSourceModelsDTH.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,11 @@ std::vector<std::shared_ptr<const edm::DaqProvenanceHelper>>& DataModeDTH::makeD
171171
daqProvenanceHelpers_.clear();
172172

173173
if (legacyFRDCollection_)
174-
daqProvenanceHelpers_.emplace_back(std::make_shared<const edm::DaqProvenanceHelper>(
175-
edm::TypeID(typeid(FEDRawDataCollection)), "FEDRawDataCollection", "FEDRawDataCollection", "DAQSource"));
174+
daqProvenanceHelpers_.emplace_back(
175+
std::make_shared<const edm::DaqProvenanceHelper>(edm::TypeID(typeid(FEDRawDataCollection)), "DAQSource"));
176176
else
177-
daqProvenanceHelpers_.emplace_back(std::make_shared<const edm::DaqProvenanceHelper>(
178-
edm::TypeID(typeid(RawDataBuffer)), "RawDataBuffer", "RawDataBuffer", "DAQSource"));
177+
daqProvenanceHelpers_.emplace_back(
178+
std::make_shared<const edm::DaqProvenanceHelper>(edm::TypeID(typeid(RawDataBuffer)), "DAQSource"));
179179

180180
return daqProvenanceHelpers_;
181181
}

EventFilter/Utilities/src/DAQSourceModelsFRD.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ edm::Timestamp DataModeFRD::fillFEDRawDataCollection(FEDRawDataCollection& rawDa
143143
std::vector<std::shared_ptr<const edm::DaqProvenanceHelper>>& DataModeFRD::makeDaqProvenanceHelpers() {
144144
//set FRD data collection
145145
daqProvenanceHelpers_.clear();
146-
daqProvenanceHelpers_.emplace_back(std::make_shared<const edm::DaqProvenanceHelper>(
147-
edm::TypeID(typeid(FEDRawDataCollection)), "FEDRawDataCollection", "FEDRawDataCollection", "DAQSource"));
146+
daqProvenanceHelpers_.emplace_back(
147+
std::make_shared<const edm::DaqProvenanceHelper>(edm::TypeID(typeid(FEDRawDataCollection)), "DAQSource"));
148148
return daqProvenanceHelpers_;
149149
}
150150

@@ -371,8 +371,8 @@ edm::Timestamp DataModeFRDPreUnpack::fillFEDRawDataCollection(edm::streamer::FRD
371371
std::vector<std::shared_ptr<const edm::DaqProvenanceHelper>>& DataModeFRDPreUnpack::makeDaqProvenanceHelpers() {
372372
//set FRD data collection
373373
daqProvenanceHelpers_.clear();
374-
daqProvenanceHelpers_.emplace_back(std::make_shared<const edm::DaqProvenanceHelper>(
375-
edm::TypeID(typeid(FEDRawDataCollection)), "FEDRawDataCollection", "FEDRawDataCollection", "DAQSource"));
374+
daqProvenanceHelpers_.emplace_back(
375+
std::make_shared<const edm::DaqProvenanceHelper>(edm::TypeID(typeid(FEDRawDataCollection)), "DAQSource"));
376376
return daqProvenanceHelpers_;
377377
}
378378

@@ -542,8 +542,8 @@ edm::Timestamp DataModeFRDStriped::fillFRDCollection(FEDRawDataCollection& rawDa
542542
std::vector<std::shared_ptr<const edm::DaqProvenanceHelper>>& DataModeFRDStriped::makeDaqProvenanceHelpers() {
543543
//set FRD data collection
544544
daqProvenanceHelpers_.clear();
545-
daqProvenanceHelpers_.emplace_back(std::make_shared<const edm::DaqProvenanceHelper>(
546-
edm::TypeID(typeid(FEDRawDataCollection)), "FEDRawDataCollection", "FEDRawDataCollection", "DAQSource"));
545+
daqProvenanceHelpers_.emplace_back(
546+
std::make_shared<const edm::DaqProvenanceHelper>(edm::TypeID(typeid(FEDRawDataCollection)), "DAQSource"));
547547
return daqProvenanceHelpers_;
548548
}
549549

EventFilter/Utilities/src/DAQSourceModelsScoutingRun3.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,8 @@ void DataModeScoutingRun3::fillSDSRawDataCollection(SDSRawDataCollection& rawDat
106106
std::vector<std::shared_ptr<const edm::DaqProvenanceHelper>>& DataModeScoutingRun3::makeDaqProvenanceHelpers() {
107107
//set SRD data collection
108108
daqProvenanceHelpers_.clear();
109-
daqProvenanceHelpers_.emplace_back(std::make_shared<const edm::DaqProvenanceHelper>(
110-
edm::TypeID(typeid(SDSRawDataCollection)), "SDSRawDataCollection", "SDSRawDataCollection", "DAQSource"));
109+
daqProvenanceHelpers_.emplace_back(
110+
std::make_shared<const edm::DaqProvenanceHelper>(edm::TypeID(typeid(SDSRawDataCollection)), "DAQSource"));
111111
return daqProvenanceHelpers_;
112112
}
113113

FWCore/Framework/src/ProductRegistryHelper.cc

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,11 @@ namespace edm {
7474
}
7575
}
7676

77-
TypeWithDict type(p->typeID_.typeInfo());
7877
ProductDescription pdesc(branchType,
7978
iDesc.moduleLabel(),
8079
iDesc.processName(),
81-
p->typeID_.userClassName(),
82-
p->typeID_.friendlyClassName(),
8380
p->productInstanceName_,
84-
type,
81+
p->typeID_,
8582
true,
8683
isEndTransition(p->transition_));
8784
if (p->aliasType_ == TypeLabelItem::AliasType::kSwitchAlias) {

FWCore/Framework/test/Event_t.cpp

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -215,15 +215,9 @@ void testEvent::registerProduct(std::string const& tag,
215215
auto processX = std::make_shared<ProcessConfiguration>(process);
216216
processConfigurations_.push_back(processX);
217217

218-
TypeWithDict product_type(typeid(T));
218+
TypeID product_type(typeid(T));
219219

220-
ProductDescription branch(InEvent,
221-
moduleLabel,
222-
processName,
223-
product_type.userClassName(),
224-
product_type.friendlyClassName(),
225-
productInstanceName,
226-
product_type);
220+
ProductDescription branch(InEvent, moduleLabel, processName, productInstanceName, product_type);
227221

228222
moduleDescriptions_[tag] = ModuleDescription(
229223
moduleParams.id(), moduleClassName, moduleLabel, processX.get(), ModuleDescription::getUniqueID());
@@ -355,7 +349,7 @@ testEvent::testEvent()
355349

356350
auto process = edmtest::makeDummyProcessConfiguration(processName, processParams.id());
357351

358-
TypeWithDict product_type(typeid(prod_t));
352+
TypeID product_type(typeid(prod_t));
359353

360354
auto processX = std::make_shared<ProcessConfiguration>(process);
361355
processConfigurations_.push_back(processX);
@@ -364,13 +358,7 @@ testEvent::testEvent()
364358

365359
std::string productInstanceName("int1");
366360

367-
ProductDescription branch(InEvent,
368-
moduleLabel,
369-
processName,
370-
product_type.userClassName(),
371-
product_type.friendlyClassName(),
372-
productInstanceName,
373-
product_type);
361+
ProductDescription branch(InEvent, moduleLabel, processName, productInstanceName, product_type);
374362

375363
availableProducts_->addProduct(branch);
376364

FWCore/Framework/test/ProductSelector_t.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
#include "FWCore/Utilities/interface/EDMException.h"
1515
#include "FWCore/Reflection/interface/TypeWithDict.h"
1616

17+
struct ProdTypeA {};
18+
struct ProdTypeB {};
19+
1720
typedef std::vector<edm::ProductDescription const*> VCBDP;
1821

1922
void apply_gs(edm::ProductSelector const& gs, VCBDP const& allbranches, std::vector<bool>& results) {
@@ -43,7 +46,7 @@ TEST_CASE("test ProductSelector", "[ProductSelector]") {
4346
auto processConfiguration = std::make_shared<edm::ProcessConfiguration>();
4447
processConfiguration->setParameterSetID(dummyProcessPset.id());
4548

46-
edm::TypeWithDict dummyTypeWithDict;
49+
edm::TypeID dummyTypeID(typeid(ProdTypeA));
4750
// We pretend to have one module, with two products. The products
4851
// are of the same and, type differ in instance name.
4952
std::set<edm::ParameterSetID> psetsA;
@@ -53,8 +56,8 @@ TEST_CASE("test ProductSelector", "[ProductSelector]") {
5356
modAparams.registerIt();
5457
psetsA.insert(modAparams.id());
5558

56-
edm::ProductDescription b1(edm::InEvent, "modA", "PROD", "UglyProdTypeA", "ProdTypeA", "i1", dummyTypeWithDict);
57-
edm::ProductDescription b2(edm::InEvent, "modA", "PROD", "UglyProdTypeA", "ProdTypeA", "i2", dummyTypeWithDict);
59+
edm::ProductDescription b1(edm::InEvent, "modA", "PROD", "i1", dummyTypeID);
60+
edm::ProductDescription b2(edm::InEvent, "modA", "PROD", "i2", dummyTypeID);
5861

5962
// Our second pretend module has only one product, and gives it no
6063
// instance name.
@@ -64,13 +67,13 @@ TEST_CASE("test ProductSelector", "[ProductSelector]") {
6467
modBparams.registerIt();
6568
psetsB.insert(modBparams.id());
6669

67-
edm::ProductDescription b3(edm::InEvent, "modB", "HLT", "UglyProdTypeB", "ProdTypeB", "", dummyTypeWithDict);
70+
edm::ProductDescription b3(edm::InEvent, "modB", "HLT", "", edm::TypeID(typeid(ProdTypeB)));
6871

6972
// Our third pretend is like modA, except it hass processName_ of
7073
// "USER"
7174

72-
edm::ProductDescription b4(edm::InEvent, "modA", "USER", "UglyProdTypeA", "ProdTypeA", "i1", dummyTypeWithDict);
73-
edm::ProductDescription b5(edm::InEvent, "modA", "USER", "UglyProdTypeA", "ProdTypeA", "i2", dummyTypeWithDict);
75+
edm::ProductDescription b4(edm::InEvent, "modA", "USER", "i1", dummyTypeID);
76+
edm::ProductDescription b5(edm::InEvent, "modA", "USER", "i2", dummyTypeID);
7477

7578
// These are pointers to all the branches that are available. In a
7679
// framework program, these would come from the ProductRegistry

FWCore/Framework/test/event_getrefbeforeput_t.cppunit.cc

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,16 +143,14 @@ void testEventGetRefBeforePut::getRefTest() {
143143
std::string productInstanceName("Rick");
144144

145145
edmtest::IntProduct dp;
146-
edm::TypeWithDict dummytype(typeid(edmtest::IntProduct));
147-
std::string className = dummytype.friendlyClassName();
148146

149147
edm::ParameterSet dummyProcessPset;
150148
dummyProcessPset.registerIt();
151149
auto processConfiguration = std::make_shared<edm::ProcessConfiguration>();
152150
processConfiguration->setParameterSetID(dummyProcessPset.id());
153151

154152
edm::ProductDescription product(
155-
edm::InEvent, label, processName, dummytype.userClassName(), className, productInstanceName, dummytype);
153+
edm::InEvent, label, processName, productInstanceName, edm::TypeID(typeid(edmtest::IntProduct)));
156154

157155
product.init();
158156

0 commit comments

Comments
 (0)