Geant4  10.02.p03
boost::python::detail::container_element< Container, Index, Policies > Class Template Reference

#include <indexing_suite_detail.hpp>

Collaboration diagram for boost::python::detail::container_element< Container, Index, Policies >:

Public Types

typedef Index index_type
 
typedef Container container_type
 
typedef Policies::data_type element_type
 
typedef Policies policies_type
 
typedef container_element< Container, Index, Policies > self_t
 
typedef proxy_group< self_tlinks_type
 
typedef Index index_type
 
typedef Container container_type
 
typedef Policies::data_type element_type
 
typedef Policies policies_type
 
typedef container_element< Container, Index, Policies > self_t
 
typedef proxy_group< self_tlinks_type
 

Public Member Functions

 container_element (object container, Index index)
 
 container_element (container_element const &ce)
 
 ~container_element ()
 
element_typeoperator* () const
 
element_typeget () const
 
void detach ()
 
bool is_detached () const
 
Container & get_container () const
 
Index get_index () const
 
void set_index (Index i)
 
 container_element (object container, Index index)
 
 container_element (container_element const &ce)
 
 ~container_element ()
 
element_typeoperator* () const
 
element_typeget () const
 
void detach ()
 
bool is_detached () const
 
Container & get_container () const
 
Index get_index () const
 
void set_index (Index i)
 

Static Public Member Functions

static proxy_links< self_t, Container > & get_links ()
 
static proxy_links< self_t, Container > & get_links ()
 

Private Member Functions

container_elementoperator= (container_element const &ce)
 
container_elementoperator= (container_element const &ce)
 

Private Attributes

scoped_ptr< element_typeptr
 
object container
 
Index index
 

Detailed Description

template<class Container, class Index, class Policies>
class boost::python::detail::container_element< Container, Index, Policies >

Definition at line 352 of file source/boost/detail/indexing_suite_detail.hpp.

Member Typedef Documentation

◆ container_type [1/2]

template<class Container, class Index, class Policies>
typedef Container boost::python::detail::container_element< Container, Index, Policies >::container_type

◆ container_type [2/2]

template<class Container, class Index, class Policies>
typedef Container boost::python::detail::container_element< Container, Index, Policies >::container_type

◆ element_type [1/2]

template<class Container, class Index, class Policies>
typedef Policies::data_type boost::python::detail::container_element< Container, Index, Policies >::element_type

◆ element_type [2/2]

template<class Container, class Index, class Policies>
typedef Policies::data_type boost::python::detail::container_element< Container, Index, Policies >::element_type

◆ index_type [1/2]

template<class Container, class Index, class Policies>
typedef Index boost::python::detail::container_element< Container, Index, Policies >::index_type

◆ index_type [2/2]

template<class Container, class Index, class Policies>
typedef Index boost::python::detail::container_element< Container, Index, Policies >::index_type

◆ links_type [1/2]

template<class Container, class Index, class Policies>
typedef proxy_group<self_t> boost::python::detail::container_element< Container, Index, Policies >::links_type

◆ links_type [2/2]

template<class Container, class Index, class Policies>
typedef proxy_group<self_t> boost::python::detail::container_element< Container, Index, Policies >::links_type

◆ policies_type [1/2]

template<class Container, class Index, class Policies>
typedef Policies boost::python::detail::container_element< Container, Index, Policies >::policies_type

◆ policies_type [2/2]

template<class Container, class Index, class Policies>
typedef Policies boost::python::detail::container_element< Container, Index, Policies >::policies_type

◆ self_t [1/2]

template<class Container, class Index, class Policies>
typedef container_element<Container, Index, Policies> boost::python::detail::container_element< Container, Index, Policies >::self_t

◆ self_t [2/2]

template<class Container, class Index, class Policies>
typedef container_element<Container, Index, Policies> boost::python::detail::container_element< Container, Index, Policies >::self_t

Constructor & Destructor Documentation

◆ container_element() [1/4]

template<class Container, class Index, class Policies>
boost::python::detail::container_element< Container, Index, Policies >::container_element ( object  container,
Index  index 
)
inline

◆ container_element() [2/4]

template<class Container, class Index, class Policies>
boost::python::detail::container_element< Container, Index, Policies >::container_element ( container_element< Container, Index, Policies > const &  ce)
inline

◆ ~container_element() [1/2]

template<class Container, class Index, class Policies>
boost::python::detail::container_element< Container, Index, Policies >::~container_element ( )
inline

Definition at line 377 of file source/boost/detail/indexing_suite_detail.hpp.

378  {
379  if (!is_detached())
380  get_links().remove(*this);
381  }

◆ container_element() [3/4]

template<class Container, class Index, class Policies>
boost::python::detail::container_element< Container, Index, Policies >::container_element ( object  container,
Index  index 
)
inline

◆ container_element() [4/4]

template<class Container, class Index, class Policies>
boost::python::detail::container_element< Container, Index, Policies >::container_element ( container_element< Container, Index, Policies > const &  ce)
inline

◆ ~container_element() [2/2]

template<class Container, class Index, class Policies>
boost::python::detail::container_element< Container, Index, Policies >::~container_element ( )
inline

Member Function Documentation

◆ detach() [1/2]

template<class Container, class Index, class Policies>
void boost::python::detail::container_element< Container, Index, Policies >::detach ( )
inline

◆ detach() [2/2]

template<class Container, class Index, class Policies>
void boost::python::detail::container_element< Container, Index, Policies >::detach ( )
inline

◆ get() [1/2]

template<class Container, class Index, class Policies>
element_type* boost::python::detail::container_element< Container, Index, Policies >::get ( ) const
inline

Definition at line 390 of file tests/test12/module/include/detail/indexing_suite_detail.hpp.

