PetriNet exposes the possible constructors to create PetriNets. It also allows the user to register a Callback to a transition, or to get a handle for input-transitions.  
 More...
#include <symmetri.h>
|  | 
|  | PetriNet (const std::set< std::string > &petri_net_xmls, const std::string &case_id, std::shared_ptr< TaskSystem > threadpool, const Marking &goal_marking={}, const PriorityTable &priorities={}) | 
|  | Construct a new PetriNet object from a set of paths to PNML- or GRML-files. Since PNML-files do not have priorities; you can optionally add a priority table manually. 
 | 
|  | 
|  | PetriNet (const Net &net, const std::string &case_id, std::shared_ptr< TaskSystem > threadpool, const Marking &initial_marking, const Marking &goal_marking={}, const PriorityTable &priorities={}) | 
|  | Construct a new PetriNet object from a net and initial marking. 
 | 
|  | 
| std::function< void()> | getInputTransitionHandle (const std::string &transition) const noexcept | 
|  | By registering a input transition you get a handle to manually force a transition to fire. It returns a callable handle that will schedule a reducer for the transition, generating tokens. This only works for transitions that have no input places. 
 | 
|  | 
| void | registerCallback (const std::string &transition, Callback &&callback) const noexcept | 
|  | The default transition payload (DirectMutation) is overloaded by the Callback supplied for a specific transition. 
 | 
|  | 
| template<typename T, typename... Args> | 
| void | registerCallbackInPlace (const std::string &transition, Args &&...args) const noexcept | 
|  | Construct a Callback of type T in place. This is required for type that are not moveable;. 
 | 
|  | 
| Marking | getMarking () const noexcept | 
|  | Get the Marking object. This function is thread-safe and be called during PetriNet execution. 
 | 
|  | 
| bool | reuseApplication (const std::string &case_id) | 
|  | reuseApplication resets the PetriNet such that the same net can be used again after a cancel call or natural termination of the PetriNet. You do need to supply a new case_id which must be different. 
 | 
|  | 
PetriNet exposes the possible constructors to create PetriNets. It also allows the user to register a Callback to a transition, or to get a handle for input-transitions. 
◆ PetriNet() [1/2]
      
        
          | symmetri::PetriNet::PetriNet | ( | const std::set< std::string > & | petri_net_xmls, | 
        
          |  |  | const std::string & | case_id, | 
        
          |  |  | std::shared_ptr< TaskSystem > | threadpool, | 
        
          |  |  | const Marking & | goal_marking = {}, | 
        
          |  |  | const PriorityTable & | priorities = {} ) | 
      
 
Construct a new PetriNet object from a set of paths to PNML- or GRML-files. Since PNML-files do not have priorities; you can optionally add a priority table manually. 
- Parameters
- 
  
    | petri_net_xmls |  |  | case_id |  |  | threadpool |  |  | goal_marking |  |  | priorities |  |  
 
 
 
◆ PetriNet() [2/2]
      
        
          | symmetri::PetriNet::PetriNet | ( | const Net & | net, | 
        
          |  |  | const std::string & | case_id, | 
        
          |  |  | std::shared_ptr< TaskSystem > | threadpool, | 
        
          |  |  | const Marking & | initial_marking, | 
        
          |  |  | const Marking & | goal_marking = {}, | 
        
          |  |  | const PriorityTable & | priorities = {} ) | 
      
 
Construct a new PetriNet object from a net and initial marking. 
- Parameters
- 
  
    | net |  |  | case_id |  |  | threadpool |  |  | initial_marking |  |  | goal_marking |  |  | priorities |  |  
 
 
 
◆ getInputTransitionHandle()
  
  | 
        
          | std::function< void()> symmetri::PetriNet::getInputTransitionHandle | ( | const std::string & | transition | ) | const |  | noexcept | 
 
By registering a input transition you get a handle to manually force a transition to fire. It returns a callable handle that will schedule a reducer for the transition, generating tokens. This only works for transitions that have no input places. 
- Parameters
- 
  
    | transition | the name of transition |  
 
- Returns
- std::function<void()> 
 
 
◆ getMarking()
  
  | 
        
          | Marking symmetri::PetriNet::getMarking | ( |  | ) | const |  | noexcept | 
 
Get the Marking object. This function is thread-safe and be called during PetriNet execution. 
- Returns
- std::vector<Place> 
 
 
◆ registerCallback()
  
  | 
        
          | void symmetri::PetriNet::registerCallback | ( | const std::string & | transition, |  
          |  |  | Callback && | callback ) const |  | noexcept | 
 
The default transition payload (DirectMutation) is overloaded by the Callback supplied for a specific transition. 
- Parameters
- 
  
    | transition | the name of transition |  | callback | the callback |  
 
 
 
◆ registerCallbackInPlace()
template<typename T, typename... Args> 
  
  | 
        
          | void symmetri::PetriNet::registerCallbackInPlace | ( | const std::string & | transition, |  
          |  |  | Args &&... | args ) const |  | inlinenoexcept | 
 
Construct a Callback of type T in place. This is required for type that are not moveable;. 
- Template Parameters
- 
  
    | T | type of the Callback |  | Args | types of the constructor-arguments |  
 
- Parameters
- 
  
    | transition | the name of the transitions |  | args | arguments for constructor of T |  
 
 
 
◆ reuseApplication()
      
        
          | bool symmetri::PetriNet::reuseApplication | ( | const std::string & | case_id | ) |  | 
      
 
reuseApplication resets the PetriNet such that the same net can be used again after a cancel call or natural termination of the PetriNet. You do need to supply a new case_id which must be different. 
- Parameters
- 
  
    | case_id | needs to be a new unique id |  
 
- Returns
- true 
- 
false 
 
 
The documentation for this class was generated from the following files:
- symmetri/include/symmetri/symmetri.h
- symmetri/symmetri.cpp