clang 22.0.0git
clang::RawComment Class Reference

#include "clang/AST/RawCommentList.h"

Classes

struct  CommentLine

Public Types

enum  CommentKind {
  RCK_Invalid , RCK_OrdinaryBCPL , RCK_OrdinaryC , RCK_BCPLSlash ,
  RCK_BCPLExcl , RCK_JavaDoc , RCK_Qt , RCK_Merged
}

Public Member Functions

 RawComment ()
 RawComment (const SourceManager &SourceMgr, SourceRange SR, const CommentOptions &CommentOpts, bool Merged)
CommentKind getKind () const LLVM_READONLY
bool isInvalid () const LLVM_READONLY
bool isMerged () const LLVM_READONLY
bool isAttached () const LLVM_READONLY
 Is this comment attached to any declaration?
void setAttached ()
bool isTrailingComment () const LLVM_READONLY
 Returns true if it is a comment that should be put after a member:
bool isAlmostTrailingComment () const LLVM_READONLY
 Returns true if it is a probable typo:
bool isOrdinary () const LLVM_READONLY
 Returns true if this comment is not a documentation comment.
bool isDocumentation () const LLVM_READONLY
 Returns true if this comment any kind of a documentation comment.
StringRef getRawText (const SourceManager &SourceMgr) const
 Returns raw comment text with comment markers.
SourceRange getSourceRange () const LLVM_READONLY
SourceLocation getBeginLoc () const LLVM_READONLY
SourceLocation getEndLoc () const LLVM_READONLY
const char * getBriefText (const ASTContext &Context) const
bool hasUnsupportedSplice (const SourceManager &SourceMgr) const
std::string getFormattedText (const SourceManager &SourceMgr, DiagnosticsEngine &Diags) const
 Returns sanitized comment text, suitable for presentation in editor UIs.
std::vector< CommentLinegetFormattedLines (const SourceManager &SourceMgr, DiagnosticsEngine &Diags) const
 Returns sanitized comment text as separated lines with locations in source, suitable for further processing and rendering requiring source locations.
comments::FullCommentparse (const ASTContext &Context, const Preprocessor *PP, const Decl *D) const
 Parse the comment, assuming it is attached to decl D.

Friends

class ASTReader

Detailed Description

Definition at line 32 of file RawCommentList.h.

Member Enumeration Documentation

◆ CommentKind

Enumerator
RCK_Invalid 

Invalid comment.

RCK_OrdinaryBCPL 

Any normal BCPL comments.

RCK_OrdinaryC 

Any normal C comment.

RCK_BCPLSlash 
/// stuff
RCK_BCPLExcl 
//! stuff
RCK_JavaDoc 
/** stuff */
RCK_Qt 
/*! stuff */

, also used by HeaderDoc

RCK_Merged 

Two or more documentation comments merged together.

Definition at line 34 of file RawCommentList.h.

Constructor & Destructor Documentation

◆ RawComment() [1/2]

clang::RawComment::RawComment ( )
inline

Definition at line 45 of file RawCommentList.h.

References false, and RCK_Invalid.

◆ RawComment() [2/2]

Member Function Documentation

◆ getBeginLoc()

SourceLocation clang::RawComment::getBeginLoc ( ) const
inline

Definition at line 108 of file RawCommentList.h.

Referenced by clang::RawCommentList::addComment().

◆ getBriefText()

const char * clang::RawComment::getBriefText ( const ASTContext & Context) const
inline

Definition at line 111 of file RawCommentList.h.

◆ getEndLoc()

SourceLocation clang::RawComment::getEndLoc ( ) const
inline

Definition at line 109 of file RawCommentList.h.

Referenced by clang::RawCommentList::addComment().

◆ getFormattedLines()

std::vector< RawComment::CommentLine > RawComment::getFormattedLines ( const SourceManager & SourceMgr,
DiagnosticsEngine & Diags ) const

Returns sanitized comment text as separated lines with locations in source, suitable for further processing and rendering requiring source locations.

This is a multi-line comment block. The lexer will produce two newline tokens here >

Definition at line 375 of file RawCommentList.cpp.

References clang::comments::tok::eof, clang::PresumedLoc::getLine(), getRawText(), getSourceRange(), clang::comments::Lexer::getSpelling(), clang::comments::Lexer::lex(), clang::Line, clang::comments::tok::newline, clang::Result, and Tok.

