00001 #pragma once 00002 00003 #include <memory> 00004 #include <vector> 00005 00006 namespace FDR 00007 { 00008 namespace Assertions 00009 { 00011 class Progress 00012 { 00013 public: 00014 virtual ~Progress(); 00015 00016 Progress(const Progress&) = delete; 00017 Progress& operator=(const Progress&) = delete; 00018 00019 protected: 00020 Progress(); 00021 00022 friend struct ProgressFactory; 00023 }; 00024 00026 class BFSRefinementProgress : public Progress 00027 { 00028 public: 00029 ~BFSRefinementProgress(); 00030 00032 size_t plys() const; 00033 00035 size_t state_pairs_count() const; 00036 00038 size_t transition_count() const; 00039 00040 private: 00041 BFSRefinementProgress(); 00042 00043 struct Data; 00044 std::unique_ptr<Data> data; 00045 00046 friend struct ProgressFactory; 00047 }; 00048 00049 } // end Assertions 00050 } // end FDR