CMS 3D CMS Logo

Public Types | Static Public Member Functions

enroller_helper::EnrollerHelper< T, TVector > Struct Template Reference

#include <SimActivityRegistryEnroller.h>

List of all members.

Public Types

typedef boost::mpl::pop_back
< TVector >::type 
RemainingVector

Static Public Member Functions

static void enroll (SimActivityRegistry &iReg, T *iT)

Detailed Description

template<class T, class TVector>
struct enroller_helper::EnrollerHelper< T, TVector >

Definition at line 54 of file SimActivityRegistryEnroller.h.


Member Typedef Documentation

template<class T , class TVector >
typedef boost::mpl::pop_back<TVector>::type enroller_helper::EnrollerHelper< T, TVector >::RemainingVector

Definition at line 55 of file SimActivityRegistryEnroller.h.


Member Function Documentation

template<class T , class TVector >
static void enroller_helper::EnrollerHelper< T, TVector >::enroll ( SimActivityRegistry iReg,
T iT 
) [inline, static]

Definition at line 56 of file SimActivityRegistryEnroller.h.

                                                           {
        //Try to enroll the object if it inherits from the class at the 
        // end of TVector
        Enrollment< typename boost::mpl::deref< typename boost::mpl::prior< typename boost::mpl::end< TVector >::type >::type >::type >::enroll(iReg, iT );
        
        //If TVector is not at its end, call EnrollerHelper with a vector
        // that had our last type 'popped off' the end
        typedef typename boost::mpl::eval_if<boost::mpl::empty<TVector>,
          boost::mpl::identity<LastEnrollerHelper<T> >,
          boost::mpl::identity<EnrollerHelper<T, typename boost::mpl::pop_back< TVector >::type > >
          >::type NextEnroller;
        NextEnroller::enroll(iReg,iT);
      }