Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
core
WithCmd.h
Go to the documentation of this file.
1
/* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2
Copyright (c) 2013 The plumed team
3
(see the PEOPLE file at the root of the distribution for a list of names)
4
5
See http://www.plumed-code.org for more information.
6
7
This file is part of plumed, version 2.0.
8
9
plumed is free software: you can redistribute it and/or modify
10
it under the terms of the GNU Lesser General Public License as published by
11
the Free Software Foundation, either version 3 of the License, or
12
(at your option) any later version.
13
14
plumed is distributed in the hope that it will be useful,
15
but WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
GNU Lesser General Public License for more details.
18
19
You should have received a copy of the GNU Lesser General Public License
20
along with plumed. If not, see <http://www.gnu.org/licenses/>.
21
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
22
#ifndef __PLUMED_core_WithCmd_h
23
#define __PLUMED_core_WithCmd_h
24
25
#include <string>
26
27
namespace
PLMD
{
28
29
/// Base for classes with cmd() method.
30
/// This is an abstract base class for classes with
31
/// cmd() method. It takes care of "const" cast, and
32
/// in the future it may be used to enforce some sort
33
/// of type checking on passed arguments.
34
class
WithCmd
{
35
public
:
36
virtual
~WithCmd
();
37
/// Const val version, which indeed just overrides the const and call the virtual method.
38
void
cmd
(
const
std::string& key,
const
void
*val);
39
/// This has to be implemented in daughter classes.
40
virtual
void
cmd
(
const
std::string& key,
void
*val=NULL)=0;
41
};
42
43
inline
44
void
WithCmd::cmd
(
const
std::string& key,
const
void
*val){
45
// this is nasty trick:
46
cmd
(key,const_cast<void*>(val));
47
// in this manner, a const pointer can be used for val, allowing the user to pass
48
// arguments such as cmd("pippo","pluto")
49
// but here we override the const
50
}
51
52
inline
53
WithCmd::~WithCmd
(){
54
// do nothing
55
// here just to allow inheriting from this class properly
56
}
57
58
}
59
60
#endif
PLMD::WithCmd
Base for classes with cmd() method.
Definition:
WithCmd.h:34
PLMD::WithCmd::cmd
void cmd(const std::string &key, const void *val)
Const val version, which indeed just overrides the const and call the virtual method.
Definition:
WithCmd.h:44
PLMD::WithCmd::~WithCmd
virtual ~WithCmd()
Definition:
WithCmd.h:53
PLMD
Definition:
Analysis.cpp:30
Hosted by GitHub
1.8.8