Browse Source

Merge branch 'monolithic-dft' of https://sselab.de/lab9/private/git/storm into monolithic-dft

Former-commit-id: 2ed40386ae
tempestpy_adaptions
Mavo 9 years ago
parent
commit
b9be8eb0be
  1. 2
      src/parser/DFTGalileoParser.cpp
  2. 2
      src/storage/dft/DFT.cpp
  3. 21
      src/storage/dft/DFT.h
  4. 25
      src/storage/dft/DFTIsomorphism.h
  5. 1
      src/storage/dft/DFTState.h

2
src/parser/DFTGalileoParser.cpp

@ -54,7 +54,7 @@ namespace storm {
STORM_LOG_THROW(false, storm::exceptions::FileIoException, "Exception during file opening on " << filename << "."); STORM_LOG_THROW(false, storm::exceptions::FileIoException, "Exception during file opening on " << filename << ".");
return false; return false;
} }
file.exceptions( 0 );
file.exceptions( std::ifstream::goodbit );
std::string line; std::string line;
bool generalSuccess = true; bool generalSuccess = true;

2
src/storage/dft/DFT.cpp

@ -143,6 +143,8 @@ namespace storm {
return stream.str(); return stream.str();
} }
// Explicitly instantiate the class. // Explicitly instantiate the class.
template class DFT<double>; template class DFT<double>;

21
src/storage/dft/DFT.h

@ -2,17 +2,19 @@
#ifndef DFT_H #ifndef DFT_H
#define DFT_H #define DFT_H
#include "DFTElements.h"
#include "../BitVector.h"
#include <memory> #include <memory>
#include <unordered_map> #include <unordered_map>
#include <list> #include <list>
#include <map> #include <map>
#include <boost/iterator/counting_iterator.hpp>
#include "DFTIsomorphism.h"
#include "DFTElements.h"
#include "../BitVector.h"
#include "../../utility/math.h" #include "../../utility/math.h"
#include "src/utility/macros.h" #include "src/utility/macros.h"
#include <boost/iterator/counting_iterator.hpp>
namespace storm { namespace storm {
namespace storage { namespace storage {
@ -28,8 +30,9 @@ namespace storm {
} }
}; };
/**
* Represents a Dynamic Fault Tree
*/
template<typename ValueType> template<typename ValueType>
class DFT { class DFT {
@ -136,12 +139,17 @@ namespace storm {
return result; return result;
} }
/**
* Get a pointer to an element in the DFT
* @param index The id of the element
*/
DFTElementPointer const& getElement(size_t index) const { DFTElementPointer const& getElement(size_t index) const {
assert(index < nrElements()); assert(index < nrElements());
return mElements[index]; return mElements[index];
} }
std::shared_ptr<DFTBE<ValueType>> getBasicElement(size_t index) const { std::shared_ptr<DFTBE<ValueType>> getBasicElement(size_t index) const {
assert(index < nrElements());
assert(mElements[index]->isBasicElement()); assert(mElements[index]->isBasicElement());
return std::static_pointer_cast<DFTBE<ValueType>>(mElements[index]); return std::static_pointer_cast<DFTBE<ValueType>>(mElements[index]);
} }
@ -183,6 +191,7 @@ namespace storm {
std::string getStateString(DFTStatePointer const& state) const; std::string getStateString(DFTStatePointer const& state) const;
DFTIsomorphisms detectIsomorphicChildren() const;
private: private:
bool elementIndicesCorrect() const { bool elementIndicesCorrect() const {
for(size_t i = 0; i < mElements.size(); ++i) { for(size_t i = 0; i < mElements.size(); ++i) {

25
src/storage/dft/DFTIsomorphism.h

@ -0,0 +1,25 @@
#pragma once
#include <vector>
namespace storm {
namespace storage {
/**
* Saves isomorphism between subtrees
*/
class DFTIsomorphism {
std::vector<std::vector<size_t>> classes;
};
/**
* Saves sets of isomorphic subtrees
*/
class DFTIsomorphisms {
std::vector<DFTIsomorphism> isomorphisms;
void addIsomorphismClass(DFTIsomorphism const &) {
}
};
} // namespace storm::dft
} // namespace storm

1
src/storage/dft/DFTState.h

@ -5,6 +5,7 @@
#include "DFTElementState.h" #include "DFTElementState.h"
#include <sstream> #include <sstream>
#include <memory>
namespace storm { namespace storm {
namespace storage { namespace storage {

Loading…
Cancel
Save