10 #ifndef TEUCHOS_PTR_DECL_HPP
11 #define TEUCHOS_PTR_DECL_HPP
15 #include "Teuchos_dyn_cast.hpp"
93 inline explicit Ptr( T *
ptr );
138 inline T*
get()
const;
165 void debug_assert_not_null()
const
172 inline void debug_assert_valid_ptr()
const;
178 T* access_private_ptr()
const
180 const RCP<T> access_rcp()
const
193 template<
typename T>
inline
205 template<
typename T>
inline
217 template<
typename T>
inline
229 template<
typename T>
inline
241 template<
typename T>
inline
253 template<
typename T>
inline
264 template<
typename T>
inline
275 template<
typename T>
inline
284 if (!
is_null(ptr.access_rcp()))
285 return ptr.access_rcp();
287 return rcpFromRef(*ptr);
295 template<
typename T>
inline
310 template<
typename T>
inline
321 template<
class T>
inline
332 template<
class T>
inline
343 template<
class T>
inline
365 template<
class T1,
class T2>
368 return p1.
get() == p2.
get();
377 template<
class T1,
class T2>
380 return p1.
get() != p2.
get();
395 template<
class T2,
class T1>
415 template<
class T2,
class T1>
430 template<
class T2,
class T1>
462 template<
class T2,
class T1>
464 const Ptr<T1>& p1,
bool throw_on_fail =
false
472 check =
dynamic_cast<T2*
>(p1.get());
489 std::ostream& operator<<( std::ostream& out, const Ptr<T>& p );
495 #endif // TEUCHOS_PTR_DECL_HPP
Ptr< T > inOutArg(T &arg)
create a non-persisting (required or optional) input/output argument for a function call...
bool is_null(const Ptr< T > &p)
Returns true if p.get()==NULL.
Ptr< T2 > ptr_static_cast(const Ptr< T1 > &p1)
Static cast of underlying Ptr type from T1* to T2*.
bool operator==(const Ptr< T1 > &p1, const Ptr< T2 > &p2)
Return true if two Ptr objects point to the same object.
bool is_null(const std::shared_ptr< T > &p)
Returns true if p.get()==NULL.
Ptr< T > optInArg(T &arg)
create a non-persisting non-const optional input argument for a function call.
T_To & dyn_cast(T_From &from)
Dynamic casting utility function meant to replace dynamic_cast<T&> by throwing a better documented er...
ENull
Used to initialize a RCP object to NULL using an implicit conversion!
T * getRawPtr() const
Get the raw C++ pointer to the underlying object.
Ptr< T2 > ptr_dynamic_cast(const Ptr< T1 > &p1, bool throw_on_fail=false)
Dynamic cast of underlying Ptr type from T1* to T2*.
Ptr< T2 > ptr_implicit_cast(const Ptr< T1 > &p1)
Implicit cast of underlying Ptr type from T1* to T2*.
Ptr< T > ptrFromRef(T &arg)
Create a pointer to a object from an object reference.
Ptr< T > inoutArg(T &arg)
create a non-persisting (required or optional) input/output argument for a function call...
Ptr(ENull null_in=null)
Default construct to NULL.
T & operator*() const
Dereference the underlying object.
const Ptr< T > & assert_not_null() const
Throws std::logic_error if this->get()==NULL, otherwise returns reference to *this.
Ptr< const T > ptrInArg(T &arg)
create a general Ptr input argument for a function call from a reference.
Ptr< T > ptr(T *p)
Create a pointer to an object from a raw pointer.
bool is_null() const
Return true if the wrapped raw pointer is NULL, else return false.
RCP< T > rcpFromPtr(const Ptr< T > &ptr)
Create an RCP<T> from a Ptr<T> object.
bool operator!=(const Ptr< T1 > &p1, const Ptr< T2 > &p2)
Return true if two Ptr objects do not point to the same object.
Reference-counted pointer class and non-member templated function implementations.
Smart reference counting pointer class for automatic garbage collection.
Ptr< const T > constPtr(T &arg)
Create a pointer from a const object given a non-const object reference.
bool nonnull(const Ptr< T > &p)
Returns true if p.get()!=NULL
Ptr< T > outArg(T &arg)
create a non-persisting (required or optional) output argument for a function call.
Ptr< const T > getConst() const
Return a Ptr<const T> version of *this.
Ptr< const T > constOptInArg(T &arg)
create a non-persisting const optional input argument for a function call.
const Ptr< T > ptr() const
Return a copy of *this.
bool operator!=(const Ptr< T > &p, ENull)
Returns true if p.get()!=NULL.
Simple wrapper class for raw pointers to single objects where no persisting relationship exists...
bool operator==(const Ptr< T > &p, ENull)
Returns true if p.get()==NULL.
T * get() const
Get the raw C++ pointer to the underlying object.
T * operator->() const
Pointer (->) access to members of underlying object.
Ptr< T > & operator=(const Ptr< T > &ptr)
Shallow copy of the underlying pointer.
Ptr< T2 > ptr_const_cast(const Ptr< T1 > &p1)
Constant cast of underlying Ptr type from T1* to T2*.