CMS 3D CMS Logo

Public Member Functions | Static Public Member Functions

ora::AnyTypeHandler< T > Struct Template Reference

#include <RecordDetails.h>

Inheritance diagram for ora::AnyTypeHandler< T >:
ora::TypeHandler

List of all members.

Public Member Functions

virtual void const * address (const AnyData &ad) const
 AnyTypeHandler ()
virtual void create (AnyData &ad) const
virtual void destroy (AnyData &ad) const
virtual void const * get (const AnyData &ad) const
virtual bool isPointer () const
virtual void set (AnyData &ad, void *p) const

Static Public Member Functions

static bool inplace ()

Detailed Description

template<typename T>
struct ora::AnyTypeHandler< T >

Definition at line 61 of file RecordDetails.h.


Constructor & Destructor Documentation

template<typename T>
ora::AnyTypeHandler< T >::AnyTypeHandler ( ) [inline]

Definition at line 62 of file RecordDetails.h.

{ type = &typeid(T);}

Member Function Documentation

template<typename T>
virtual void const* ora::AnyTypeHandler< T >::address ( const AnyData ad) const [inline, virtual]

Implements ora::TypeHandler.

Definition at line 67 of file RecordDetails.h.

                                                           {
      if (isPointer()) 
        return ad.p;
      else
        return get(ad);
    }
template<typename T>
virtual void ora::AnyTypeHandler< T >::create ( AnyData ad) const [inline, virtual]

Implements ora::TypeHandler.

Definition at line 88 of file RecordDetails.h.

                                           {
      if (inplace())
        new(ad.address()) T();
      else 
        ad.p = new T();
    }
template<typename T>
virtual void ora::AnyTypeHandler< T >::destroy ( AnyData ad) const [inline, virtual]

Implements ora::TypeHandler.

Definition at line 94 of file RecordDetails.h.

                                            { 
      if (inplace())
        reinterpret_cast<T*>(ad.address())->~T();
      else 
        delete reinterpret_cast<T*>(ad.p);
    }
template<typename T>
virtual void const* ora::AnyTypeHandler< T >::get ( const AnyData ad) const [inline, virtual]

Implements ora::TypeHandler.

Definition at line 82 of file RecordDetails.h.

                                                       { 
      if (inplace()) 
        return ad.address();
      else
        return ad.p;
    }
template<typename T>
static bool ora::AnyTypeHandler< T >::inplace ( ) [inline, static]
template<typename T>
virtual bool ora::AnyTypeHandler< T >::isPointer ( ) const [inline, virtual]

Implements ora::TypeHandler.

Definition at line 64 of file RecordDetails.h.

Referenced by ora::AnyTypeHandler< bool * >::address().

template<typename T>
virtual void ora::AnyTypeHandler< T >::set ( AnyData ad,
void *  p 
) const [inline, virtual]

Implements ora::TypeHandler.

Definition at line 75 of file RecordDetails.h.

                                                   {
      if (inplace()) 
        *reinterpret_cast<T*>(ad.address()) =  *reinterpret_cast<T*>(p);
      else 
        *reinterpret_cast<T*>(ad.p) =  *reinterpret_cast<T*>(p);
    }