|  |  | @ -1,7 +1,7 @@ | 
			
		
	
		
			
				
					|  |  |  | #include "DftJsonExporter.h"
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/utility/file.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/exceptions/NotImplementedException.h"
 | 
			
		
	
		
			
				
					|  |  |  | #include "storm/exceptions/NotSupportedException.h"
 | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  | #include <algorithm>
 | 
			
		
	
		
			
				
					|  |  |  | #include <string>
 | 
			
		
	
	
		
			
				
					|  |  | @ -54,23 +54,32 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |                     children.push_back(std::to_string(child->id())); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 nodeData["children"] = children; | 
			
		
	
		
			
				
					|  |  |  |                 // Gate dependent export
 | 
			
		
	
		
			
				
					|  |  |  |                 switch (element->type()) { | 
			
		
	
		
			
				
					|  |  |  |                     case storm::storage::DFTElementType::VOT: | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |                 // Set threshold for voting gate
 | 
			
		
	
		
			
				
					|  |  |  |                 if (element->type() == storm::storage::DFTElementType::VOT) { | 
			
		
	
		
			
				
					|  |  |  |                     nodeData["voting"] = std::static_pointer_cast<storm::storage::DFTVot<ValueType> const>(element)->threshold(); | 
			
		
	
		
			
				
					|  |  |  |                         break; | 
			
		
	
		
			
				
					|  |  |  |                     case storm::storage::DFTElementType::PDEP: | 
			
		
	
		
			
				
					|  |  |  |                     { | 
			
		
	
		
			
				
					|  |  |  |                         ValueType probability = std::static_pointer_cast<storm::storage::DFTDependency<ValueType> const>(element)->probability(); | 
			
		
	
		
			
				
					|  |  |  |                         if (!storm::utility::isOne<ValueType>(probability)) { | 
			
		
	
		
			
				
					|  |  |  |                             std::stringstream stream; | 
			
		
	
		
			
				
					|  |  |  |                             stream << probability; | 
			
		
	
		
			
				
					|  |  |  |                             nodeData["prob"] = stream.str(); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                         break; | 
			
		
	
		
			
				
					|  |  |  |             } else if (element->isRestriction()) { | 
			
		
	
		
			
				
					|  |  |  |                 // Set children for restriction
 | 
			
		
	
		
			
				
					|  |  |  |                 auto seq = std::static_pointer_cast<storm::storage::DFTRestriction<ValueType> const>(element); | 
			
		
	
		
			
				
					|  |  |  |                 std::vector<std::string> children; | 
			
		
	
		
			
				
					|  |  |  |                 for (DFTElementPointer const& child : seq->children()) { | 
			
		
	
		
			
				
					|  |  |  |                     children.push_back(std::to_string(child->id())); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                 nodeData["children"] = children; | 
			
		
	
		
			
				
					|  |  |  |             } else if (element->isDependency()) { | 
			
		
	
		
			
				
					|  |  |  |                 // Set children for dependency
 | 
			
		
	
		
			
				
					|  |  |  |                 auto dependency = std::static_pointer_cast<storm::storage::DFTDependency<ValueType> const>(element); | 
			
		
	
		
			
				
					|  |  |  |                 std::vector<std::string> children; | 
			
		
	
		
			
				
					|  |  |  |                 children.push_back(std::to_string(dependency->triggerEvent()->id())); | 
			
		
	
		
			
				
					|  |  |  |                 for (DFTElementPointer const& child : dependency->dependentEvents()) { | 
			
		
	
		
			
				
					|  |  |  |                     children.push_back(std::to_string(child->id())); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |                     default: | 
			
		
	
		
			
				
					|  |  |  |                         break; | 
			
		
	
		
			
				
					|  |  |  |                 nodeData["children"] = children; | 
			
		
	
		
			
				
					|  |  |  |                 if (!storm::utility::isOne<ValueType>(dependency->probability())) { | 
			
		
	
		
			
				
					|  |  |  |                     std::stringstream stream; | 
			
		
	
		
			
				
					|  |  |  |                     stream << dependency->probability(); | 
			
		
	
		
			
				
					|  |  |  |                     nodeData["prob"] = stream.str(); | 
			
		
	
		
			
				
					|  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |             } else if (element->isBasicElement()) { | 
			
		
	
		
			
				
					|  |  |  |                 // Set BE specific data
 | 
			
		
	
	
		
			
				
					|  |  | @ -82,6 +91,8 @@ namespace storm { | 
			
		
	
		
			
				
					|  |  |  |                 ValueType dormancy = be->passiveFailureRate() / be->activeFailureRate(); | 
			
		
	
		
			
				
					|  |  |  |                 stream << dormancy; | 
			
		
	
		
			
				
					|  |  |  |                 nodeData["dorm"] = stream.str(); | 
			
		
	
		
			
				
					|  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |                 STORM_LOG_THROW(false, storm::exceptions::NotSupportedException, "Element of type '" << element->type() << "' is not supported."); | 
			
		
	
		
			
				
					|  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |             modernjson::json jsonNode; | 
			
		
	
	
		
			
				
					|  |  | 
 |