forked from OSchip/llvm-project
Re-committed AddMethodToCXXRecordType, now that
the bug I introduced to ClangASTContext is resolved. llvm-svn: 114157
This commit is contained in:
parent
7eba1bf0b7
commit
61da09bbc8
|
@ -182,6 +182,24 @@ public:
|
|||
bitfield_bit_size);
|
||||
}
|
||||
|
||||
static bool
|
||||
AddMethodToCXXRecordType (clang::ASTContext *ast_context,
|
||||
void *record_clang_type,
|
||||
const char *name,
|
||||
void *method_type);
|
||||
|
||||
bool
|
||||
AddMethodToCXXRecordType (void *record_clang_type,
|
||||
const char *name,
|
||||
void *method_type)
|
||||
|
||||
{
|
||||
return ClangASTContext::AddMethodToCXXRecordType(getASTContext(),
|
||||
record_clang_type,
|
||||
name,
|
||||
method_type);
|
||||
}
|
||||
|
||||
bool
|
||||
FieldIsBitfield (clang::FieldDecl* field,
|
||||
uint32_t& bitfield_bit_size);
|
||||
|
|
|
@ -803,6 +803,57 @@ ClangASTContext::CreateRecordType (const char *name, int kind, DeclContext *decl
|
|||
return ast_context->getTagDeclType(decl).getAsOpaquePtr();
|
||||
}
|
||||
|
||||
bool
|
||||
ClangASTContext::AddMethodToCXXRecordType
|
||||
(
|
||||
clang::ASTContext *ast_context,
|
||||
void *record_clang_type,
|
||||
const char *name,
|
||||
void *method_type
|
||||
)
|
||||
{
|
||||
if (!record_clang_type || !method_type || !name)
|
||||
return false;
|
||||
|
||||
assert(ast_context);
|
||||
|
||||
IdentifierTable *identifier_table = &ast_context->Idents;
|
||||
|
||||
assert(identifier_table);
|
||||
|
||||
QualType record_qual_type(QualType::getFromOpaquePtr(record_clang_type));
|
||||
clang::Type *record_type(record_qual_type.getTypePtr());
|
||||
|
||||
if (!record_type)
|
||||
return false;
|
||||
|
||||
RecordType *record_recty(dyn_cast<RecordType>(record_type));
|
||||
|
||||
if (!record_recty)
|
||||
return false;
|
||||
|
||||
RecordDecl *record_decl = record_recty->getDecl();
|
||||
|
||||
if (!record_decl)
|
||||
return false;
|
||||
|
||||
CXXRecordDecl *cxx_record_decl = dyn_cast<CXXRecordDecl>(record_decl);
|
||||
|
||||
if (!cxx_record_decl)
|
||||
return false;
|
||||
|
||||
CXXMethodDecl *cxx_method_decl = CXXMethodDecl::Create(*ast_context,
|
||||
cxx_record_decl,
|
||||
SourceLocation(),
|
||||
DeclarationName(&identifier_table->get(name)),
|
||||
QualType::getFromOpaquePtr(method_type),
|
||||
NULL);
|
||||
|
||||
cxx_record_decl->addDecl(cxx_method_decl);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
ClangASTContext::AddFieldToRecordType
|
||||
(
|
||||
|
|
Loading…
Reference in New Issue