void CommandSequence::invoke(SmtEngine* smtEngine, std::ostream& out) throw() {
for(; d_index < d_commandSequence.size(); ++d_index) {
d_commandSequence[d_index]->invoke(smtEngine, out);
+ if(! d_commandSequence[d_index]->ok()) {
+ // abort execution
+ d_commandStatus = d_commandSequence[d_index]->getCommandStatus();
+ return;
+ }
delete d_commandSequence[d_index];
}
+
+ AlwaysAssert(d_commandStatus == NULL);
+ d_commandStatus = CommandSuccess::instance();
}
CommandSequence::const_iterator CommandSequence::begin() const throw() {
Command* cmdExported =
d_lastWinner == 0 ?
cmd : cmd->exportTo(d_exprMgrs[d_lastWinner], *(d_vmaps[d_lastWinner]) );
- int ret = smtEngineInvoke(d_smts[d_lastWinner],
- cmdExported,
- d_threadOptions[d_lastWinner][options::out]);
+ bool ret = smtEngineInvoke(d_smts[d_lastWinner],
+ cmdExported,
+ d_threadOptions[d_lastWinner][options::out]);
if(d_lastWinner != 0) delete cmdExported;
return ret;
} else if(mode == 1) { // portfolio
Command* cmdExported =
d_lastWinner == 0 ?
cmd : cmd->exportTo(d_exprMgrs[d_lastWinner], *(d_vmaps[d_lastWinner]) );
- int ret = smtEngineInvoke(d_smts[d_lastWinner],
- cmdExported,
- d_threadOptions[d_lastWinner][options::out]);
+ bool ret = smtEngineInvoke(d_smts[d_lastWinner],
+ cmdExported,
+ d_threadOptions[d_lastWinner][options::out]);
if(d_lastWinner != 0) delete cmdExported;
return ret;
} else {