|  | @@ -7,6 +7,7 @@
 | 
	
		
			
				|  |  |  #include <iosfwd>
 | 
	
		
			
				|  |  |  #include <map>
 | 
	
		
			
				|  |  |  #include <string>
 | 
	
		
			
				|  |  | +#include <utility>
 | 
	
		
			
				|  |  |  #include <vector>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  #include "cmDocumentationFormatter.h"
 | 
	
	
		
			
				|  | @@ -74,19 +75,30 @@ public:
 | 
	
		
			
				|  |  |    /** Set a section of the documentation. Typical sections include Name,
 | 
	
		
			
				|  |  |        Usage, Description, Options */
 | 
	
		
			
				|  |  |    void SetSection(const char* sectionName, cmDocumentationSection section);
 | 
	
		
			
				|  |  | -  void SetSection(const char* sectionName,
 | 
	
		
			
				|  |  | -                  std::vector<cmDocumentationEntry>& docs);
 | 
	
		
			
				|  |  | +  template <typename Iterable>
 | 
	
		
			
				|  |  | +  void SetSection(const char* sectionName, const Iterable& docs)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    cmDocumentationSection sec{ sectionName };
 | 
	
		
			
				|  |  | +    sec.Append(docs);
 | 
	
		
			
				|  |  | +    this->SetSection(sectionName, std::move(sec));
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    void SetSection(const char* sectionName, const char* docs[][2]);
 | 
	
		
			
				|  |  |    void SetSections(std::map<std::string, cmDocumentationSection> sections);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /** Add the documentation to the beginning/end of the section */
 | 
	
		
			
				|  |  |    void PrependSection(const char* sectionName, const char* docs[][2]);
 | 
	
		
			
				|  |  | -  void PrependSection(const char* sectionName,
 | 
	
		
			
				|  |  | -                      std::vector<cmDocumentationEntry>& docs);
 | 
	
		
			
				|  |  | +  template <typename Iterable>
 | 
	
		
			
				|  |  | +  void PrependSection(const char* sectionName, const Iterable& docs)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    this->SectionAtName(sectionName).Prepend(docs);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    void PrependSection(const char* sectionName, cmDocumentationEntry& docs);
 | 
	
		
			
				|  |  |    void AppendSection(const char* sectionName, const char* docs[][2]);
 | 
	
		
			
				|  |  | -  void AppendSection(const char* sectionName,
 | 
	
		
			
				|  |  | -                     std::vector<cmDocumentationEntry>& docs);
 | 
	
		
			
				|  |  | +  template <typename Iterable>
 | 
	
		
			
				|  |  | +  void AppendSection(const char* sectionName, const Iterable& docs)
 | 
	
		
			
				|  |  | +  {
 | 
	
		
			
				|  |  | +    this->SectionAtName(sectionName).Append(docs);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    void AppendSection(const char* sectionName, cmDocumentationEntry& docs);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    /** Add common (to all tools) documentation section(s) */
 |