summaryrefslogtreecommitdiffstats
path: root/Source/cmVariableWatch.cxx
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2003-01-08 17:59:52 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2003-01-08 17:59:52 (GMT)
commit829f8382e062466b4163e7a6dd36c6151e3e6b29 (patch)
treea5aa76f3689a723e2214b9d31a1608e208580f39 /Source/cmVariableWatch.cxx
parent4d6dba4c37928026b577870e93128e55cd16a24f (diff)
downloadCMake-829f8382e062466b4163e7a6dd36c6151e3e6b29.zip
CMake-829f8382e062466b4163e7a6dd36c6151e3e6b29.tar.gz
CMake-829f8382e062466b4163e7a6dd36c6151e3e6b29.tar.bz2
Add option of watching variables
Diffstat (limited to 'Source/cmVariableWatch.cxx')
-rw-r--r--Source/cmVariableWatch.cxx59
1 files changed, 59 insertions, 0 deletions
diff --git a/Source/cmVariableWatch.cxx b/Source/cmVariableWatch.cxx
new file mode 100644
index 0000000..74548fb
--- /dev/null
+++ b/Source/cmVariableWatch.cxx
@@ -0,0 +1,59 @@
+/*=========================================================================
+
+ Program: CMake - Cross-Platform Makefile Generator
+ Module: $RCSfile$
+ Language: C++
+ Date: $Date$
+ Version: $Revision$
+
+ Copyright (c) 2002 Kitware, Inc., Insight Consortium. 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.
+
+=========================================================================*/
+#include "cmVariableWatch.h"
+
+cmVariableWatch::cmVariableWatch()
+{
+}
+
+cmVariableWatch::~cmVariableWatch()
+{
+}
+
+void cmVariableWatch::AddWatch(const std::string& variable,
+ WatchMethod method, void* client_data /*=0*/)
+{
+ cmVariableWatch::Pair p;
+ p.m_Method = method;
+ p.m_ClientData = client_data;
+ cmVariableWatch::VectorOfPairs* vp = &m_WatchMap[variable];
+ cmVariableWatch::VectorOfPairs::size_type cc;
+ for ( cc = 0; cc < vp->size(); cc ++ )
+ {
+ cmVariableWatch::Pair* pair = &(*vp)[cc];
+ if ( pair->m_Method == method )
+ {
+ (*vp)[cc] = p;
+ return;
+ }
+ }
+ vp->push_back(p);
+}
+
+void cmVariableWatch::VariableAccessed(const std::string& variable, int access_type) const
+{
+ cmVariableWatch::StringToVectorOfPairs::const_iterator mit = m_WatchMap.find(variable);
+ if ( mit != m_WatchMap.end() )
+ {
+ const cmVariableWatch::VectorOfPairs* vp = &mit->second;
+ cmVariableWatch::VectorOfPairs::const_iterator it;
+ for ( it = vp->begin(); it != vp->end(); it ++ )
+ {
+ it->m_Method(variable, access_type, it->m_ClientData);
+ }
+ }
+}