Browse Source
Added capability to restrict model to certain action choices.
Added capability to restrict model to certain action choices.
Former-commit-id: fb3c63c64f
tempestpy_adaptions
dehnert
11 years ago
2 changed files with 93 additions and 19 deletions
@ -0,0 +1,52 @@ |
|||
/* |
|||
* set.h |
|||
* |
|||
* Created on: 06.12.2012 |
|||
* Author: Christian Dehnert |
|||
*/ |
|||
|
|||
#ifndef STORM_UTILITY_SET_H_ |
|||
#define STORM_UTILITY_SET_H_ |
|||
|
|||
#include <set> |
|||
|
|||
#include "log4cplus/logger.h" |
|||
#include "log4cplus/loggingmacros.h" |
|||
|
|||
extern log4cplus::Logger logger; |
|||
|
|||
namespace storm { |
|||
namespace utility { |
|||
namespace set { |
|||
|
|||
template<typename T, typename Compare> |
|||
bool isSubsetOf(std::set<T, Compare> const& set1, std::set<T, Compare> const& set2) { |
|||
// First, get a comparator object. |
|||
typename std::set<T, Compare>::key_compare comparator = set1.key_comp(); |
|||
|
|||
for (typename std::set<T, Compare>::const_iterator it1 = set1.begin(), it2 = set2.begin(); it1 != set1.end() && it2 != set2.end(); ++it1) { |
|||
// If the value in set1 is smaller than the value in set2, set1 is not a subset of set2. |
|||
if (comparator(*it1, *it2)) { |
|||
return false; |
|||
} |
|||
|
|||
// If the value in the second set is smaller, we need to move the iterator until the comparison is false. |
|||
while(comparator(*it2, *it1) && it2 != set2.end()) { |
|||
++it2; |
|||
} |
|||
|
|||
// If we have reached the end of set2 or the element we found is actually larger than the one in set1 |
|||
// we know that the subset property is violated. |
|||
if (it2 == set2.end() || comparator(*it1, *it2)) { |
|||
return false; |
|||
} |
|||
|
|||
// Otherwise, we have found an equivalent element and can continue with the next one. |
|||
} |
|||
} |
|||
|
|||
} // namespace set |
|||
} // namespace utility |
|||
} // namespace storm |
|||
|
|||
#endif /* STORM_UTILITY_SET_H_ */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue