lestes::lang::cplus::syn::semref< T > Class Template Reference

#include <semval.hh>

List of all members.

Public Member Functions

 semref (ptr< semref_type > &a_ref)
void operator= (const ptr< T > &p) const
void operator= (const semref< T > &a) const
template<typename Y>
void operator= (const semref< Y > &a) const
ptr< T > operator-> () const
template<typename Y>
 operator ptr () const
template<typename Y>
 operator srp () const

Private Attributes

ptr< semref_type > & ref

Friends

class semref


Detailed Description

template<typename T>
class lestes::lang::cplus::syn::semref< T >

Definition at line 43 of file semval.hh.


Constructor & Destructor Documentation

template<typename T>
lestes::lang::cplus::syn::semref< T >::semref ( ptr< semref_type > &  a_ref  )  [inline, explicit]


Member Function Documentation

template<typename T>
void lestes::lang::cplus::syn::semref< T >::operator= ( const ptr< T > &  p  )  const [inline]

Definition at line 51 of file semval.hh.

00052         {
00053                 ref = p;
00054         }

template<typename T>
void lestes::lang::cplus::syn::semref< T >::operator= ( const semref< T > &  a  )  const [inline]

Definition at line 55 of file semval.hh.

References a, and lassert2.

00056         {
00057                 // run-time check if `a' really references ptr<T> or class derived from it
00058                 ref = a.ref.template dncast<T>();
00059                 lassert2( ref, "Pointer assigned to a semref should not be NULL." );
00060         }

template<typename T>
template<typename Y>
void lestes::lang::cplus::syn::semref< T >::operator= ( const semref< Y > &  a  )  const [inline]

Definition at line 62 of file semval.hh.

References a, and lassert2.

00063         {
00064                 // run-time check if `a' really references ptr<Y> or class derived from it
00065                 // compile-time enforcement that Y is derived from T
00066                 ptr<T> tmp = a.ref.template dncast<Y>();
00067                 ref = tmp;
00068                 lassert2( ref, "Pointer assigned to a semref should not be NULL." );
00069         }

template<typename T>
ptr<T> lestes::lang::cplus::syn::semref< T >::operator-> (  )  const [inline]

Definition at line 70 of file semval.hh.

00071         {
00072                 // TODO pt workaround for 3.2.3
00073                 return ref.template dncast<T>();
00074                 // equivalent to the original:
00075                 //return operator ptr<T>();
00076         }

template<typename T>
template<typename Y>
lestes::lang::cplus::syn::semref< T >::operator ptr (  )  const [inline]

Definition at line 89 of file semval.hh.

00090         {
00091                 // T below is intentional
00092                 return ref.template dncast<T>();
00093         }

template<typename T>
template<typename Y>
lestes::lang::cplus::syn::semref< T >::operator srp (  )  const [inline]

Definition at line 96 of file semval.hh.

00097         {
00098                 // T below is intentional
00099                 return srp<Y>(ref.template dncast<T>());
00100         }


Friends And Related Function Documentation

template<typename T>
friend class semref [friend]

Definition at line 45 of file semval.hh.


Member Data Documentation

template<typename T>
ptr<semref_type>& lestes::lang::cplus::syn::semref< T >::ref [private]

Definition at line 47 of file semval.hh.


The documentation for this class was generated from the following file:
Generated on Mon Feb 12 18:25:38 2007 for lestes by doxygen 1.5.1-20070107