43 #ifndef TEUCHOS_ARRAY_RCP_DECL_HPP 44 #define TEUCHOS_ARRAY_RCP_DECL_HPP 48 #include "Teuchos_Exceptions.hpp" 49 #include "Teuchos_ArrayViewDecl.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;
797 inline void debug_assert_not_null ()
const {
798 #ifdef TEUCHOS_REFCOUNTPTR_ASSERT_NONNULL 804 debug_assert_in_range (
size_type lowerOffset_in,
807 (void) lowerOffset_in;
809 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 814 inline void debug_assert_valid_ptr()
const {
822 #ifndef DOXYGEN_COMPILE 828 const RCPNodeHandle& node );
829 T* access_private_ptr()
const;
830 RCPNodeHandle& nonconst_access_private_node();
831 const RCPNodeHandle& access_private_node()
const;
847 typedef Teuchos_Ordinal
Ordinal;
859 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 867 inline ArrayRCP (ENull null_arg = null);
871 template<
class Dealloc_T>
874 inline explicit ArrayRCP (size_type
size,
const T& val = T ());
882 inline const T*
get()
const;
884 inline const T&
operator[] (size_type offset)
const;
895 inline iterator
begin()
const;
896 inline iterator
end()
const;
908 inline size_type
size()
const;
914 inline void resize (
const size_type n,
const T& val = T ());
915 inline void clear ();
935 inline TEUCHOS_DEPRECATED
int count()
const;
940 size_type lowerOffset_;
941 size_type upperOffset_;
943 inline void debug_assert_not_null()
const {
944 #ifdef TEUCHOS_REFCOUNTPTR_ASSERT_NONNULL 950 debug_assert_in_range (size_type lowerOffset_in,
951 size_type size_in)
const 953 (void) lowerOffset_in; (void) size_in;
954 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 959 inline void debug_assert_valid_ptr()
const {
967 #ifndef DOXYGEN_COMPILE 974 const T* access_private_ptr()
const;
992 typedef Teuchos_Ordinal
Ordinal;
1017 typedef Teuchos_Ordinal
Ordinal;
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>
1130 arcpWithEmbeddedObjPreDestroy(
1134 const Embedded &embedded,
1135 bool owns_mem =
true 1149 template<
class T,
class Embedded>
1151 arcpWithEmbeddedObjPostDestroy(
1155 const Embedded &embedded,
1156 bool owns_mem =
true 1171 template<
class T,
class Embedded>
1173 arcpWithEmbeddedObj(
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>
1286 bool operator<( const ArrayRCP<T1> &p1,
const ArrayRCP<T2> &p2 );
1293 template<
class T1,
class T2>
1294 bool operator<=( const ArrayRCP<T1> &p1,
const ArrayRCP<T2> &p2 );
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>
1464 void set_extra_data(
1465 const T1 &extra_data,
const std::string& name,
1467 bool force_unique =
true );
1489 template<
class T1,
class T2>
1490 T1& get_extra_data(
ArrayRCP<T2>& p,
const std::string& name );
1518 template<
class T1,
class T2>
1519 const T1& get_extra_data(
const ArrayRCP<T2>& p,
const std::string& name );
1546 template<
class T1,
class T2>
1547 T1* get_optional_extra_data(
ArrayRCP<T2>& p,
const std::string& name );
1579 template<
class T1,
class T2>
1580 const T1* get_optional_extra_data(
const ArrayRCP<T2>& p,
const std::string& name );
1593 template<
class Dealloc_T,
class T>
1594 Dealloc_T& get_nonconst_dealloc(
const ArrayRCP<T>& p );
1614 template<
class Dealloc_T,
class T>
1615 const Dealloc_T& get_dealloc(
const ArrayRCP<T>& p );
1632 template<
class Dealloc_T,
class T>
1633 const Dealloc_T* get_optional_dealloc(
const ArrayRCP<T>& p );
1657 template<
class Dealloc_T,
class T>
1658 Dealloc_T* get_optional_nonconst_dealloc(
const ArrayRCP<T>& p );
1667 template<
class TOrig,
class Embedded,
class T>
1668 const Embedded& getEmbeddedObj(
const ArrayRCP<T>& p );
1677 template<
class TOrig,
class Embedded,
class T>
1678 Embedded& getNonconstEmbeddedObj(
const ArrayRCP<T>& p );
1689 std::ostream& operator<<( std::ostream& out, const ArrayRCP<T>& p );
1695 #endif // TEUCHOS_ARRAY_RCP_DECL_HPP const T * const_iterator
Constant iterator type used if bounds checking is disabled.
ArrayRCP< T > create_weak() const
Create a new weak reference from another (strong) reference.
std::random_access_iterator_tag iterator_category
Category of ArrayRCP's iterator type.
ArrayRCP< T > operator+(size_type offset) const
Pointer integer increment (i.e. ptr+offset).
ArrayRCP(ENull null_arg=null)
Default constructor; initialize to an empty array.
Partial specialization of ArrayRCP for const T.
Ordinal difference_type
Type representing the difference between two size_type values.
size_type size() const
The total number of entries in the array.
ArrayRCP< T > & operator++()
Prefix increment of pointer (i.e. ++ptr).
ArrayRCP< T > & operator+=(size_type offset)
Pointer integer increment (i.e. ptr+=offset).
T & operator[](size_type offset) const
Random object access.
bool nonnull(const std::shared_ptr< T > &p)
Returns true if p.get()!=NULL.
bool is_null(const std::shared_ptr< T > &p)
Returns true if p.get()==NULL.
ArrayRCP< T > & operator-=(size_type offset)
Pointer integer increment (i.e. ptr-=offset).
int strong_count() const
Return the number of active RCP<> objects that have a "strong" reference to the underlying reference-...
ArrayRCP< T > & operator--()
Prefix decrement of pointer (i.e. –ptr).
T * release()
Release the ownership of the underlying array.
const ArrayRCP< T > & assert_not_null() const
Throws NullReferenceError if this->get()==NULL, otherwise returns reference to *this.
void clear()
Resize to zero.
TEUCHOS_DEPRECATED int count() const
Returns strong_count() [deprecated].
Ordinal size_type
Type representing the number of elements in an ArrayRCP or view thereof.
~ArrayRCP()
Destructor, that decrements the reference count.
T element_type
Type of each array element.
const ArrayRCP< T > & assert_valid_ptr() const
If the object pointer is non-null, assert that it is still valid.
void resize(const size_type n, const T &val=T())
Resize and append new elements if necessary.
T * const_pointer
Type of a (raw) (constant) pointer to an array element.
Teuchos_Ordinal Ordinal
Integer index type used throughout ArrayRCP.
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< const T > getConst() const
Return object for only const access to data.
ArrayRCP< T > persistingView(size_type lowerOffset, size_type size) const
Return a persisting view of a contiguous range of elements.
T value_type
Type of each array element.
int total_count() const
Total count (strong_count() + weak_count()).
bool is_valid_ptr() const
Return whether the underlying object pointer is still valid.
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...
void deepCopy(const ArrayView< const T > &av)
Deep copy the elements from one ArrayView object into this object.
ERCPStrength
Used to specify if the pointer is weak or strong.
size_type upperOffset() const
Return the upper offset to valid data.
ArrayRCP< T > create_strong() const
Create a new strong RCP object from another (weak) RCP object.
iterator end() const
Return an iterator to past the end of the array of data.
Base traits class for getting a properly initialized null pointer.
int weak_count() const
Return the number of active RCP<> objects that have a "weak" reference to the underlying reference-co...
iterator begin() const
Return an iterator to beginning of the array of data.
ERCPStrength strength() const
Strength of the pointer.
T * iterator_type
Type of an ArrayRCP's iterator.
const T & const_reference
Type of a (constant) reference to an array element.
bool is_null() const
True if the underlying pointer is null, else false.
T * pointer
Type of a (raw) (nonconstant) pointer to an array element.
void set_has_ownership()
Give this and other ArrayRCP<> objects ownership of the underlying referenced array to delete it...
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos, as well as a number of utility routines.
Handle class that manages the RCPNode's reference counting.
ArrayView< T > view(size_type lowerOffset, size_type size) const
Return a nonpersisting view of a contiguous range of elements.
ERCPNodeLookup
Used to determine if RCPNode lookup is performed or not.
EPrePostDestruction
Used to specify a pre or post destruction of extra data.
T & operator*() const
Dereference the underlying object for the current pointer position.
ArrayRCP< T > & operator=(const ArrayRCP< T > &r_ptr)
Assignment operator: Makes *this reference the input array.
Smart reference counting pointer class for automatic garbage collection.
T * getRawPtr() const
Get the raw C++ pointer to the underlying object.
ArrayRCP< T > operator-(size_type offset) const
Pointer integer decrement (i.e. ptr-offset).
T * iterator
Nonconstant iterator type used if bounds checking is disabled.
Partial specialization of ArrayView for const T.
T & reference
Type of a (nonconstant) reference to an array element.
size_type lowerOffset() const
Return the lower offset to valid data.
Reference-counted pointer class and non-member templated function implementations.
Simple wrapper class for raw pointers to single objects where no persisting relationship exists...
void assign(size_type n, const T &val)
Resize and assign n elements of val.
Reference-counted smart pointer for managing arrays.
ArrayView< T > operator()() const
Return a nonpersisting view of *this.
T * operator->() const
Pointer (->) access to members of underlying object for current position.