# 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)) {

      }
    }