PSCF v1.1
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Util::Manager< Data > Class Template Reference

Template container for pointers to objects with a common base class. More...

#include <Manager.h>

Inheritance diagram for Util::Manager< Data >:
Util::ParamComposite Util::ParamComponent Util::Serializable Util::MpiFileIo

Public Member Functions

 Manager (bool uniqueNames=false)
 Constructor. More...
 
virtual ~Manager ()
 Destructor. More...
 
void addSubfactory (Factory< Data > &subfactory)
 Set a SubFactory for this Manager. More...
 
void setFactory (Factory< Data > &factory)
 Associate a Factory with this Manager. More...
 
void setFactory (Factory< Data > *factoryPtr)
 Associated a Factory with this Manager (pass by pointer). More...
 
virtual void readParam (std::istream &in)
 Read and create a set of objects. More...
 
virtual void readParamOptional (std::istream &in)
 Optionally read and create a set of objects. More...
 
virtual void readParameters (std::istream &in)
 Read child blocks, return when closing bracket encountered. More...
 
virtual void loadParameters (Serializable::IArchive &ar)
 Load a set of objects to an output archive. More...
 
virtual void save (Serializable::OArchive &ar)
 Save a set of objects to an output archive. More...
 
void append (Data &data, const std::string &name)
 Append a Data object to the end of the sequence. More...
 
int size () const
 Get logical size. More...
 
std::string className (int i) const
 Get the subclass name for object number i. More...
 
Factory< Data > & factory ()
 Return a reference to the factory. More...
 
bool hasFactory () const
 Return true if this Manager has a Factory, false otherwise. More...
 
Data & operator[] (int i) const
 Mimic C array subscripting. More...
 
Data * findFirst (std::string const &className)
 Return pointer to first object with specified class name. More...
 
- Public Member Functions inherited from Util::ParamComposite
 ParamComposite ()
 Constructor. More...
 
 ParamComposite (const ParamComposite &other)
 Copy constructor. More...
 
 ParamComposite (int capacity)
 Constructor. More...
 
virtual ~ParamComposite ()
 Virtual destructor. More...
 
void resetParam ()
 Resets ParamComposite to its empty state. More...
 
virtual void writeParam (std::ostream &out) const
 Write all parameters to an output stream. More...
 
virtual void load (Serializable::IArchive &ar)
 Load all parameters from an input archive. More...
 
virtual void loadOptional (Serializable::IArchive &ar)
 Load an optional ParamComposite. More...
 
void saveOptional (Serializable::OArchive &ar)
 Saves isActive flag, and then calls save() iff isActive is true. More...
 
void readParamComposite (std::istream &in, ParamComposite &child, bool next=true)
 Add and read a required child ParamComposite. More...
 
void readParamCompositeOptional (std::istream &in, ParamComposite &child, bool next=true)
 Add and attempt to read an optional child ParamComposite. More...
 
template<typename Type >
ScalarParam< Type > & read (std::istream &in, const char *label, Type &value)
 Add and read a new required ScalarParam < Type > object. More...
 
template<typename Type >
ScalarParam< Type > & readOptional (std::istream &in, const char *label, Type &value)
 Add and read a new optional ScalarParam < Type > object. More...
 
template<typename Type >
CArrayParam< Type > & readCArray (std::istream &in, const char *label, Type *value, int n)
 Add and read a required C array parameter. More...
 
template<typename Type >
CArrayParam< Type > & readOptionalCArray (std::istream &in, const char *label, Type *value, int n)
 Add and read an optional C array parameter. More...
 
template<typename Type >
DArrayParam< Type > & readDArray (std::istream &in, const char *label, DArray< Type > &array, int n)
 Add and read a required DArray < Type > parameter. More...
 
template<typename Type >
DArrayParam< Type > & readOptionalDArray (std::istream &in, const char *label, DArray< Type > &array, int n)
 Add and read an optional DArray < Type > parameter. More...
 
template<typename Type , int N>
FArrayParam< Type, N > & readFArray (std::istream &in, const char *label, FArray< Type, N > &array)
 Add and read a required FArray < Type, N > array parameter. More...
 
template<typename Type , int N>
FArrayParam< Type, N > & readOptionalFArray (std::istream &in, const char *label, FArray< Type, N > &array)
 Add and read an optional FArray < Type, N > array parameter. More...
 
template<typename Type , int N>
FSArrayParam< Type, N > & readFSArray (std::istream &in, const char *label, FSArray< Type, N > &array, int size)
 Add and read a required FSArray < Type, N > array parameter. More...
 
