30#include "cling/Interpreter/Interpreter.h" 
   31#include "cling/Interpreter/LookupHelper.h" 
   32#include "cling/Utils/AST.h" 
   34#include "clang/AST/ASTContext.h" 
   35#include "clang/AST/DeclCXX.h" 
   36#include "clang/AST/Type.h" 
   37#include "clang/AST/PrettyPrinter.h" 
   38#include "clang/Frontend/CompilerInstance.h" 
   60              "TClingTypeInfo::Init(name): looking up clang type: %s", 
name);
 
   62   const cling::LookupHelper& lh = 
fInterp->getLookupHelper();
 
   63   clang::QualType QT = lh.findType(
name,
 
   64                                    gDebug > 5 ? cling::LookupHelper::WithDiagnostics
 
   65                                    : cling::LookupHelper::NoDiagnostics);
 
   69                 "TClingTypeInfo::Init(name): clang type not found: %s", 
name);
 
   73                       gDebug > 5 ? cling::LookupHelper::WithDiagnostics
 
   74                       : cling::LookupHelper::NoDiagnostics);
 
   78                    "TClingTypeInfo::Init(name):  " 
   79                    "clang type not found name: %s\n", buf.c_str());
 
   86                    "TClingTypeInfo::Init(name): found clang type name: %s\n",
 
   95                 "TClingTypeInfo::Init(name): clang type found: %s\n", 
name);
 
  108   TTHREAD_TLS_DECL( std::string, buf);
 
  124   if (llvm::isa<clang::TypedefType>(*
fQualType)) {
 
  127   clang::QualType QT = 
fQualType.getCanonicalType();
 
  129   const clang::TagType *tagQT = llvm::dyn_cast<clang::TagType>(QT.getTypePtr());
 
  132      const clang::TagDecl *TD = llvm::dyn_cast<clang::TagDecl>(tagQT->getDecl());
 
  139         const clang::CXXRecordDecl *CRD =
 
  140            llvm::dyn_cast<clang::CXXRecordDecl>(TD);
 
  143         if (CRD->isClass()) {
 
  146         else if (CRD->isStruct()) {
 
  149         else if (CRD->isUnion()) {
 
  153         cling::Interpreter::PushTransactionRAII RAII(
fInterp);
 
  154         if (CRD->isThisDeclarationADefinition() && CRD->isAbstract()) {
 
  171   clang::QualType QT = 
fQualType.getCanonicalType();
 
  173      if (QT->isArrayType()) {
 
  174         QT = llvm::cast<clang::ArrayType>(QT)->getElementType();
 
  177      else if (QT->isReferenceType()) {
 
  179         QT = llvm::cast<clang::ReferenceType>(QT)->getPointeeType();
 
  182      else if (QT->isPointerType()) {
 
  184         QT = llvm::cast<clang::PointerType>(QT)->getPointeeType();
 
  187      else if (QT->isMemberPointerType()) {
 
  188         QT = llvm::cast<clang::MemberPointerType>(QT)->getPointeeType();
 
  219   if (
const clang::RecordType *RT = 
fQualType->getAs<clang::RecordType>()) {
 
  220      if (!RT->getDecl()->getDefinition()) {
 
  225   clang::ASTContext &Context = 
fInterp->getCI()->getASTContext();
 
  227   clang::CharUnits::QuantityType Quantity =
 
  228      Context.getTypeSizeInChars(
fQualType).getQuantity();
 
  229   return static_cast<int>(Quantity);
 
  242   TTHREAD_TLS_DECL( std::string, buf);
 
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
 
R__EXTERN TVirtualMutex * gInterpreterMutex
 
#define R__LOCKGUARD(mutex)
 
long Property(long property, clang::QualType &qt) const
 
clang::QualType fQualType
 
std::string NormalizedName(const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
Return the normalized name of the type (i.e.
 
const char * Name() const override
 
TClingTypeInfo(cling::Interpreter *interp)
 
cling::Interpreter * fInterp
 
bool IsValid() const override
 
void Init(const char *name)
 
const char * TrueName(const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt) const
Return the normalized name of the type (i.e.
 
std::string InsertStd(const char *tname)