Public Member Functions | Private Types | Private Attributes | Friends | Related Functions | List of all members
PLMD::CLToolRegister Class Reference

Same as ActionRegister, but for CLTools. More...

#include <CLToolRegister.h>

Public Member Functions

void add (std::string key, creator_pointer cp, keywords_pointer kp)
 Register a new class. More...
 
bool check (std::string cltool)
 Verify if a directive is present in the register. More...
 
CLToolcreate (const CLToolOptions &ao)
 Create an CLTool of the type indicated in the options. More...
 
void remove (creator_pointer)
 
 ~CLToolRegister ()
 
std::vector< std::string > list () const
 Returns a list of the allowed CLTools. More...
 
bool printManual (const std::string &cltool)
 Print out the instructions for using the tool in html ready for input into the manual. More...
 

Private Types

typedef CLTool *(* creator_pointer) (const CLToolOptions &)
 Pointer to a function which, given the options, create an CLTool. More...
 
typedef void(* keywords_pointer) (Keywords &)
 Pointer to a function which, returns the keywords allowed. More...
 
typedef std::map< std::string, creator_pointer >::iterator mIterator
 Iterator over the map. More...
 
typedef std::map< std::string, creator_pointer >::const_iterator const_mIterator
 Iterator over the map. More...
 

Private Attributes

std::map< std::string, creator_pointerm
 Map cltool to a function which creates the related object. More...
 
std::map< std::string, Keywordsmk
 Map cltool name to the keywords for this function. More...
 
std::set< std::string > disabled
 Set of disabled cltools (which were registered more than once) More...
 

Friends

std::ostream & operator<< (std::ostream &, const CLToolRegister &)
 Write on a stream the list of registered directives. More...
 

Related Functions

(Note that these are not member functions.)

CLToolRegistercltoolRegister ()
 Function returning a reference to the CLToolRegister. More...
 
#define PLUMED_REGISTER_CLTOOL(classname, directive)
 Shortcut for CLTool registration. More...
 

Detailed Description

Same as ActionRegister, but for CLTools.

Member Typedef Documentation

typedef std::map<std::string,creator_pointer>::const_iterator PLMD::CLToolRegister::const_mIterator
private

Iterator over the map.

typedef CLTool*(* PLMD::CLToolRegister::creator_pointer) (const CLToolOptions &)
private

Pointer to a function which, given the options, create an CLTool.

typedef void(* PLMD::CLToolRegister::keywords_pointer) (Keywords &)
private

Pointer to a function which, returns the keywords allowed.

typedef std::map<std::string,creator_pointer>::iterator PLMD::CLToolRegister::mIterator
private

Iterator over the map.

Constructor & Destructor Documentation

PLMD::CLToolRegister::~CLToolRegister ( )

Member Function Documentation

void PLMD::CLToolRegister::add ( std::string  key,
creator_pointer  cp,
keywords_pointer  kp 
)

Register a new class.

Parameters
keyThe name of the directive to be used in the input file
cpA pointer to a function which creates an object of that class
kpA pointer to a function which returns the allowed keywords
bool PLMD::CLToolRegister::check ( std::string  cltool)

Verify if a directive is present in the register.

CLTool * PLMD::CLToolRegister::create ( const CLToolOptions ao)

Create an CLTool of the type indicated in the options.

Parameters
aoobject containing information for initialization, such as the full input line, a pointer to PlumedMain, etc
vector< string > PLMD::CLToolRegister::list ( ) const

Returns a list of the allowed CLTools.

bool PLMD::CLToolRegister::printManual ( const std::string &  cltool)

Print out the instructions for using the tool in html ready for input into the manual.

void PLMD::CLToolRegister::remove ( creator_pointer  f)

Friends And Related Function Documentation

CLToolRegister & cltoolRegister ( )
related

Function returning a reference to the CLToolRegister.

To avoid problems with order of initialization, this function contains a static CLToolRegister which is built the first time the function is called. In this manner, it is always initialized before it's used

std::ostream& operator<< ( std::ostream &  ,
const CLToolRegister  
)
friend

Write on a stream the list of registered directives.

#define PLUMED_REGISTER_CLTOOL (   classname,
  directive 
)
related
Value:
static class classname##RegisterMe{ \
static PLMD::CLTool* create(const PLMD::CLToolOptions&ao){return new classname(ao);} \
public: \
classname##RegisterMe(){PLMD::cltoolRegister().add(directive,create,classname::registerKeywords);} \
} classname##RegisterMeObject;

Shortcut for CLTool registration.

For easier registration, this file also provides a macro PLUMED_REGISTER_CLTOOL.

Parameters
classnamethe name of the class to be registered
directivea string containing the corresponding directive This macro should be used in the .cpp file of the corresponding class

Member Data Documentation

std::set<std::string> PLMD::CLToolRegister::disabled
private

Set of disabled cltools (which were registered more than once)

std::map<std::string,creator_pointer> PLMD::CLToolRegister::m
private

Map cltool to a function which creates the related object.

std::map<std::string,Keywords> PLMD::CLToolRegister::mk
private

Map cltool name to the keywords for this function.


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