template<typename Type , int N>
FSArrayParam< Type, N > & readOptionalFSArray (std::istream &in, const char *label, FSArray< Type, N > &array, int size)
 Add and read an optional FSArray < Type, N > array parameter. More...
 
template<typename Type >
CArray2DParam< Type > & readCArray2D (std::istream &in, const char *label, Type *value, int m, int n, int np)
 Add and read a required CArray2DParam < Type > 2D C-array. More...
 
template<typename Type >
CArray2DParam< Type > & readOptionalCArray2D (std::istream &in, const char *label, Type *value, int m, int n, int np)
 Add and read an optional CArray2DParam < Type > 2D C-array parameter. More...
 
template<typename Type >
DMatrixParam< Type > & readDMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int m, int n)
 Add and read a required DMatrix < Type > matrix parameter. More...
 
template<typename Type >
DMatrixParam< Type > & readOptionalDMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int m, int n)
 Add and read an optional DMatrix < Type > matrix parameter. More...
 
template<typename Type >
DSymmMatrixParam< Type > & readDSymmMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int n)
 Add and read a required symmetrix DMatrix. More...
 
template<typename Type >
DSymmMatrixParam< Type > & readOptionalDSymmMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int n)
 Add and read an optional DMatrix matrix parameter. More...
 
BeginreadBegin (std::istream &in, const char *label, bool isRequired=true)
 Add and read a class label and opening bracket. More...
 
EndreadEnd (std::istream &in)
 Add and read the closing bracket. More...
 
BlankreadBlank (std::istream &in)
 Add and read a new Blank object, representing a blank line. More...
 
void loadParamComposite (Serializable::IArchive &ar, ParamComposite &child, bool next=true)
 Add and load a required child ParamComposite. More...
 
void loadParamCompositeOptional (Serializable::IArchive &ar, ParamComposite &child, bool next=true)
 Add and load an optional child ParamComposite if isActive. More...
 
template<typename Type >
ScalarParam< Type > & loadParameter (Serializable::IArchive &ar, const char *label, Type &value, bool isRequired)
 Add and load a new ScalarParam < Type > object. More...
 
template<typename Type >
ScalarParam< Type > & loadParameter (Serializable::IArchive &ar, const char *label, Type &value)
 Add and load new required ScalarParam < Type > object. More...
 
template<typename Type >
CArrayParam< Type > & loadCArray (Serializable::IArchive &ar, const char *label, Type *value, int n, bool isRequired)
 Add a C array parameter and load its elements. More...
 
template<typename Type >
CArrayParam< Type > & loadCArray (Serializable::IArchive &ar, const char *label, Type *value, int n)
 Add and load a required CArrayParam< Type > array parameter. More...
 
template<typename Type >
DArrayParam< Type > & loadDArray (Serializable::IArchive &ar, const char *label, DArray< Type > &array, int n, bool isRequired)
 Add an load a DArray < Type > array parameter. More...
 
template<typename Type >
DArrayParam< Type > & loadDArray (Serializable::IArchive &ar, const char *label, DArray< Type > &array, int n)
 Add and load a required DArray< Type > array parameter. More...
 
template<typename Type , int N>
FArrayParam< Type, N > & loadFArray (Serializable::IArchive &ar, const char *label, FArray< Type, N > &array, bool isRequired)
 Add and load an FArray < Type, N > fixed-size array parameter. More...
 
template<typename Type , int N>
FArrayParam< Type, N > & loadFArray (Serializable::IArchive &ar, const char *label, FArray< Type, N > &array)
 Add and load a required FArray < Type > array parameter. More...
 
template<typename Type , int N>
FSArrayParam< Type, N > & loadFSArray (Serializable::IArchive &ar, const char *label, FSArray< Type, N > &array, int size, bool isRequired)
 Add and load an FSArray < Type, N > array parameter. More...
 
template<typename Type , int N>
FSArrayParam< Type, N > & loadFSArray (Serializable::IArchive &ar, const char *label, FSArray< Type, N > &array, int size)
 Add and load a required FSArray < Type > array parameter. More...
 
template<typename Type >
CArray2DParam< Type > & loadCArray2D (Serializable::IArchive &ar, const char *label, Type *value, int m, int n, int np, bool isRequired)
 Add and load a CArray2DParam < Type > C 2D array parameter. More...
 
