43 #ifndef TEUCHOS_ARRAY_RCP_DECL_HPP 44 #define TEUCHOS_ARRAY_RCP_DECL_HPP 165 #ifdef HAVE_TEUCHOS_ARRAY_BOUNDSCHECK 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 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
1107 ArrayRCP<T> arcpCloneNode(
const ArrayRCP<T> &a );
1115 ArrayRCP<T> arcpClone(
const ArrayView<const T> &v );
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 1188 ArrayRCP<T> arcp(
const RCP<std::vector<T> > &v );
1197 ArrayRCP<const T> arcp(
const RCP<
const std::vector<T> > &v );
1209 ArrayRCP<T> arcpFromArrayView(
const ArrayView<T> &av);
1220 RCP<std::vector<T> > get_std_vector(
const ArrayRCP<T> &ptr );
1230 RCP<const std::vector<T> > get_std_vector(
const ArrayRCP<const T> &ptr );
1238 bool is_null(
const ArrayRCP<T> &p );
1246 bool nonnull(
const ArrayRCP<T> &p );
1254 bool operator==(
const ArrayRCP<T> &p, ENull );
1262 bool operator!=(
const ArrayRCP<T> &p, ENull );
1269 template<
class T1,
class T2>
1270 bool operator==(
const ArrayRCP<T1> &p1,
const ArrayRCP<T2> &p2 );
1277 template<
class T1,
class T2>
1278 bool operator!=(
const ArrayRCP<T1> &p1,
const ArrayRCP<T2> &p2 );
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>
1302 bool operator>(
const ArrayRCP<T1> &p1,
const ArrayRCP<T2> &p2 );
1309 template<
class T1,
class T2>
1310 bool operator>=(
const ArrayRCP<T1> &p1,
const ArrayRCP<T2> &p2 );
1322 operator-(
const ArrayRCP<T> &p1,
const ArrayRCP<T> &p2 );
1335 template<
class T2,
class T1>
1337 ArrayRCP<T2> arcp_const_cast(
const ArrayRCP<T1>& p1);
1351 template<
class T2,
class T1>
1352 ArrayRCP<T2> arcp_reinterpret_cast(
const ArrayRCP<T1>& p1);
1371 template<
class T2,
class T1>
1372 ArrayRCP<T2> arcp_reinterpret_cast_nonpod(
const ArrayRCP<T1>& p1,
const T2& val=T2());
1400 template<
class T2,
class T1>
1402 ArrayRCP<T2> arcp_implicit_cast(
const ArrayRCP<T1>& p1);
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.
size_type lowerOffset_
Lower offset to the data; 0 if this array is null.
ERCPStrength
Used to specify if the pointer is weak or strong.
ArrayRCP< T > operator+(size_type offset) const
Pointer integer increment (i.e. ptr+offset).
const void * const_pointer
std::random_access_iterator_tag iterator_category
ArrayRCP(ENull null_arg=null)
Default constructor; initialize to an empty array.
Partial specialization of ArrayRCP for const T.
const T & const_reference
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.
ERCPNodeLookup
Used to determine if RCPNode lookup is performed or not.
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].
void debug_assert_valid_ptr() const
Ordinal size_type
Type representing the number of elements in an ArrayRCP or view thereof.
~ArrayRCP()
Destructor, that decrements the reference count.
RCPNodeHandle node_
Reference-counting machinery.
void debug_assert_in_range(size_type lowerOffset_in, size_type size_in) const
T element_type
Type of each array element.
bool operator!=(const Allocator< T > &a_t, const Allocator< U > &a_u)
Return ! (a_t == a_u) (see above).
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.
void debug_assert_valid_ptr() const
static ArrayRCP< T > getNull()
T * const_pointer
Type of a (raw) (constant) pointer to an array element.
Teuchos_Ordinal Ordinal
Integer index type used throughout ArrayRCP.
TEUCHOS_ORDINAL_TYPE Teuchos_Ordinal
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()).
std::random_access_iterator_tag iterator_category
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.
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.
T * ptr_
Raw pointer to the array; NULL if this array is null.
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.
bool operator==(const TwoDArray< T > &a1, const TwoDArray< T > &a2)
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...
EPrePostDestruction
Used to specify a pre or post destruction of extra data.
const void * iterator_type
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.
std::random_access_iterator_tag iterator_category
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.
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.
size_type upperOffset_
Upper offset to the data; -1 if this array is null.
T & reference
Type of a (nonconstant) reference to an array element.
size_type lowerOffset() const
Return the lower offset to valid data.
void debug_assert_not_null() const
void debug_assert_not_null() const
Reference-counted pointer class and non-member templated function implementations.
void debug_assert_in_range(size_type lowerOffset_in, size_type size_in) const
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.