43#ifndef TEUCHOS_PTR_DECL_HPP
44#define TEUCHOS_PTR_DECL_HPP
113 inline Ptr( ENull null_in =
null );
126 inline explicit Ptr( T *
ptr );
171 inline T*
get()
const;
211 T* access_private_ptr()
const
213 const RCP<T> access_rcp()
const
226template<
typename T>
inline
238template<
typename T>
inline
250template<
typename T>
inline
262template<
typename T>
inline
274template<
typename T>
inline
286template<
typename T>
inline
297template<
typename T>
inline
308template<
typename T>
inline
317 if (!
is_null(ptr.access_rcp()))
318 return ptr.access_rcp();
320 return rcpFromRef(*ptr);
328template<
typename T>
inline
343template<
typename T>
inline
354template<
class T>
inline
365template<
class T>
inline
376template<
class T>
inline
398template<
class T1,
class T2>
401 return p1.
get() == p2.
get();
410template<
class T1,
class T2>
413 return p1.
get() != p2.
get();
428template<
class T2,
class T1>
448template<
class T2,
class T1>
463template<
class T2,
class T1>
495template<
class T2,
class T1>
497 const Ptr<T1>& p1,
bool throw_on_fail =
false
503 check = &dyn_cast<T2>(*p1);
505 check =
dynamic_cast<T2*
>(p1.
get());
Reference-counted pointer class and non-member templated function implementations.
Simple wrapper class for raw pointers to single objects where no persisting relationship exists.
Ptr< T2 > ptr_const_cast(const Ptr< T1 > &p1)
Constant 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*.
void debug_assert_not_null() const
Ptr< const T > ptrInArg(T &arg)
create a general Ptr input argument for a function call from a reference.
Ptr< T2 > ptr_dynamic_cast(const Ptr< T1 > &p1, bool throw_on_fail=false)
Dynamic cast of underlying Ptr type from T1* to T2*.
const Ptr< T > & assert_not_null() const
Throws std::logic_error if this->get()==NULL, otherwise returns reference to *this.
bool operator==(const Ptr< T > &p, ENull)
Returns true if p.get()==NULL.
bool nonnull(const Ptr< T > &p)
Returns true if p.get()!=NULL
Ptr< const T > getConst() const
Return a Ptr<const T> version of *this.
T * getRawPtr() const
Get the raw C++ pointer to the underlying object.
Ptr< T > & operator=(const Ptr< T > &ptr)
Shallow copy of the underlying pointer.
Ptr< T > optInArg(T &arg)
create a non-persisting non-const optional input argument for a function call.
Ptr< const T > constPtr(T &arg)
Create a pointer from a const object given a non-const object reference.
void debug_assert_valid_ptr() const
bool is_null(const Ptr< T > &p)
Returns true if p.get()==NULL.
bool is_null() const
Return true if the wrapped raw pointer is NULL, else return false.
Ptr< T > ptrFromRef(T &arg)
Create a pointer to a object from an object reference.
Ptr< T > outArg(T &arg)
create a non-persisting (required or optional) output argument for a function call.
Ptr< T > inOutArg(T &arg)
create a non-persisting (required or optional) input/output argument for a function call.
T * operator->() const
Pointer (->) access to members of underlying object.
bool operator!=(const Ptr< T > &p, ENull)
Returns true if p.get()!=NULL.
Ptr< T > inoutArg(T &arg)
create a non-persisting (required or optional) input/output argument for a function call.
T & operator*() const
Dereference the underlying object.
bool operator==(const Ptr< T1 > &p1, const Ptr< T2 > &p2)
Return true if two Ptr objects point to the same object.
T * get() const
Get the raw C++ pointer to the underlying object.
Ptr< const T > constOptInArg(T &arg)
create a non-persisting const optional input argument for a function call.
bool operator!=(const Ptr< T1 > &p1, const Ptr< T2 > &p2)
Return true if two Ptr objects do not point to the same object.
Ptr< T2 > ptr_static_cast(const Ptr< T1 > &p1)
Static cast of underlying Ptr type from T1* to T2*.
const Ptr< T > ptr() const
Return a copy of *this.
Ptr< T > ptr(T *p)
Create a pointer to an object from a raw pointer.
std::ostream & operator<<(std::ostream &out, const Ptr< T > &p)
Output stream inserter.
Smart reference counting pointer class for automatic garbage collection.
RCP< T > rcpFromPtr(const Ptr< T > &ptr)
Create an RCP<T> from a Ptr<T> object.
bool is_null(const std::shared_ptr< T > &p)
Returns true if p.get()==NULL.