Main MRPT website
>
C++ reference
Main Page
Related Pages
Modules
Namespaces
Classes
Files
File List
File Members
mrpt
otherlibs
tclap
ValuesConstraint.h
Go to the documentation of this file.
1
2
3
/******************************************************************************
4
*
5
* file: ValuesConstraint.h
6
*
7
* Copyright (c) 2005, Michael E. Smoot
8
* All rights reverved.
9
*
10
* See the file COPYING in the top directory of this distribution for
11
* more information.
12
*
13
* THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
14
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
18
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
19
* DEALINGS IN THE SOFTWARE.
20
*
21
*****************************************************************************/
22
23
#ifndef TCLAP_VALUESCONSTRAINT_H
24
#define TCLAP_VALUESCONSTRAINT_H
25
26
#include <string>
27
#include <vector>
28
#include <
mrpt/otherlibs/tclap/Constraint.h
>
29
30
//#ifdef HAVE_CONFIG_H
31
//#include <config.h>
32
//#else
33
#define HAVE_SSTREAM
34
//#endif
35
36
#if defined(HAVE_SSTREAM)
37
#include <sstream>
38
#elif defined(HAVE_STRSTREAM)
39
#include <strstream>
40
#else
41
#error "Need a stringstream (sstream or strstream) to compile!"
42
#endif
43
44
namespace
TCLAP {
45
46
/**
47
* A Constraint that constrains the Arg to only those values specified
48
* in the constraint.
49
*/
50
template
<
class
T>
51
class
ValuesConstraint
:
public
Constraint
<T>
52
{
53
54
public
:
55
56
/**
57
* Constructor.
58
* \param allowed - vector of allowed values.
59
*/
60
ValuesConstraint
(std::vector<T>& allowed);
61
62
/**
63
* Virtual destructor.
64
*/
65
virtual
~ValuesConstraint
() {}
66
67
/**
68
* Returns a description of the Constraint.
69
*/
70
virtual
std::string
description
()
const
;
71
72
/**
73
* Returns the short ID for the Constraint.
74
*/
75
virtual
std::string
shortID
()
const
;
76
77
/**
78
* The method used to verify that the value parsed from the command
79
* line meets the constraint.
80
* \param value - The value that will be checked.
81
*/
82
virtual
bool
check
(
const
T& value)
const
;
83
84
protected
:
85
86
/**
87
* The list of valid values.
88
*/
89
std::vector<T>
_allowed
;
90
91
/**
92
* The string used to describe the allowed values of this constraint.
93
*/
94
std::string
_typeDesc
;
95
96
};
97
98
template
<
class
T>
99
ValuesConstraint<T>::ValuesConstraint
(std::vector<T>& allowed)
100
: _allowed(allowed)
101
{
102
for
(
unsigned
int
i = 0; i <
_allowed
.size(); i++ )
103
{
104
105
#if defined(HAVE_SSTREAM)
106
std::ostringstream os;
107
#elif defined(HAVE_STRSTREAM)
108
std::ostrstream os;
109
#else
110
#error "Need a stringstream (sstream or strstream) to compile!"
111
#endif
112
113
os <<
_allowed
[i];
114
115
std::string temp( os.str() );
116
117
if
( i > 0 )
118
_typeDesc
+=
"|"
;
119
_typeDesc
+= temp;
120
}
121
}
122
123
template
<
class
T>
124
bool
ValuesConstraint<T>::check
(
const
T& val )
const
125
{
126
if
( std::find(_allowed.begin(),_allowed.end(),val) == _allowed.end() )
127
return
false
;
128
else
129
return
true
;
130
}
131
132
template
<
class
T>
133
std::string
ValuesConstraint<T>::shortID
()
const
134
{
135
return
_typeDesc;
136
}
137
138
template
<
class
T>
139
std::string
ValuesConstraint<T>::description
()
const
140
{
141
return
_typeDesc;
142
}
143
144
145
}
//namespace TCLAP
146
#endif
147
Page generated by
Doxygen 1.8.3
for MRPT 0.9.6 SVN: at Fri Feb 15 22:05:02 EST 2013