|
ATLAS Offline Software
|
Go to the documentation of this file.
48 #ifndef ATHCONTAINERS_DATAVECTORWITHALLOC_H
49 #define ATHCONTAINERS_DATAVECTORWITHALLOC_H
64 template <
class DV,
class ALLOC>
104 typedef typename std::reverse_iterator<iterator>
122 using DV::trackIndices;
123 using DV::testInsert;
124 using DV::getConstStore;
126 using DV::setConstStore;
127 using DV::setNonConstStore;
128 using DV::hasNonConstStore;
145 using DV::operator[];
178 using base_ptr = std::unique_ptr<base_value_type, UPDeleter>;
184 Ptr(std::nullptr_t) noexcept;
188 Ptr& operator= (std::nullptr_t) noexcept;
195 bool operator== (std::nullptr_t)
const noexcept;
196 bool operator!= (std::nullptr_t)
const noexcept;
225 using Base = std::unique_ptr<DataVectorWithAlloc>;
227 operator std::unique_ptr<const DV> () && noexcept
762 using Base =
typename DV::Deleter;
791 #ifndef XAOD_STANDALONE
799 template <
class DV,
class ALLOC>
820 template <
class DV,
class ALLOC>
847 template <
class DV,
class ALLOC,
class U>
851 static void init() { DV::dvlinfo(); }
859 template <
class DV,
class ALLOC>
869 #endif // not XAOD_STANDALONE
875 #endif // not ATHCONTAINERS_DATAVECTORWITHALLOC_H
DV::const_reference const_reference
DataVector< base_value_type > base_data_vector
char data[hepevt_bytes_allocation_ATLAS]
static const bool has_virtual
This needs to be forwarded from the base as well.
Internal helper to serve as a deleter for our unique_ptr class.
Helper for unique_ptr conversions.
const SG::AuxVectorBase & auxbase() const
Convert to AuxVectorBase.
iterator insert(iterator position, Ptr pElem)
Add a new element to the collection.
DataModel_detail::ElementProxy< DataVectorWithAlloc > ElementProxy
This type is used to proxy lvalue accesses to DataVector elements, in order to handle ownership.
reverse_iterator rend() noexcept
Return a reverse_iterator pointing at the beginning of the collection.
DV::size_type size_type
Basic types, forwarded from the base.
iterator begin() noexcept
Return an iterator pointing at the beginning of the collection.
reverse_iterator rbegin() noexcept
Return a reverse_iterator pointing past the end of the collection.
DV::value_type value_type
elt_allocator_type & heap() noexcept
value_type push_back(Ptr pElem)
Add an element to the end of the collection.
DataVector using a custom allocator for the elements.
DVLDataVectorWithAllocBucket(std::unique_ptr< DataVectorWithAlloc< DV, ALLOC > > data)
Constructor from a payload object.
elt_allocator_type & elt_allocator()
Return the underlying allocator.
boost::true_type isSequence
value_type emplace_back(Ptr pElem)
Add an element to the end of the collection.
iterator to_my_iterator(typename DV::iterator it)
Convert an iterator of the base DataVector to a DataVectorWithAlloc::iterator.
static void iter_swap(iterator a, iterator b)
Swap the referents of two DataVector iterators.
DV::const_iterator const_iterator
DataVectorWithAlloc(elt_allocator_type &&eltAlloc=elt_allocator_type())
Default constructor.
DVLDataVectorWithAllocBucket(DataVectorWithAlloc< DV, ALLOC > *data)
Constructor from a payload object.
DV::BaseContainer BaseContainer
bool const RAWDATA *ch2 const
ElementProxy front()
Access the first element in the collection as an lvalue.
std::reverse_iterator< iterator > reverse_iterator
Standard reverse_iterator.
ElementProxy back()
Access the last element in the collection as an lvalue.
ElementProxy at(size_type n)
Access an element, as an lvalue.
DV::const_value_type const_value_type
SG::DVLDataVectorWithAllocBucket< DV, ALLOC > type
DataVectorWithAlloc(size_type n, elt_allocator_type &&eltAlloc=elt_allocator_type())
Sized constructor.
DV::const_reverse_iterator const_reverse_iterator
static ContainerUniquePtr make_unique()
Helper for unique_ptr conversions.
iterator emplace(iterator position, Ptr pElem)
Add a new element to the collection.
(Non-const) Iterator class for DataVector/DataList.
DataVectorWithAlloc & operator=(const DataVectorWithAlloc &rhs)=delete
DataVectorWithAlloc(DataVectorWithAlloc &&rhs)
Move constructor.
const DV * asDataVector() const
Return a pointer to this object, as a const DataVector.
a traits class that associates a CLID to a type T It also detects whether T inherits from Gaudi DataO...
typename base_ptr::pointer pointer
Hook for unprotecting an arena.
Default, invalid implementation of ClassID_traits.
static constexpr bool must_own
If true, then this type must own its contents.
Provide an interface for finding inheritance information at run time.
DataModel_detail::iterator< DataVectorWithAlloc > iterator
The iterator for this type.
std::unique_ptr< DataVectorWithAlloc > Base
void swap(DataVectorWithAlloc &rhs)
Swap this collection with another.
const elt_allocator_type & elt_allocator() const
Return the underlying allocator.
void resortAux(iterator beg, iterator end)
Reset indices / reorder aux data after elements have been permuted.
static DV::iterator to_base_iterator(iterator it)
Convert a DataVectorWithAlloc::iterator to an iterator of the base DataVector.
static const DataVectorWithAlloc * fromDataVector(const DV *dv)
Cast from a DataVector to a DataVectorWithAlloc.
typename base_ptr::element_type element_type
ElementProxy to_element_proxy(typename BaseContainer::iterator i)
Convert an iterator of the base vector to an ElementProxy for the DataVectorWithAlloc.
DV::allocator_type allocator_type
DataVectorWithAlloc(const DataVectorWithAlloc &)=delete
DV::base_value_type base_value_type
std::unique_ptr< base_value_type, UPDeleter > base_ptr
DV::difference_type difference_type
iterator erase(iterator position)
Remove element at a given position.
void reserve(size_type n)
Attempt to preallocate enough memory for a specified number of elements.
void assignElement(typename BaseContainer::iterator pos, Ptr newElem)
Handle element assignment.
An STL vector of pointers that by default owns its pointed-to elements.
iterator end() noexcept
Return an iterator pointing past the end of the collection.
Ptr(std::nullptr_t) noexcept
void clear()
Erase all the elements in the collection.
friend void test2_assignelement1a()
A DataBucket specialized for DataVector/DataList.
ElementProxy operator[](size_type n)
Access an element, as an lvalue.
BOOST_STATIC_CONSTANT(bool, s_isConst=true)
Ptr allocate(Args &&... args)
Allocate a new vector element.
void shrink_to_fit()
Change the vector capacity to match the current size.
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
const elt_allocator_type * heap() const noexcept
unique_ptr holding an element for this vector.
typename Base::PtrVector PtrVector
elt_allocator_type * m_heap
void swapElement(size_type index, Ptr newElem, Ptr &oldElem)
Swap one element out of the container.
ALLOC elt_allocator_type
Type of the allocator use for vector elements.
Proxy for lvalue access to DataVector/DataList elements.
DV::const_pointer const_pointer
STL-style allocator wrapper for ArenaHeapAllocator.
virtual ~DataVectorWithAlloc()
Destructor.
Metafunction to find the proper DataBucket class for T.
setBGCode setTAP setLVL2ErrorBits bool
DataBucket class for DataVectorWithAlloc.
DataVector< SG::AuxElement > BaseContainer
Internal helper to delete vector elements.
HeapDeleter(elt_allocator_type &&heap)