1 /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying 2 file Copyright.txt or https://cmake.org/licensing for details. */ 3 #pragma once 4 5 #include "cmConfigure.h" // IWYU pragma: keep 6 7 #include <iosfwd> 8 #include <map> 9 #include <string> 10 #include <vector> 11 12 #include "cmCTestVC.h" 13 14 class cmCTest; 15 class cmXMLWriter; 16 17 /** \class cmCTestCVS 18 * \brief Interaction with cvs command-line tool 19 * 20 */ 21 class cmCTestCVS : public cmCTestVC 22 { 23 public: 24 /** Construct with a CTest instance and update log stream. */ 25 cmCTestCVS(cmCTest* ctest, std::ostream& log); 26 27 ~cmCTestCVS() override; 28 29 private: 30 // Implement cmCTestVC internal API. 31 bool UpdateImpl() override; 32 bool WriteXMLUpdates(cmXMLWriter& xml) override; 33 34 // Update status for files in each directory. 35 class Directory : public std::map<std::string, PathStatus> 36 { 37 }; 38 std::map<std::string, Directory> Dirs; 39 40 std::string ComputeBranchFlag(std::string const& dir); 41 void LoadRevisions(std::string const& file, const char* branchFlag, 42 std::vector<Revision>& revisions); 43 void WriteXMLDirectory(cmXMLWriter& xml, std::string const& path, 44 Directory const& dir); 45 46 // Parsing helper classes. 47 class LogParser; 48 class UpdateParser; 49 50 friend class LogParser; 51 friend class UpdateParser; 52 }; 53