Browse Source
Added DtmcParser class that parses a whole DTMC, making use of the
Added DtmcParser class that parses a whole DTMC, making use of the
labeling and transitions parser. Removed the parseDtmc function from IoUtility, as it became obsolete with the DtmcParser class, fitted test cases accordingly.tempestpy_adaptions
Lanchid
12 years ago
6 changed files with 87 additions and 14 deletions
-
2src/models/Dtmc.h
-
33src/parser/DtmcParser.cpp
-
39src/parser/DtmcParser.h
-
14src/utility/IoUtility.cpp
-
4src/utility/IoUtility.h
-
9test/parser/ParseDtmcTest.cpp
@ -0,0 +1,33 @@ |
|||
/*
|
|||
* DtmcParser.cpp |
|||
* |
|||
* Created on: 19.12.2012 |
|||
* Author: thomas |
|||
*/ |
|||
|
|||
#include "DtmcParser.h"
|
|||
#include "DeterministicSparseTransitionParser.h"
|
|||
#include "AtomicPropositionLabelingParser.h"
|
|||
|
|||
namespace mrmc { |
|||
namespace parser { |
|||
|
|||
/*!
|
|||
* Parses a transition file and a labeling file and produces a DTMC out of them; a pointer to the dtmc |
|||
* is saved in the field "dtmc" |
|||
* Note that the labeling file may have at most as many nodes as the transition file! |
|||
* |
|||
* @param transitionSystemFile String containing the location of the transition file (....tra) |
|||
* @param labelingFile String containing the location of the labeling file (....lab) |
|||
*/ |
|||
DtmcParser::DtmcParser(std::string const & transitionSystemFile, std::string const & labelingFile) { |
|||
mrmc::parser::DeterministicSparseTransitionParser tp(transitionSystemFile); |
|||
uint_fast64_t nodeCount = tp.getMatrix()->getRowCount(); |
|||
|
|||
mrmc::parser::AtomicPropositionLabelingParser lp(nodeCount, labelingFile); |
|||
|
|||
dtmc = std::shared_ptr<mrmc::models::Dtmc<double> >(new mrmc::models::Dtmc<double>(tp.getMatrix(), lp.getLabeling())); |
|||
} |
|||
|
|||
} /* namespace parser */ |
|||
} /* namespace mrmc */ |
@ -0,0 +1,39 @@ |
|||
/* |
|||
* DtmcParser.h |
|||
* |
|||
* Created on: 19.12.2012 |
|||
* Author: thomas |
|||
*/ |
|||
|
|||
#ifndef DTMCPARSER_H_ |
|||
#define DTMCPARSER_H_ |
|||
|
|||
#include "Parser.h" |
|||
#include "models/Dtmc.h" |
|||
|
|||
namespace mrmc { |
|||
namespace parser { |
|||
|
|||
/*! |
|||
* @brief Load label and transition file and return initialized dtmc object |
|||
* |
|||
* @Note This class creates a new Dtmc object that can |
|||
* be accessed via getDtmc(). However, it will not delete this object! |
|||
* |
|||
* @Note The labeling representation in the file may use at most as much nodes as are specified in the dtmc. |
|||
*/ |
|||
class DtmcParser: public mrmc::parser::Parser { |
|||
public: |
|||
DtmcParser(std::string const & transitionSystemFile, std::string const & labelingFile); |
|||
|
|||
std::shared_ptr<mrmc::models::Dtmc<double>> getDtmc() { |
|||
return this->dtmc; |
|||
} |
|||
|
|||
private: |
|||
std::shared_ptr<mrmc::models::Dtmc<double>> dtmc; |
|||
}; |
|||
|
|||
} /* namespace parser */ |
|||
} /* namespace mrmc */ |
|||
#endif /* DTMCPARSER_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue