Skip to content

Commit 2ea0559

Browse files
pcaspersjenkins
authored andcommitted
add flag to overwrite trade builders
1 parent eb9c028 commit 2ea0559

2 files changed

Lines changed: 5 additions & 3 deletions

File tree

OREData/ored/portfolio/tradefactory.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ boost::shared_ptr<AbstractTradeBuilder> TradeFactory::getBuilder(const std::stri
3838
return b->second;
3939
}
4040

41-
void TradeFactory::addBuilder(const std::string& className, const boost::shared_ptr<AbstractTradeBuilder>& builder) {
41+
void TradeFactory::addBuilder(const std::string& className, const boost::shared_ptr<AbstractTradeBuilder>& builder,
42+
const bool allowOverwrite) {
4243
boost::unique_lock<boost::shared_mutex> lock(mutex_);
43-
QL_REQUIRE(builders_.insert(std::make_pair(className, builder)).second,
44+
QL_REQUIRE(builders_.insert(std::make_pair(className, builder)).second || allowOverwrite,
4445
"TradeFactory: duplicate builder for className '" << className << "'.");
4546
}
4647

OREData/ored/portfolio/tradefactory.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class TradeFactory : public QuantLib::Singleton<TradeFactory, std::integral_cons
6666
public:
6767
std::map<std::string, boost::shared_ptr<AbstractTradeBuilder>> getBuilders() const;
6868
boost::shared_ptr<AbstractTradeBuilder> getBuilder(const std::string& tradeType) const;
69-
void addBuilder(const std::string& tradeType, const boost::shared_ptr<AbstractTradeBuilder>& builder);
69+
void addBuilder(const std::string& tradeType, const boost::shared_ptr<AbstractTradeBuilder>& builder,
70+
const bool allowOverwrite = false);
7071

7172
//! Build, throws for unknown className
7273
boost::shared_ptr<Trade> build(const std::string& className) const;

0 commit comments

Comments
 (0)