12#include "RConfigure.h"
22#include "clang/AST/Decl.h"
23#include "clang/AST/DeclTemplate.h"
25#include "cling/Interpreter/Interpreter.h"
26#include "cling/Interpreter/LookupHelper.h"
28#include "clang/Sema/Sema.h"
29#include "clang/Sema/Template.h"
30#include "clang/Frontend/CompilerInstance.h"
70 const clang::ClassTemplateSpecializationDecl *
templateCl = llvm::dyn_cast<clang::ClassTemplateSpecializationDecl>(
stlclass);
79 const clang::TemplateArgument &arg(
templateCl->getTemplateArgs().get(0) );
80 if (arg.getKind() == clang::TemplateArgument::Type) {
81 const clang::NamedDecl *
decl = arg.getAsType().getTypePtr()->getAsCXXRecordDecl();
86 ROOT::TMetaUtils::Warning(
"std::vector<bool>",
" is not fully supported yet!\nUse std::vector<char> or std::deque<bool> instead.\n");
110 for(
unsigned int i=0; i <
templateCl->getTemplateArgs().
size(); ++i) {
111 const clang::TemplateArgument &arg(
templateCl->getTemplateArgs().get(i) );
112 if (arg.getKind() == clang::TemplateArgument::Type) {
113 const clang::NamedDecl *
decl = arg.getAsType().getTypePtr()->getAsCXXRecordDecl();
117 const clang::CXXRecordDecl *
clxx = llvm::dyn_cast<clang::CXXRecordDecl>(
decl);
119 if (!
clxx->isCompleteDefinition()) {
133 const clang::ClassTemplateSpecializationDecl *
templateCl = llvm::dyn_cast<clang::ClassTemplateSpecializationDecl>(
stlclass);
143 const clang::TemplateArgument &arg(
templateCl->getTemplateArgs().get(0) );
144 if (arg.getKind() == clang::TemplateArgument::Type) {
145 const clang::NamedDecl *
decl = arg.getAsType().getTypePtr()->getAsCXXRecordDecl();
150 ROOT::TMetaUtils::Warning(
"std::vector<bool>",
" is not fully supported yet!\nUse std::vector<char> or std::deque<bool> instead.\n");
171 for(
unsigned int i=0; i <
templateCl->getTemplateArgs().
size(); ++i) {
172 const clang::TemplateArgument &arg(
templateCl->getTemplateArgs().get(i) );
173 if (arg.getKind() == clang::TemplateArgument::Type) {
174 const clang::NamedDecl *
decl = arg.getAsType().getTypePtr()->getAsCXXRecordDecl();
178 const clang::CXXRecordDecl *
clxx = llvm::dyn_cast<clang::CXXRecordDecl>(
decl);
180 if (!
clxx->isCompleteDefinition()) {
182 clxx = arg.getAsType().getTypePtr()->getAsCXXRecordDecl();
200 list_t::iterator iter;
201 for(iter = fList.begin(); iter != fList.end(); ++iter) {
207 const cling::Interpreter &
interp,
217 list_t::iterator iter;
218 for(iter = fList.begin(); iter != fList.end(); ++iter) {
219 const clang::CXXRecordDecl*
result;
221 if (!iter->GetRecordDecl()->getDefinition()) {
225 const cling::LookupHelper&
lh =
interp.getLookupHelper();
226 result = llvm::dyn_cast_or_null<clang::CXXRecordDecl>(
lh.findScope(iter->GetNormalizedName(),
227 cling::LookupHelper::NoDiagnostics,
231 if (!
result || !iter->GetRecordDecl()->getDefinition()) {
232 fprintf(
stderr,
"Error: incomplete definition for %s\n",iter->GetNormalizedName());
238 result = llvm::dyn_cast<clang::CXXRecordDecl>(iter->GetRecordDecl());
static Roo_reg_AGKInteg1D instance
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
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 result
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 type
void GenerateTClassFor(const char *requestedName, const clang::CXXRecordDecl *stlClass, const cling::Interpreter &interp, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt)
void WriteClassInit(std::ostream &strm, const cling::Interpreter &interp, const ROOT::TMetaUtils::TNormalizedCtxt &normCtxt, const ROOT::TMetaUtils::RConstructorTypes &, bool &needCollectionProxy, void(*emitStreamerInfo)(const char *))
ROOT::ESTLType STLKind(std::string_view type)
Converts STL container name to number.