template<typename Type >
CArray2DParam< Type > & loadCArray2D (Serializable::IArchive &ar, const char *label, Type *value, int m, int n, int np)
 Add and load a required < Type > matrix parameter. More...
 
template<typename Type >
DMatrixParam< Type > & loadDMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int m, int n, bool isRequired)
 Add and load a DMatrixParam < Type > matrix parameter. More...
 
template<typename Type >
DMatrixParam< Type > & loadDMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int m, int n)
 Add and load a required DMatrixParam < Type > matrix parameter. More...
 
template<typename Type >
DSymmMatrixParam< Type > & loadDSymmMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int n, bool isRequired)
 Add and load a symmetric DSymmMatrixParam < Type > matrix parameter. More...
 
template<typename Type >
DSymmMatrixParam< Type > & loadDSymmMatrix (Serializable::IArchive &ar, const char *label, DMatrix< Type > &matrix, int n)
 Add and load a required DSymmMatrixParam < Type > matrix parameter. More...
 
void addParamComposite (ParamComposite &child, bool next=true)
 Add a child ParamComposite object to the format array. More...
 
BeginaddBegin (const char *label)
 Add a Begin object representing a class name and bracket. More...
 
EndaddEnd ()
 Add a closing bracket. More...
 
BlankaddBlank ()
 Create and add a new Blank object, representing a blank line. More...
 
std::string className () const
 Get class name string. More...
 
bool isRequired () const
 Is this ParamComposite required in the input file? More...
 
bool isActive () const
 Is this parameter active? More...
 
- Public Member Functions inherited from Util::ParamComponent
virtual ~ParamComponent ()
 Destructor. More...
 
virtual void readParam (std::istream &in)=0
 Read parameter(s) from file. More...
 
virtual void writeParam (std::ostream &out) const =0
 Read parameter(s) to file. More...
 
virtual void load (Serializable::IArchive &ar)
 Load internal state from an archive. More...
 
virtual void save (Serializable::OArchive &ar)
 Save internal state to an archive. More...
 
virtual void resetParam ()
 Nontrivial implementation provided by ParamComposite subclass. More...
 
void setIndent (const ParamComponent &parent, bool next=true)
 Set indent level. More...
 
std::string indent () const
 Return indent string for this object (string of spaces). More...
 
template<class Archive >
void serialize (Archive &ar, const unsigned int version)
 Serialize this ParamComponent as a string. More...
 
- Public Member Functions inherited from Util::Serializable
virtual ~Serializable ()
 Destructor. More...
 
virtual void save (OArchive &ar)=0
 Save to an archive. More...
 
virtual void load (IArchive &ar)=0
 Load from an archive. More...
 
- Public Member Functions inherited from Util::MpiFileIo
 MpiFileIo ()
 Constructor. More...
 
 MpiFileIo (const MpiFileIo &other)
 Copy constructor. More...
 
bool isIoProcessor () const
 Can this processor do file I/O ? More...
 
void setIoCommunicator (MPI::Intracomm &communicator)
 Set the communicator. More...
 
void clearCommunicator ()
 Clear (nullify) the communicator. More...
 
bool hasIoCommunicator () const
 Does this object have an associated MPI communicator? More...
 
MPI::Intracomm & ioCommunicator () const
 Get the MPI communicator by reference. More...
 

Protected Member Functions

void beginReadManager (std::istream &in)
 Read (or attempt to read) opening line: "ManagerName{". More...
 
void endReadManager ()
 Add closing bracket to output format. More...
 
virtual void initFactory ()
 Create factory if necessary. More...
 
virtual Factory< Data > * newDefaultFactory () const
 Create an instance of the default Factory<Data> class. More...
 
- Protected Member Functions inherited from Util::ParamComposite
void setClassName (const char *className)
 Set class name string. More...
 
void setIsRequired (bool isRequired)
 Set or unset the isActive flag. More...
 
void setIsActive (bool isActive)
 Set or unset the isActive flag. More...
 
void setParent (ParamComponent &param, bool next=true)
 Set this to the parent of a child component. More...
 
void addComponent (ParamComponent &param, bool isLeaf=true)
 Add a new ParamComponent object to the format array. More...
 
template<typename Type >
ScalarParam< Type > & add (std::istream &in, const char *label, Type &value, bool isRequired=true)
 Add a new required ScalarParam < Type > object. More...
 
template<typename Type >
CArrayParam< Type > & addCArray (std::istream &in, const char *label, Type *value, int n, bool isRequired=true)
 Add (but do not read) a required C array parameter. More...
 
