summaryrefslogtreecommitdiffstats
path: root/www/clang-tutorial.html
diff options
context:
space:
mode:
Diffstat (limited to 'www/clang-tutorial.html')
-rw-r--r--www/clang-tutorial.html56
1 files changed, 56 insertions, 0 deletions
diff --git a/www/clang-tutorial.html b/www/clang-tutorial.html
new file mode 100644
index 0000000..0e17046
--- /dev/null
+++ b/www/clang-tutorial.html
@@ -0,0 +1,56 @@
+<!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>
OpenPOWER on IntegriCloud