Boost Reflect Library 0.1.0
Public Types | Public Member Functions | Protected Attributes
any_ptr< InterfaceType, InterfaceDelegate > Class Template Reference

Behaves like a smart pointer that can handle any type with the same interface. More...

#include <any_ptr.hpp>

List of all members.

Public Types

typedef boost::reflect::vtable
< InterfaceType,
InterfaceDelegate > 
vtable_type
typedef InterfaceType interface_type
typedef InterfaceDelegate delegate_type

Public Member Functions

 any_ptr ()
 operator bool () const
bool operator! () const
template<typename T >
 any_ptr (T *v)
template<typename T >
 any_ptr (const boost::shared_ptr< T > &v)
template<typename OtherInterface , typename OtherDelegate >
 any_ptr (const any_ptr< OtherInterface, OtherDelegate > &p)
 constructs an any_ptr from another any_ptr with compatible interface.
const vtable_typeoperator* () const
vtable_typeoperator* ()
const vtable_typeoperator-> () const
vtable_typeoperator-> ()

Protected Attributes

boost::any m_ptr
boost::shared_ptr< vtable_typem_vtable

Detailed Description

template<typename InterfaceType, typename InterfaceDelegate = boost::reflect::mirror_interface>
class boost::reflect::any_ptr< InterfaceType, InterfaceDelegate >

Behaves like a smart pointer that can handle any type with the same interface.

If constructed from a shared pointer, then a copy of the shared pointer will go with every any_ptr. If constructed from a regular pointer, then the pointer must be valid for the life of all copies of the any_ptr.

Definition at line 20 of file any_ptr.hpp.


Member Typedef Documentation

typedef boost::reflect::vtable<InterfaceType,InterfaceDelegate> vtable_type

Definition at line 22 of file any_ptr.hpp.

typedef InterfaceType interface_type

Definition at line 23 of file any_ptr.hpp.

typedef InterfaceDelegate delegate_type

Definition at line 24 of file any_ptr.hpp.


Constructor & Destructor Documentation

any_ptr ( )

Definition at line 26 of file any_ptr.hpp.

any_ptr ( T *  v)

Definition at line 33 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

any_ptr ( const boost::shared_ptr< T > &  v)

Definition at line 38 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

any_ptr ( const any_ptr< OtherInterface, OtherDelegate > &  p)

constructs an any_ptr from another any_ptr with compatible interface.

Definition at line 47 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_ptr, and any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.


Member Function Documentation

operator bool ( ) const

Definition at line 29 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

bool operator! ( ) const

Definition at line 30 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

const vtable_type& operator* ( ) const

Definition at line 52 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

vtable_type& operator* ( )

Definition at line 53 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

const vtable_type* operator-> ( ) const

Definition at line 55 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.

vtable_type* operator-> ( )

Definition at line 56 of file any_ptr.hpp.

References any_ptr< InterfaceType, InterfaceDelegate >::m_vtable.


Member Data Documentation

boost::any m_ptr [protected]

Definition at line 60 of file any_ptr.hpp.

Referenced by any_ptr< InterfaceType, InterfaceDelegate >::any_ptr().

boost::shared_ptr<vtable_type> m_vtable [protected]

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

© Daniel Larimer 2010-2011 - Licensed under Boost Software License, Version 1.0 Boost Reflect Library