29#include "cling/Interpreter/Interpreter.h"
30#include "clang/AST/ASTContext.h"
31#include "clang/AST/Decl.h"
32#include "clang/AST/Expr.h"
33#include "clang/AST/ExprCXX.h"
34#include "clang/AST/PrettyPrinter.h"
35#include "clang/AST/Type.h"
36#include "clang/Sema/Sema.h"
38#include "llvm/Support/Casting.h"
39#include "llvm/Support/raw_ostream.h"
54 int numParams =
static_cast<int>(FD->getNumParams());
55 return (
fIdx > -1) && (
fIdx < numParams);
71 const clang::ParmVarDecl *pvd =
GetDecl();
72 if (pvd->hasDefaultArg() || pvd->hasInheritedDefaultArg()) {
75 clang::QualType qt = pvd->getOriginalType().getCanonicalType();
85 const clang::ParmVarDecl *pvd =
GetDecl();
87 if (pvd->hasUninstantiatedDefaultArg()) {
89 cling::Interpreter::PushTransactionRAII RAII(
fInterp);
91 fInterp->getSema().BuildCXXDefaultArgExpr(clang::SourceLocation(),
92 const_cast<clang::FunctionDecl*
>(fd),
93 const_cast<clang::ParmVarDecl*
>(pvd));
95 const clang::Expr *expr =
nullptr;
96 if (pvd->hasUninstantiatedDefaultArg()) {
98 expr = pvd->getUninstantiatedDefaultArg();
100 expr = pvd->getDefaultArg();
102 clang::ASTContext &context = pvd->getASTContext();
103 clang::PrintingPolicy policy(context.getPrintingPolicy());
104 TTHREAD_TLS_DECL( std::string, buf );
106 llvm::raw_string_ostream out(buf);
111 bool implicitInit =
false;
112 if (
const clang::CXXConstructExpr *construct =
113 llvm::dyn_cast<clang::CXXConstructExpr>(expr)) {
114 implicitInit = (pvd->getInitStyle() == clang::VarDecl::CallInit) &&
115 (construct->getNumArgs() == 0) &&
116 !construct->isListInitialization();
119 if (pvd->getInitStyle() == clang::VarDecl::CallInit) {
122 else if (pvd->getInitStyle() == clang::VarDecl::CInit) {
125 expr->printPretty(out,
nullptr, policy, 0);
126 if (pvd->getInitStyle() == clang::VarDecl::CallInit) {
140 const clang::ParmVarDecl *pvd =
GetDecl();
141 clang::QualType qt = pvd->getOriginalType();
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t property
const clang::Decl * fDecl
long Property(long property, clang::QualType &qt) const
virtual const clang::Decl * GetDecl() const
bool IsValid() const override
TClingMethodArgInfo(cling::Interpreter *interp)
cling::Interpreter * fInterp
const clang::ParmVarDecl * GetDecl() const override
const char * DefaultValue() const
const TClingTypeInfo * Type() const
const char * TypeName() const
Emulation of the CINT MethodInfo class.
Emulation of the CINT TypeInfo class.
const char * Name() const override