File: ProgramParameters.h

package info (click to toggle)
caret 5.6.4~dfsg.1-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 31,904 kB
  • ctags: 28,901
  • sloc: cpp: 378,050; python: 6,718; ansic: 5,507; makefile: 333; sh: 46
file content (153 lines) | stat: -rw-r--r-- 6,874 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153

#ifndef __PROGRAM_PARAMETERS_H__
#define __PROGRAM_PARAMETERS_H__

/*LICENSE_START*/
/*
 *  Copyright 1995-2002 Washington University School of Medicine
 *
 *  http://brainmap.wustl.edu
 *
 *  This file is part of CARET.
 *
 *  CARET is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  CARET is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with CARET; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 */
/*LICENSE_END*/

#include <vector>

#include <QString>

#include "ProgramParametersException.h"
#include "Structure.h"

/// class for handling and accessing a programs parameters
class ProgramParameters {
   public:
      // constructor
      ProgramParameters(const int argc, char* argv[]);
      
      // constructor
      ProgramParameters(const QString& programName,
                        const QStringList& programParameters);
      
      // destructor
      ~ProgramParameters();
   
      // get the number of parameters (value will change if splitUpRemainingParameters() called)
      int getNumberOfParameters() const throw (ProgramParametersException);
      
      // reset the parameters index
      void resetParametersIndex() throw (ProgramParametersException);
      
      // get the program name without the path
      QString getProgramNameWithoutPath() const throw (ProgramParametersException);
      
      // get the program name with the path
      QString getProgramNameWithPath() const throw (ProgramParametersException);
      
      // see if parameters are remaining
      bool getParametersAvailable() const throw (ProgramParametersException);
      
      // get next parameter as a string
      QString getNextParameterAsString(const QString& parameterNameForErrorMessage) throw (ProgramParametersException);
      
      // get next parameter as an int
      int getNextParameterAsInt(const QString& parameterNameForErrorMessage) throw (ProgramParametersException);
      
      // get next parameter as a float
      float getNextParameterAsFloat(const QString& parameterNameForErrorMessage) throw (ProgramParametersException);
      
      // get next parameter as a double
      double getNextParameterAsDouble(const QString& parameterNameForErrorMessage) throw (ProgramParametersException);
      
      // get next parameter as boolean
      bool getNextParameterAsBoolean(const QString& parameterNameForErrorMessage) throw (ProgramParametersException);
      
      // get several parameters as strings
      void getNextParametersAsStrings(const QString& parameterNameForErrorMessage,
                                      const int numberOfParametersToGet,
                                      std::vector<QString>& parametersOut) throw (ProgramParametersException);
      
      // get several parameters as ints
      void getNextParametersAsInts(const QString& parameterNameForErrorMessage,
                                   const int numberOfParametersToGet,
                                   std::vector<int>& parametersOut) throw (ProgramParametersException);
      
      // get several parameters as floats
      void getNextParametersAsFloats(const QString& parameterNameForErrorMessage,
                                     const int numberOfParametersToGet,
                                     std::vector<float>& parametersOut) throw (ProgramParametersException);
      
      // get several parameters as doubles
      void getNextParametersAsDoubles(const QString& parameterNameForErrorMessage,
                                      const int numberOfParametersToGet,
                                      std::vector<double>& parametersOut) throw (ProgramParametersException);
      
      // get remaining parameters as strings
      void getRemainingParametersAsStrings(const QString& parameterNameForErrorMessage,
                                           std::vector<QString>& parametersOut) throw (ProgramParametersException);

      // get remaining parameters as ints
      void getRemainingParametersAsInts(const QString& parameterNameForErrorMessage,
                                           std::vector<int>& parametersOut) throw (ProgramParametersException);

      // get remaining parameters as floats
      void getRemainingParametersAsFloats(const QString& parameterNameForErrorMessage,
                                           std::vector<float>& parametersOut) throw (ProgramParametersException);

      // get remaining parameters as doubles
      void getRemainingParametersAsDoubles(const QString& parameterNameForErrorMessage,
                                           std::vector<double>& parametersOut) throw (ProgramParametersException);

      // get the next parameter as structure
      Structure getNextParameterAsStructure(const QString& parameterNameForErrorMessage) throw (ProgramParametersException);
      
      // get the next parameter as a volume file name and label separated by a semicolon
      void getNextParameterAsVolumeFileNameAndLabel(const QString& parameterNameForErrorMessage,
                                                    QString& volumeFileNameOut,
                                                    QString& volumeFileLabelOut) throw (ProgramParametersException);
      
      // get the volume file name and label delimeter
      static QString getVolumeFileNameAndLabelDelimeter() { return ":::"; }
      
      // see if there is a parameter with specified name (does not affect "next parameter")
      bool getParameterWithValueExists(const QString& value) const;
      
      // get index of a parameter with specified name (returns -1 if not found)
      int getIndexOfParameterWithValue(const QString& value) const;
      
      // get a parameter at a specified index (does not affect "next parameter")
      QString getParameterAtIndex(const int indx) const;
      
      // remove parameter at a specified index
      void removeParameterAtIndex(const int indx);
      
      // unget the last parameter
      void ungetLastParameter() throw (ProgramParametersException);
      
      // split up remaining parameters (may have more than one in single string)
      void splitUpRemainingParameters();
      
   protected:
      // the list of parameters
      std::vector<QString> parameters;
      
      // index of current parameter
      int parametersIndex;
};

#endif // __PROGRAM_PARAMETERS_H__