template<typename Type >
DArrayParam< Type > & addDArray (std::istream &in, const char *label, DArray< Type > &array, int n, bool isRequired=true)
 Add (but do not read) a DArray < Type > parameter. More...
 
template<typename Type , int N>
FArrayParam< Type, N > & addFArray (std::istream &in, const char *label, FArray< Type, N > &array, bool isRequired=true)
 Add (but do not read) a FArray < Type, N > array parameter. More...
 
template<typename Type , int N>
FSArrayParam< Type, N > & addFSArray (std::istream &in, const char *label, FSArray< Type, N > &array, int size, bool isRequired=true)
 Add (but do not read) a FSArray < Type, N > array parameter. More...
 
template<typename Type >
CArray2DParam< Type > & addCArray2D (std::istream &in, const char *label, Type *value, int m, int n, int np, bool isRequired=true)
 Add (but do not read) a CArray2DParam < Type > 2D C-array. More...
 
template<typename Type >
DMatrixParam< Type > & addDMatrix (std::istream &in, const char *label, DMatrix< Type > &matrix, int m, int n, bool isRequired=true)
 Add and read a required DMatrix < Type > matrix parameter. More...
 
- Protected Member Functions inherited from Util::ParamComponent
 ParamComponent ()
 Constructor. More...
 
 ParamComponent (const ParamComponent &other)
 Copy constructor. More...
 

Protected Attributes

Factory< Data > * factoryPtr_
 Pointer to an associated Factory<Data> object. More...
 

Additional Inherited Members

- Public Types inherited from Util::Serializable
typedef BinaryFileOArchive OArchive
 Type of output archive used by save method. More...
 
typedef BinaryFileIArchive IArchive
 Type of input archive used by load method. More...
 
- Static Public Member Functions inherited from Util::ParamComponent
static void initStatic ()
 Initialize static echo member to false. More...
 
static void setEcho (bool echo=true)
 Enable or disable echoing for all subclasses of ParamComponent. More...
 
static bool echo ()
 Get echo parameter. More...
 

Detailed Description

template<typename Data>
class Util::Manager< Data >

Template container for pointers to objects with a common base class.

A Manager<Data> has an array of Data* pointers to Data objects, an array of corresponding subclass names, and a pointer to a Factory<Data> object. The default implementation of the Manager<Data>::readParam() method uses an associated Factory<Data> object to recognize the class name string that begins a polymorphic block in a parameter file (which must refer to a known subclass of Data) and to instantiate an object of the specified subclass.

Subclasses of Manager<Data> are used to manage arrays of Species, McMove, and Analyzer objects.

Definition at line 38 of file Manager.h.

Constructor & Destructor Documentation

◆ Manager()

template<typename Data >
Util::Manager< Data >::Manager ( bool  uniqueNames = false)

Constructor.

Parameters
uniqueNamesset true to require unique element class names.

Definition at line 232 of file Manager.h.

◆ ~Manager()

template<typename Data >
Util::Manager< Data >::~Manager
virtual

Destructor.

Definition at line 246 of file Manager.h.

Member Function Documentation

◆ addSubfactory()

template<typename Data >
void Util::Manager< Data >::addSubfactory ( Factory< Data > &  subfactory)

Set a SubFactory for this Manager.

Parameters
subfactoryReferernce to a sub-Factory to be added.

Definition at line 275 of file Manager.h.

◆ setFactory() [1/2]

template<typename Data >
void Util::Manager< Data >::setFactory ( Factory< Data > &  factory)

Associate a Factory with this Manager.

Parameters
factoryReference to a Factory object

Definition at line 284 of file Manager.h.

◆ setFactory() [2/2]

template<typename Data >
void Util::Manager< Data >::setFactory ( Factory< Data > *  factoryPtr)

Associated a Factory with this Manager (pass by pointer).

Parameters
factoryPtrpointer to a Factory<Data> object.

Definition at line 297 of file Manager.h.

◆ readParam()

template<typename Data >
void Util::Manager< Data >::readParam ( std::istream &  in)
virtual

Read and create a set of objects.

The default implementation of this method reads a sequence of blocks for different subclasses of Data, terminated by a closing bracket. For each block it:

  • reads a className string for a subclass of Data,
  • uses factory object to create a new instance of className.
  • invokes the readParam() method of the new object.

The implementation of the factory must recognize all valid className string values, and invoke the appropriate constructor for each. The loop over blocks terminates when it encounters a closing bracket '}' surrounded by white space.

