summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2003-03-06 16:19:28 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2003-03-06 16:19:28 (GMT)
commitce750180baec52f1bb64fbd1afe7c1aff1338c5c (patch)
tree2f7f0b39ebd08222176ff10bcc8516d6a067dbad /Source
parent6631d787541c9cf72821ad033a6f42356cf9f2e6 (diff)
downloadCMake-ce750180baec52f1bb64fbd1afe7c1aff1338c5c.zip
CMake-ce750180baec52f1bb64fbd1afe7c1aff1338c5c.tar.gz
CMake-ce750180baec52f1bb64fbd1afe7c1aff1338c5c.tar.bz2
Add method which returns a list of all variables
Diffstat (limited to 'Source')
-rw-r--r--Source/cmMakefile.cxx26
-rw-r--r--Source/cmMakefile.h7
2 files changed, 33 insertions, 0 deletions
diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx
index b386041..4a9ef30 100644
--- a/Source/cmMakefile.cxx
+++ b/Source/cmMakefile.cxx
@@ -976,6 +976,32 @@ const char* cmMakefile::GetDefinition(const char* name) const
return def;
}
+std::vector<std::string> cmMakefile::GetDefinitions(int cacheonly /* = 0 */) const
+{
+ std::map<std::string, int> definitions;
+ if ( !cacheonly )
+ {
+ DefinitionMap::const_iterator it;
+ for ( it = m_Definitions.begin(); it != m_Definitions.end(); it ++ )
+ {
+ definitions[it->first] = 1;
+ }
+ }
+ cmCacheManager::CacheIterator cit = this->GetCacheManager()->GetCacheIterator();
+ for ( cit.Begin(); !cit.IsAtEnd(); cit.Next() )
+ {
+ definitions[cit.GetName()] = 1;
+ }
+
+ std::vector<std::string> res;
+
+ std::map<std::string, int>::iterator fit;
+ for ( fit = definitions.begin(); fit != definitions.end(); fit ++ )
+ {
+ res.push_back(fit->first);
+ }
+ return res;
+}
const char *cmMakefile::ExpandVariablesInString(std::string& source) const
diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h
index 0d9ca16..3180847 100644
--- a/Source/cmMakefile.h
+++ b/Source/cmMakefile.h
@@ -441,6 +441,13 @@ public:
* cache is then queried.
*/
const char* GetDefinition(const char*) const;
+
+ /**
+ * Get the list of all variables in the current space. If argument
+ * cacheonly is specified and is greater than 0, then only cache
+ * variables will be listed.
+ */
+ std::vector<std::string> GetDefinitions(int cacheonly=0) const;
/** Test a boolean cache entry to see if it is true or false,
* returns false if no entry defined.