Sacado::TemplateManager< TypeSeq, BaseT, ObjectT > Class Template Reference

Container class to manager template instantiations of a template class. More...

#include <Sacado_TemplateManager.hpp>

Inheritance diagram for Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >:

Inheritance graph
[legend]
List of all members.

Public Types

typedef TemplateIterator<
TypeSeq, BaseT, ObjectT > 
iterator
 Typedef for iterator.
typedef ConstTemplateIterator<
TypeSeq, BaseT, ObjectT > 
const_iterator
 Typedef for const_iterator.

Public Member Functions

 TemplateManager ()
 Default constructor.
 ~TemplateManager ()
 Destructor.
template<typename BuilderOpT>
void buildObjects (const BuilderOpT &builder)
 Build objects for each ScalarT.
void buildObjects ()
 Build objects for each ScalarT using default builder.
template<typename ScalarT>
Teuchos::RCP< BaseT > getAsBase ()
 Get RCP to object corrensponding to ScalarT as BaseT.
template<typename ScalarT>
Teuchos::RCP< const BaseT > getAsBase () const
 Get RCP to object corrensponding to ScalarT as BaseT.
template<typename ScalarT>
Teuchos::RCP< ObjectT< ScalarT > > getAsObject ()
 Get RCP to object corrensponding to ScalarT as ObjectT<ScalarT>.
template<typename ScalarT>
Teuchos::RCP< const ObjectT<
ScalarT > > 
getAsObject () const
 Get RCP to object corrensponding to ScalarT as ObjectT<ScalarT>.
Sacado::TemplateManager< TypeSeq,
BaseT, ObjectT >::iterator 
begin ()
 Return an iterator that points to the first type object.
Sacado::TemplateManager< TypeSeq,
BaseT, ObjectT >::const_iterator 
begin () const
 Return an iterator that points to the first type object.
Sacado::TemplateManager< TypeSeq,
BaseT, ObjectT >::iterator 
end ()
 Return an iterator that points one past the last type object.
Sacado::TemplateManager< TypeSeq,
BaseT, ObjectT >::const_iterator 
end () const
 Return an iterator that points one past the last type object.

Private Attributes

std::vector< Teuchos::RCP<
BaseT > > 
objects
 Stores array of rcp's to objects of each type.

Friends

class TemplateIterator< TypeSeq, BaseT, ObjectT >
 Declare TemplateIterator as a friend class.

Classes

struct  BuildObject
struct  DefaultBuilderOp
 The default builder class for building objects for each ScalarT. More...
struct  type_info_less
 Implementation of < for type_info objects. More...

Detailed Description

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
class Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >

Container class to manager template instantiations of a template class.

This class provides a generic container class for managing multiple instantiations of another class ObjectT. It assumes each class ObjectT<ScalarT> is derived from a non-template base class BaseT. It stores a vector of reference counted pointers to objects of type BaseT corresponding to each instantiation of ObjectT. The instantiations ObjectT for each ScalarT are provided by a builder class, passed through the buildObjects() method (see DefaultBuilderOp for an example builder). An iterator is provided for accessing each template instantiation, and non-templated virtual methods of BaseT can be called by dereferencing the iterator. Finally, template methods are provided to access the stored objects as either objects of type BaseT (getAsBase()) or objects of type ObjectT<ScalarT> (getAsObject()). A map using RTTI is used to map a typename to an index into the vector corresponding to the object of that type.

Template managers for specific types should derive from this class instantiated on those types. In most cases, a builder class will also need to be created to instantiate the objects for each scalar type.

Definition at line 74 of file Sacado_TemplateManager.hpp.


Member Typedef Documentation

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
typedef TemplateIterator<TypeSeq,BaseT,ObjectT> Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::iterator

Typedef for iterator.

Definition at line 102 of file Sacado_TemplateManager.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
typedef ConstTemplateIterator<TypeSeq,BaseT,ObjectT> Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::const_iterator

Typedef for const_iterator.

Definition at line 105 of file Sacado_TemplateManager.hpp.


Constructor & Destructor Documentation

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::TemplateManager (  ) 

Default constructor.

Definition at line 34 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::~TemplateManager (  ) 

Destructor.

Definition at line 43 of file Sacado_TemplateManagerImp.hpp.


Member Function Documentation

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
template<typename BuilderOpT>
void Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::buildObjects ( const BuilderOpT &  builder  ) 

Build objects for each ScalarT.

Definition at line 51 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
void Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::buildObjects (  ) 

Build objects for each ScalarT using default builder.

Definition at line 59 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
template<typename ScalarT>
Teuchos::RCP< BaseT > Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::getAsBase (  ) 

Get RCP to object corrensponding to ScalarT as BaseT.

Definition at line 69 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
template<typename ScalarT>
Teuchos::RCP< const BaseT > Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::getAsBase (  )  const

Get RCP to object corrensponding to ScalarT as BaseT.

Definition at line 78 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
template<typename ScalarT>
Teuchos::RCP< ObjectT< ScalarT > > Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::getAsObject (  ) 

Get RCP to object corrensponding to ScalarT as ObjectT<ScalarT>.

Definition at line 88 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
template<typename ScalarT>
Teuchos::RCP< const ObjectT< ScalarT > > Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::getAsObject (  )  const

Get RCP to object corrensponding to ScalarT as ObjectT<ScalarT>.

Definition at line 98 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::iterator Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::begin (  ) 

Return an iterator that points to the first type object.

Definition at line 108 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::const_iterator Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::begin (  )  const

Return an iterator that points to the first type object.

Definition at line 117 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::iterator Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::end (  ) 

Return an iterator that points one past the last type object.

Definition at line 126 of file Sacado_TemplateManagerImp.hpp.

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::const_iterator Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::end (  )  const

Return an iterator that points one past the last type object.

Definition at line 135 of file Sacado_TemplateManagerImp.hpp.


Friends And Related Function Documentation

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
friend class TemplateIterator< TypeSeq, BaseT, ObjectT > [friend]

Declare TemplateIterator as a friend class.

Definition at line 97 of file Sacado_TemplateManager.hpp.


Member Data Documentation

template<typename TypeSeq, typename BaseT, template< typename > class ObjectT>
std::vector< Teuchos::RCP<BaseT> > Sacado::TemplateManager< TypeSeq, BaseT, ObjectT >::objects [private]

Stores array of rcp's to objects of each type.

Definition at line 164 of file Sacado_TemplateManager.hpp.


The documentation for this class was generated from the following files:
Generated on Wed May 12 21:59:11 2010 for Sacado Package Browser (Single Doxygen Collection) by  doxygen 1.4.7