Referenced by getFormattedText(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::recordEnumConstants(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::recordObjCInstanceVariables(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::recordObjCMethods(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::recordObjCProperties(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitClassTemplatePartialSpecializationDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitClassTemplateSpecializationDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitConceptDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitCXXConstructorDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitCXXConversionDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitCXXDestructorDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitCXXMethodDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitCXXRecordDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitEnumDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitFieldDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitFunctionDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitFunctionTemplateDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitNamespaceDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitObjCCategoryDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitObjCInterfaceDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitObjCProtocolDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitRecordDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitTypedefNameDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitVarDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitVarTemplateDecl(), clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitVarTemplatePartialSpecializationDecl(), and clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitVarTemplateSpecializationDecl().

◆ getFormattedText()

std::string RawComment::getFormattedText ( const SourceManager & SourceMgr,
DiagnosticsEngine & Diags ) const

Returns sanitized comment text, suitable for presentation in editor UIs.

E.g. will transform: // This is a long multiline comment. // Parts of it might be indented. /* The comments styles might be mixed. *‍/ into "This is a long multiline comment.\n" " Parts of it might be indented.\n" "The comments styles might be mixed." Also removes leading indentation and sanitizes some common cases: /* This is a first line.

  • This is a second line. It is indented.
  • This is a third line. ‍/ and / This is a first line. This is a second line. It is indented. This is a third line. *‍/ will both turn into: "This is a first line.\n" " This is a second line. It is indented.\n" "This is a third line."

Definition at line 357 of file RawCommentList.cpp.

References getFormattedLines(), getRawText(), clang::Line, and clang::Result.

◆ getKind()

CommentKind clang::RawComment::getKind ( ) const
inline

◆ getRawText()

StringRef clang::RawComment::getRawText ( const SourceManager & SourceMgr) const
inline

Returns raw comment text with comment markers.

Definition at line 98 of file RawCommentList.h.

Referenced by getFormattedLines(), getFormattedText(), hasUnsupportedSplice(), parse(), and RawComment().

◆ getSourceRange()

SourceRange clang::RawComment::getSourceRange ( ) const
inline

Definition at line 107 of file RawCommentList.h.

Referenced by clang::ASTContext::addComment(), getFormattedLines(), and parse().

◆ hasUnsupportedSplice()

bool clang::RawComment::hasUnsupportedSplice ( const SourceManager & SourceMgr) const
inline

Definition at line 118 of file RawCommentList.h.

References getRawText(), isInvalid(), and clang::Text.

Referenced by clang::Sema::ActOnComment().

◆ isAlmostTrailingComment()

bool clang::RawComment::isAlmostTrailingComment ( ) const
inline

Returns true if it is a probable typo:

//< stuff
/*< stuff */

Definition at line 83 of file RawCommentList.h.

Referenced by clang::Sema::ActOnComment().

◆ isAttached()

bool clang::RawComment::isAttached ( ) const
inline

Is this comment attached to any declaration?

Definition at line 63 of file RawCommentList.h.

◆ isDocumentation()

bool clang::RawComment::isDocumentation ( ) const
inline

Returns true if this comment any kind of a documentation comment.

Definition at line 93 of file RawCommentList.h.

References isInvalid(), and isOrdinary().

Referenced by clang::ASTContext::cacheRawCommentForDecl(), and clang::ASTContext::getRawCommentForDeclNoCacheImpl().

◆ isInvalid()

bool clang::RawComment::isInvalid ( ) const
inline

◆ isMerged()

bool clang::RawComment::isMerged ( ) const
inline

Definition at line 58 of file RawCommentList.h.

References RCK_Merged.

◆ isOrdinary()

bool clang::RawComment::isOrdinary ( ) const
inline

Returns true if this comment is not a documentation comment.

Definition at line 88 of file RawCommentList.h.

References RCK_OrdinaryBCPL, and RCK_OrdinaryC.

Referenced by clang::RawCommentList::addComment(), and isDocumentation().

◆ isTrailingComment()

bool clang::RawComment::isTrailingComment ( ) const
inline

Returns true if it is a comment that should be put after a member:

///< stuff
//!< stuff
/**< stuff */
/*!< stuff */

Definition at line 76 of file RawCommentList.h.

Referenced by clang::RawCommentList::addComment(), and clang::ASTContext::getRawCommentForDeclNoCacheImpl().

◆ parse()

comments::FullComment * RawComment::parse ( const ASTContext & Context,
const Preprocessor * PP,
const Decl * D ) const

◆ setAttached()

void clang::RawComment::setAttached ( )
inline

Definition at line 67 of file RawCommentList.h.

◆ ASTReader

friend class ASTReader
friend

Definition at line 207 of file RawCommentList.h.

References ASTReader.

Referenced by ASTReader.


The documentation for this class was generated from the following files: