summaryrefslogtreecommitdiffstats
path: root/Source/CTest/cmCTestGlobalVC.h
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-04-22 13:18:19 (GMT)
committerBrad King <brad.king@kitware.com>2009-04-22 13:18:19 (GMT)
commitd25289ad9254c67d8231c6582b4b9a35daa8297c (patch)
tree3169d7647d86deb0f8f93663e7fcaf52c8d0336e /Source/CTest/cmCTestGlobalVC.h
parentefe07c4e0a76868657d617a47cc03797e0a3a93e (diff)
downloadCMake-d25289ad9254c67d8231c6582b4b9a35daa8297c.zip
CMake-d25289ad9254c67d8231c6582b4b9a35daa8297c.tar.gz
CMake-d25289ad9254c67d8231c6582b4b9a35daa8297c.tar.bz2
ENH: Factor global-VC parts out of cmCTestSVN
This factors parts of the svn update implementation that are useful for any globally-versioning vcs tool into cmCTestGlobalVC. It will allow the code to be shared among the support classes for most vcs tools.
Diffstat (limited to 'Source/CTest/cmCTestGlobalVC.h')
-rw-r--r--Source/CTest/cmCTestGlobalVC.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestGlobalVC.h b/Source/CTest/cmCTestGlobalVC.h
new file mode 100644
index 0000000..fbb794e
--- /dev/null
+++ b/Source/CTest/cmCTestGlobalVC.h
@@ -0,0 +1,72 @@
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Kitware, Inc. All rights reserved.
+ See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+#ifndef cmCTestGlobalVC_h
+#define cmCTestGlobalVC_h
+
+#include "cmCTestVC.h"
+
+/** \class cmCTestGlobalVC
+ * \brief Base class for handling globally-versioned trees
+ *
+ */
+class cmCTestGlobalVC: public cmCTestVC
+{
+public:
+ /** Construct with a CTest instance and update log stream. */
+ cmCTestGlobalVC(cmCTest* ctest, std::ostream& log);
+
+ virtual ~cmCTestGlobalVC();
+
+protected:
+ // Implement cmCTestVC internal API.
+ virtual bool WriteXMLUpdates(std::ostream& xml);
+
+ /** Represent a vcs-reported action for one path in a revision. */
+ struct Change
+ {
+ char Action;
+ std::string Path;
+ Change(char a = '?'): Action(a) {}
+ };
+
+ // Update status for files in each directory.
+ class Directory: public std::map<cmStdString, File> {};
+ std::map<cmStdString, Directory> Dirs;
+
+ // Old and new repository revisions.
+ std::string OldRevision;
+ std::string NewRevision;
+
+ // Information known about old revision.
+ Revision PriorRev;
+
+ // Information about revisions from a svn log.
+ std::list<Revision> Revisions;
+
+ virtual const char* LocalPath(std::string const& path);
+
+ virtual void DoRevision(Revision const& revision,
+ std::vector<Change> const& changes);
+ virtual void DoModification(PathStatus status, std::string const& path);
+ virtual void LoadModifications() = 0;
+ virtual void LoadRevisions() = 0;
+
+ void WriteXMLDirectory(std::ostream& xml, std::string const& path,
+ Directory const& dir);
+};
+
+#endif