Tutorial
Invoking the BoostCon tool:
$ clang -cc1 -boostcon t.cpp
Teach the BoostCon action to identify and print C++ classes:
bool VisitCXXRecordDecl(CXXRecordDecl *D) { std::cout << D->getNameAsString() << '\n'; return false; }
Walk and print base classes of a class:
for(CXXRecordDecl::base_class_iterator B = D->bases_begin(), BEnd = D->bases_end(); B != BEnd; ++B) { QualType BaseType = B->getType(); std::cout << " " << BaseType.getAsString() << '\n'; }
Retrieve the C++ class declaration from a base type:
if (const RecordType *RTy = BaseType->getAs<RecordType>()) { RecordDecl *Base = RTy->getDecl(); if (CXXRecordDecl *BaseCXX = dyn_cast<CXXRecordDecl>(Base)) { } }