Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use unique_ptr, not auto_ptr #13820

Merged
merged 1 commit into from
Mar 28, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DataFormats/Common/interface/AssociationMap.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ namespace edm {
// edm::Handle<edm::View<Y> > inputView2;
// event.getByToken(inputToken2V_, inputView2);
// // If you are certain the Views are not empty!
// std::auto_ptr<AssocOneToOneView> assoc8(new AssocOneToOneView(
// std::unique_ptr<AssocOneToOneView> assoc8(new AssocOneToOneView(
// edm::makeRefToBaseProdFrom(inputView1->refAt(0), event),
// edm::makeRefToBaseProdFrom(inputView2->refAt(0), event)
// ));
Expand Down
4 changes: 2 additions & 2 deletions DataFormats/Common/interface/BaseHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ namespace edm {
// msg, and return false.
virtual bool fillRefIfMyTypeMatches(RefHolderBase& fillme,
std::string& msg) const = 0;
virtual std::auto_ptr<RefHolderBase> holder() const = 0;
virtual std::unique_ptr<RefHolderBase> holder() const = 0;

virtual std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() const = 0;
virtual std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() const = 0;

virtual EDProductGetter const* productGetter() const = 0;

Expand Down
4 changes: 2 additions & 2 deletions DataFormats/Common/interface/BaseVectorHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ namespace edm {

struct const_iterator : public std::iterator <std::random_access_iterator_tag, RefToBase<T> >{
typedef base_ref_type value_type;
typedef std::auto_ptr<value_type> pointer;
typedef std::unique_ptr<value_type> pointer;
typedef std::ptrdiff_t difference_type;

const_iterator() : i(0) { }
Expand Down Expand Up @@ -153,7 +153,7 @@ namespace edm {
virtual const_iterator begin() const = 0;
virtual const_iterator end() const = 0;
virtual void push_back(BaseHolder<T> const*) = 0;
virtual std::auto_ptr<RefVectorHolderBase> vectorHolder() const = 0;
virtual std::unique_ptr<RefVectorHolderBase> vectorHolder() const = 0;

/// Checks if product collection is in memory or available
/// in the Event. No type checking is done.
Expand Down
2 changes: 1 addition & 1 deletion DataFormats/Common/interface/CloningPtr.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ namespace edm {
public:
CloningPtr(): ptr_(nullptr) {}
CloningPtr(const T& iPtr) : ptr_(P::clone(iPtr)) {}
CloningPtr(std::auto_ptr<T> iPtr) : ptr_(iPtr.release()) {}
CloningPtr(std::unique_ptr<T> iPtr) : ptr_(iPtr.release()) {}
CloningPtr(const CloningPtr<T,P>& iPtr) : ptr_(P::clone(*(iPtr.ptr_))) {}

CloningPtr<T,P>& operator=(const CloningPtr<T,P>& iRHS) {
Expand Down
8 changes: 4 additions & 4 deletions DataFormats/Common/interface/Holder.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ namespace edm {
virtual bool fillRefIfMyTypeMatches(RefHolderBase& fillme,
std::string& msg) const override;

virtual std::auto_ptr<RefHolderBase> holder() const override {
return std::auto_ptr<RefHolderBase>( new RefHolder<REF>( ref_ ) );
virtual std::unique_ptr<RefHolderBase> holder() const override {
return std::unique_ptr<RefHolderBase>( new RefHolder<REF>( ref_ ) );
}
virtual std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() const override;
virtual std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() const override;
virtual EDProductGetter const* productGetter() const override;

/// Checks if product collection is in memory or available
Expand Down Expand Up @@ -172,7 +172,7 @@ namespace edm {
namespace reftobase {

template <typename T, typename REF>
std::auto_ptr<BaseVectorHolder<T> > Holder<T,REF>::makeVectorHolder() const {
std::unique_ptr<BaseVectorHolder<T> > Holder<T,REF>::makeVectorHolder() const {
typedef typename HolderToVectorTrait<T, REF>::type helper;
return helper::makeVectorHolder();
}
Expand Down
8 changes: 4 additions & 4 deletions DataFormats/Common/interface/HolderToVectorTrait.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ namespace edm {

template <typename T, typename REF>
struct InvalidHolderToVector {
static std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() {
static std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() {
Exception::throwThis(errors::InvalidReference,
"InvalidHolderToVector: trying to use RefToBase built with "
"an internal type. RefToBase should be built passing an "
"object of type edm::Ref<C>. This exception should never "
"be thrown if a RefToBase was built from a RefProd<C>.");
return std::auto_ptr<BaseVectorHolder<T> >();
return std::unique_ptr<BaseVectorHolder<T> >();
}
};

Expand All @@ -29,12 +29,12 @@ namespace edm {

template <typename REF>
struct InvalidRefHolderToRefVector {
static std::auto_ptr<RefVectorHolderBase> makeVectorHolder() {
static std::unique_ptr<RefVectorHolderBase> makeVectorHolder() {
Exception::throwThis(errors::InvalidReference,
"InvalidRefHolderToRefVector: trying to use RefToBaseVector built with "
"an internal type. RefToBase should be built passing an "
"object of type edm::RefVector<C>");
return std::auto_ptr<RefVectorHolderBase>();
return std::unique_ptr<RefVectorHolderBase>();
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ namespace edm {

template <typename T, typename U>
struct PtrHolderToVector {
static std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() {
return std::auto_ptr<BaseVectorHolder<T> >(new VectorHolder<T, edm::PtrVector<U> >);
static std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() {
return std::unique_ptr<BaseVectorHolder<T> >(new VectorHolder<T, edm::PtrVector<U> >);
}
};

Expand All @@ -45,8 +45,8 @@ namespace edm {

template <typename T>
struct PtrRefHolderToRefVector {
static std::auto_ptr<RefVectorHolderBase> makeVectorHolder() {
return std::auto_ptr<RefVectorHolderBase>(new RefVectorHolder<edm::PtrVector<T> >);
static std::unique_ptr<RefVectorHolderBase> makeVectorHolder() {
return std::unique_ptr<RefVectorHolderBase>(new RefVectorHolder<edm::PtrVector<T> >);
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ namespace edm {

template<typename T>
struct RefProdHolderToVector {
static std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() {
static std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() {
Exception::throwThis(errors::InvalidReference, "attempting to make a BaseVectorHolder<T> from a RefProd<C>.\n");
return std::auto_ptr<BaseVectorHolder<T> >();
return std::unique_ptr<BaseVectorHolder<T> >();
}
};

Expand All @@ -40,9 +40,9 @@ namespace edm {
};

struct RefProdRefHolderToRefVector {
static std::auto_ptr<RefVectorHolderBase> makeVectorHolder() {
static std::unique_ptr<RefVectorHolderBase> makeVectorHolder() {
Exception::throwThis(errors::InvalidReference, "attempting to make a BaseVectorHolder<T> from a RefProd<C>.\n");
return std::auto_ptr<RefVectorHolderBase>();
return std::unique_ptr<RefVectorHolderBase>();
}
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ namespace edm {

template <typename T, typename REF>
struct RefHolderToVector {
static std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() {
static std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() {
typedef RefVector<typename REF::product_type,
typename REF::value_type,
typename REF::finder_type> REFV;
return std::auto_ptr<BaseVectorHolder<T> >(new VectorHolder<T, REFV>);
return std::unique_ptr<BaseVectorHolder<T> >(new VectorHolder<T, REFV>);
}
};

Expand All @@ -47,11 +47,11 @@ namespace edm {

template <typename REF>
struct RefRefHolderToRefVector {
static std::auto_ptr<RefVectorHolderBase> makeVectorHolder() {
static std::unique_ptr<RefVectorHolderBase> makeVectorHolder() {
typedef RefVector<typename REF::product_type,
typename REF::value_type,
typename REF::finder_type> REFV;
return std::auto_ptr<RefVectorHolderBase>(new RefVectorHolder<REFV>);
return std::unique_ptr<RefVectorHolderBase>(new RefVectorHolder<REFV>);
}
};

Expand Down
14 changes: 7 additions & 7 deletions DataFormats/Common/interface/IndirectHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ namespace edm {

virtual bool fillRefIfMyTypeMatches(RefHolderBase& fillme,
std::string& msg) const override;
virtual std::auto_ptr<RefHolderBase> holder() const override;
virtual std::auto_ptr<BaseVectorHolder<T> > makeVectorHolder() const override;
virtual std::unique_ptr<RefHolderBase> holder() const override;
virtual std::unique_ptr<BaseVectorHolder<T> > makeVectorHolder() const override;
virtual EDProductGetter const* productGetter() const override;

/// Checks if product collection is in memory or available
Expand Down Expand Up @@ -152,8 +152,8 @@ namespace edm {
}

template <typename T>
std::auto_ptr<RefHolderBase> IndirectHolder<T>::holder() const {
return std::auto_ptr<RefHolderBase>( helper_->clone() );
std::unique_ptr<RefHolderBase> IndirectHolder<T>::holder() const {
return std::unique_ptr<RefHolderBase>( helper_->clone() );
}

// Free swap function
Expand All @@ -173,10 +173,10 @@ namespace edm {
namespace edm {
namespace reftobase {
template <typename T>
std::auto_ptr<BaseVectorHolder<T> > IndirectHolder<T>::makeVectorHolder() const {
std::auto_ptr<RefVectorHolderBase> p = helper_->makeVectorHolder();
std::unique_ptr<BaseVectorHolder<T> > IndirectHolder<T>::makeVectorHolder() const {
std::unique_ptr<RefVectorHolderBase> p = helper_->makeVectorHolder();
std::shared_ptr<RefVectorHolderBase> sp( p.release() );
return std::auto_ptr<BaseVectorHolder<T> >( new IndirectVectorHolder<T>( sp ) );
return std::unique_ptr<BaseVectorHolder<T> >( new IndirectVectorHolder<T>( sp ) );
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions DataFormats/Common/interface/IndirectVectorHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ namespace edm {
virtual size_type size() const override;
virtual void clear() override;
virtual base_ref_type const at(size_type idx) const override;
virtual std::auto_ptr<reftobase::RefVectorHolderBase> vectorHolder() const override {
return std::auto_ptr<reftobase::RefVectorHolderBase>( helper_->clone() );
virtual std::unique_ptr<reftobase::RefVectorHolderBase> vectorHolder() const override {
return std::unique_ptr<reftobase::RefVectorHolderBase>( helper_->clone() );
}
virtual void push_back( const BaseHolder<T> * r ) override {
typedef IndirectHolder<T> holder_type;
Expand Down
4 changes: 2 additions & 2 deletions DataFormats/Common/interface/OwnArray.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ namespace edm {
size_type capacity() const { return MAX_SIZE;}
template <typename D> void push_back(D*& d);
template <typename D> void push_back(D* const& d);
template <typename D> void push_back(std::auto_ptr<D> d);
template <typename D> void push_back(std::unique_ptr<D> d);
void push_back(T const& valueToCopy);
bool is_back_safe() const;
void pop_back();
Expand Down Expand Up @@ -284,7 +284,7 @@ namespace edm {

template<typename T, unsigned int M, typename P>
template<typename D>
inline void OwnArray<T, M, P>::push_back(std::auto_ptr<D> d) {
inline void OwnArray<T, M, P>::push_back(std::unique_ptr<D> d) {
data_[size_++]=d.release();
}

Expand Down
23 changes: 20 additions & 3 deletions DataFormats/Common/interface/OwnVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -134,16 +134,19 @@ namespace edm {
template <typename D> void push_back(D*& d);
template <typename D> void push_back(D* const& d);
template <typename D> void push_back(std::auto_ptr<D> d);
template <typename D> void push_back(std::unique_ptr<D> d);
void push_back(T const& valueToCopy);

template <typename D> void set(size_t i, D*& d);
template <typename D> void set(size_t i, D* const & d);
template <typename D> void set(size_t i, std::auto_ptr<D> d);
template <typename D> void set(size_t i, std::unique_ptr<D> d);
void set(size_t i, T const& valueToCopy);

template <typename D> void insert(const_iterator i, D*& d);
template <typename D> void insert(const_iterator i, D* const & d);
template <typename D> void insert(const_iterator i, std::auto_ptr<D> d);
template <typename D> void insert(const_iterator i, std::unique_ptr<D> d);
void insert(const_iterator i, T const& valueToCopy);

bool is_back_safe() const;
Expand Down Expand Up @@ -306,13 +309,17 @@ namespace edm {
data_.push_back(d);
}


template<typename T, typename P>
template<typename D>
inline void OwnVector<T, P>::push_back(std::auto_ptr<D> d) {
data_.push_back(d.release());
}

template<typename T, typename P>
template<typename D>
inline void OwnVector<T, P>::push_back(std::unique_ptr<D> d) {
data_.push_back(d.release());
}

template<typename T, typename P>
inline void OwnVector<T, P>::push_back(T const& d) {
Expand All @@ -338,7 +345,6 @@ namespace edm {
data_[i] = d;
}


template<typename T, typename P>
template<typename D>
inline void OwnVector<T, P>::set(size_t i, std::auto_ptr<D> d) {
Expand All @@ -347,6 +353,13 @@ namespace edm {
data_[i] = d.release();
}

template<typename T, typename P>
template<typename D>
inline void OwnVector<T, P>::set(size_t i, std::unique_ptr<D> d) {
if (d.get() == data_[i]) return;
delete data_[i];
data_[i] = d.release();
}

template<typename T, typename P>
inline void OwnVector<T, P>::set(size_t i, T const& d) {
Expand All @@ -369,13 +382,17 @@ namespace edm {
data_.insert(it.base_iter(), d);
}


template<typename T, typename P>
template<typename D>
inline void OwnVector<T, P>::insert(const_iterator it, std::auto_ptr<D> d) {
data_.insert(it.base_iter(), d.release());
}

template<typename T, typename P>
template<typename D>
inline void OwnVector<T, P>::insert(const_iterator it, std::unique_ptr<D> d) {
data_.insert(it.base_iter(), d.release());
}

template<typename T, typename P>
inline void OwnVector<T, P>::insert(const_iterator it, T const& d) {
Expand Down
2 changes: 1 addition & 1 deletion DataFormats/Common/interface/RefHolder.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
namespace edm {
namespace reftobase {
template <class REF>
std::auto_ptr<RefVectorHolderBase> RefHolder<REF>::makeVectorHolder() const {
std::unique_ptr<RefVectorHolderBase> RefHolder<REF>::makeVectorHolder() const {
typedef typename RefHolderToRefVectorTrait<REF>::type helper;
return helper::makeVectorHolder();
}
Expand Down
2 changes: 1 addition & 1 deletion DataFormats/Common/interface/RefHolderBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ namespace edm {
virtual bool fillRefIfMyTypeMatches(RefHolderBase& ref,
std::string& msg) const = 0;

virtual std::auto_ptr<RefVectorHolderBase> makeVectorHolder() const = 0;
virtual std::unique_ptr<RefVectorHolderBase> makeVectorHolder() const = 0;
virtual EDProductGetter const* productGetter() const = 0;

/// Checks if product collection is in memory or available
Expand Down
2 changes: 1 addition & 1 deletion DataFormats/Common/interface/RefHolder_.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ namespace edm {
std::string& msg) const override;
REF const& getRef() const;
void setRef(REF const& r);
virtual std::auto_ptr<RefVectorHolderBase> makeVectorHolder() const override;
virtual std::unique_ptr<RefVectorHolderBase> makeVectorHolder() const override;
virtual EDProductGetter const* productGetter() const override;

/// Checks if product collection is in memory or available
Expand Down
6 changes: 3 additions & 3 deletions DataFormats/Common/interface/RefToBase.h
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ namespace edm {

void swap(RefToBase& other);

std::auto_ptr<reftobase::RefHolderBase> holder() const;
std::unique_ptr<reftobase::RefHolderBase> holder() const;

EDProductGetter const* productGetter() const;

Expand Down Expand Up @@ -374,8 +374,8 @@ namespace edm {
}

template <class T>
std::auto_ptr<reftobase::RefHolderBase> RefToBase<T>::holder() const {
return holder_? holder_->holder() : std::auto_ptr<reftobase::RefHolderBase>();
std::unique_ptr<reftobase::RefHolderBase> RefToBase<T>::holder() const {
return holder_? holder_->holder() : std::unique_ptr<reftobase::RefHolderBase>();
}

// Free swap function
Expand Down
8 changes: 4 additions & 4 deletions DataFormats/Common/interface/RefToBaseVector.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ namespace edm {
void push_back( const RefToBase<T> & );

void fillView(std::vector<void const*>& pointers, FillViewHelperVector& helpers) const;
std::auto_ptr<reftobase::RefVectorHolderBase> vectorHolder() const;
std::unique_ptr<reftobase::RefVectorHolderBase> vectorHolder() const;

/// Checks if collection is in memory or available
/// in the Event. No type checking is done.
Expand Down Expand Up @@ -263,15 +263,15 @@ namespace edm {
template <typename T>
void RefToBaseVector<T>::push_back( const RefToBase<T> & r ) {
if ( holder_ == nullptr ) {
std::auto_ptr<reftobase::BaseVectorHolder<T> > p = r.holder_->makeVectorHolder();
std::unique_ptr<reftobase::BaseVectorHolder<T> > p = r.holder_->makeVectorHolder();
holder_ = p.release();
}
holder_->push_back( r.holder_ );
}

template <typename T>
std::auto_ptr<reftobase::RefVectorHolderBase> RefToBaseVector<T>::vectorHolder() const {
return holder_ ? holder_->vectorHolder() : std::auto_ptr<reftobase::RefVectorHolderBase>();
std::unique_ptr<reftobase::RefVectorHolderBase> RefToBaseVector<T>::vectorHolder() const {
return holder_ ? holder_->vectorHolder() : std::unique_ptr<reftobase::RefVectorHolderBase>();
}
}

Expand Down
Loading