STLdoc
STLdocumentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Member Functions | Private Attributes | List of all members
msclr::auto_gcroot< _element_type > Class Template Reference

#include <msclr/auto_gcroot.h>

Public Member Functions

 auto_gcroot (_element_type _ptr=nullptr)
 
 auto_gcroot (auto_gcroot< _element_type > &_right)
 
 auto_gcroot (_detail::_auto_gcroot_ref< _element_type > _right)
 
template<typename _other_type >
 auto_gcroot (auto_gcroot< _other_type > &_right)
 
auto_gcroot< _element_type > & attach (_element_type _right)
 
auto_gcroot< _element_type > & attach (auto_gcroot< _element_type > &_right)
 
auto_gcroot< _element_type > & attach (_detail::_auto_gcroot_ref< _element_type > &_right)
 
template<typename _other_type >
auto_gcroot< _element_type > & attach (auto_gcroot< _other_type > &_right)
 
auto_gcroot< _element_type > & operator= (_element_type _right)
 
auto_gcroot< _element_type > & operator= (auto_gcroot< _element_type > &_right)
 
auto_gcroot< _element_type > & operator= (_detail::_auto_gcroot_ref< _element_type > &_right)
 
template<typename _other_type >
auto_gcroot< _element_type > & operator= (auto_gcroot< _other_type > &_right)
 
_element_type get () const
 
_element_type operator-> () const
 
 operator _detail_class::_safe_bool () const
 
bool operator! () const
 
 operator _detail::_auto_gcroot_ref< _element_type > ()
 
template<typename _other_type >
 operator auto_gcroot< _other_type > ()
 
template<typename _other_type >
 operator _detail::_auto_gcroot_ref< _other_type > ()
 
void swap (auto_gcroot< _element_type > &_right)
 
void reset (_element_type _new_ptr=nullptr)
 
_element_type release ()
 
 ~auto_gcroot ()
 

Private Member Functions

bool operator== (_detail_class::_safe_bool) const
 
bool operator!= (_detail_class::_safe_bool) const
 
bool valid () const
 

Private Attributes

gcroot< _element_type > m_ptr
 

Constructor & Destructor Documentation

