@ -34,15 +34,17 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        template < typename  ValueType >  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					        storm : : storage : : DFT < ValueType >  DFTJsonParser < ValueType > : : parseJson ( json  const &  jsonInput )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Parse parameters
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            json  parameters  =  jsonInput . at ( " parameters " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            for  ( auto  it  =  parameters . begin ( ) ;  it  ! =  parameters . end ( ) ;  + + it )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            STORM_LOG_THROW ( ( std : : is_same < ValueType ,  storm : : RationalFunction > : : value ) ,  storm : : exceptions : : NotSupportedException ,  " Parameters only allowed when using rational functions. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                std : : string  parameter  =  it . key ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                storm : : expressions : : Variable  var  =  manager - > declareRationalVariable ( parameter ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                identifierMapping . emplace ( var . getName ( ) ,  var ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                parser . setIdentifierMapping ( identifierMapping ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_TRACE ( " Added parameter:  "  < <  var . getName ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            // Try to parse parameters
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            if  ( jsonInput . find ( " parameters " )  ! =  jsonInput . end ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                json  parameters  =  jsonInput . at ( " parameters " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_THROW ( parameters . empty ( )  | |  ( std : : is_same < ValueType ,  storm : : RationalFunction > : : value ) ,  storm : : exceptions : : NotSupportedException ,  " Parameters only allowed when using rational functions. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                for  ( auto  it  =  parameters . begin ( ) ;  it  ! =  parameters . end ( ) ;  + + it )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    std : : string  parameter  =  it . key ( ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    storm : : expressions : : Variable  var  =  manager - > declareRationalVariable ( parameter ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    identifierMapping . emplace ( var . getName ( ) ,  var ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    parser . setIdentifierMapping ( identifierMapping ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    STORM_LOG_TRACE ( " Added parameter:  "  < <  var . getName ( ) ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            json  nodes  =  jsonInput . at ( " nodes " ) ;  
				
			 
			
		
	
	
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
				
				 
				
					@ -102,15 +104,18 @@ namespace storm { 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    success  =  false ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					
 
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // Do not set layout for dependencies
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // This does not work because dependencies might be splitted
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // TODO: do splitting later in rewriting step
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                if  ( type  ! =  " fdep "  & &  type  ! =  " pdep " )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    // Set layout positions
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    json  position  =  element . at ( " position " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    double  x  =  position . at ( " x " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    double  y  =  position . at ( " y " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    builder . addLayoutInfo ( name ,  x  /  7 ,  y  /  7 ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                // Try to set layout information
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                if  ( element . find ( " position " )  ! =  element . end ( ) )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    // Do not set layout for dependencies
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    // This does not work because dependencies might be splitted
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    // TODO: do splitting later in rewriting step
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    if  ( type  ! =  " fdep "  & &  type  ! =  " pdep " )  {  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        // Set layout positions
  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        json  position  =  element . at ( " position " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        double  x  =  position . at ( " x " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        double  y  =  position . at ( " y " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                        builder . addLayoutInfo ( name ,  x  /  7 ,  y  /  7 ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                    }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                }  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					                STORM_LOG_THROW ( success ,  storm : : exceptions : : FileIoException ,  " Error while adding element ' "  < <  element  < <  " '. " ) ;  
				
			 
			
		
	
		
			
				
					 
					 
				
				 
				
					            }