ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/io/OptionSectionParser.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/io/OptionSectionParser.cpp (file contents):
Revision 2447 by chuckv, Wed Nov 16 21:37:45 2005 UTC vs.
Revision 2448 by tim, Wed Nov 16 23:10:02 2005 UTC

# Line 44 | Line 44
44   *
45   *  Created by Charles F. Vardeman II on 11/15/05.
46   *  @author  Charles F. Vardeman II
47 < *  @version $Id: OptionSectionParser.cpp,v 1.1 2005-11-16 21:37:41 chuckv Exp $
47 > *  @version $Id: OptionSectionParser.cpp,v 1.2 2005-11-16 23:10:02 tim Exp $
48   *
49   */
50  
# Line 52 | Line 52 | namespace oopse {
52   #include "types/AtomType.hpp"
53   #include "UseTheForce/ForceField.hpp"
54   #include "utils/simError.h"
55 + #include "utils/StringUtils.hpp"
56   namespace oopse {
57 <  
58 <  OptionSectionParser::OptionSectionParser() {
59 <    setSectionName("Options");
60 <    DefineOptionalParameter(MixingRule, "standard");
61 <    
62 <    
57 >
58 >  bool ForceFieldOptions::setData(const std::string& keyword, const std::string& value) {
59 >      bool result;
60 >      ParamMap::iterator i =parameters_.find(keyword);
61 >      if (i != parameters_.end()) {
62 >        if(isType<int>(value)){
63 >          int ival = lexi_cast<int>(value);
64 >          result = i->second->setData(ival);
65 >        }      
66 >        else if (isType<double>(value)){
67 >          double dval = lexi_cast<double>(value);
68 >          result = i->second->setData(dval);
69 >        } else{
70 >           result = i->second->setData(value);
71 >        }
72 >      } else {
73 >        sprintf(painCave.errMsg,  "%s is an unrecognized keyword\n", keyword.c_str() );
74 >          painCave.isFatal = 0;
75 >          simError();        
76 >      }
77 >
78 >      return result;
79    }
80 +
81 +  OptionSectionParser::OptionSectionParser(ForceFieldOptions& options) : options_(options) {
82 +    setSectionName("Options");        
83 +  }
84    
85    void OptionSectionParser::parseLine(ForceField& ff,const std::string& line, int lineNo){
86      
87      StringTokenizer tokenizer(line);
88      
89      if (tokenizer.countTokens() >= 2) {
90 <      std::string OptionName = tokenizer.nextToken();
91 <      std::string OptionValue = tokenizer.nextToken();
90 >      std::string optionName = tokenizer.nextToken();
91 >      std::string optionValue = tokenizer.nextToken();
92        
93 +      options_.setData(optionName, optionValue);
94        
73      
95      } else {
96        sprintf(painCave.errMsg, "OptionSectionParser Error: Not enough tokens at line %d\n",
97                lineNo);
# Line 79 | Line 100 | namespace oopse {
100      }
101      
102    }
82  
103  
104 +  void OptionSectionParser::validateSection() {
105 +    options_.validateOptions();
106 +  }
107 +
108   } //end namespace oopse  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines