diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-23 16:43:01 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-07-23 16:43:01 +0000 |
commit | 2d66a5016d4aacce362f89290261c8a1a6eef0d3 (patch) | |
tree | aa8b366d2b2977094300f34ee2795bbecd0212e2 /lib/AST/CommentSema.cpp | |
parent | 1cc9be04bd57698d99899ca4a38a2028cb8460b1 (diff) |
Comment AST: add InlineContentComment::RenderKind to specify a default
rendering mode for clients that don't want to interpret Doxygen commands.
Also add a libclang API to query this information.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160633 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/CommentSema.cpp')
-rw-r--r-- | lib/AST/CommentSema.cpp | 38 |
1 files changed, 28 insertions, 10 deletions
diff --git a/lib/AST/CommentSema.cpp b/lib/AST/CommentSema.cpp index 3d8635fb19..6c37452e07 100644 --- a/lib/AST/CommentSema.cpp +++ b/lib/AST/CommentSema.cpp @@ -202,10 +202,12 @@ InlineCommandComment *Sema::actOnInlineCommand(SourceLocation CommandLocBegin, SourceLocation CommandLocEnd, StringRef CommandName) { ArrayRef<InlineCommandComment::Argument> Args; - return new (Allocator) InlineCommandComment(CommandLocBegin, - CommandLocEnd, - CommandName, - Args); + return new (Allocator) InlineCommandComment( + CommandLocBegin, + CommandLocEnd, + CommandName, + getInlineCommandRenderKind(CommandName), + Args); } InlineCommandComment *Sema::actOnInlineCommand(SourceLocation CommandLocBegin, @@ -219,17 +221,22 @@ InlineCommandComment *Sema::actOnInlineCommand(SourceLocation CommandLocBegin, ArgLocEnd), Arg); - return new (Allocator) InlineCommandComment(CommandLocBegin, - CommandLocEnd, - CommandName, - llvm::makeArrayRef(A, 1)); + return new (Allocator) InlineCommandComment( + CommandLocBegin, + CommandLocEnd, + CommandName, + getInlineCommandRenderKind(CommandName), + llvm::makeArrayRef(A, 1)); } InlineContentComment *Sema::actOnUnknownCommand(SourceLocation LocBegin, SourceLocation LocEnd, StringRef Name) { ArrayRef<InlineCommandComment::Argument> Args; - return new (Allocator) InlineCommandComment(LocBegin, LocEnd, Name, Args); + return new (Allocator) InlineCommandComment( + LocBegin, LocEnd, Name, + InlineCommandComment::RenderNormal, + Args); } TextComment *Sema::actOnText(SourceLocation LocBegin, @@ -445,7 +452,7 @@ unsigned Sema::getBlockCommandNumArgs(StringRef Name) { .Default(0); } -bool Sema::isInlineCommand(StringRef Name) { +bool Sema::isInlineCommand(StringRef Name) const { return llvm::StringSwitch<bool>(Name) .Case("b", true) .Cases("c", "p", true) @@ -453,6 +460,17 @@ bool Sema::isInlineCommand(StringRef Name) { .Default(false); } +InlineCommandComment::RenderKind +Sema::getInlineCommandRenderKind(StringRef Name) const { + assert(isInlineCommand(Name)); + + return llvm::StringSwitch<InlineCommandComment::RenderKind>(Name) + .Case("b", InlineCommandComment::RenderBold) + .Cases("c", "p", InlineCommandComment::RenderMonospaced) + .Cases("a", "e", "em", InlineCommandComment::RenderEmphasized) + .Default(InlineCommandComment::RenderNormal); +} + bool Sema::isHTMLEndTagOptional(StringRef Name) { return llvm::StringSwitch<bool>(Name) .Case("p", true) |