| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -210,9 +210,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
								template <typename ValueType> | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            void DftToGspnTransformator<ValueType>::drawSPARE(std::shared_ptr<storm::storage::DFTSpare<ValueType> const> dftSpare) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									// TODO: Implement.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            void DftToGspnTransformator<ValueType>::drawSPARE(std::shared_ptr<storm::storage::DFTSpare<ValueType> const> dftSpare) {	 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									uint_fast64_t priority = getPriority(0, dftSpare); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									storm::gspn::Place placeSPAREActivated; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -267,7 +265,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										storm::gspn::Place placeSPAREChildConsumed; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										if (i < children.size() - 1) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											placeSPAREChildConsumed.setName(children[i]->name() + "_consumed"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											placeSPAREChildConsumed.setName(dftSpare->name() + "_" + children[i]->name() + "_consumed"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										else { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											placeSPAREChildConsumed.setName(dftSpare->name() + STR_FAILED); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -276,7 +274,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										mGspn.addPlace(placeSPAREChildConsumed); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										storm::gspn::ImmediateTransition<storm::gspn::GSPN::WeightType> immediateTransitionChildConsuming1; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming1.setName(children[i]->name() + "_consuming1"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming1.setName(dftSpare->name() + "_" + children[i]->name() + "_consuming1"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming1.setPriority(priority); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming1.setWeight(0.0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming1.setOutputArcMultiplicity(placeSPAREChildConsumed, 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -285,7 +283,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										mGspn.addImmediateTransition(immediateTransitionChildConsuming1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										storm::gspn::ImmediateTransition<storm::gspn::GSPN::WeightType> immediateTransitionChildConsuming2; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming2.setName(children[i]->name() + "_consuming2"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming2.setName(dftSpare->name() + "_" + children[i]->name() + "_consuming2"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming2.setPriority(priority); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming2.setWeight(0.0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildConsuming2.setOutputArcMultiplicity(placeSPAREChildConsumed, 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -297,9 +295,9 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									// Draw connections between all spare childs.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
									for (std::size_t i = 1; i < children.size() - 1; i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										auto placeSPAREChildConsumed = mGspn.getPlace(children[i]->name() + "_consumed"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										auto placeSPAREChildConsumed = mGspn.getPlace(dftSpare->name() + "_" + children[i]->name() + "_consumed"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										auto immediateTransitionChildClaiming = mGspn.getImmediateTransition(dftSpare->name() + "_claiming_" + children[i + 1]->name()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										auto immediateTransitionChildConsuming1 = mGspn.getImmediateTransition(children[i + 1]->name() + "_consuming1"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										auto immediateTransitionChildConsuming1 = mGspn.getImmediateTransition(dftSpare->name() + "_" + children[i + 1]->name() + "_consuming1"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildClaiming.second->setOutputArcMultiplicity(placeSPAREChildConsumed.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										immediateTransitionChildClaiming.second->setInputArcMultiplicity(placeSPAREChildConsumed.second, 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -491,7 +489,7 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														// Draw lines from "primary child_failed" to SPARE.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto childExit = mGspn.getPlace(child->name() + STR_FAILED); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry = mGspn.getImmediateTransition(mDft.getElement(parents[j])->name() + "_claiming_" + children[1]->name()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry2 = mGspn.getImmediateTransition(children[1]->name() + "_consuming1"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry2 = mGspn.getImmediateTransition(mDft.getElement(parents[j])->name() + "_" + children[1]->name() + "_consuming1"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														if (childExit.first && spareEntry.first && spareEntry2.first) { // Only add arcs if the objects have been found.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															spareEntry.second->setInputArcMultiplicity(childExit.second, 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
				 | 
				
					@ -509,20 +507,26 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															auto childEntry = mGspn.getPlace(mDft.getElement(ids[k])->name() + STR_ACTIVATED); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															if (spareExit.first && childEntry.first) { // Only add arcs if the objects have been found.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																spareExit.second->setInhibitionArcMultiplicity(childEntry.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																spareExit.second->setOutputArcMultiplicity(childEntry.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																if (!spareExit.second->existsInhibitionArc(childEntry.second)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																	spareExit.second->setInhibitionArcMultiplicity(childEntry.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																if (!spareExit.second->existsOutputArc(childEntry.second)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																	spareExit.second->setOutputArcMultiplicity(childEntry.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto childExit = mGspn.getPlace(child->name() + STR_FAILED); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry = mGspn.getImmediateTransition(mDft.getElement(parents[j])->name() + "_claiming_" + child->name()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry2 = mGspn.getImmediateTransition(child->name() + STR_ACTIVATING); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry3 = mGspn.getImmediateTransition(child->name() + "_consuming2"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														auto spareEntry3 = mGspn.getImmediateTransition(mDft.getElement(parents[j])->name() + "_" + child->name() + "_consuming2"); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
														if (childExit.first && spareEntry.first && spareEntry2.first && spareEntry3.first) { // Only add arcs if the objects have been found.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															spareEntry.second->setInhibitionArcMultiplicity(childExit.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															spareEntry2.second->setInhibitionArcMultiplicity(childExit.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															if (!spareEntry2.second->existsInhibitionArc(childExit.second)) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
																spareEntry2.second->setInhibitionArcMultiplicity(childExit.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															} | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															spareEntry3.second->setInputArcMultiplicity(childExit.second, 1); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
															spareEntry3.second->setOutputArcMultiplicity(childExit.second, 1); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -855,7 +859,8 @@ namespace storm { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
										{								 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											auto children = std::static_pointer_cast<storm::storage::DFTSpare<ValueType> const>(dftElement)->children(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											for (std::size_t i = 0; i < children.size(); i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											// Only regard the primary child of a SPARE. The spare childs are not allowed to be listed here.
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											for (std::size_t i = 0; i < 1; i++) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
												std::vector<int> newIds = getAllBEIDsOfElement(children[i]); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
												ids.insert(ids.end(), newIds.begin(), newIds.end()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
											} | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |