All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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_pointer
m
 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.

Definition at line 38 of file CLToolRegister.h.

Member Typedef Documentation

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

Iterator over the map.

Definition at line 52 of file CLToolRegister.h.

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

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

Definition at line 42 of file CLToolRegister.h.

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

Pointer to a function which, returns the keywords allowed.

Definition at line 44 of file CLToolRegister.h.

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

Iterator over the map.

Definition at line 50 of file CLToolRegister.h.

Constructor & Destructor Documentation

PLMD::CLToolRegister::~CLToolRegister ( )

Definition at line 32 of file CLToolRegister.cpp.

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

Definition at line 53 of file CLToolRegister.cpp.

bool PLMD::CLToolRegister::check ( std::string  cltool)

Verify if a directive is present in the register.

Definition at line 64 of file CLToolRegister.cpp.

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

Definition at line 69 of file CLToolRegister.cpp.

vector< string > PLMD::CLToolRegister::list ( ) const

Returns a list of the allowed CLTools.

Definition at line 104 of file CLToolRegister.cpp.

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

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

Definition at line 95 of file CLToolRegister.cpp.

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

Definition at line 45 of file CLToolRegister.cpp.

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

Definition at line 40 of file CLToolRegister.cpp.

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

Write on a stream the list of registered directives.

Definition at line 80 of file CLToolRegister.cpp.

#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

Definition at line 92 of file CLToolRegister.h.

Member Data Documentation

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

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

Definition at line 54 of file CLToolRegister.h.

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

Map cltool to a function which creates the related object.

Definition at line 46 of file CLToolRegister.h.

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

Map cltool name to the keywords for this function.

Definition at line 48 of file CLToolRegister.h.


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