# | Line 44 | Line 44 | |
---|---|---|
44 | * | |
45 | * Created by Charles F. Vardeman II on 11/16/05. | |
46 | * @author Charles F. Vardeman II | |
47 | < | * @version $Id: ParameterManager.hpp,v 1.3 2006-05-17 21:51:42 tim Exp $ |
47 | > | * @version $Id: ParameterManager.hpp,v 1.4 2008-09-11 19:40:59 gezelter Exp $ |
48 | * | |
49 | */ | |
50 | ||
# | Line 60 | Line 60 | |
60 | #include "config.h" | |
61 | ||
62 | ||
63 | + | #include "utils/simError.h" |
64 | + | #include "utils/StringTokenizer.hpp" |
65 | #include "utils/CaseConversion.hpp" | |
66 | ||
65 | – | |
66 | – | |
67 | template<typename T> | |
68 | struct ParameterTraits; | |
69 | ||
# | Line 120 | Line 120 | struct ParameterTraits<RealType>{ | |
120 | static std::string getParamType() { return "RealType";} | |
121 | }; | |
122 | ||
123 | + | //Pair of ints |
124 | + | template<> |
125 | + | struct ParameterTraits<std::pair<int, int> >{ |
126 | + | typedef std::pair<int, int> RepType; |
127 | + | template<typename T> static bool convert(T, RepType&){return false;} |
128 | + | template<typename T> static RepType convert(T v) {RepType tmp; convert(v,tmp);return tmp;} |
129 | + | static bool convert(RepType v, RepType& r) {r=v; return true;} |
130 | + | static bool convert(std::string v, RepType& r) { |
131 | + | oopse::StringTokenizer tokenizer(v," ;,\t\n\r"); |
132 | + | if (tokenizer.countTokens() == 2) { |
133 | + | int atom1 = tokenizer.nextTokenAsInt(); |
134 | + | int atom2 = tokenizer.nextTokenAsInt(); |
135 | + | r = std::make_pair(atom1, atom2); |
136 | + | return true; |
137 | + | } else { |
138 | + | sprintf(painCave.errMsg, |
139 | + | "ParameterManager Error: " |
140 | + | "Not enough tokens to make pair!\n"); |
141 | + | painCave.severity = OOPSE_ERROR; |
142 | + | painCave.isFatal = 1; |
143 | + | simError(); |
144 | + | } |
145 | + | return false; |
146 | + | } |
147 | + | static std::string getParamType() { return "std::pair<int, int>";} |
148 | + | }; |
149 | ||
150 | + | |
151 | class ParameterBase { | |
152 | public: | |
153 | ParameterBase() : keyword_(), optional_(false), defaultValue_(false), empty_(true) {} | |
# | Line 135 | Line 162 | class ParameterBase { (public) | |
162 | virtual bool setData(std::string) = 0; | |
163 | virtual bool setData(int) = 0; | |
164 | virtual bool setData(RealType) = 0; | |
165 | + | virtual bool setData(std::pair<int, int>) = 0; |
166 | virtual std::string getParamType() = 0; | |
167 | protected: | |
168 | std::string keyword_; | |
# | Line 160 | Line 188 | class Parameter : public ParameterBase{ (public) | |
188 | virtual bool setData(RealType dval) { | |
189 | return internalSetData<RealType>(dval); | |
190 | } | |
191 | + | |
192 | + | virtual bool setData(std::pair<int, int> pval) { |
193 | + | return internalSetData<std::pair<int, int> >(pval); |
194 | + | } |
195 | ||
196 | virtual std::string getParamType() { return ParameterTraits<ParamType>::getParamType();} | |
197 | private: |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |