<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Clang - Quick Tutorial</title>
  <link type="text/css" rel="stylesheet" href="menu.css" />
  <link type="text/css" rel="stylesheet" href="content.css" />
</head>
<body>

<!--#include virtual="menu.html.incl"-->

<div id="content">

<h1>Tutorial</h1>

  <p>Invoking the BoostCon tool:</p>
  <pre>
$ clang -cc1 -boostcon t.cpp
</pre>

  <p>Teach the BoostCon action to identify and print C++ classes:</p>
  <pre>
bool VisitCXXRecordDecl(CXXRecordDecl *D) {
  std::cout &lt;&lt; D-&gt;getNameAsString() 
    &lt;&lt; '\n';
  return false;
}
</pre>

  <p>Walk and print base classes of a class:</p>
  <pre>
for(CXXRecordDecl::base_class_iterator 
      B = D-&gt;bases_begin(), BEnd = D-&gt;bases_end();
      B != BEnd; ++B) {
  QualType BaseType = B-&gt;getType();
  std::cout &lt;&lt; "  " &lt;&lt; BaseType.getAsString() 
    &lt;&lt; '\n';
}
</pre>

  <p>Retrieve the C++ class declaration from a base type:</p>
  <pre>
if (const RecordType *RTy
             = BaseType-&gt;getAs&lt;RecordType&gt;()) { 
  RecordDecl *Base = RTy-&gt;getDecl();
  if (CXXRecordDecl *BaseCXX
        = dyn_cast&lt;CXXRecordDecl&gt;(Base)) {
  
  }
}
</pre>
</div>
</body>
</html>
