ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-3.0/src/selection/SelectionEvaluator.hpp
(Generate patch)

Comparing trunk/OOPSE-3.0/src/selection/SelectionEvaluator.hpp (file contents):
Revision 1962 by tim, Tue Feb 1 22:49:23 2005 UTC vs.
Revision 1967 by tim, Thu Feb 3 23:14:05 2005 UTC

# Line 49 | Line 49
49   #include "brains/SimInfo.hpp"
50   #include "selection/Token.hpp"
51   #include "selection/SelectionCompiler.hpp"
52 + #include "selection/NameFinder.hpp"
53   #include "utils/BitSet.hpp"
54 <
54 > #include "primitives/StuntDouble.hpp"
55   namespace oopse {
56  
57 +
58   class Context {
59 <    std::string filename;
60 <    std::tring script;
61 <    std::vector<int> linenumbers;
62 <    std::vector<int> lineIndices;
63 <    std::vector<std::vector<Token> > aatoken;
64 <    int pc;
65 < }
59 >    public:
60 >        
61 >        void clear() {
62 >            linenumbers.clear();
63 >            lineIndices.clear();
64 >            aatoken.clear();
65 >        }
66 >        
67 >        std::string filename;
68 >        std::string script;
69 >        std::vector<int> linenumbers;
70 >        std::vector<int> lineIndices;
71 >        std::vector<std::vector<Token> > aatoken;
72 >        int pc;
73 > };
74  
75 +
76   /**
77   * @class SelectionEvaluator SelectionEvaluator.hpp "selection/SelectionEvaluator"
78   * @brief Evalute the tokens compiled by SelectionCompiler and return a BitSet
# Line 98 | Line 109 | class SelectionEvaluator{
109          std::string getLine() {
110              int ichBegin = lineIndices[pc];
111              int ichEnd;
112 <            if ((ichEnd = script.find('\r', ichBegin)) == std::string:npos &&
113 <                (ichEnd = script.find('\n', ichBegin)) == std::string:npos) {
112 >            if ((ichEnd = script.find('\r', ichBegin)) == std::string::npos &&
113 >                (ichEnd = script.find('\n', ichBegin)) == std::string::npos) {
114                  ichEnd = script.size();
115              }            
116              return script.substr(ichBegin, ichEnd);
# Line 110 | Line 121 | class SelectionEvaluator{
121          void clearState();
122          
123          bool loadScript(const std::string& filename, const std::string& script);
113
124          bool loadScriptString(const std::string& script);
115
125          bool loadScriptFileInternal(const std::string& filename);
126 +        bool loadScriptFile(const std::string& filename);
127  
128          void clearDefinitionsAndLoadPredefined();
129          
130          void define();
131 <
132 <        void predefine();
131 >        void select();
132 >        void predefine(const std::string& script);
133  
134          void instructionDispatchLoop();
135  
136 <        withinInstruction(Token instruction, BitSet , BitSet);
136 >        void withinInstruction(const Token& instruction, BitSet& bs);
137 >        
138 >        BitSet comparatorInstruction(const Token& instruction);
139 >        void compareProperty(StuntDouble* sd, BitSet& bs, int property, int comparator, float comparisonValue);
140 >        BitSet nameInstruction(const std::string& name);
141  
142 <        BitSet expression(std::vector<Token>& tokens, int pc);
142 >        BitSet expression(const std::vector<Token>& tokens, int pc);
143  
144 +        BitSet lookupValue(const std::string& variable);
145 +        
146 +        void evalError(const std::string& message);
147 +
148 +        void unrecognizedCommand(const Token& token) {
149 +            evalError("unrecognized command:" + boost::any_cast<std::string>(token.value));
150 +        }        
151 +
152 +        void unrecognizedExpression() {
153 +            evalError("unrecognized expression");
154 +        }
155 +
156 +        void unrecognizedAtomProperty(int property){
157 +            evalError("unrecognized atom property");
158 +        }
159 +
160 +        void unrecognizedIdentifier(const std::string& identifier) {
161 +            evalError("unrecognized identifier:" + identifier);
162 +        }    
163          SelectionCompiler compiler;
164  
165          const static int scriptLevelMax = 10;
# Line 141 | Line 174 | class SelectionEvaluator{
174          std::vector<std::vector<Token> > aatoken;
175          int pc; // program counter
176  
177 <        boolean error;
177 >        bool error;
178          std::string errorMessage;
179  
180          std::vector<Token> statement;
181          int statementLength;
182  
183 <        SimInfo* info_;
184 <
185 <        std::map<std::string, std::vector<Token> > variables_;
186 <        std::string script_;
154 <
155 <        Hashtable variables = new Hashtable();        
183 >        SimInfo* info;
184 >        NameFinder finder;
185 >        int nStuntDouble;   //natoms + nrigidbodies
186 >        std::map<std::string, boost::any > variables;
187   };
188  
189   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines