1 #ifndef DataFormats_Common_IndirectVectorHolder_h 2 #define DataFormats_Common_IndirectVectorHolder_h 13 class IndirectVectorHolder :
public BaseVectorHolder<T> {
32 bool empty()
const override;
33 size_type
size()
const override;
34 void clear()
override;
35 base_ref_type
const at(size_type
idx)
const override;
36 std::unique_ptr<reftobase::RefVectorHolderBase>
vectorHolder()
const override {
37 return std::unique_ptr<reftobase::RefVectorHolderBase>(
helper_->
clone() );
41 const holder_type *
h =
dynamic_cast<const holder_type *
>(
r );
44 "In IndirectHolder<T> trying to push_back wrong reference type");
70 bool equal_to(
const const_iterator_imp *
o )
const override {
return i == dc( o ); }
71 bool less_than(
const const_iterator_imp *
o )
const override {
return i < dc( o ); }
72 void assign(
const const_iterator_imp *
o )
override {
i = dc( o ); }
73 base_ref_type
deref()
const override {
76 difference_type
difference(
const const_iterator_imp *
o )
const override {
return i - dc( o ); }
81 "In IndirectVectorHolder trying to dereference a null pointer");
84 if ( oo ==
nullptr ) {
86 "In IndirectVectorHolder trying to cast iterator to wrong type ");
93 const_iterator
begin()
const override {
96 const_iterator
end()
const override {
101 template <
typename T>
104 template <
typename T>
108 template <
typename T>
112 template <
typename T>
116 template <
typename T>
121 template <
typename T>
127 template <
typename T>
135 template <
typename T>
141 template <
typename T>
147 template <
typename T>
153 template <
typename T>
158 template <
typename T>
163 template <
typename T>
168 template <
typename T>
173 template <
typename T>
179 template <
typename T>
virtual ProductID id() const =0
const_iterator_imp_specific * clone() const override
bool less_than(const const_iterator_imp *o) const override
difference_type difference(const const_iterator_imp *o) const override
base_type::element_type element_type
BaseVectorHolder< T > base_type
ProductID id() const override
void push_back(const BaseHolder< T > *r) override
base_ref_type deref() const override
virtual const_iterator begin() const =0
base_type::const_iterator const_iterator
EDProductGetter const * productGetter() const override
RefVectorHolderBase * helper_
#define CMS_CLASS_VERSION(_version_)
BaseVectorHolder< T > * cloneEmpty() const override
virtual size_type size() const =0
BaseVectorHolder< T > * clone() const override
base_type::size_type size_type
static void throwThis(Code category, char const *message0="", char const *message1="", char const *message2="", char const *message3="", char const *message4="")
virtual bool empty() const =0
bool empty() const override
virtual bool isAvailable() const =0
IndirectVectorHolder & operator=(IndirectVectorHolder const &rhs)
void decrease(difference_type d) override
base_ref_type const at(size_type idx) const override
base_type::base_ref_type base_ref_type
void swap(edm::DataFrameContainer &lhs, edm::DataFrameContainer &rhs)
base_type::const_iterator_imp const_iterator_imp
virtual EDProductGetter const * productGetter() const =0
const_iterator_imp_specific(const typename RefVectorHolderBase::const_iterator &it)
std::unique_ptr< reftobase::RefVectorHolderBase > vectorHolder() const override
ptrdiff_t difference_type
const RefVectorHolderBase::const_iterator & dc(const const_iterator_imp *o) const
void swap(IndirectVectorHolder &other)
void increase(difference_type d) override
const_iterator_imp_specific()
~IndirectVectorHolder() override
bool isAvailable() const override
size_type size() const override
virtual const_iterator end() const =0
bool equal_to(const const_iterator_imp *o) const override
virtual RefVectorHolderBase * cloneEmpty() const =0
const_iterator begin() const override
const_iterator end() const override
~const_iterator_imp_specific() override
virtual void push_back(RefHolderBase const *r)=0
RefVectorHolderBase::const_iterator i
void assign(const const_iterator_imp *o) override
void swap(BaseVectorHolder &)
virtual RefVectorHolderBase * clone() const =0