template<typename _element_type>
msclr::auto_gcroot< _element_type >::auto_gcroot ( _element_type  _ptr = nullptr)
inline
74  : m_ptr( _ptr )
75  {
76  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
msclr::auto_gcroot< _element_type >::auto_gcroot ( auto_gcroot< _element_type > &  _right)
inline
80  : m_ptr( _right.release() )
81  {
82  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
msclr::auto_gcroot< _element_type >::auto_gcroot ( _detail::_auto_gcroot_ref< _element_type >  _right)
inline
86  : m_ptr( _right.m_ref.release() )
87  {
88  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
template<typename _other_type >
msclr::auto_gcroot< _element_type >::auto_gcroot ( auto_gcroot< _other_type > &  _right)
inline
92  : m_ptr( _right.release() )
93  {
94  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
msclr::auto_gcroot< _element_type >::~auto_gcroot ( )
inline
219  {
220  if( valid() )
221  {
222  delete _element_type(m_ptr);
223  }
224  }
bool valid() const
Definition: auto_gcroot.h:228
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235

Member Function Documentation

template<typename _element_type>
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::attach ( _element_type  _right)
inline
97  {
98  reset(_right);
99  return *this;
100  }
void reset(_element_type _new_ptr=nullptr)
Definition: auto_gcroot.h:198
template<typename _element_type>
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::attach ( auto_gcroot< _element_type > &  _right)
inline
105  {
106  reset( _right.release() );
107  return *this;
108  }
void reset(_element_type _new_ptr=nullptr)
Definition: auto_gcroot.h:198
template<typename _element_type>
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::attach ( _detail::_auto_gcroot_ref< _element_type > &  _right)
inline
113  {
114  reset( _right.m_ref.release() );
115  return *this;
116  }
void reset(_element_type _new_ptr=nullptr)
Definition: auto_gcroot.h:198
template<typename _element_type>
template<typename _other_type >
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::attach ( auto_gcroot< _other_type > &  _right)
inline
121  {
122  reset( _right.release() );
123  return *this;
124  }
void reset(_element_type _new_ptr=nullptr)
Definition: auto_gcroot.h:198
template<typename _element_type>
_element_type msclr::auto_gcroot< _element_type >::get ( ) const
inline
153  {
154  return m_ptr;
155  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
msclr::auto_gcroot< _element_type >::operator _detail::_auto_gcroot_ref< _element_type > ( )
inline
177  {
178  return _detail::_auto_gcroot_ref<_element_type>( *this );
179  }
template<typename _element_type>
template<typename _other_type >
msclr::auto_gcroot< _element_type >::operator _detail::_auto_gcroot_ref< _other_type > ( )
inline
189  {
190  return _detail::_auto_gcroot_ref<_other_type>( *this );
191  }
template<typename _element_type>
msclr::auto_gcroot< _element_type >::operator _detail_class::_safe_bool ( ) const
inline
165  {
167  }
static _safe_bool const _safe_false
Definition: safebool.h:39
bool valid() const
Definition: auto_gcroot.h:228
static _safe_bool const _safe_true
Definition: safebool.h:38
template<typename _element_type>
template<typename _other_type >
msclr::auto_gcroot< _element_type >::operator auto_gcroot< _other_type > ( )
inline
183  {
184  return auto_gcroot<_other_type>( *this );
185  }
template<typename _element_type>
bool msclr::auto_gcroot< _element_type >::operator! ( ) const
inline
171  {
172  return ! valid();
173  }
bool valid() const
Definition: auto_gcroot.h:228
template<typename _element_type>
bool msclr::auto_gcroot< _element_type >::operator!= ( _detail_class::_safe_bool  ) const
private
template<typename _element_type>
_element_type msclr::auto_gcroot< _element_type >::operator-> ( ) const
inline
159  {
160  return m_ptr;
161  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::operator= ( _element_type  _right)
inline
127  {
128  return attach(_right);
129  }
auto_gcroot< _element_type > & attach(_element_type _right)
Definition: auto_gcroot.h:96
template<typename _element_type>
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::operator= ( auto_gcroot< _element_type > &  _right)
inline
134  {
135  return attach(_right);
136  }
auto_gcroot< _element_type > & attach(_element_type _right)
Definition: auto_gcroot.h:96
template<typename _element_type>
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::operator= ( _detail::_auto_gcroot_ref< _element_type > &  _right)
inline
141  {
142  return attach(_right);
143  }
auto_gcroot< _element_type > & attach(_element_type _right)
Definition: auto_gcroot.h:96
template<typename _element_type>
template<typename _other_type >
auto_gcroot<_element_type>& msclr::auto_gcroot< _element_type >::operator= ( auto_gcroot< _other_type > &  _right)
inline
148  {
149  return attach(_right);
150  }
auto_gcroot< _element_type > & attach(_element_type _right)
Definition: auto_gcroot.h:96
template<typename _element_type>
bool msclr::auto_gcroot< _element_type >::operator== ( _detail_class::_safe_bool  ) const
private
template<typename _element_type>
_element_type msclr::auto_gcroot< _element_type >::release ( )
inline
211  {
212  _element_type _tmp_ptr = m_ptr;
213  m_ptr = nullptr;
214  return _tmp_ptr;
215  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
void msclr::auto_gcroot< _element_type >::reset ( _element_type  _new_ptr = nullptr)
inline
199  {
200  if( _element_type(m_ptr) != _new_ptr )
201  {
202  if( valid() )
203  {
204  delete _element_type(m_ptr);
205  }
206  m_ptr = _new_ptr;
207  }
208  }
bool valid() const
Definition: auto_gcroot.h:228
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
template<typename _element_type>
void msclr::auto_gcroot< _element_type >::swap ( auto_gcroot< _element_type > &  _right)
inline
194  {
195  m_ptr.swap( _right.m_ptr );
196  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235
void swap(gcroot< T > &_right)
Definition: gcroot.h:109
template<typename _element_type>
bool msclr::auto_gcroot< _element_type >::valid ( ) const
inlineprivate
229  {
230  // see if the managed resource is in the invalid state.
231  return _element_type(m_ptr) != nullptr;
232  }
gcroot< _element_type > m_ptr
Definition: auto_gcroot.h:235

Member Data Documentation

template<typename _element_type>
gcroot<_element_type> msclr::auto_gcroot< _element_type >::m_ptr
private

The documentation for this class was generated from the following file: