summaryrefslogtreecommitdiffstats
path: root/Source/cmPropertyDefinitionMap.cxx
diff options
context:
space:
mode:
authorKen Martin <ken.martin@kitware.com>2007-10-22 16:49:09 (GMT)
committerKen Martin <ken.martin@kitware.com>2007-10-22 16:49:09 (GMT)
commit6cdf03250568c2150094cddfb6542945903b41a1 (patch)
treed2180686ef12105d6855203eded0505775b507ab /Source/cmPropertyDefinitionMap.cxx
parentcfb84d8562646662cfee9622f657e8eacdd49f8c (diff)
downloadCMake-6cdf03250568c2150094cddfb6542945903b41a1.zip
CMake-6cdf03250568c2150094cddfb6542945903b41a1.tar.gz
CMake-6cdf03250568c2150094cddfb6542945903b41a1.tar.bz2
ENH: change to make the documentation class more generic, about halfway there, also provides secitons for Variables now
Diffstat (limited to 'Source/cmPropertyDefinitionMap.cxx')
-rw-r--r--Source/cmPropertyDefinitionMap.cxx51
1 files changed, 45 insertions, 6 deletions
diff --git a/Source/cmPropertyDefinitionMap.cxx b/Source/cmPropertyDefinitionMap.cxx
index bfc6112..72488e1 100644
--- a/Source/cmPropertyDefinitionMap.cxx
+++ b/Source/cmPropertyDefinitionMap.cxx
@@ -16,12 +16,13 @@
=========================================================================*/
#include "cmPropertyDefinitionMap.h"
#include "cmSystemTools.h"
-
+#include "cmDocumentationSection.h"
void cmPropertyDefinitionMap
::DefineProperty(const char *name, cmProperty::ScopeType scope,
const char *ShortDescription,
const char *FullDescription,
+ const char *DocumentationSection,
bool chain)
{
if (!name)
@@ -34,21 +35,59 @@ void cmPropertyDefinitionMap
if (it == this->end())
{
prop = &(*this)[name];
- prop->DefineProperty(name,scope,ShortDescription, FullDescription, chain);
+ prop->DefineProperty(name,scope,ShortDescription, FullDescription,
+ DocumentationSection, chain);
}
}
void cmPropertyDefinitionMap
-::GetPropertiesDocumentation(std::vector<cmDocumentationEntry>& v) const
+::GetPropertiesDocumentation(std::map<std::string,
+ cmDocumentationSection *>& v) const
{
for(cmPropertyDefinitionMap::const_iterator j = this->begin();
j != this->end(); ++j)
{
- cmDocumentationEntry e = j->second.GetDocumentation();
- if (e.brief)
+ // add a section if needed
+ std::string secName = j->second.GetDocumentationSection();
+ // if a section was not specified then use the scope
+ if (!secName.size())
{
- v.push_back(e);
+ switch (j->second.GetScope())
+ {
+ case cmProperty::GLOBAL:
+ secName = "Properties of Global Scope";
+ break;
+ case cmProperty::TARGET:
+ secName = "Properties on Targets";
+ break;
+ case cmProperty::SOURCE_FILE:
+ secName = "Properties on Source Files";
+ break;
+ case cmProperty::DIRECTORY:
+ secName = "Properties on Directories";
+ break;
+ case cmProperty::TEST:
+ secName = "Properties on Tests";
+ break;
+ case cmProperty::VARIABLE:
+ secName = "Variables";
+ break;
+ case cmProperty::CACHED_VARIABLE:
+ secName = "Cached Variables";
+ break;
+ default:
+ secName = "Properties of Unknown Scope";
+ break;
+ }
}
+ if (!v[secName])
+ {
+ v[secName] = new
+ cmDocumentationSection(secName.c_str(),
+ cmSystemTools::UpperCase(secName).c_str());
+ }
+ cmDocumentationEntry e = j->second.GetDocumentation();
+ v[secName]->Append(e);
}
}