Parameters
ininput stream

Reimplemented from Util::ParamComposite.

Definition at line 310 of file Manager.h.

◆ readParamOptional()

template<typename Data >
void Util::Manager< Data >::readParamOptional ( std::istream &  in)
virtual

Optionally read and create a set of objects.

Equivalent to readParam(), except that this function does nothing if the first line does not match the expected label, whereas readParam() throws an Exception

Parameters
ininput stream

Reimplemented from Util::ParamComposite.

Definition at line 323 of file Manager.h.

◆ readParameters()

template<typename Data >
void Util::Manager< Data >::readParameters ( std::istream &  in)
virtual

Read child blocks, return when closing bracket encountered.

Parameters
ininput stream

Reimplemented from Util::ParamComposite.

Definition at line 356 of file Manager.h.

References UTIL_THROW.

◆ loadParameters()

template<typename Data >
void Util::Manager< Data >::loadParameters ( Serializable::IArchive ar)
virtual

Load a set of objects to an output archive.

Parameters
arinput/loading archive

Reimplemented from Util::ParamComposite.

Definition at line 411 of file Manager.h.

References UTIL_THROW.

◆ save()

template<typename Data >
void Util::Manager< Data >::save ( Serializable::OArchive ar)
virtual

Save a set of objects to an output archive.

Parameters
aroutput/saving archive

Reimplemented from Util::ParamComposite.

Definition at line 448 of file Manager.h.

◆ append()

template<typename Data >
void Util::Manager< Data >::append ( Data &  data,
const std::string &  name 
)

Append a Data object to the end of the sequence.

Parameters
dataData object to be appended
namesubclass name

Definition at line 462 of file Manager.h.

◆ size()

template<typename Data >
int Util::Manager< Data >::size
inline

Get logical size.

Returns
logical size of this array.

Definition at line 494 of file Manager.h.

Referenced by pscfpp.file.File::__eq__(), pscfpp.text.Record::__init__(), pscfpp.file.File::__init__(), pscfpp.file.File::__repr__(), and pscfpp.text.Record::__str__().

◆ className()

template<typename Data >
std::string Util::Manager< Data >::className ( int  i) const

Get the subclass name for object number i.

Parameters
iinteger index of object
Returns
class name of managed object

Definition at line 473 of file Manager.h.

References UTIL_THROW.

◆ factory()

template<typename Data >
Factory< Data > & Util::Manager< Data >::factory

Return a reference to the factory.

Definition at line 265 of file Manager.h.

◆ hasFactory()

template<typename Data >
bool Util::Manager< Data >::hasFactory

Return true if this Manager has a Factory, false otherwise.

Definition at line 485 of file Manager.h.

◆ operator[]()

template<typename Data >
Data & Util::Manager< Data >::operator[] ( int  i) const
inline

Mimic C array subscripting.

Parameters
iarray index
Returns
reference to element i

Definition at line 501 of file Manager.h.

◆ findFirst()

template<typename Data >
Data * Util::Manager< Data >::findFirst ( std::string const &  className)

Return pointer to first object with specified class name.

Parameters
classNamedesired class name string
Returns
pointer to specified objectd, or null if not found.

Definition at line 512 of file Manager.h.

◆ beginReadManager()

template<typename Data >
void Util::Manager< Data >::beginReadManager ( std::istream &  in)
protected

Read (or attempt to read) opening line: "ManagerName{".

Definition at line 338 of file Manager.h.

References Util::ParamComposite::className(), and Util::Begin::isActive().

◆ endReadManager()

template<typename Data >
void Util::Manager< Data >::endReadManager
protected

Add closing bracket to output format.

Definition at line 399 of file Manager.h.

References Util::ParamComponent::echo(), Util::Log::file(), and Util::End::writeParam().

◆ initFactory()

template<typename Data >
void Util::Manager< Data >::initFactory
protectedvirtual

Create factory if necessary.

Definition at line 528 of file Manager.h.

◆ newDefaultFactory()

template<typename Data >
Factory< Data > * Util::Manager< Data >::newDefaultFactory
protectedvirtual

Create an instance of the default Factory<Data> class.

Returns
a pointer to a new Factory<Data> object.

Definition at line 541 of file Manager.h.

References UTIL_THROW.

Member Data Documentation

◆ factoryPtr_

template<typename Data >
Factory<Data>* Util::Manager< Data >::factoryPtr_
protected

Pointer to an associated Factory<Data> object.

Definition at line 182 of file Manager.h.


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