clang 24.0.0git
clang::extractapi::DeclarationFragments Class Reference

DeclarationFragments is a vector of tagged important parts of a symbol's declaration. More...

#include "clang/ExtractAPI/DeclarationFragments.h"

Classes

struct  Fragment
 Fragment holds information of a single fragment. More...

Public Types

enum class  FragmentKind {
  None , Keyword , Attribute , NumberLiteral ,
  StringLiteral , Identifier , TypeIdentifier , GenericParameter ,
  ExternalParam , InternalParam , Text
}
 The kind of a fragment. More...
using FragmentIterator = std::vector<Fragment>::iterator
using ConstFragmentIterator = std::vector<Fragment>::const_iterator

Public Member Functions

 DeclarationFragments ()=default
const std::vector< Fragment > & getFragments () const
FragmentIterator begin ()
FragmentIterator end ()
ConstFragmentIterator cbegin () const
ConstFragmentIterator cend () const
DeclarationFragments & prepend (DeclarationFragments Other)
 Prepend another DeclarationFragments to the beginning.
DeclarationFragments & append (DeclarationFragments Other)
 Append another DeclarationFragments to the end.
DeclarationFragments & append (StringRef Spelling, FragmentKind Kind, StringRef PreciseIdentifier="", const Decl *Declaration=nullptr)
 Append a new Fragment to the end of the Fragments.
DeclarationFragments & insert (FragmentIterator It, DeclarationFragments Other)
 Inserts another DeclarationFragments at It.
DeclarationFragments & pop_back ()
DeclarationFragments & replace (std::string NewSpelling, unsigned Position)
bool endsWithKeyword () const
DeclarationFragments & appendSpace ()
 Append a text Fragment of a space character.
DeclarationFragments & appendSemicolon ()
 Append a text Fragment of a semicolon character.
DeclarationFragments & removeTrailingSemicolon ()
 Removes a trailing semicolon character if present.

Static Public Member Functions

static StringRef getFragmentKindString (FragmentKind Kind)
 Get the string description of a FragmentKind Kind.
static FragmentKind parseFragmentKindFromString (StringRef S)
 Get the corresponding FragmentKind from string S.
static DeclarationFragments getExceptionSpecificationString (ExceptionSpecificationType ExceptionSpec)
static DeclarationFragments getStructureTypeFragment (const RecordDecl *Decl)

Detailed Description

DeclarationFragments is a vector of tagged important parts of a symbol's declaration.

The fragments sequence can be joined to form spans of declaration text, with attached information useful for purposes like syntax-highlighting etc. For example:

const -> keyword "const"
int -> type "int"
pi; -> identifier "pi"
const internal::VariadicAllOfMatcher< Type > type
Matches Types in the clang AST.

Definition at line 48 of file DeclarationFragments.h.

Member Typedef Documentation

◆ ConstFragmentIterator

Definition at line 106 of file DeclarationFragments.h.

◆ FragmentIterator

Definition at line 105 of file DeclarationFragments.h.

Member Enumeration Documentation

◆ FragmentKind

The kind of a fragment.

Enumerator
None 

Unknown fragment kind.

Keyword 
Attribute 
NumberLiteral 
StringLiteral 
Identifier 
TypeIdentifier 

Identifier that refers to a type in the context.

GenericParameter 

Parameter that's used as generics in the context.

For example template parameters.

ExternalParam 

External parameters in Objective-C methods.

For example, forKey in

- (void) setValue:(Value)value forKey(Key)key
InternalParam 

Internal/local parameters in Objective-C methods.

For example, key in

- (void) setValue:(Value)value forKey(Key)key
Text 

Definition at line 53 of file DeclarationFragments.h.

Constructor & Destructor Documentation

◆ DeclarationFragments()

clang::extractapi::DeclarationFragments::DeclarationFragments ( )
default

Member Function Documentation

◆ append() [1/2]

DeclarationFragments & clang::extractapi::DeclarationFragments::append ( DeclarationFragments Other)
inline

Append another DeclarationFragments to the end.

Returns
a reference to the DeclarationFragments object itself after appending to chain up consecutive operations.

Definition at line 130 of file DeclarationFragments.h.

References DeclarationFragments(), end(), insert(), and clang::Other.

