|
|
@ -209,6 +209,11 @@ NonDeterministicSparseTransitionParser::NonDeterministicSparseTransitionParser(s |
|
|
|
} |
|
|
|
this->matrix->initialize(nonzero); |
|
|
|
|
|
|
|
/*
|
|
|
|
* Create row mapping. |
|
|
|
*/ |
|
|
|
this->rowMapping = std::shared_ptr<RowMapping>(new RowMapping()); |
|
|
|
|
|
|
|
/*
|
|
|
|
* Parse file content. |
|
|
|
*/ |
|
|
@ -234,11 +239,12 @@ NonDeterministicSparseTransitionParser::NonDeterministicSparseTransitionParser(s |
|
|
|
/*
|
|
|
|
* Check if we have skipped any source node, i.e. if any node has no |
|
|
|
* outgoing transitions. If so, insert a self-loop. |
|
|
|
* Also add self-loops to rowMapping. |
|
|
|
*/ |
|
|
|
for (uint_fast64_t node = lastsource + 1; node < source; node++) { |
|
|
|
hadDeadlocks = true; |
|
|
|
if (fixDeadlocks) { |
|
|
|
// TODO: add (curRow <-> (node,"")) to rowMapping
|
|
|
|
this->rowMapping->insert( RowMapping::value_type( curRow, std::pair<uint_fast64_t,std::string>(node, "")) ); |
|
|
|
this->matrix->addNextValue(curRow, node, 1); |
|
|
|
curRow++; |
|
|
|
LOG4CPLUS_WARN(logger, "Warning while parsing " << filename << ": node " << node << " has no outgoing transitions. A self-loop was inserted."); |
|
|
@ -248,7 +254,10 @@ NonDeterministicSparseTransitionParser::NonDeterministicSparseTransitionParser(s |
|
|
|
} |
|
|
|
lastsource = source; |
|
|
|
|
|
|
|
// TODO: add (curRow <-> (node,choice)) to rowMapping
|
|
|
|
/*
|
|
|
|
* Add this source-choice pair to rowMapping. |
|
|
|
*/ |
|
|
|
this->rowMapping->insert( RowMapping::value_type( curRow, std::pair<uint_fast64_t,std::string>(source, choice)) ); |
|
|
|
|
|
|
|
/*
|
|
|
|
* Skip name of choice. |