00001 #pragma once
00002
00003 #include <vector>
00004
00005 #include <fdr/lts/events.h>
00006 #include <fdr/lts/machine.h>
00007 #include <fdr/lts/node.h>
00008
00009 namespace FDR
00010 {
00011 namespace Assertions
00012 {
00021 class Behaviour
00022 {
00023 public:
00024 virtual ~Behaviour();
00025
00026 Behaviour(const Behaviour&) = delete;
00027 Behaviour& operator=(const Behaviour&) = delete;
00028
00030 std::shared_ptr<LTS::Machine> machine() const;
00031
00046 const std::vector<std::shared_ptr<LTS::Node>>& node_path() const;
00047
00053 const std::vector<LTS::CompiledEvent>& trace() const;
00054
00055 protected:
00056 Behaviour(const std::shared_ptr<LTS::Machine>& machine, const std::vector<std::shared_ptr<LTS::Node>>& node_path,
00057 const std::vector<LTS::CompiledEvent>& events);
00058
00059 private:
00060 struct Data;
00061
00062 friend class DebugContext;
00063 friend struct BehaviourFactory;
00064 std::unique_ptr<Data> data;
00065 };
00066
00067 }
00068 }