1
0
Эх сурвалжийг харах

cmDocumentation: Accept `Iterable` instead of `vector` on add entries

Alex Turbov 3 жил өмнө
parent
commit
ccff0b87a2

+ 0 - 20
Source/cmDocumentation.cxx

@@ -373,14 +373,6 @@ void cmDocumentation::SetSection(const char* name,
   this->SectionAtName(name) = std::move(section);
 }
 
-void cmDocumentation::SetSection(const char* name,
-                                 std::vector<cmDocumentationEntry>& docs)
-{
-  cmDocumentationSection sec{ name };
-  sec.Append(docs);
-  this->SetSection(name, std::move(sec));
-}
-
 void cmDocumentation::SetSection(const char* name, const char* docs[][2])
 {
   cmDocumentationSection sec{ name };
@@ -406,23 +398,11 @@ void cmDocumentation::PrependSection(const char* name, const char* docs[][2])
   this->SectionAtName(name).Prepend(docs);
 }
 
-void cmDocumentation::PrependSection(const char* name,
-                                     std::vector<cmDocumentationEntry>& docs)
-{
-  this->SectionAtName(name).Prepend(docs);
-}
-
 void cmDocumentation::AppendSection(const char* name, const char* docs[][2])
 {
   this->SectionAtName(name).Append(docs);
 }
 
-void cmDocumentation::AppendSection(const char* name,
-                                    std::vector<cmDocumentationEntry>& docs)
-{
-  this->SectionAtName(name).Append(docs);
-}
-
 void cmDocumentation::AppendSection(const char* name,
                                     cmDocumentationEntry& docs)
 {

+ 18 - 6
Source/cmDocumentation.h

@@ -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) */