* Transition-based rewards are parsed using the existing (Deterministic)SparseTransitionsParser.
* State-based rewards are parsed using a new SparseStateRewardParser that parses lines consisting of a state and an associated reward.
* The Dtmc class now stores the two reward models.
* The DtmcParser class now parses up to one transition-based and one state-based reward file. They may, however, be omitted in which case the respective reward model is set to null.
labeling and transitions parser.
Removed the parseDtmc function from IoUtility, as it became obsolete
with the DtmcParser class, fitted test cases accordingly.
Added two check() functions to DtmcPrctlModelChecker that are to be called by the "outer world" that check a given formula and print the result the standard output.
Fixed bug in GmmxxDtmcPrctlModelChecker that prevented BiCGStab using ILU preconditioning from working
Refactored mrmc.cpp to remove larger code blocks from main().
Added option to specify logging file. If no file is set and the verbose option is not set either, logging is basically disabled by setting the logging level very high. This is a workaround for the fact that at least one log appender needs to be set in the logging framework, which would not be the case if both logging facilities (file and console) are disabled.
Created BaseException that can act as a stringstream. You can do the following:
throw BaseException() << "some error " << variable << " foo";
Changed InvalidSettings to use BaseException, using this new syntax in Settings.
we'll soon have two runs of the option parser. The whole process will look like this:
* call register callbacks (may update options_description)
* first run of parser
* call intermediate callbacks (may check variable_map and update options_description)
* second run of parser (with new options_description)
* call checker callbacks (may check variable_map)
it is possible to register callbacks that add custom options to the settings module.
it is also possible to register callbacks that perform checks on the variable assignment afterwards.
The registering is done during the static initialization phase, i.e. before main() does anything.
Using the Register class, one can register callbacks to manipulate options or check options afterwards.
These callbacks are stored in the Callbacks class (being a singleton) and should be called by the Settings class when appropriate.
The Settings class does not call them yet.
the former folder.
Also, changed those templates to use references instead of pointers for
easier code.
Renamer "utility.h" and .cpp to "ioUtility.h/cpp", as utility code
providing functionality not linked with IO has been put into other
files.
"check" which calls the correct check function in the model checker.
- The dot output was modified to work with the refactored names
- Also, it uses now filestreams instead of C style output
- and the iterators from the matrix class
- Included new (stub) test case for output (and general parsing)