// -*- mode: C++; c-file-style: "stroustrup"; c-basic-offset: 4; -*-
////////////////////////////////////////////////////////////////////
//
// $Id: location.h 816 2011-09-10 13:19:07Z Sebastian Kupferschmid $
//
////////////////////////////////////////////////////////////////////

#ifndef SYSTEM_LOCATION_H
#define SYSTEM_LOCATION_H

#include "variable.h"
#include <vector>

class Process;
class Invariant;
class Edge;

class Location : public Variable {
public:
    Process* proc;
    bool urgent;
    bool commit;
    uint32_t idInSystem;
    uint32_t idInProcess;
    Invariant* inv;
    std::vector<Edge*> outgoing;
    std::vector<Edge*> incoming;

    Location(Process* proc, const std::string& name, uint32_t idInProcess, uint32_t idInSystem); 
    virtual ~Location();
    virtual std::ostream& display(std::ostream& o) const;
};

#endif /* SYSTEM_LOCATION_H */
