~verifypn-wf/verifypn/png

« back to all changes in this revision

Viewing changes to src/PetriEngine/PetriNetBuilder.cpp

  • Committer: Bogi Napoleon Wennerström
  • Date: 2020-11-02 13:35:33 UTC
  • Revision ID: bogi.wennerstrom@gmail.com-20201102133533-hbiaj5dl2wnxnloc
* Applied changes from Peter
* Corrected spelling
* Renamed variables
* Extracted methods
* Other misc. refactorings

Show diffs side-by-side

added added

removed removed

Lines of Context:
59
59
        
60
60
    }
61
61
 
62
 
    void PetriNetBuilder::addTransition(const string &name,
 
62
    void PetriNetBuilder::addTransition(const string &name, const uint32_t player,
63
63
            double, double) {
64
64
        if(_transitionnames.count(name) == 0)
65
65
        {
66
66
            uint32_t next = _transitionnames.size();
67
67
            _transitions.emplace_back();
 
68
            _transitions.back().player = player;
68
69
            _transitionnames[name] = next;
69
 
        }
 
70
        } 
 
71
        else if(player != -1) 
 
72
            _transitions[_transitionnames[name]].player = player;
70
73
    }
71
74
 
72
75
    void PetriNetBuilder::addInputArc(const string &place, const string &transition, bool inhibitor, int weight) {
73
76
        if(_transitionnames.count(transition) == 0)
74
77
        {
75
 
            addTransition(transition,0.0,0.0);
 
78
            addTransition(transition,-1,0.0,0.0);
76
79
        }
77
80
        if(_placenames.count(place) == 0)
78
81
        {
97
100
    void PetriNetBuilder::addOutputArc(const string &transition, const string &place, int weight) {
98
101
        if(_transitionnames.count(transition) == 0)
99
102
        {
100
 
            addTransition(transition,0,0);
 
103
            addTransition(transition,-1,0.0,0.0);
101
104
        }
102
105
        if(_placenames.count(place) == 0)
103
106
        {
309
312
                    --place_prod_count[post.place];
310
313
                    ++freeinv;
311
314
                }
 
315
                net->_players[freetrans] = (trans.player > 0) ? 2 : 1;
312
316
                
313
317
                trans_idmap[t] = freetrans;
314
318
                
423
427
        
424
428
        return net;
425
429
    }
 
430
 
 
431
    bool PetriNetBuilder::isGame() const {
 
432
        for(size_t i = 0; i < _transitions.size(); ++i)
 
433
        {
 
434
            if(_transitions[i].player != 0)
 
435
                return true;
 
436
        }
 
437
        return false;
 
438
    }
426
439
    
427
440
    void PetriNetBuilder::sort()
428
441
    {