Comment to HTML and XML conversion: use CommandTraits to classify commands.

This also fixes a bug in comment to XML conversion: \result was just an
ordinary paragraph, not an alias for \returns.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161596 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/libclang/CXComment.cpp b/tools/libclang/CXComment.cpp
index 4606fdc..0bb6ab7 100644
--- a/tools/libclang/CXComment.cpp
+++ b/tools/libclang/CXComment.cpp
@@ -18,6 +18,7 @@
 #include "CXTranslationUnit.h"
 
 #include "clang/AST/CommentVisitor.h"
+#include "clang/AST/CommentCommandTraits.h"
 #include "clang/AST/Decl.h"
 #include "clang/Frontend/ASTUnit.h"
 
@@ -416,6 +417,7 @@
 
 FullCommentParts::FullCommentParts(const FullComment *C) :
     Brief(NULL), FirstParagraph(NULL), Returns(NULL) {
+  const CommandTraits Traits;
   for (Comment::child_iterator I = C->child_begin(), E = C->child_end();
        I != E; ++I) {
     const Comment *Child = *I;
@@ -439,11 +441,11 @@
     case Comment::BlockCommandCommentKind: {
       const BlockCommandComment *BCC = cast<BlockCommandComment>(Child);
       StringRef CommandName = BCC->getCommandName();
-      if (!Brief && (CommandName == "brief" || CommandName == "short")) {
+      if (!Brief && Traits.isBriefCommand(CommandName)) {
         Brief = BCC;
         break;
       }
-      if (!Returns && (CommandName == "returns" || CommandName == "return")) {
+      if (!Returns && Traits.isReturnsCommand(CommandName)) {
         Returns = BCC;
         break;
       }
@@ -553,6 +555,8 @@
   void appendToResultWithHTMLEscaping(StringRef S);
 
 private:
+  const CommandTraits Traits;
+
   /// Output stream for HTML.
   llvm::raw_svector_ostream Result;
 };
@@ -628,14 +632,13 @@
 void CommentASTToHTMLConverter::visitBlockCommandComment(
                                   const BlockCommandComment *C) {
   StringRef CommandName = C->getCommandName();
-  if (CommandName == "brief" || CommandName == "short") {
+  if (Traits.isBriefCommand(CommandName)) {
     Result << "<p class=\"para-brief\">";
     visitNonStandaloneParagraphComment(C->getParagraph());
     Result << "</p>";
     return;
   }
-  if (CommandName == "returns" || CommandName == "return" ||
-      CommandName == "result") {
+  if (Traits.isReturnsCommand(CommandName)) {
     Result << "<p class=\"para-returns\">"
               "<span class=\"word-returns\">Returns</span> ";
     visitNonStandaloneParagraphComment(C->getParagraph());
@@ -862,6 +865,7 @@
 
 private:
   const SourceManager &SM;
+
   /// Output stream for XML.
   llvm::raw_svector_ostream Result;
 };