Referenced by clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForClassTemplatePartialSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForClassTemplateSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForConcept(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForConversionFunction(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXClass(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForEnum(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForEnumConstant(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForField(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunction(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunctionTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunctionTemplateSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForMacro(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForNamespace(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCCategory(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCInterface(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCProperty(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCProtocol(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForOverloadedOperator(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForRecordDecl(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForRedeclarableTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTemplateArguments(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTemplateParameters(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTypedef(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVar(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplatePartialSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplateSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFunctionSignature(), clang::extractapi::DeclarationFragmentsBuilder::getSubHeading(), clang::extractapi::DeclarationFragmentsBuilder::getSubHeading(), clang::extractapi::DeclarationFragmentsBuilder::getSubHeadingForMacro(), and clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitTypedefNameDecl().

◆ append() [2/2]

DeclarationFragments & clang::extractapi::DeclarationFragments::append ( StringRef Spelling,
FragmentKind Kind,
StringRef PreciseIdentifier = "",
const Decl * Declaration = nullptr )
inline

Append a new Fragment to the end of the Fragments.

Returns
a reference to the DeclarationFragments object itself after appending to chain up consecutive operations.

Definition at line 138 of file DeclarationFragments.h.

References clang::Declaration, DeclarationFragments(), and Text.

◆ appendSemicolon()

DeclarationFragments & DeclarationFragments::appendSemicolon ( )

Append a text Fragment of a semicolon character.

Returns
a reference to the DeclarationFragments object itself after appending to chain up consecutive operations.

Definition at line 89 of file DeclarationFragments.cpp.

References DeclarationFragments().

Referenced by clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForClassTemplatePartialSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForClassTemplateSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForConcept(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForConversionFunction(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXClass(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForEnum(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForField(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunction(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForNamespace(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCProperty(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForOverloadedOperator(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForRecordDecl(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTypedef(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVar(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplatePartialSpecialization(), and clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplateSpecialization().

◆ appendSpace()

DeclarationFragments & DeclarationFragments::appendSpace ( )

Append a text Fragment of a space character.

Returns
a reference to the DeclarationFragments object itself after appending to chain up consecutive operations.

Definition at line 85 of file DeclarationFragments.cpp.

References DeclarationFragments().

Referenced by clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForClassTemplatePartialSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForClassTemplateSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForConcept(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForConversionFunction(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXClass(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForEnum(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForField(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunction(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunctionTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForFunctionTemplateSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForMacro(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForNamespace(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCCategory(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCInterface(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCProperty(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForObjCProtocol(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForOverloadedOperator(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForRecordDecl(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForRedeclarableTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForSpecialCXXMethod(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTemplateArguments(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTemplateParameters(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForTypedef(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVar(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplate(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplatePartialSpecialization(), clang::extractapi::DeclarationFragmentsBuilder::getFragmentsForVarTemplateSpecialization(), and clang::extractapi::impl::ExtractAPIVisitorBase< Derived >::VisitTypedefNameDecl().

◆ begin()

◆ cbegin()

ConstFragmentIterator clang::extractapi::DeclarationFragments::cbegin ( ) const
inline

Definition at line 114 of file DeclarationFragments.h.

◆ cend()

ConstFragmentIterator clang::extractapi::DeclarationFragments::cend ( ) const
inline

Definition at line 116 of file DeclarationFragments.h.

◆ end()

FragmentIterator clang::extractapi::DeclarationFragments::end ( )
inline

Definition at line 112 of file DeclarationFragments.h.

Referenced by append(), and insert().

◆ endsWithKeyword()

bool clang::extractapi::DeclarationFragments::endsWithKeyword ( ) const
inline

Definition at line 207 of file DeclarationFragments.h.

References Keyword.

◆ getExceptionSpecificationString()

◆ getFragmentKindString()

StringRef DeclarationFragments::getFragmentKindString ( DeclarationFragments::FragmentKind Kind)
static

Get the string description of a FragmentKind Kind.

Definition at line 104 of file DeclarationFragments.cpp.

References Attribute, ExternalParam, GenericParameter, Identifier, InternalParam, Keyword, None, NumberLiteral, StringLiteral, Text, and TypeIdentifier.

◆ getFragments()

const std::vector< Fragment > & clang::extractapi::DeclarationFragments::getFragments ( ) const
inline

Definition at line 108 of file DeclarationFragments.h.

◆ getStructureTypeFragment()

DeclarationFragments DeclarationFragments::getStructureTypeFragment ( const RecordDecl * Decl)
static

◆ insert()

DeclarationFragments & clang::extractapi::DeclarationFragments::insert ( FragmentIterator It,
DeclarationFragments Other )
inline

Inserts another DeclarationFragments at It.

Returns
a reference to the DeclarationFragments object itself after appending to chain up consecutive operations.

Definition at line 156 of file DeclarationFragments.h.

References begin(), DeclarationFragments(), end(), clang::Other, and Text.

Referenced by append(), and prepend().

◆ parseFragmentKindFromString()

DeclarationFragments::FragmentKind DeclarationFragments::parseFragmentKindFromString ( StringRef S)
static

Get the corresponding FragmentKind from string S.

Definition at line 135 of file DeclarationFragments.cpp.

References Attribute, ExternalParam, GenericParameter, Identifier, InternalParam, Keyword, None, NumberLiteral, StringLiteral, Text, and TypeIdentifier.

◆ pop_back()

◆ prepend()

DeclarationFragments & clang::extractapi::DeclarationFragments::prepend ( DeclarationFragments Other)
inline

Prepend another DeclarationFragments to the beginning.

Returns
a reference to the DeclarationFragments object itself after appending to chain up consecutive operations.

Definition at line 122 of file DeclarationFragments.h.

References begin(), DeclarationFragments(), insert(), and clang::Other.

◆ removeTrailingSemicolon()

DeclarationFragments & DeclarationFragments::removeTrailingSemicolon ( )

Removes a trailing semicolon character if present.

Returns
a reference to the DeclarationFragments object itself after removing to chain up consecutive operations.

Definition at line 93 of file DeclarationFragments.cpp.

References DeclarationFragments(), clang::Last, and Text.

◆ replace()

DeclarationFragments & clang::extractapi::DeclarationFragments::replace ( std::string NewSpelling,
unsigned Position )
inline

Definition at line 202 of file DeclarationFragments.h.

References DeclarationFragments().


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