391  {
392  if (is_detached())
393  return get_pointer(ptr);
394  return &Policies::get_item(get_container(), index);
395  }
Policies::data_type * get_pointer(python::detail::container_element< Container, Index, Policies > const &p)
Here is the call graph for this function:

◆ get() [2/2]

template<class Container, class Index, class Policies>
element_type* boost::python::detail::container_element< Container, Index, Policies >::get ( ) const
inline

Definition at line 390 of file source/boost/detail/indexing_suite_detail.hpp.

391  {
392  if (is_detached())
393  return get_pointer(ptr);
394  return &Policies::get_item(get_container(), index);
395  }
Policies::data_type * get_pointer(python::detail::container_element< Container, Index, Policies > const &p)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_container() [1/2]

template<class Container, class Index, class Policies>
Container& boost::python::detail::container_element< Container, Index, Policies >::get_container ( ) const
inline

Definition at line 416 of file source/boost/detail/indexing_suite_detail.hpp.

417  {
418  return extract<Container&>(container)();
419  }

◆ get_container() [2/2]

template<class Container, class Index, class Policies>
Container& boost::python::detail::container_element< Container, Index, Policies >::get_container ( ) const
inline

◆ get_index() [1/2]

template<class Container, class Index, class Policies>
Index boost::python::detail::container_element< Container, Index, Policies >::get_index ( ) const
inline

◆ get_index() [2/2]

template<class Container, class Index, class Policies>
Index boost::python::detail::container_element< Container, Index, Policies >::get_index ( ) const
inline

◆ get_links() [1/2]

template<class Container, class Index, class Policies>
static proxy_links<self_t, Container>& boost::python::detail::container_element< Container, Index, Policies >::get_links ( )
inlinestatic

Definition at line 434 of file source/boost/detail/indexing_suite_detail.hpp.

435  {
436  // All container_element(s) maintain links to
437  // its container in a global map (see proxy_links).
438  // This global "links" map is a singleton.
439 
440  static proxy_links<self_t, Container> links;
441  return links; // singleton
442  }

◆ get_links() [2/2]

template<class Container, class Index, class Policies>
static proxy_links<self_t, Container>& boost::python::detail::container_element< Container, Index, Policies >::get_links ( )
inlinestatic

Definition at line 434 of file tests/test12/module/include/detail/indexing_suite_detail.hpp.

435  {
436  // All container_element(s) maintain links to
437  // its container in a global map (see proxy_links).
438  // This global "links" map is a singleton.
439 
440  static proxy_links<self_t, Container> links;
441  return links; // singleton
442  }

◆ is_detached() [1/2]

template<class Container, class Index, class Policies>
bool boost::python::detail::container_element< Container, Index, Policies >::is_detached ( ) const
inline

Definition at line 410 of file source/boost/detail/indexing_suite_detail.hpp.

411  {
412  return get_pointer(ptr) != 0;
413  }
Policies::data_type * get_pointer(python::detail::container_element< Container, Index, Policies > const &p)
Here is the call graph for this function:

◆ is_detached() [2/2]

template<class Container, class Index, class Policies>
bool boost::python::detail::container_element< Container, Index, Policies >::is_detached ( ) const
inline

Definition at line 410 of file tests/test12/module/include/detail/indexing_suite_detail.hpp.

411  {
412  return get_pointer(ptr) != 0;
413  }
Policies::data_type * get_pointer(python::detail::container_element< Container, Index, Policies > const &p)
Here is the call graph for this function:

◆ operator*() [1/2]

template<class Container, class Index, class Policies>
element_type& boost::python::detail::container_element< Container, Index, Policies >::operator* ( ) const
inline

Definition at line 383 of file source/boost/detail/indexing_suite_detail.hpp.

384  {
385  if (is_detached())
386  return *get_pointer(ptr);
387  return Policies::get_item(get_container(), index);
388  }
Policies::data_type * get_pointer(python::detail::container_element< Container, Index, Policies > const &p)
Here is the call graph for this function:

◆ operator*() [2/2]

template<class Container, class Index, class Policies>
element_type& boost::python::detail::container_element< Container, Index, Policies >::operator* ( ) const
inline

Definition at line 383 of file tests/test12/module/include/detail/indexing_suite_detail.hpp.

384  {
385  if (is_detached())
386  return *get_pointer(ptr);
387  return Policies::get_item(get_container(), index);
388  }
Policies::data_type * get_pointer(python::detail::container_element< Container, Index, Policies > const &p)
Here is the call graph for this function:

◆ operator=() [1/2]

template<class Container, class Index, class Policies>
container_element& boost::python::detail::container_element< Container, Index, Policies >::operator= ( container_element< Container, Index, Policies > const &  ce)
private

◆ operator=() [2/2]

template<class Container, class Index, class Policies>
container_element& boost::python::detail::container_element< Container, Index, Policies >::operator= ( container_element< Container, Index, Policies > const &  ce)
private

◆ set_index() [1/2]

template<class Container, class Index, class Policies>
void boost::python::detail::container_element< Container, Index, Policies >::set_index ( Index  i)
inline

◆ set_index() [2/2]

template<class Container, class Index, class Policies>
void boost::python::detail::container_element< Container, Index, Policies >::set_index ( Index  i)
inline

Member Data Documentation

◆ container

template<class Container, class Index, class Policies>
object boost::python::detail::container_element< Container, Index, Policies >::container
private

◆ index

template<class Container, class Index, class Policies>
Index boost::python::detail::container_element< Container, Index, Policies >::index
private

◆ ptr

template<class Container, class Index, class Policies>
scoped_ptr< element_type > boost::python::detail::container_element< Container, Index, Policies >::ptr
private

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