tclap 1.2.5
ValuesConstraint.h
Go to the documentation of this file.
1// -*- Mode: c++; c-basic-offset: 4; tab-width: 4; -*-
2
3
4
5/******************************************************************************
6 *
7 * file: ValuesConstraint.h
8 *
9 * Copyright (c) 2005, Michael E. Smoot
10 * Copyright (c) 2017, Google LLC
11 * All rights reserved.
12 *
13 * See the file COPYING in the top directory of this distribution for
14 * more information.
15 *
16 * THE SOFTWARE IS PROVIDED _AS IS_, WITHOUT WARRANTY OF ANY KIND, EXPRESS
17 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *
24 *****************************************************************************/
25
26#ifndef TCLAP_VALUESCONSTRAINT_H
27#define TCLAP_VALUESCONSTRAINT_H
28
29#ifdef HAVE_CONFIG_H
30#include <config.h>
31#endif
32
33#include <string>
34#include <vector>
35#include <tclap/Constraint.h>
36#include <tclap/sstream.h>
37
38namespace TCLAP {
39
44template<class T>
46{
47
48 public:
49
54 ValuesConstraint(std::vector<T>const& allowed);
55
59 virtual ~ValuesConstraint() {}
60
64 virtual std::string description() const;
65
69 virtual std::string shortID() const;
70
76 virtual bool check(const T& value) const;
77
78 protected:
79
83 std::vector<T> _allowed;
84
88 std::string _typeDesc;
89
90};
91
92template<class T>
93ValuesConstraint<T>::ValuesConstraint(std::vector<T> const& allowed)
94: _allowed(allowed),
95 _typeDesc("")
96{
97 for ( unsigned int i = 0; i < _allowed.size(); i++ )
98 {
99 std::ostringstream os;
100 os << _allowed[i];
101
102 std::string temp( os.str() );
103
104 if ( i > 0 )
105 _typeDesc += "|";
106 _typeDesc += temp;
107 }
108}
109
110template<class T>
111bool ValuesConstraint<T>::check( const T& val ) const
112{
113 if ( std::find(_allowed.begin(),_allowed.end(),val) == _allowed.end() )
114 return false;
115 else
116 return true;
117}
118
119template<class T>
121{
122 return _typeDesc;
123}
124
125template<class T>
127{
128 return _typeDesc;
129}
130
131
132} //namespace TCLAP
133#endif
134
The interface that defines the interaction between the Arg and Constraint.
Definition: Constraint.h:43
A Constraint that constrains the Arg to only those values specified in the constraint.
ValuesConstraint(std::vector< T >const &allowed)
Constructor.
std::string _typeDesc
The string used to describe the allowed values of this constraint.
virtual bool check(const T &value) const
The method used to verify that the value parsed from the command line meets the constraint.
virtual std::string description() const
Returns a description of the Constraint.
virtual ~ValuesConstraint()
Virtual destructor.
std::vector< T > _allowed
The list of valid values.
virtual std::string shortID() const
Returns the short ID for the Constraint.
Definition: Arg.h:48