|
Teuchos Package Browser (Single Doxygen Collection)
Version of the Day
|
Go to the documentation of this file.
43 #ifndef TEUCHOS_ARRAY_RCP_DECL_HPP
44 #define TEUCHOS_ARRAY_RCP_DECL_HPP
165 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
193 inline ArrayRCP( ENull null_arg =
null );
241 template<
class Dealloc_T>
353 inline T*
get()
const;
592 inline void assign(Iter first, Iter last);
783 inline TEUCHOS_DEPRECATED
int count()
const;
798 #ifdef TEUCHOS_REFCOUNTPTR_ASSERT_NONNULL
807 (void) lowerOffset_in;
809 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
822 #ifndef DOXYGEN_COMPILE
829 T* access_private_ptr()
const;
859 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
867 inline ArrayRCP (ENull null_arg =
null);
871 template<
class Dealloc_T>
882 inline const T*
get()
const;
915 inline void clear ();
935 inline TEUCHOS_DEPRECATED
int count()
const;
944 #ifdef TEUCHOS_REFCOUNTPTR_ASSERT_NONNULL
953 (void) lowerOffset_in; (void) size_in;
954 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK
967 #ifndef DOXYGEN_COMPILE
974 const T* access_private_ptr()
const;
1044 template<
typename T>
1061 bool owns_mem =
true
1070 template<
class T,
class Dealloc_T>
1075 Dealloc_T dealloc,
bool owns_mem
1128 template<
class T,
class Embedded>
1134 const Embedded &embedded,
1135 bool owns_mem =
true
1149 template<
class T,
class Embedded>
1155 const Embedded &embedded,
1156 bool owns_mem =
true
1171 template<
class T,
class Embedded>
1177 const Embedded &embedded,
1178 bool owns_mem =
true
1269 template<
class T1,
class T2>
1277 template<
class T1,
class T2>
1285 template<
class T1,
class T2>
1293 template<
class T1,
class T2>
1301 template<
class T1,
class T2>
1309 template<
class T1,
class T2>
1335 template<
class T2,
class T1>
1351 template<
class T2,
class T1>
1371 template<
class T2,
class T1>
1400 template<
class T2,
class T1>
1463 template<
class T1,
class T2>
1465 const T1 &extra_data,
const std::string& name,
1467 bool force_unique =
true );
1489 template<
class T1,
class T2>
1518 template<
class T1,
class T2>
1546 template<
class T1,
class T2>
1579 template<
class T1,
class T2>
1593 template<
class Dealloc_T,
class T>
1614 template<
class Dealloc_T,
class T>
1632 template<
class Dealloc_T,
class T>
1657 template<
class Dealloc_T,
class T>
1667 template<
class TOrig,
class Embedded,
class T>
1677 template<
class TOrig,
class Embedded,
class T>
1695 #endif // TEUCHOS_ARRAY_RCP_DECL_HPP
bool is_null() const
True if the underlying pointer is null, else false.
const void * const_pointer
const T1 * get_optional_extra_data(const ArrayRCP< T2 > &p, const std::string &name)
Get a pointer to const extra data (if it exists) associated with a ArrayRCP object.
const T1 & get_extra_data(const ArrayRCP< T2 > &p, const std::string &name)
Get a const reference to extra data associated with a ArrayRCP object.
Ordinal size_type
Type representing the number of elements in an ArrayRCP or view thereof.
ArrayRCP< T2 > arcp_implicit_cast(const ArrayRCP< T1 > &p1)
Implicit case the underlying ArrayRCP type from T1* to T2*.
void debug_assert_not_null() const
ArrayRCP< T > & operator+=(size_type offset)
Pointer integer increment (i.e. ptr+=offset).
const T & const_reference
Type of a (constant) reference to an array element.
void deepCopy(const ArrayView< const T > &av)
Deep copy the elements from one ArrayView object into this object.
Reference-counted pointer class and non-member templated function implementations.
ArrayView< T > view(size_type lowerOffset, size_type size) const
Return a nonpersisting view of a contiguous range of elements.
std::ostream & operator<<(std::ostream &out, const ArrayRCP< T > &p)
Output stream inserter.
ArrayRCP< T > & operator-=(size_type offset)
Pointer integer increment (i.e. ptr-=offset).
void assign(size_type n, const T &val)
Resize and assign n elements of val.
ArrayRCP< T > arcp(typename ArrayRCP< T >::size_type size)
Allocate a new array just given a dimension.
ArrayRCP< T > create_weak() const
Create a new weak reference from another (strong) reference.
std::random_access_iterator_tag iterator_category
const T & const_reference
ArrayRCP< T > arcpFromArrayView(const ArrayView< T > &av)
Get an ArrayRCP object out of an ArrayView object.
ArrayRCP< T >::difference_type operator-(const ArrayRCP< T > &p1, const ArrayRCP< T > &p2)
Return the difference of two ArrayRCP objects.
ArrayRCP< const T > arcp(const RCP< const std::vector< T > > &v)
Wrap a const std::vector<T> object as an ArrayRCP<const T> object.
T * ptr_
Raw pointer to the array; NULL if this array is null.
Dealloc_T * get_optional_nonconst_dealloc(const ArrayRCP< T > &p)
Return a pointer to the underlying const deallocator object if it exists.
ArrayRCP< T > persistingView(size_type lowerOffset, size_type size) const
Return a persisting view of a contiguous range of elements.
void set_extra_data(const T1 &extra_data, const std::string &name, const Ptr< ArrayRCP< T2 > > &p, EPrePostDestruction destroy_when=POST_DESTROY, bool force_unique=true)
Set extra data associated with a ArrayRCP object.
T * iterator
Nonconstant iterator type used if bounds checking is disabled.
bool is_null(const ArrayRCP< T > &p)
Returns true if p.get()==NULL.
ERCPNodeLookup
Used to determine if RCPNode lookup is performed or not.
RCP< const std::vector< T > > get_std_vector(const ArrayRCP< const T > &ptr)
Get a const std::vector<T> object out of an ArrayRCP<const T> object that was created using the arcp(...
bool is_valid_ptr() const
Return whether the underlying object pointer is still valid.
ArrayRCP< T > & operator++()
Prefix increment of pointer (i.e. ++ptr).
Ordinal difference_type
Type representing the difference between two size_type values.
bool operator!=(const ArrayRCP< T > &p, ENull)
Returns true if p.get()!=NULL.
bool operator<=(const ArrayRCP< T1 > &p1, const ArrayRCP< T2 > &p2)
Compare the two ArrayRCP objects' pointers using <=.
bool operator!=(const ArrayRCP< T1 > &p1, const ArrayRCP< T2 > &p2)
Compare two ArrayRCP objects for inequality (by pointers).
std::random_access_iterator_tag iterator_category
void debug_assert_in_range(size_type lowerOffset_in, size_type size_in) const
Teuchos_Ordinal Ordinal
Integer index type used throughout ArrayRCP.
T & operator[](size_type offset) const
Random object access.
T * operator->() const
Pointer (->) access to members of underlying object for current position.
const Embedded & getEmbeddedObj(const ArrayRCP< T > &p)
Get a const reference to an embedded object that was set by calling arcpWithEmbeddedObjPreDestroy(),...
Base traits class for getting a properly initialized null pointer.
std::random_access_iterator_tag iterator_category
Category of ArrayRCP's iterator type.
ERCPStrength strength() const
Strength of the pointer.
std::random_access_iterator_tag iterator_category
const ArrayRCP< T > & assert_not_null() const
Throws NullReferenceError if this->get()==NULL, otherwise returns reference to *this.
T & reference
Type of a (nonconstant) reference to an array element.
T * iterator_type
Type of an ArrayRCP's iterator.
Smart reference counting pointer class for automatic garbage collection.
TEUCHOS_DEPRECATED int count() const
Returns strong_count() [deprecated].
int total_count() const
Total count (strong_count() + weak_count()).
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
Dealloc_T & get_nonconst_dealloc(const ArrayRCP< T > &p)
Return a non-const reference to the underlying deallocator object.
void debug_assert_in_range(size_type lowerOffset_in, size_type size_in) const
void clear()
Resize to zero.
const ArrayRCP< T > & assert_in_range(size_type lowerOffset, size_type size) const
Throws NullReferenceError if this->get()==NULL orthis->get()!=NULL, throws RangeError if (lowerOffset...
Reference-counted smart pointer for managing arrays.
Partial specialization of ArrayRCP for const T.
ArrayRCP< T > arcpClone(const ArrayView< const T > &v)
Allocate a new array by cloning data from an input array view.
ArrayRCP< T2 > arcp_reinterpret_cast(const ArrayRCP< T1 > &p1)
Reinterpret cast of underlying ArrayRCP type from T1* to T2*.
ArrayRCP< T > create_strong() const
Create a new strong RCP object from another (weak) RCP object.
bool operator==(const ArrayRCP< T > &p, ENull)
Returns true if p.get()==NULL.
TEUCHOS_ORDINAL_TYPE Teuchos_Ordinal
ArrayRCP< T2 > arcp_const_cast(const ArrayRCP< T1 > &p1)
Const cast of underlying ArrayRCP type from const T* to T*.
int weak_count() const
Return the number of active RCP<> objects that have a "weak" reference to the underlying reference-co...
bool operator<(const ArrayRCP< T1 > &p1, const ArrayRCP< T2 > &p2)
Compare the two ArrayRCP objects' pointers using <.
bool has_ownership() const
Returns true if this has ownership of object pointed to by this->get() in order to deallocate it.
bool shares_resource(const ArrayRCP< T2 > &r_ptr) const
Returns true if the smart pointers share the same underlying reference-counted object.
ArrayRCP(ENull null_arg=null)
Default constructor; initialize to an empty array.
T * release()
Release the ownership of the underlying array.
T * pointer
Type of a (raw) (nonconstant) pointer to an array element.
size_type size() const
The total number of entries in the array.
Embedded & getNonconstEmbeddedObj(const ArrayRCP< T > &p)
Get a const reference to an embedded object that was set by calling arcpWithEmbeddedObjPreDestroy(),...
~ArrayRCP()
Destructor, that decrements the reference count.
ArrayRCP< T2 > arcp_reinterpret_cast_nonpod(const ArrayRCP< T1 > &p1, const T2 &val=T2())
Reinterpret cast of underlying ArrayRCP type from T1* to T2* where T2 is a non-POD (non-plain-old-dat...
ArrayRCP< T > arcpWithEmbeddedObj(T *p, typename ArrayRCP< T >::size_type lowerOffset, typename ArrayRCP< T >::size_type size, const Embedded &embedded, bool owns_mem=true)
Create an ArrayRCP with and also put in an embedded object.
T element_type
Type of each array element.
T * get() const
Get the raw C++ pointer to the underlying object.
size_type upperOffset() const
Return the upper offset to valid data.
ArrayRCP< T > arcp(T *p, typename ArrayRCP< T >::size_type lowerOffset, typename ArrayRCP< T >::size_type size, Dealloc_T dealloc, bool owns_mem)
Wraps a preallocated array of data and uses a templated deallocation strategy object to define deleti...
ArrayRCP< T > & operator=(const ArrayRCP< T > &r_ptr)
Assignment operator: Makes *this reference the input array.
void resize(const size_type n, const T &val=T())
Resize and append new elements if necessary.
const T * const_iterator
Constant iterator type used if bounds checking is disabled.
const Dealloc_T * get_optional_dealloc(const ArrayRCP< T > &p)
Return a pointer to the underlying non-const deallocator object if it exists.
void debug_assert_valid_ptr() const
ArrayRCP< T > arcpCloneNode(const ArrayRCP< T > &a)
Allocate a new ArrayRCP object with a new RCPNode with memory pointing to the initial node.
T1 * get_optional_extra_data(ArrayRCP< T2 > &p, const std::string &name)
Get a pointer to non-const extra data (if it exists) associated with a ArrayRCP object.
RCP< std::vector< T > > get_std_vector(const ArrayRCP< T > &ptr)
Get an std::vector<T> object out of an ArrayRCP<T> object that was created using the arcp() function ...
int strong_count() const
Return the number of active RCP<> objects that have a "strong" reference to the underlying reference-...
iterator end() const
Return an iterator to past the end of the array of data.
T * const_pointer
Type of a (raw) (constant) pointer to an array element.
ArrayRCP< T > arcp(T *p, typename ArrayRCP< T >::size_type lowerOffset, typename ArrayRCP< T >::size_type size, bool owns_mem=true)
Wraps a preallocated array of data with the assumption to call the array version of delete.
Handle class that manages the RCPNode's reference counting.
static ArrayRCP< T > getNull()
size_type lowerOffset() const
Return the lower offset to valid data.
const Dealloc_T & get_dealloc(const ArrayRCP< T > &p)
Return a const reference to the underlying deallocator object.
iterator begin() const
Return an iterator to beginning of the array of data.
EPrePostDestruction
Used to specify a pre or post destruction of extra data.
size_type upperOffset_
Upper offset to the data; -1 if this array is null.
const void * iterator_type
T1 & get_extra_data(ArrayRCP< T2 > &p, const std::string &name)
Get a non-const reference to extra data associated with a ArrayRCP object.
ArrayRCP< T > arcpWithEmbeddedObjPostDestroy(T *p, typename ArrayRCP< T >::size_type lowerOffset, typename ArrayRCP< T >::size_type size, const Embedded &embedded, bool owns_mem=true)
Create an ArrayRCP with and also put in an embedded object.
T value_type
Type of each array element.
RCPNodeHandle node_
Reference-counting machinery.
void debug_assert_not_null() const
void set_has_ownership()
Give this and other ArrayRCP<> objects ownership of the underlying referenced array to delete it.
ERCPStrength
Used to specify if the pointer is weak or strong.
bool operator>=(const ArrayRCP< T1 > &p1, const ArrayRCP< T2 > &p2)
Compare the two ArrayRCP objects' pointers using >=.
const ArrayRCP< T > & assert_valid_ptr() const
If the object pointer is non-null, assert that it is still valid.
bool nonnull(const ArrayRCP< T > &p)
Returns true if p.get()!=NULL.
ArrayRCP< T > arcp(const RCP< std::vector< T > > &v)
Wrap an std::vector<T> object as an ArrayRCP<T> object.
ArrayRCP< T > arcpWithEmbeddedObjPreDestroy(T *p, typename ArrayRCP< T >::size_type lowerOffset, typename ArrayRCP< T >::size_type size, const Embedded &embedded, bool owns_mem=true)
Create an ArrayRCP with and also put in an embedded object.
ArrayView< T > operator()() const
Return a nonpersisting view of *this.
Partial specialization of ArrayView for const T.
T & operator*() const
Dereference the underlying object for the current pointer position.
bool operator>(const ArrayRCP< T1 > &p1, const ArrayRCP< T2 > &p2)
Compare the two ArrayRCP objects' pointers using >.
void debug_assert_valid_ptr() const
size_type lowerOffset_
Lower offset to the data; 0 if this array is null.
T * getRawPtr() const
Get the raw C++ pointer to the underlying object.
ArrayRCP< T > & operator--()
Prefix decrement of pointer (i.e. –ptr).
bool operator==(const ArrayRCP< T1 > &p1, const ArrayRCP< T2 > &p2)
Compare two ArrayRCP objects for equality (by pointers).
ArrayRCP< T > operator-(size_type offset) const
Pointer integer decrement (i.e. ptr-offset).
ArrayRCP< T > operator+(size_type offset) const
Pointer integer increment (i.e. ptr+offset).
ArrayRCP< const T > getConst() const
Return object for only const access to data.