Public Member Functions | |
StructuredBindingsCodeGenerator (OutputFormatHelper &_outputFormatHelper, std::string &&varName) | |
void | InsertArg (const DeclRefExpr *stmt) override |
void | InsertArg (const BindingDecl *stmt) override |
void | InsertDecompositionBindings (const DecompositionDecl &decompositionDeclStmt) |
Inserts the bindings of a decompositions declaration. More... | |
virtual void | InsertArg (const Decl *stmt) |
virtual void | InsertArg (const Stmt *stmt) |
![]() | |
constexpr | CodeGenerator (OutputFormatHelper &_outputFormatHelper) |
constexpr | CodeGenerator (OutputFormatHelper &_outputFormatHelper, LambdaInInitCapture lambdaInitCapture) |
constexpr | CodeGenerator (OutputFormatHelper &_outputFormatHelper, LambdaStackType &lambdaStack, ProcessingPrimaryTemplate processingPrimaryTemplate) |
virtual | ~CodeGenerator ()=default |
virtual void | InsertArg (const Decl *stmt) |
virtual void | InsertArg (const Stmt *stmt) |
template<typename T > | |
void | InsertTemplateArgs (const T &t) |
void | InsertTemplateArgs (const ClassTemplateSpecializationDecl &clsTemplateSpe) |
void | InsertFunctionNameWithReturnType (const FunctionDecl &decl, const CXXConstructorDecl *cxxInheritedCtorDecl=nullptr) |
Insert the code for a FunctionDecl. More... | |
template<typename T > | |
void | InsertTemplateArgs (const ArrayRef< T > &array) |
void | InsertAttributes (const Decl *) |
void | InsertAttributes (const Decl::attr_range &) |
void | InsertAttribute (const Attr &) |
void | InsertTemplateArg (const TemplateArgument &arg) |
STRONG_BOOL (TemplateParamsOnly) | |
void | InsertTemplateParameters (const TemplateParameterList &list, const TemplateParamsOnly templateParamsOnly=TemplateParamsOnly::No) |
! Skip template, type constraints and class/typename. More... | |
void | StartLifetimeScope () |
void | LifetimeAddExtended (const VarDecl *, const ValueDecl *) |
void | EndLifetimeScope () |
Protected Member Functions | |
virtual bool | ShowXValueCasts () const override |
Show casts to xvalues independent from the show all casts option. More... | |
![]() | |
STRONG_BOOL (LambdaInInitCapture) | |
STRONG_BOOL (ProcessingPrimaryTemplate) | |
constexpr | CodeGenerator (OutputFormatHelper &_outputFormatHelper, LambdaStackType &lambdaStack, LambdaInInitCapture lambdaInitCapture, ProcessingPrimaryTemplate processingPrimaryTemplate) |
! We do not want to transform a primary template which contains a Coroutine. More... | |
virtual bool | InsertVarDecl (const VarDecl *) |
virtual bool | SkipSpaceAfterVarDecl () |
virtual bool | InsertComma () |
virtual bool | InsertSemi () |
virtual bool | InsertNamespace () const |
void | HandleTemplateParameterPack (const ArrayRef< TemplateArgument > &args) |
void | HandleCompoundStmt (const CompoundStmt *stmt) |
void | HandleLocalStaticNonTrivialClass (const VarDecl *stmt) |
Show what is behind a local static variable. More... | |
virtual void | FormatCast (const std::string_view castName, const QualType &CastDestType, const Expr *SubExpr, const CastKind &castKind) |
void | ForEachArg (const auto &arguments, auto &&lambda) |
void | InsertArgWithParensIfNeeded (const Stmt *stmt) |
void | InsertSuffix (const QualType &type) |
void | InsertTemplateArg (const TemplateArgumentLoc &arg) |
bool | InsertLambdaStaticInvoker (const CXXMethodDecl *cxxMethodDecl) |
STRONG_BOOL (InsertInline) | |
void | InsertConceptConstraint (const llvm::SmallVectorImpl< const Expr * > &constraints, const InsertInline insertInline) |
void | InsertConceptConstraint (const FunctionDecl *tmplDecl) |
void | InsertConceptConstraint (const VarDecl *varDecl) |
void | InsertConceptConstraint (const TemplateParameterList &tmplDecl) |
void | InsertTemplate (const FunctionTemplateDecl *, bool withSpec) |
void | InsertQualifierAndNameWithTemplateArgs (const DeclarationName &declName, const auto *stmt) |
void | InsertQualifierAndName (const DeclarationName &declName, const NestedNameSpecifier *qualifier, const bool hasTemplateKeyword) |
void | InsertCXXMethodHeader (const CXXMethodDecl *stmt, OutputFormatHelper &initOutputFormatHelper) |
void | InsertTemplateGuardBegin (const FunctionDecl *stmt) |
void | InsertTemplateGuardEnd (const FunctionDecl *stmt) |
void | InsertTemplateSpecializationHeader (const Decl &) |
Insert template<> to introduce a template specialization. More... | |
void | InsertTemplateArgsObjectParam (const ArrayRef< TemplateArgument > &array) |
void | InsertTemplateArgsObjectParam (const TemplateParamObjectDecl ¶m) |
void | InsertNamespace (const NestedNameSpecifier *namespaceSpecifier) |
void | ParseDeclContext (const DeclContext *Ctx) |
STRONG_BOOL (SkipBody) | |
virtual void | InsertCXXMethodDecl (const CXXMethodDecl *stmt, SkipBody skipBody) |
void | InsertMethodBody (const FunctionDecl *stmt, const size_t posBeforeFunc) |
template<typename T > | |
void | InsertConstructorExpr (const T *stmt) |
Generalized function to insert either a CXXConstructExpr or CXXUnresolvedConstructExpr . More... | |
void | InsertCurlysIfRequired (const Stmt *stmt) |
Check whether or not this statement will add curlys or parentheses and add them only if required. More... | |
void | InsertIfOrSwitchInitVariables (same_as_any_of< const IfStmt, const SwitchStmt > auto *stmt) |
void | InsertInstantiationPoint (const SourceManager &sm, const SourceLocation &instLoc, std::string_view text={}) |
Inserts the instantiation point of a template. More... | |
STRONG_BOOL (AddNewLineAfter) | |
void | WrapInCompoundIfNeeded (const Stmt *stmt, const AddNewLineAfter addNewLineAfter) |
STRONG_BOOL (AddSpaceAtTheEnd) | |
void | WrapInParens (void_func_ref lambda, const AddSpaceAtTheEnd addSpaceAtTheEnd=AddSpaceAtTheEnd::No) |
void | WrapInParensIfNeeded (bool needsParens, void_func_ref lambda, const AddSpaceAtTheEnd addSpaceAtTheEnd=AddSpaceAtTheEnd::No) |
void | WrapInCurliesIfNeeded (bool needsParens, void_func_ref lambda, const AddSpaceAtTheEnd addSpaceAtTheEnd=AddSpaceAtTheEnd::No) |
void | WrapInCurlys (void_func_ref lambda, const AddSpaceAtTheEnd addSpaceAtTheEnd=AddSpaceAtTheEnd::No) |
void | WrapInParensOrCurlys (const BraceKind curlys, void_func_ref lambda, const AddSpaceAtTheEnd addSpaceAtTheEnd=AddSpaceAtTheEnd::No) |
void | UpdateCurrentPos (std::optional< size_t > &pos) |
void | HandleLambdaExpr (const LambdaExpr *stmt, LambdaHelper &lambdaHelper) |
bool | InsideDecltype () const |
STRONG_BOOL (SkipVarDecl) | |
STRONG_BOOL (UseCommaInsteadOfSemi) | |
STRONG_BOOL (NoEmptyInitList) | |
STRONG_BOOL (ShowConstantExprValue) | |
Additional Inherited Members | |
![]() | |
const Decl * | mLastDecl {} |
![]() | |
enum class | LambdaCallerType { VarDecl , InitCapture , CallExpr , OperatorCallExpr , MemberCallExpr , LambdaExpr , ReturnStmt , BinaryOperator , CXXMethodDecl , TemplateHead , Decltype } |
enum class | BraceKind { Parens , Curlys } |
using | LambdaStackType = StackList< class LambdaHelper > |
![]() | |
static std::string_view | GetBuiltinTypeSuffix (const BuiltinType::Kind &kind) |
static std::string | FillConstantArray (const ConstantArrayType *ct, const std::string &value, const uint64_t startAt) |
static std::string | GetValueOfValueInit (const QualType &t) |
![]() | |
LifetimeTracker | mLifeTimeTracker {} |
const Stmt * | mLastStmt {} |
const Expr * | mLastExpr {} |
bool | mProcessingVarDecl {} |
OutputFormatHelper & | mOutputFormatHelper |
LambdaStackType | mLambdaStackThis |
LambdaStackType & | mLambdaStack |
LambdaInInitCapture | mLambdaInitCapture {LambdaInInitCapture::No} |
ShowConstantExprValue | mShowConstantExprValue {ShowConstantExprValue::No} |
SkipVarDecl | mSkipVarDecl {SkipVarDecl::No} |
UseCommaInsteadOfSemi | mUseCommaInsteadOfSemi {UseCommaInsteadOfSemi::No} |
NoEmptyInitList | mNoEmptyInitList |
At least in case if a requires-clause containing T{} we don't want to get T{{}}. More... | |
const LambdaExpr * | mLambdaExpr {} |
std::optional< size_t > | mCurrentVarDeclPos {} |
std::optional< size_t > | mCurrentCallExprPos {} |
std::optional< size_t > | mCurrentReturnPos {} |
std::optional< size_t > | mCurrentFieldPos {} |
OutputFormatHelper * | mOutputFormatHelperOutside |
Helper output buffer for std::initializer_list expansion. More... | |
bool | mRequiresImplicitReturnZero {} |
Track whether this is a function with an imlpicit return 0. More... | |
bool | mSkipSemi {} |
ProcessingPrimaryTemplate | mProcessingPrimaryTemplate {} |
![]() | |
static constexpr auto | MAX_FILL_VALUES_FOR_ARRAYS |
static std::map< std::string, bool > | mSeenDecls {} |
Handling specialties for decomposition declarations.
Decompositions declarations have no name. This class stores the made up name and returns it each time the anonymous declaration is asked for a name.
Definition at line 141 of file CodeGenerator.cpp.
|
inline |
Definition at line 146 of file CodeGenerator.cpp.
|
override |
Definition at line 5163 of file CodeGenerator.cpp.
References clang::insights::details::GetName(), clang::insights::GetQualifiers(), clang::insights::GetTypeNameAsParameter(), hlpAssing, and RETURN_IF.
void clang::insights::CodeGenerator::InsertArg |
Definition at line 214 of file CodeGenerator.cpp.
|
override |
Definition at line 5212 of file CodeGenerator.cpp.
References clang::insights::details::GetName().
void clang::insights::CodeGenerator::InsertArg |
Definition at line 215 of file CodeGenerator.cpp.
void clang::insights::StructuredBindingsCodeGenerator::InsertDecompositionBindings | ( | const DecompositionDecl & | decompositionDeclStmt | ) |
Inserts the bindings of a decompositions declaration.
Definition at line 5204 of file CodeGenerator.cpp.
|
inlineoverrideprotectedvirtual |
Show casts to xvalues independent from the show all casts option.
This helps showing xvalue casts in structured bindings.
Reimplemented from clang::insights::CodeGenerator.
Definition at line 160 of file CodeGenerator.cpp.