115 |
|
return loadScript(filename, script); |
116 |
|
} |
117 |
|
|
118 |
< |
void SelectionEvaluator::instructionDispatchLoop(BitSet& bs){ |
118 |
> |
void SelectionEvaluator::instructionDispatchLoop(OOPSEBitSet& bs){ |
119 |
|
|
120 |
|
while ( pc < aatoken.size()) { |
121 |
|
statement = aatoken[pc++]; |
136 |
|
|
137 |
|
} |
138 |
|
|
139 |
< |
BitSet SelectionEvaluator::expression(const std::vector<Token>& code, int pcStart) { |
140 |
< |
BitSet bs; |
141 |
< |
std::stack<BitSet> stack; |
139 |
> |
OOPSEBitSet SelectionEvaluator::expression(const std::vector<Token>& code, int pcStart) { |
140 |
> |
OOPSEBitSet bs; |
141 |
> |
std::stack<OOPSEBitSet> stack; |
142 |
|
|
143 |
|
for (int pc = pcStart; pc < code.size(); ++pc) { |
144 |
|
Token instruction = code[pc]; |
149 |
|
case Token::expressionEnd: |
150 |
|
break; |
151 |
|
case Token::all: |
152 |
< |
bs = BitSet(nStuntDouble); |
152 |
> |
bs = OOPSEBitSet(nStuntDouble); |
153 |
|
bs.setAll(); |
154 |
|
stack.push(bs); |
155 |
|
break; |
156 |
|
case Token::none: |
157 |
< |
bs = BitSet(nStuntDouble); |
157 |
> |
bs = OOPSEBitSet(nStuntDouble); |
158 |
|
stack.push(bs); |
159 |
|
break; |
160 |
|
case Token::opOr: |
206 |
|
|
207 |
|
|
208 |
|
|
209 |
< |
BitSet SelectionEvaluator::comparatorInstruction(const Token& instruction) { |
209 |
> |
OOPSEBitSet SelectionEvaluator::comparatorInstruction(const Token& instruction) { |
210 |
|
int comparator = instruction.tok; |
211 |
|
int property = instruction.intValue; |
212 |
|
float comparisonValue = boost::any_cast<float>(instruction.value); |
213 |
|
float propertyValue; |
214 |
< |
BitSet bs(nStuntDouble); |
214 |
> |
OOPSEBitSet bs(nStuntDouble); |
215 |
|
bs.clearAll(); |
216 |
|
|
217 |
|
SimInfo::MoleculeIterator mi; |
235 |
|
return bs; |
236 |
|
} |
237 |
|
|
238 |
< |
void SelectionEvaluator::compareProperty(StuntDouble* sd, BitSet& bs, int property, int comparator, float comparisonValue) { |
238 |
> |
void SelectionEvaluator::compareProperty(StuntDouble* sd, OOPSEBitSet& bs, int property, int comparator, float comparisonValue) { |
239 |
|
double propertyValue = 0.0; |
240 |
|
switch (property) { |
241 |
|
case Token::mass: |
284 |
|
|
285 |
|
} |
286 |
|
|
287 |
< |
void SelectionEvaluator::withinInstruction(const Token& instruction, BitSet& bs){ |
287 |
> |
void SelectionEvaluator::withinInstruction(const Token& instruction, OOPSEBitSet& bs){ |
288 |
|
|
289 |
|
boost::any withinSpec = instruction.value; |
290 |
|
float distance; |
341 |
|
|
342 |
|
} |
343 |
|
|
344 |
< |
void SelectionEvaluator::select(BitSet& bs){ |
344 |
> |
void SelectionEvaluator::select(OOPSEBitSet& bs){ |
345 |
|
bs = expression(statement, 1); |
346 |
|
} |
347 |
|
|
348 |
< |
BitSet SelectionEvaluator::lookupValue(const std::string& variable){ |
348 |
> |
OOPSEBitSet SelectionEvaluator::lookupValue(const std::string& variable){ |
349 |
|
|
350 |
< |
BitSet bs(nStuntDouble); |
350 |
> |
OOPSEBitSet bs(nStuntDouble); |
351 |
|
std::map<std::string, boost::any>::iterator i = variables.find(variable); |
352 |
|
|
353 |
|
if (i != variables.end()) { |
354 |
< |
if (i->second.type() == typeid(BitSet)) { |
355 |
< |
return boost::any_cast<BitSet>(i->second); |
354 |
> |
if (i->second.type() == typeid(OOPSEBitSet)) { |
355 |
> |
return boost::any_cast<OOPSEBitSet>(i->second); |
356 |
|
} else if (i->second.type() == typeid(std::vector<Token>)){ |
357 |
|
bs = expression(boost::any_cast<std::vector<Token> >(i->second), 2); |
358 |
|
i->second = bs; /**@todo fixme */ |
365 |
|
return bs; |
366 |
|
} |
367 |
|
|
368 |
< |
BitSet SelectionEvaluator::nameInstruction(const std::string& name){ |
368 |
> |
OOPSEBitSet SelectionEvaluator::nameInstruction(const std::string& name){ |
369 |
|
|
370 |
|
return nameFinder.match(name); |
371 |
|
|
388 |
|
//predefine(); |
389 |
|
} |
390 |
|
|
391 |
< |
BitSet SelectionEvaluator::evaluate() { |
392 |
< |
BitSet bs(nStuntDouble); |
391 |
> |
OOPSEBitSet SelectionEvaluator::evaluate() { |
392 |
> |
OOPSEBitSet bs(nStuntDouble); |
393 |
|
if (isLoaded_) { |
394 |
|
pc = 0; |
395 |
|
instructionDispatchLoop(bs); |
398 |
|
return bs; |
399 |
|
} |
400 |
|
|
401 |
< |
BitSet SelectionEvaluator::indexInstruction(const boost::any& value) { |
402 |
< |
BitSet bs(nStuntDouble); |
401 |
> |
OOPSEBitSet SelectionEvaluator::indexInstruction(const boost::any& value) { |
402 |
> |
OOPSEBitSet bs(nStuntDouble); |
403 |
|
|
404 |
|
if (value.type() == typeid(int)) { |
405 |
|
int index = boost::any_cast<int>(value); |