@ -52,6 +52,7 @@ namespace storm {
options . suffix = " " ;
options . janiOptions = storm : : converter : : JaniConversionOptions ( jani ) ;
// Get the name of the output file
std : : string outputFilename = " " ;
if ( output . isJaniOutputFilenameSet ( ) ) {
outputFilename = output . getJaniOutputFilename ( ) ;
@ -71,6 +72,8 @@ namespace storm {
suffix = suffix + " .jani " ;
outputFilename + = suffix ;
}
// Find a good model name
auto startOfFilename = outputFilename . rfind ( " / " ) ;
if ( startOfFilename = = std : : string : : npos ) {
startOfFilename = 0 ;
@ -83,6 +86,7 @@ namespace storm {
}
options . janiOptions . modelName = outputFilename . substr ( startOfFilename , endOfFilename - startOfFilename ) ;
auto janiModelProperties = storm : : api : : convertPrismToJani ( prismProg , properties , options ) ;
if ( outputFilename ! = " " ) {
@ -124,6 +128,53 @@ namespace storm {
}
}
void processJaniInputJaniOutput ( storm : : jani : : Model const & janiModel , std : : vector < storm : : jani : : Property > const & properties ) {
auto const & output = storm : : settings : : getModule < storm : : settings : : modules : : ConversionOutputSettings > ( ) ;
auto const & input = storm : : settings : : getModule < storm : : settings : : modules : : ConversionInputSettings > ( ) ;
auto const & jani = storm : : settings : : getModule < storm : : settings : : modules : : JaniExportSettings > ( ) ;
storm : : converter : : JaniConversionOptions options ( jani ) ;
// Get the name of the output file
std : : string outputFilename = " " ;
if ( output . isJaniOutputFilenameSet ( ) ) {
outputFilename = output . getJaniOutputFilename ( ) ;
} else if ( input . isJaniInputSet ( ) & & ! output . isStdOutOutputEnabled ( ) ) {
outputFilename = input . getJaniInputFilename ( ) ;
// Remove extension if present
auto dotPos = outputFilename . rfind ( ' . ' ) ;
if ( dotPos ! = std : : string : : npos ) {
outputFilename . erase ( dotPos ) ;
}
outputFilename + = " _converted.jani " ;
}
// Get a good model name from the output filename
auto startOfFilename = outputFilename . rfind ( " / " ) ;
if ( startOfFilename = = std : : string : : npos ) {
startOfFilename = 0 ;
} else {
+ + startOfFilename ;
}
auto endOfFilename = outputFilename . rfind ( " . " ) ;
if ( endOfFilename = = std : : string : : npos ) {
endOfFilename = outputFilename . size ( ) ;
}
options . modelName = outputFilename . substr ( startOfFilename , endOfFilename - startOfFilename ) ;
auto transformedJaniModel = janiModel ;
auto transformedProperties = properties ;
storm : : api : : transformJani ( transformedJaniModel , transformedProperties , options ) ;
if ( outputFilename ! = " " ) {
storm : : api : : exportJaniToFile ( transformedJaniModel , transformedProperties , outputFilename , jani . isCompactJsonSet ( ) ) ;
}
if ( output . isStdOutOutputEnabled ( ) ) {
storm : : api : : printJaniToStream ( transformedJaniModel , transformedProperties , std : : cout , jani . isCompactJsonSet ( ) ) ;
}
}
void processJaniInput ( ) {
auto const & input = storm : : settings : : getModule < storm : : settings : : modules : : ConversionInputSettings > ( ) ;
@ -150,7 +201,7 @@ namespace storm {
// Branch on the type of output
auto const & output = storm : : settings : : getModule < storm : : settings : : modules : : ConversionOutputSettings > ( ) ;
if ( output . isJaniOutputSet ( ) ) {
// processJaniInputJaniOutput(janiModel.asJaniModel(), properties);
processJaniInputJaniOutput ( janiModel . asJaniModel ( ) , properties ) ;
} else {
STORM_LOG_THROW ( false , storm : : exceptions : : InvalidSettingsException , " There is either no outputformat specified or the provided combination of input and output format is not compatible. " ) ;
}