1 #ifndef __DIADES__PETRI__MARKING__HH__ 2 #define __DIADES__PETRI__MARKING__HH__ 27 Marking() : _marking(), _hashSequence(), _hasHash(true)
31 Marking(
const Marking & marking) : _marking(marking._marking), _hashSequence(marking._hashSequence), _hasHash(marking._hasHash)
35 Marking(
Marking && marking) : _marking(
std::move(marking._marking)), _hashSequence(
std::move(marking._hashSequence)), _hasHash(
std::move(marking._hasHash))
55 auto it = _marking.find(p);
56 if(it == _marking.end())
70 auto it = _marking.find(p);
71 bool possible =
false;
72 if(it != _marking.end())
88 mark(Place p,
unsigned tokens)
111 auto it = _marking.find(p);
112 if(it == _marking.end())
122 return _marking.empty();
134 std::unordered_map<Place, unsigned>::const_iterator
137 return _marking.begin();
140 std::unordered_map<Place, unsigned>::const_iterator
143 return _marking.end();
152 return _marking == marking.
_marking;
160 for(
auto & p : _marking)
162 stream <<
"_" << p.first.id() <<
"_" << p.second;
164 _hashSequence = stream.str();
183 while(result && (i < markings.size()))
185 result = !
hits(markings[i]);
188 std::cout <<
"Does " <<
getHashSequence() <<
" hit none of the right faulty markings ? " << result << std::endl;
197 auto it = marking.
begin();
198 while(result && (it != marking.
end()))
200 result =
getMark(it->first) >= it->second;
203 std::cout << result << std::endl;
bool decreaseMark(Place p)
Marking & operator=(const Marking &marking)
void computeHashSequence() const
Marking(const Marking &marking)
std::unordered_map< Place, unsigned >::const_iterator end() const
bool operator==(const Marking &marking) const
Diades::Graph::Node Place
unsigned getMark(Place p) const
bool hitsNoneOf(const vector< Marking > &markings)
std::string _hashSequence
void increaseMark(Place p)
Namespace of the Diades project.
size_t operator()(const Diades::Petri::Marking &m) const
bool hits(const Marking &marking) const
void mark(Place p, unsigned tokens)
const string & getHashSequence() const
std::unordered_map< Place, unsigned >::const_iterator begin() const
Marking(Marking &&marking)
std::unordered_map< Place, unsigned > _marking