[www-releases] r225843 - Add documentation for 3.5.1

Tom Stellard thomas.stellard at amd.com
Tue Jan 13 14:55:45 PST 2015


Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RecursiveASTVisitor_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RecursiveASTVisitor_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RecursiveASTVisitor_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RecursiveASTVisitor_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2484 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: RecursiveASTVisitor.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_6152e82a4845f7e2a2888050f43c34d1.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">RecursiveASTVisitor.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="RecursiveASTVisitor_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- RecursiveASTVisitor.h - Recursive AST Visitor ----------*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the RecursiveASTVisitor interface, which recursively</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  traverses the entire AST.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#ifndef LLVM_CLANG_AST_RECURSIVEASTVISITOR_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_AST_RECURSIVEASTVISITOR_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="Decl_8h.html">clang/AST/Decl.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclCXX_8h.html" title="Defines the C++ Decl subclasses, other than those for templates (found in DeclTemplate.h) and friends (in DeclFriend.h).">clang/AST/DeclCXX.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="DeclFriend_8h.html">clang/AST/DeclFriend.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="DeclObjC_8h.html">clang/AST/DeclObjC.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="DeclOpenMP_8h.html" title="This file defines OpenMP nodes for declarative directives.">clang/AST/DeclOpenMP.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="DeclTemplate_8h.html" title="Defines the C++ template declaration subclasses.">clang/AST/DeclTemplate.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Expr_8h.html">clang/AST/Expr.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="ExprCXX_8h.html" title="Defines the clang::Expr interface and subclasses for C++ expressions.">clang/AST/ExprCXX.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="ExprObjC_8h.html">clang/AST/ExprObjC.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="NestedNameSpecifier_8h.html">clang/AST/NestedNameSpecifier.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "<a class="code" href="Stmt_8h.html">clang/AST/Stmt.h</a>"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "<a class="code" href="StmtCXX_8h.html">clang/AST/StmtCXX.h</a>"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "<a class="code" href="StmtObjC_8h.html" title="Defines the Objective-C statement AST node classes.">clang/AST/StmtObjC.h</a>"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "<a class="code" href="StmtOpenMP_8h.html" title="This file defines OpenMP AST classes for executable directives and clauses.">clang/AST/StmtOpenMP.h</a>"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "<a class="code" href="TemplateBase_8h.html">clang/AST/TemplateBase.h</a>"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "<a class="code" href="TemplateName_8h.html">clang/AST/TemplateName.h</a>"</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#include "<a class="code" href="TypeLoc_8h.html" title="Defines the clang::TypeLoc interface and its subclasses.">clang/AST/TypeLoc.h</a>"</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">// The following three macros are used for meta programming.  The code</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">// using them is responsible for defining macro OPERATOR().</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">// All unary operators.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a717c5d0ce8fdb1542f14a8075ccec5a3">   40</a></span> <span class="preprocessor">#define UNARYOP_LIST()                          \</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor">  OPERATOR(PostInc)   OPERATOR(PostDec)         \</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor">  OPERATOR(PreInc)    OPERATOR(PreDec)          \</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="preprocessor">  OPERATOR(AddrOf)    OPERATOR(Deref)           \</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="preprocessor">  OPERATOR(Plus)      OPERATOR(Minus)           \</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor">  OPERATOR(Not)       OPERATOR(LNot)            \</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="preprocessor">  OPERATOR(Real)      OPERATOR(Imag)            \</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="preprocessor">  OPERATOR(Extension)</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">// All binary operators (excluding compound assign operators).</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#abf4105aa80247d435cf07e9f9578fb37">   50</a></span> <span class="preprocessor">#define BINOP_LIST() \</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="preprocessor">  OPERATOR(PtrMemD)              OPERATOR(PtrMemI)    \</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="preprocessor">  OPERATOR(Mul)   OPERATOR(Div)  OPERATOR(Rem)        \</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="preprocessor">  OPERATOR(Add)   OPERATOR(Sub)  OPERATOR(Shl)        \</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor">  OPERATOR(Shr)                                       \</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="preprocessor">                                                      \</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="preprocessor">  OPERATOR(LT)    OPERATOR(GT)   OPERATOR(LE)         \</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="preprocessor">  OPERATOR(GE)    OPERATOR(EQ)   OPERATOR(NE)         \</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="preprocessor">  OPERATOR(And)   OPERATOR(Xor)  OPERATOR(Or)         \</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="preprocessor">  OPERATOR(LAnd)  OPERATOR(LOr)                       \</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="preprocessor">                                                      \</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="preprocessor">  OPERATOR(Assign)                                    \</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="preprocessor">  OPERATOR(Comma)</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">// All compound assign operators.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a24b18378ee9328cb525150e1886107d1">   65</a></span> <span class="preprocessor">#define CAO_LIST()                                                      \</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="preprocessor">  OPERATOR(Mul) OPERATOR(Div) OPERATOR(Rem) OPERATOR(Add) OPERATOR(Sub) \</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="preprocessor">  OPERATOR(Shl) OPERATOR(Shr) OPERATOR(And) OPERATOR(Or)  OPERATOR(Xor)</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">// A helper macro to implement short-circuiting when recursing.  It</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">// invokes CALL_EXPR, which must be a method call, on the derived</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">// object (s.t. a user of RecursiveASTVisitor can override the method</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">// in CALL_EXPR).</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#ae878ccdb81d0f1de95a6d98b83a64e58">   75</a></span> <span class="preprocessor">#define TRY_TO(CALL_EXPR) \</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="preprocessor">  do { if (!getDerived().CALL_EXPR) return false; } while (0)</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">/// \brief A class that does preorder depth-first traversal on the</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">/// entire Clang AST and visits each node.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/// This class performs three distinct tasks:</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">///   1. traverse the AST (i.e. go to each node);</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">///   2. at a given node, walk up the class hierarchy, starting from</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">///      the node's dynamic type, until the top-most class (e.g. Stmt,</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">///      Decl, or Type) is reached.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">///   3. given a (node, class) combination, where 'class' is some base</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">///      class of the dynamic type of 'node', call a user-overridable</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">///      function to actually visit the node.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">/// These tasks are done by three groups of methods, respectively:</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">///   1. TraverseDecl(Decl *x) does task #1.  It is the entry point</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">///      for traversing an AST rooted at x.  This method simply</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">///      dispatches (i.e. forwards) to TraverseFoo(Foo *x) where Foo</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">///      is the dynamic type of *x, which calls WalkUpFromFoo(x) and</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">///      then recursively visits the child nodes of x.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">///      TraverseStmt(Stmt *x) and TraverseType(QualType x) work</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">///      similarly.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment">///   2. WalkUpFromFoo(Foo *x) does task #2.  It does not try to visit</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">///      any child node of x.  Instead, it first calls WalkUpFromBar(x)</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">///      where Bar is the direct parent class of Foo (unless Foo has</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">///      no parent), and then calls VisitFoo(x) (see the next list item).</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">///   3. VisitFoo(Foo *x) does task #3.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">/// These three method groups are tiered (Traverse* > WalkUpFrom* ></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">/// Visit*).  A method (e.g. Traverse*) may call methods from the same</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">/// tier (e.g. other Traverse*) or one tier lower (e.g. WalkUpFrom*).</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">/// It may not call methods from a higher tier.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">/// Note that since WalkUpFromFoo() calls WalkUpFromBar() (where Bar</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">/// is Foo's super class) before calling VisitFoo(), the result is</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment">/// that the Visit*() methods for a given node are called in the</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment">/// top-down order (e.g. for a node of type NamespaceDecl, the order will</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">/// be VisitDecl(), VisitNamedDecl(), and then VisitNamespaceDecl()).</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">/// This scheme guarantees that all Visit*() calls for the same AST</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">/// node are grouped together.  In other words, Visit*() methods for</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">/// different nodes are never interleaved.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">/// Clients of this visitor should subclass the visitor (providing</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">/// themselves as the template argument, using the curiously recurring</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">/// template pattern) and override any of the Traverse*, WalkUpFrom*,</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">/// and Visit* methods for declarations, types, statements,</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">/// expressions, or other AST nodes where the visitor should customize</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">/// behavior.  Most users only need to override Visit*.  Advanced</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">/// users may override Traverse* and WalkUpFrom* to implement custom</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">/// traversal strategies.  Returning false from one of these overridden</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">/// functions will abort the entire traversal.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">/// By default, this visitor tries to visit every part of the explicit</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">/// source code exactly once.  The default policy towards templates</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">/// is to descend into the 'pattern' class or function body, not any</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">/// explicit or implicit instantiations.  Explicit specializations</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment">/// are still visited, and the patterns of partial specializations</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">/// are visited separately.  This behavior can be changed by</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">/// overriding shouldVisitTemplateInstantiations() in the derived class</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">/// to return true, in which case all known implicit and explicit</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">/// instantiations will be visited at the same time as the pattern</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">/// from which they were produced.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00140"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html">  140</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1RecursiveASTVisitor.html" title="A class that does preorder depth-first traversal on the entire Clang AST and visits each node...">RecursiveASTVisitor</a> {</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// \brief Return a reference to the derived class.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf">  143</a></span> <span class="comment"></span>  Derived &<a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>() { <span class="keywordflow">return</span> *<span class="keyword">static_cast<</span>Derived*<span class="keyword">></span>(<span class="keyword">this</span>); }</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment"></span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">  /// \brief Return whether this visitor should recurse into</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">  /// template instantiations.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#ab3f2f514d030ebfffe6742a66eb31363">  147</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ab3f2f514d030ebfffe6742a66eb31363" title="Return whether this visitor should recurse into template instantiations.">shouldVisitTemplateInstantiations</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment"></span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  /// \brief Return whether this visitor should recurse into the types of</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">  /// TypeLocs.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a9530f6bdf05a40b9ededce53942567af">  151</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a9530f6bdf05a40b9ededce53942567af" title="Return whether this visitor should recurse into the types of TypeLocs.">shouldWalkTypesOfTypeLocs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment"></span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">  /// \brief Return whether this visitor should recurse into implicit</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">  /// code, e.g., implicit constructors and destructors.</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a19ecff7d4a78dc36e2003adf64d7ccc0">  155</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a19ecff7d4a78dc36e2003adf64d7ccc0" title="Return whether this visitor should recurse into implicit code, e.g., implicit constructors and destru...">shouldVisitImplicitCode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment"></span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">  /// \brief Return whether \param S should be traversed using data recursion</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">  /// to avoid a stack overflow with extreme cases.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a6c8d5a7de104d3d165d0ddfbf4d09152">  159</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a6c8d5a7de104d3d165d0ddfbf4d09152" title="Return whether.">shouldUseDataRecursionFor</a>(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     <span class="keywordflow">return</span> isa<BinaryOperator>(<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) || isa<UnaryOperator>(S) ||</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>            isa<CaseStmt>(<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) || isa<CXXOperatorCallExpr>(S);</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   }</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment"></span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">  /// \brief Recursively visit a statement or expression, by</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">  /// dispatching to Traverse*() based on the argument's dynamic type.</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment">  /// \returns false if the visitation was terminated early, true</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">  /// otherwise (including when the argument is NULL).</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ac74e5ed6ab3568f7ba8819507e768050" title="Recursively visit a statement or expression, by dispatching to Traverse*() based on the argument's dy...">TraverseStmt</a>(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="comment"></span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment">  /// \brief Recursively visit a type, by dispatching to</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">  /// Traverse*Type() based on the argument's getTypeClass() property.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">  /// \returns false if the visitation was terminated early, true</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">  /// otherwise (including when the argument is a Null type).</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a196832d93cdc2d4f9b01a423132327cd" title="Recursively visit a type, by dispatching to Traverse*Type() based on the argument's getTypeClass() pr...">TraverseType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T);</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment"></span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">  /// \brief Recursively visit a type with location, by dispatching to</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">  /// Traverse*TypeLoc() based on the argument type's getTypeClass() property.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">  /// \returns false if the visitation was terminated early, true</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  /// otherwise (including when the argument is a Null type location).</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99d5987a8d711ede9748818e7a61aec4" title="Recursively visit a type with location, by dispatching to Traverse*TypeLoc() based on the argument ty...">TraverseTypeLoc</a>(<a class="code" href="classclang_1_1TypeLoc.html" title="Base wrapper for a particular "section" of type source info.">TypeLoc</a> TL);</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment"></span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// \brief Recursively visit a declaration, by dispatching to</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// Traverse*Decl() based on the argument's dynamic type.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">  /// \returns false if the visitation was terminated early, true</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">  /// otherwise (including when the argument is NULL).</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99a9e941a07a015bc18d3613c5aa0914" title="Recursively visit a declaration, by dispatching to Traverse*Decl() based on the argument's dynamic ty...">TraverseDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment"></span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment">  /// \brief Recursively visit a C++ nested-name-specifier.</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a7d497c4e947a1447e31f88655168b1ea" title="Recursively visit a C++ nested-name-specifier.">TraverseNestedNameSpecifier</a>(<a class="code" href="classclang_1_1NestedNameSpecifier.html" title="Represents a C++ nested name specifier, such as "\::std::vector<int>::".">NestedNameSpecifier</a> *NNS);</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment"></span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">  /// \brief Recursively visit a C++ nested-name-specifier with location</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">  /// information.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a7002972a59828e56b9a23381b677c770" title="Recursively visit a C++ nested-name-specifier with location information.">TraverseNestedNameSpecifierLoc</a>(<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> NNS);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment"></span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">  /// \brief Recursively visit a name with its location information.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ad07c394f871283a8db60a79ce350781c" title="Recursively visit a name with its location information.">TraverseDeclarationNameInfo</a>(<a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> NameInfo);</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment"></span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">  /// \brief Recursively visit a template name and dispatch to the</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  /// appropriate method.</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a74b759ebd31b4027933b7146b9ad66dc" title="Recursively visit a template name and dispatch to the appropriate method.">TraverseTemplateName</a>(<a class="code" href="classclang_1_1TemplateName.html" title="Represents a C++ template name within the type system.">TemplateName</a> Template);</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment"></span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// \brief Recursively visit a template argument and dispatch to the</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">  /// appropriate method for the argument type.</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment"></span>  <span class="comment">// FIXME: migrate callers to TemplateArgumentLoc instead.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0ff5d227adc1ba7eddf4883073fd6c31" title="Recursively visit a template argument and dispatch to the appropriate method for the argument type...">TraverseTemplateArgument</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgument.html" title="Represents a template argument within a class template specialization.">TemplateArgument</a> &Arg);</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment"></span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">  /// \brief Recursively visit a template argument location and dispatch to the</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">  /// appropriate method for the argument type.</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a44ab9795569ae3565143994d4996b8b3" title="Recursively visit a template argument location and dispatch to the appropriate method for the argumen...">TraverseTemplateArgumentLoc</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentLoc.html">TemplateArgumentLoc</a> &ArgLoc);</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment"></span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">  /// \brief Recursively visit a set of template arguments.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">  /// This can be overridden by a subclass, but it's not expected that</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  /// will be needed -- this visitor always dispatches to another.</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment"></span>  <span class="comment">// FIXME: take a TemplateArgumentLoc* (or TemplateArgumentListInfo) instead.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a234cded0c7991480f86d89ea6868fc06" title="Recursively visit a set of template arguments. This can be overridden by a subclass, but it's not expected that will be needed – this visitor always dispatches to another.">TraverseTemplateArguments</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgument.html" title="Represents a template argument within a class template specialization.">TemplateArgument</a> *<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                                  <span class="keywordtype">unsigned</span> NumArgs);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment"></span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">  /// \brief Recursively visit a constructor initializer.  This</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">  /// automatically dispatches to another visitor for the initializer</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">  /// expression, but not for the name of the initializer, so may</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">  /// be overridden for clients that need access to the name.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#afaa8c5454a4e7ac33b2852345eea474e" title="Recursively visit a constructor initializer. This automatically dispatches to another visitor for the...">TraverseConstructorInitializer</a>(<a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *Init);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment"></span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// \brief Recursively visit a lambda capture.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ae278925fa17a83c37cb823284bcb719a" title="Recursively visit a lambda capture.">TraverseLambdaCapture</a>(<a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *LE, <span class="keyword">const</span> <a class="code" href="classclang_1_1LambdaExpr_1_1Capture.html" title="Describes the capture of a variable or of this, or of a C++1y init-capture.">LambdaExpr::Capture</a> *C);</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment"></span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">  /// \brief Recursively visit the body of a lambda expression.</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">  /// This provides a hook for visitors that need more context when visiting</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">  /// \c LE->getBody().</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> <span class="comment">  /// \returns false if the visitation was terminated early, true otherwise.</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ae03e9cdadc00ef84802bd0386d8e8f18" title="Recursively visit the body of a lambda expression.">TraverseLambdaBody</a>(<a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *LE);</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="comment">// ---- Methods on Stmts ----</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <span class="comment">// Declare Traverse*() for all concrete Stmt classes.</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a2bef40951de56b219654bc37304b03d5">  260</a></span> <span class="preprocessor">#define ABSTRACT_STMT(STMT)</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="preprocessor"></span><span class="preprocessor">#define STMT(CLASS, PARENT)                                     \</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="preprocessor">  bool Traverse##CLASS(CLASS *S);</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>   <span class="comment">// The above header #undefs ABSTRACT_STMT and STMT upon exit.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="comment">// Define WalkUpFrom*() and empty Visit*() for all Stmt classes.</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99b720996ae961d64965f05e8236e720">  267</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99b720996ae961d64965f05e8236e720">WalkUpFromStmt</a>(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>().VisitStmt(S); }</div>
+<div class="line"><a name="l00268"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0559721664d24d473fb1363814899dab">  268</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0559721664d24d473fb1363814899dab">VisitStmt</a>(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00269"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a66a95a7b487036cbbd684f62a41dd3c9">  269</a></span> <span class="preprocessor">#define STMT(CLASS, PARENT)                                     \</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="preprocessor">  bool WalkUpFrom##CLASS(CLASS *S) {                            \</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="preprocessor">    TRY_TO(WalkUpFrom##PARENT(S));                              \</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="preprocessor">    TRY_TO(Visit##CLASS(S));                                    \</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="preprocessor">  bool Visit##CLASS(CLASS *S) { return true; }</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   <span class="comment">// Define Traverse*(), WalkUpFrom*(), and Visit*() for unary</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="comment">// operator methods.  Unary operators are not classes in themselves</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="comment">// (they're all opcodes in UnaryOperator) but do have visitors.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> <span class="preprocessor">#define OPERATOR(NAME)                                           \</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="preprocessor">  bool TraverseUnary##NAME(UnaryOperator *S) {                  \</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="preprocessor">    TRY_TO(WalkUpFromUnary##NAME(S));                           \</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="preprocessor">    TRY_TO(TraverseStmt(S->getSubExpr()));                      \</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="preprocessor">  bool WalkUpFromUnary##NAME(UnaryOperator *S) {                \</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="preprocessor">    TRY_TO(WalkUpFromUnaryOperator(S));                         \</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> <span class="preprocessor">    TRY_TO(VisitUnary##NAME(S));                                \</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> <span class="preprocessor">  bool VisitUnary##NAME(UnaryOperator *S) { return true; }</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <a class="code" href="RecursiveASTVisitor_8h.html#a717c5d0ce8fdb1542f14a8075ccec5a3">UNARYOP_LIST</a>()</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="comment">// Define Traverse*(), WalkUpFrom*(), and Visit*() for binary</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="comment">// operator methods.  Binary operators are not classes in themselves</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="comment">// (they're all opcodes in BinaryOperator) but do have visitors.</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a63253821919211449e41bfdcf2dfa093">  300</a></span> <span class="preprocessor">#define GENERAL_BINOP_FALLBACK(NAME, BINOP_TYPE)                \</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="preprocessor">  bool TraverseBin##NAME(BINOP_TYPE *S) {                       \</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> <span class="preprocessor">    TRY_TO(WalkUpFromBin##NAME(S));                             \</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="preprocessor">    TRY_TO(TraverseStmt(S->getLHS()));                          \</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="preprocessor">    TRY_TO(TraverseStmt(S->getRHS()));                          \</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> <span class="preprocessor">  bool WalkUpFromBin##NAME(BINOP_TYPE *S) {                     \</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> <span class="preprocessor">    TRY_TO(WalkUpFrom##BINOP_TYPE(S));                          \</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> <span class="preprocessor">    TRY_TO(VisitBin##NAME(S));                                  \</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="preprocessor">  bool VisitBin##NAME(BINOP_TYPE *S) { return true; }</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="preprocessor">#define OPERATOR(NAME) GENERAL_BINOP_FALLBACK(NAME, BinaryOperator)</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> <span class="preprocessor"></span>  <a class="code" href="RecursiveASTVisitor_8h.html#abf4105aa80247d435cf07e9f9578fb37">BINOP_LIST</a>()</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>   <span class="comment">// Define Traverse*(), WalkUpFrom*(), and Visit*() for compound</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   <span class="comment">// assignment methods.  Compound assignment operators are not</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   <span class="comment">// classes in themselves (they're all opcodes in</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>   <span class="comment">// CompoundAssignOperator) but do have visitors.</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#aff8b43cf5395c341c427de7a255e7d36">  322</a></span> <span class="preprocessor">#define OPERATOR(NAME) \</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> <span class="preprocessor">  GENERAL_BINOP_FALLBACK(NAME##Assign, CompoundAssignOperator)</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <a class="code" href="RecursiveASTVisitor_8h.html#a24b18378ee9328cb525150e1886107d1">CAO_LIST</a>()</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> <span class="preprocessor"></span><span class="preprocessor">#undef GENERAL_BINOP_FALLBACK</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="comment">// ---- Methods on Types ----</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>   <span class="comment">// FIXME: revamp to take TypeLoc's rather than Types.</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>   <span class="comment">// Declare Traverse*() for all concrete Type classes.</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html">  333</a></span> <span class="preprocessor">#define ABSTRACT_TYPE(CLASS, BASE)</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="preprocessor"></span><span class="preprocessor">#define TYPE(CLASS, BASE) \</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="preprocessor">  bool Traverse##CLASS##Type(CLASS##Type *T);</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeNodes.def"</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>   <span class="comment">// The above header #undefs ABSTRACT_TYPE and TYPE upon exit.</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> </div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>   <span class="comment">// Define WalkUpFrom*() and empty Visit*() for all Type classes.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a4fa84d7e2c2547f9ae6abf02f392e8d1">  340</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a4fa84d7e2c2547f9ae6abf02f392e8d1">WalkUpFromType</a>(<a class="code" href="classclang_1_1Type.html">Type</a> *T) { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>().VisitType(T); }</div>
+<div class="line"><a name="l00341"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a35d2b101d32d0b0b37955179c5c74abf">  341</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a35d2b101d32d0b0b37955179c5c74abf">VisitType</a>(<a class="code" href="classclang_1_1Type.html">Type</a> *T) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="preprocessor">#define TYPE(CLASS, BASE)                                       \</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="preprocessor">  bool WalkUpFrom##CLASS##Type(CLASS##Type *T) {                \</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="preprocessor">    TRY_TO(WalkUpFrom##BASE(T));                                \</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="preprocessor">    TRY_TO(Visit##CLASS##Type(T));                              \</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> <span class="preprocessor">  bool Visit##CLASS##Type(CLASS##Type *T) { return true; }</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeNodes.def"</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> </div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="comment">// ---- Methods on TypeLocs ----</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>   <span class="comment">// FIXME: this currently just calls the matching Type methods</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="comment">// Declare Traverse*() for all concrete TypeLoc classes.</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#ac67d5429c5b5f79b00a3585a5859e4fd">  355</a></span> <span class="preprocessor">#define ABSTRACT_TYPELOC(CLASS, BASE)</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a7da2ec2cc68b78e06920eeee9d0f3517">  356</a></span> <span class="preprocessor"></span><span class="preprocessor">#define TYPELOC(CLASS, BASE) \</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> <span class="preprocessor">  bool Traverse##CLASS##TypeLoc(CLASS##TypeLoc TL);</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeLocNodes.def"</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="comment">// The above header #undefs ABSTRACT_TYPELOC and TYPELOC upon exit.</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> </div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>   <span class="comment">// Define WalkUpFrom*() and empty Visit*() for all TypeLoc classes.</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a580ec02ad57bd354f9830c7d2206c6e0">  362</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a580ec02ad57bd354f9830c7d2206c6e0">WalkUpFromTypeLoc</a>(<a class="code" href="classclang_1_1TypeLoc.html" title="Base wrapper for a particular "section" of type source info.">TypeLoc</a> TL) { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>().VisitTypeLoc(TL); }</div>
+<div class="line"><a name="l00363"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#aabae6b5fbb06c550b312eb5bc5f4965d">  363</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#aabae6b5fbb06c550b312eb5bc5f4965d">VisitTypeLoc</a>(<a class="code" href="classclang_1_1TypeLoc.html" title="Base wrapper for a particular "section" of type source info.">TypeLoc</a> TL) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="comment">// QualifiedTypeLoc and UnqualTypeLoc are not declared in</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="comment">// TypeNodes.def and thus need to be handled specially.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#aa59519906cacf837a0eb0384128c2e0e">  367</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#aa59519906cacf837a0eb0384128c2e0e">WalkUpFromQualifiedTypeLoc</a>(<a class="code" href="classclang_1_1QualifiedTypeLoc.html" title="Wrapper of type source information for a type with non-trivial direct qualifiers.">QualifiedTypeLoc</a> TL) {</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>().VisitUnqualTypeLoc(TL.<a class="code" href="classclang_1_1QualifiedTypeLoc.html#a3b05905f9d8ae4eb3bd2e75ddc2745c6">getUnqualifiedLoc</a>());</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>   }</div>
+<div class="line"><a name="l00370"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#ac5fea38da02e0b481c6da088dc2c13d8">  370</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ac5fea38da02e0b481c6da088dc2c13d8">VisitQualifiedTypeLoc</a>(<a class="code" href="classclang_1_1QualifiedTypeLoc.html" title="Wrapper of type source information for a type with non-trivial direct qualifiers.">QualifiedTypeLoc</a> TL) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a9705896bd11aabc9b4a8258c47f27122">  371</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a9705896bd11aabc9b4a8258c47f27122">WalkUpFromUnqualTypeLoc</a>(<a class="code" href="classclang_1_1UnqualTypeLoc.html" title="Wrapper of type source information for a type with no direct qualifiers.">UnqualTypeLoc</a> TL) {</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>().VisitUnqualTypeLoc(TL.<a class="code" href="classclang_1_1TypeLoc.html#a7574658f3f522378b04f1e98eea2e043" title="Skips past any qualifiers, if this is qualified.">getUnqualifiedLoc</a>());</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   }</div>
+<div class="line"><a name="l00374"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a30aeec3771c2770927d11112d00de7df">  374</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a30aeec3771c2770927d11112d00de7df">VisitUnqualTypeLoc</a>(<a class="code" href="classclang_1_1UnqualTypeLoc.html" title="Wrapper of type source information for a type with no direct qualifiers.">UnqualTypeLoc</a> TL) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   <span class="comment">// Note that BASE includes trailing 'Type' which CLASS doesn't.</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html">  377</a></span> <span class="preprocessor">#define TYPE(CLASS, BASE)                                       \</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> <span class="preprocessor">  bool WalkUpFrom##CLASS##TypeLoc(CLASS##TypeLoc TL) {          \</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="preprocessor">    TRY_TO(WalkUpFrom##BASE##Loc(TL));                          \</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="preprocessor">    TRY_TO(Visit##CLASS##TypeLoc(TL));                          \</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="preprocessor">  bool Visit##CLASS##TypeLoc(CLASS##TypeLoc TL) { return true; }</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeNodes.def"</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> </div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <span class="comment">// ---- Methods on Decls ----</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> </div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>   <span class="comment">// Declare Traverse*() for all concrete Decl classes.</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a72977b61645eb28918b50572ac31cf87">  389</a></span> <span class="preprocessor">#define ABSTRACT_DECL(DECL)</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="preprocessor"></span><span class="preprocessor">#define DECL(CLASS, BASE) \</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="preprocessor">  bool Traverse##CLASS##Decl(CLASS##Decl *D);</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="DeclNodes_8inc.html">clang/AST/DeclNodes.inc</a>"</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>   <span class="comment">// The above header #undefs ABSTRACT_DECL and DECL upon exit.</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> </div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   <span class="comment">// Define WalkUpFrom*() and empty Visit*() for all Decl classes.</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a1048480a6644b0fa004d804eaf1c4027">  396</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a1048480a6644b0fa004d804eaf1c4027">WalkUpFromDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D) { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0d4c8c95d179bc340d8c627a55b7badf" title="Return a reference to the derived class.">getDerived</a>().VisitDecl(D); }</div>
+<div class="line"><a name="l00397"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#abb97555e3dc6694166a096459decd8f9">  397</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#abb97555e3dc6694166a096459decd8f9">VisitDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00398"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#aeaee47635a0ecb15b01de0d7ee11bfa5">  398</a></span> <span class="preprocessor">#define DECL(CLASS, BASE)                                       \</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span> <span class="preprocessor">  bool WalkUpFrom##CLASS##Decl(CLASS##Decl *D) {                \</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> <span class="preprocessor">    TRY_TO(WalkUpFrom##BASE(D));                                \</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> <span class="preprocessor">    TRY_TO(Visit##CLASS##Decl(D));                              \</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span> <span class="preprocessor">    return true;                                                \</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span> <span class="preprocessor">  }                                                             \</span></div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span> <span class="preprocessor">  bool Visit##CLASS##Decl(CLASS##Decl *D) { return true; }</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="DeclNodes_8inc.html">clang/AST/DeclNodes.inc</a>"</span></div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="comment">// These are helper methods used by more than one Traverse* method.</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="keywordtype">bool</span> TraverseTemplateParameterListHelper(TemplateParameterList *TPL);</div>
+<div class="line"><a name="l00410"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a10d004652c2d8442a3ea10279228cf24">  410</a></span> <span class="preprocessor">#define DEF_TRAVERSE_TMPL_INST(TMPLDECLKIND)                                   \</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span> <span class="preprocessor">  bool TraverseTemplateInstantiations(TMPLDECLKIND##TemplateDecl *D);</span></div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> <span class="preprocessor"></span>  <a class="code" href="RecursiveASTVisitor_8h.html#a10d004652c2d8442a3ea10279228cf24">DEF_TRAVERSE_TMPL_INST</a>(Class)</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>   <a class="code" href="RecursiveASTVisitor_8h.html#a10d004652c2d8442a3ea10279228cf24">DEF_TRAVERSE_TMPL_INST</a>(Var)</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   <a class="code" href="RecursiveASTVisitor_8h.html#a10d004652c2d8442a3ea10279228cf24">DEF_TRAVERSE_TMPL_INST</a>(Function)</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> <span class="preprocessor">#undef DEF_TRAVERSE_TMPL_INST</span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> <span class="preprocessor"></span>  <span class="keywordtype">bool</span> TraverseTemplateArgumentLocsHelper(<span class="keyword">const</span> TemplateArgumentLoc *TAL,</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>                                           <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960ad0386506936fec96a18d01e42d4eb514">Count</a>);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   <span class="keywordtype">bool</span> TraverseArrayTypeLocHelper(ArrayTypeLoc TL);</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>   <span class="keywordtype">bool</span> TraverseRecordHelper(RecordDecl *D);</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   <span class="keywordtype">bool</span> TraverseCXXRecordHelper(CXXRecordDecl *D);</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keywordtype">bool</span> TraverseDeclaratorHelper(DeclaratorDecl *D);</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   <span class="keywordtype">bool</span> TraverseDeclContextHelper(DeclContext *DC);</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>   <span class="keywordtype">bool</span> TraverseFunctionHelper(FunctionDecl *D);</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   <span class="keywordtype">bool</span> TraverseVarHelper(VarDecl *D);</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   <span class="keywordtype">bool</span> TraverseOMPClause(OMPClause *C);</div>
+<div class="line"><a name="l00426"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#ab1c203f994d860d704718b6feb948f40">  426</a></span> <span class="preprocessor">#define OPENMP_CLAUSE(Name, Class)                                      \</span></div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="preprocessor">  bool Visit##Class(Class *C);</span></div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/Basic/OpenMPKinds.def"</span><span class="comment"></span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="comment">  /// \brief Process clauses with list of variables.</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="comment"></span>  <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   <span class="keywordtype">void</span> VisitOMPClauseList(T *<a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a>);</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keyword">struct </span>EnqueueJob {</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     Stmt *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>;</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <a class="code" href="classclang_1_1Stmt.html#a872042470c10cfe9f3988728390a39f9">Stmt::child_iterator</a> StmtIt;</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> </div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     EnqueueJob(Stmt *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) : S(S), StmtIt() {}</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   };</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   <span class="keywordtype">bool</span> dataTraverse(Stmt *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>);</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordtype">bool</span> dataTraverseNode(Stmt *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <span class="keywordtype">bool</span> &EnqueueChildren);</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> };</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::dataTraverse(Stmt *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span> </div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   SmallVector<EnqueueJob, 16> Queue;</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   Queue.push_back(S);</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <span class="keywordflow">while</span> (!Queue.empty()) {</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     EnqueueJob &job = Queue.back();</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>     Stmt *CurrS = job.S;</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     <span class="keywordflow">if</span> (!CurrS) {</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       Queue.pop_back();</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     }</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> </div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     <span class="keywordflow">if</span> (getDerived().shouldUseDataRecursionFor(CurrS)) {</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <span class="keywordflow">if</span> (job.StmtIt == <a class="code" href="classclang_1_1Stmt.html#a872042470c10cfe9f3988728390a39f9">Stmt::child_iterator</a>()) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>         <span class="keywordtype">bool</span> EnqueueChildren = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>         <span class="keywordflow">if</span> (!dataTraverseNode(CurrS, EnqueueChildren)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>         <span class="keywordflow">if</span> (!EnqueueChildren) {</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>           Queue.pop_back();</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>           <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>         }</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>         job.StmtIt = CurrS->child_begin();</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>         ++job.StmtIt;</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       }</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span> </div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>       <span class="keywordflow">if</span> (job.StmtIt != CurrS->child_end())</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>         Queue.push_back(*job.StmtIt);</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>         Queue.pop_back();</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     }</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> </div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>     Queue.pop_back();</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(CurrS));</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>   }</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> </div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> }</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> </div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::dataTraverseNode(Stmt *S,</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>                                                     <span class="keywordtype">bool</span> &EnqueueChildren) {</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="comment">// Dispatch to the corresponding WalkUpFrom* function only if the derived</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>   <span class="comment">// class didn't override Traverse* (and thus the traversal is trivial).</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="preprocessor">#define DISPATCH_WALK(NAME, CLASS, VAR) \</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="preprocessor">  { \</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> <span class="preprocessor">    bool (Derived::*DerivedFn)(CLASS*) = &Derived::Traverse##NAME; \</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> <span class="preprocessor">    bool (Derived::*BaseFn)(CLASS*) = &RecursiveASTVisitor::Traverse##NAME; \</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> <span class="preprocessor">    if (DerivedFn == BaseFn) \</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> <span class="preprocessor">      return getDerived().WalkUpFrom##NAME(static_cast<CLASS*>(VAR)); \</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> <span class="preprocessor">  } \</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="preprocessor">  EnqueueChildren = false; \</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="preprocessor">  return getDerived().Traverse##NAME(static_cast<CLASS*>(VAR));</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <span class="keywordflow">if</span> (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(S)) {</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>     <span class="keywordflow">switch</span> (BinOp->getOpcode()) {</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> <span class="preprocessor">#define OPERATOR(NAME) \</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> <span class="preprocessor">    case BO_##NAME: DISPATCH_WALK(Bin##NAME, BinaryOperator, S);</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>     <a class="code" href="RecursiveASTVisitor_8h.html#abf4105aa80247d435cf07e9f9578fb37">BINOP_LIST</a>()</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> <span class="preprocessor">#define OPERATOR(NAME)                                          \</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> <span class="preprocessor">    case BO_##NAME##Assign:                          \</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> <span class="preprocessor">    DISPATCH_WALK(Bin##NAME##Assign, CompoundAssignOperator, S);</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>     <a class="code" href="RecursiveASTVisitor_8h.html#a24b18378ee9328cb525150e1886107d1">CAO_LIST</a>()</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> <span class="preprocessor"></span>    }</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(S)) {</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     <span class="keywordflow">switch</span> (UnOp->getOpcode()) {</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="preprocessor">#define OPERATOR(NAME)                                                  \</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="preprocessor">    case UO_##NAME: DISPATCH_WALK(Unary##NAME, UnaryOperator, S);</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <a class="code" href="RecursiveASTVisitor_8h.html#a717c5d0ce8fdb1542f14a8075ccec5a3">UNARYOP_LIST</a>()</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> <span class="preprocessor"></span>    }</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>   }</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> </div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>   <span class="comment">// Top switch stmt: dispatch to TraverseFooStmt for each concrete FooStmt.</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   <span class="keywordflow">switch</span> (S->getStmtClass()) {</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cda3c52fd74f70067fe6e848861ba1bf396">Stmt::NoStmtClass</a>: <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> <span class="preprocessor">#define ABSTRACT_STMT(STMT)</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> <span class="preprocessor"></span><span class="preprocessor">#define STMT(CLASS, PARENT) \</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> <span class="preprocessor">  case Stmt::CLASS##Class: DISPATCH_WALK(CLASS, CLASS, S);</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   }</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> </div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> <span class="preprocessor">#undef DISPATCH_WALK</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> }</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a name="l00539"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#af3c792435f6b34298ebc96b5993a3a5c">  539</a></span> <span class="preprocessor">#define DISPATCH(NAME, CLASS, VAR) \</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> <span class="preprocessor">  return getDerived().Traverse##NAME(static_cast<CLASS*>(VAR))</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00543"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#ac74e5ed6ab3568f7ba8819507e768050">  543</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ac74e5ed6ab3568f7ba8819507e768050" title="Recursively visit a statement or expression, by dispatching to Traverse*() based on the argument's dy...">RecursiveASTVisitor<Derived>::TraverseStmt</a>(<a class="code" href="classclang_1_1Stmt.html">Stmt</a> *S) {</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="keywordflow">if</span> (!S)</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> </div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="keywordflow">if</span> (getDerived().shouldUseDataRecursionFor(S))</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="keywordflow">return</span> dataTraverse(S);</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <span class="comment">// If we have a binary expr, dispatch to the subcode of the binop.  A smart</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>   <span class="comment">// optimizer (e.g. LLVM) will fold this comparison into the switch stmt</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="comment">// below.</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> *BinOp = dyn_cast<BinaryOperator>(S)) {</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     <span class="keywordflow">switch</span> (BinOp->getOpcode()) {</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> <span class="preprocessor">#define OPERATOR(NAME) \</span></div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> <span class="preprocessor">    case BO_##NAME: DISPATCH(Bin##NAME, BinaryOperator, S);</span></div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <a class="code" href="RecursiveASTVisitor_8h.html#abf4105aa80247d435cf07e9f9578fb37">BINOP_LIST</a>()</div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> <span class="preprocessor"></span><span class="preprocessor">#undef BINOP_LIST</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> <span class="preprocessor">#define OPERATOR(NAME)                                          \</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span> <span class="preprocessor">    case BO_##NAME##Assign:                          \</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> <span class="preprocessor">      DISPATCH(Bin##NAME##Assign, CompoundAssignOperator, S);</span></div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>     <a class="code" href="RecursiveASTVisitor_8h.html#a24b18378ee9328cb525150e1886107d1">CAO_LIST</a>()</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> <span class="preprocessor"></span><span class="preprocessor">#undef CAO_LIST</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> <span class="preprocessor"></span>    }</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> *UnOp = dyn_cast<UnaryOperator>(S)) {</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordflow">switch</span> (UnOp->getOpcode()) {</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> <span class="preprocessor">#define OPERATOR(NAME)                                                  \</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="preprocessor">    case UO_##NAME: DISPATCH(Unary##NAME, UnaryOperator, S);</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>     <a class="code" href="RecursiveASTVisitor_8h.html#a717c5d0ce8fdb1542f14a8075ccec5a3">UNARYOP_LIST</a>()</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="preprocessor">#undef OPERATOR</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="preprocessor"></span><span class="preprocessor">#undef UNARYOP_LIST</span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="preprocessor"></span>    }</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   }</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> </div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>   <span class="comment">// Top switch stmt: dispatch to TraverseFooStmt for each concrete FooStmt.</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>   <span class="keywordflow">switch</span> (S-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>()) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cda3c52fd74f70067fe6e848861ba1bf396">Stmt::NoStmtClass</a>: <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> <span class="preprocessor">#define ABSTRACT_STMT(STMT)</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> <span class="preprocessor"></span><span class="preprocessor">#define STMT(CLASS, PARENT) \</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> <span class="preprocessor">  case Stmt::CLASS##Class: DISPATCH(CLASS, CLASS, S);</span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="StmtNodes_8inc.html">clang/AST/StmtNodes.inc</a>"</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>   }</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span> </div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> }</div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span> </div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00594"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a196832d93cdc2d4f9b01a423132327cd">  594</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a196832d93cdc2d4f9b01a423132327cd" title="Recursively visit a type, by dispatching to Traverse*Type() based on the argument's getTypeClass() pr...">RecursiveASTVisitor<Derived>::TraverseType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>   <span class="keywordflow">if</span> (T.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>())</div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> </div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>   <span class="keywordflow">switch</span> (T-><a class="code" href="classclang_1_1Type.html#a34cea2e4e1895806fbbac92110b66db0">getTypeClass</a>()) {</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="preprocessor">#define ABSTRACT_TYPE(CLASS, BASE)</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span> <span class="preprocessor"></span><span class="preprocessor">#define TYPE(CLASS, BASE) \</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> <span class="preprocessor">  case Type::CLASS: DISPATCH(CLASS##Type, CLASS##Type, \</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="preprocessor">                             const_cast<Type*>(T.getTypePtr()));</span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeNodes.def"</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>   }</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span> </div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span> }</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span> </div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00610"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99d5987a8d711ede9748818e7a61aec4">  610</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99d5987a8d711ede9748818e7a61aec4" title="Recursively visit a type with location, by dispatching to Traverse*TypeLoc() based on the argument ty...">RecursiveASTVisitor<Derived>::TraverseTypeLoc</a>(<a class="code" href="classclang_1_1TypeLoc.html" title="Base wrapper for a particular "section" of type source info.">TypeLoc</a> TL) {</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>   <span class="keywordflow">if</span> (TL.<a class="code" href="classclang_1_1TypeLoc.html#abff2ac1e5bfa32b72e27afc6e1710343">isNull</a>())</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> </div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>   <span class="keywordflow">switch</span> (TL.<a class="code" href="classclang_1_1TypeLoc.html#a32df81a2a3905b0dc6cd9fe3751150d2">getTypeLocClass</a>()) {</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> <span class="preprocessor">#define ABSTRACT_TYPELOC(CLASS, BASE)</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span> <span class="preprocessor"></span><span class="preprocessor">#define TYPELOC(CLASS, BASE) \</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> <span class="preprocessor">  case TypeLoc::CLASS: \</span></div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span> <span class="preprocessor">    return getDerived().Traverse##CLASS##TypeLoc(TL.castAs<CLASS##TypeLoc>());</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/AST/TypeLocNodes.def"</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   }</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span> </div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span> }</div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span> </div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> </div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00627"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99a9e941a07a015bc18d3613c5aa0914">  627</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a99a9e941a07a015bc18d3613c5aa0914" title="Recursively visit a declaration, by dispatching to Traverse*Decl() based on the argument's dynamic ty...">RecursiveASTVisitor<Derived>::TraverseDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   <span class="keywordflow">if</span> (!D)</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span> </div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   <span class="comment">// As a syntax visitor, by default we want to ignore declarations for</span></div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>   <span class="comment">// implicit declarations (ones not typed explicitly by the user).</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>   <span class="keywordflow">if</span> (!getDerived().shouldVisitImplicitCode() && D-><a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">isImplicit</a>())</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span> </div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>   <span class="keywordflow">switch</span> (D-><a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>()) {</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span> <span class="preprocessor">#define ABSTRACT_DECL(DECL)</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span> <span class="preprocessor"></span><span class="preprocessor">#define DECL(CLASS, BASE) \</span></div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span> <span class="preprocessor">  case Decl::CLASS: DISPATCH(CLASS##Decl, CLASS##Decl, D);</span></div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="DeclNodes_8inc.html">clang/AST/DeclNodes.inc</a>"</span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>  }</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> </div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span> }</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span> </div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span> <span class="preprocessor">#undef DISPATCH</span></div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00649"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a7d497c4e947a1447e31f88655168b1ea">  649</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a7d497c4e947a1447e31f88655168b1ea" title="Recursively visit a C++ nested-name-specifier.">RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifier</a>(</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>                                                     <a class="code" href="classclang_1_1NestedNameSpecifier.html" title="Represents a C++ nested name specifier, such as "\::std::vector<int>::".">NestedNameSpecifier</a> *NNS) {</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>   <span class="keywordflow">if</span> (!NNS)</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span> </div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   <span class="keywordflow">if</span> (NNS-><a class="code" href="classclang_1_1NestedNameSpecifier.html#ab7181f33adf9c04fdf90c6bbd33bd3d8" title="Return the prefix of this nested name specifier.">getPrefix</a>())</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifier(NNS-><a class="code" href="classclang_1_1NestedNameSpecifier.html#ab7181f33adf9c04fdf90c6bbd33bd3d8" title="Return the prefix of this nested name specifier.">getPrefix</a>()));</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span> </div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>   <span class="keywordflow">switch</span> (NNS-><a class="code" href="classclang_1_1NestedNameSpecifier.html#a6b89f6bc0788753f977377a158b8d55d" title="Determine what kind of nested name specifier is stored.">getKind</a>()) {</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6faa92d18857428e63813afa4e0a88def5a" title="An identifier, stored as an IdentifierInfo*.">NestedNameSpecifier::Identifier</a>:</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6faf37ff4b711e0a555e2ae7f89ddecc8db" title="A namespace, stored as a NamespaceDecl*.">NestedNameSpecifier::Namespace</a>:</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6fa052c4102c633839bbabf6f043419bb6d" title="A namespace alias, stored as a NamespaceAliasDecl*.">NestedNameSpecifier::NamespaceAlias</a>:</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6faae6e1e63c803f3852ba7b44c670fa292" title="The global specifier '::'. There is no stored value.">NestedNameSpecifier::Global</a>:</div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span> </div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6fa1b66ddf448ef55a1d35777ca0324db3d" title="A type, stored as a Type*.">NestedNameSpecifier::TypeSpec</a>:</div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6fa4216f217193417af58feacb7f446ce35" title="A type that was preceded by the 'template' keyword, stored as a Type*.">NestedNameSpecifier::TypeSpecWithTemplate</a>:</div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(<a class="code" href="classclang_1_1QualType.html">QualType</a>(NNS-><a class="code" href="classclang_1_1NestedNameSpecifier.html#ad5d61e00e49398a1e05f7052c725cbc0" title="Retrieve the type stored in this nested name specifier.">getAsType</a>(), 0)));</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>   }</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span> </div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span> }</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span> </div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00673"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a7002972a59828e56b9a23381b677c770">  673</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a7002972a59828e56b9a23381b677c770" title="Recursively visit a C++ nested-name-specifier with location information.">RecursiveASTVisitor<Derived>::TraverseNestedNameSpecifierLoc</a>(</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>                                                   <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> NNS) {</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>   <span class="keywordflow">if</span> (!NNS)</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span> </div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>    <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> Prefix = NNS.<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#a944005f0385867fe14bd38b30ed540d1" title="Return the prefix of this nested-name-specifier.">getPrefix</a>())</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>      <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(Prefix));</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span> </div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   <span class="keywordflow">switch</span> (NNS.<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#a5654a95772981f5a91f100b767604af9" title="Retrieve the nested-name-specifier to which this instance refers.">getNestedNameSpecifier</a>()-><a class="code" href="classclang_1_1NestedNameSpecifier.html#a6b89f6bc0788753f977377a158b8d55d" title="Determine what kind of nested name specifier is stored.">getKind</a>()) {</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6faa92d18857428e63813afa4e0a88def5a" title="An identifier, stored as an IdentifierInfo*.">NestedNameSpecifier::Identifier</a>:</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6faf37ff4b711e0a555e2ae7f89ddecc8db" title="A namespace, stored as a NamespaceDecl*.">NestedNameSpecifier::Namespace</a>:</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6fa052c4102c633839bbabf6f043419bb6d" title="A namespace alias, stored as a NamespaceAliasDecl*.">NestedNameSpecifier::NamespaceAlias</a>:</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6faae6e1e63c803f3852ba7b44c670fa292" title="The global specifier '::'. There is no stored value.">NestedNameSpecifier::Global</a>:</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span> </div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6fa1b66ddf448ef55a1d35777ca0324db3d" title="A type, stored as a Type*.">NestedNameSpecifier::TypeSpec</a>:</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1NestedNameSpecifier.html#ac707a113605ed4283684b8c05664eb6fa4216f217193417af58feacb7f446ce35" title="A type that was preceded by the 'template' keyword, stored as a Type*.">NestedNameSpecifier::TypeSpecWithTemplate</a>:</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(NNS.<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#ad791c81ae69f71756cdcca7d116bd706" title="For a nested-name-specifier that refers to a type, retrieve the type with source-location information...">getTypeLoc</a>()));</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>   }</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span> </div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span> }</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span> </div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00698"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#ad07c394f871283a8db60a79ce350781c">  698</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ad07c394f871283a8db60a79ce350781c" title="Recursively visit a name with its location information.">RecursiveASTVisitor<Derived>::TraverseDeclarationNameInfo</a>(</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>                                                  <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> NameInfo) {</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <span class="keywordflow">switch</span> (NameInfo.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a4a662304441c06d60ec1764e515337c4" title="getName - Returns the embedded declaration name.">getName</a>().<a class="code" href="classclang_1_1DeclarationName.html#a3e722af81dd4b5670e834b20f47ba94b" title="getNameKind - Determine what kind of name this is.">getNameKind</a>()) {</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3a3df3681bdb9f6f1a80535aaa4136e14f">DeclarationName::CXXConstructorName</a>:</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3a3dd601f149fac45969958b93199092dc">DeclarationName::CXXDestructorName</a>:</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3aecafb8f0bcaa01d99791b0bebf534ac6">DeclarationName::CXXConversionFunctionName</a>:</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TSInfo = NameInfo.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a1a1089c58697073077055b862bd8a53a">getNamedTypeInfo</a>())</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TSInfo->getTypeLoc()));</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span> </div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span> </div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3a244f43949d88869f4d8782e758f5bac8">DeclarationName::Identifier</a>:</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3aedf96650d378ac8741153ab49bf54d2a">DeclarationName::ObjCZeroArgSelector</a>:</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3aa4892781c4f7120569e57cce70c1cb0b">DeclarationName::ObjCOneArgSelector</a>:</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3a35c00eb057c0914003e9a60dd3ef4a97">DeclarationName::ObjCMultiArgSelector</a>:</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3aa12a1e5dd5f04687d11eaf8ca7924faf">DeclarationName::CXXOperatorName</a>:</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3a72a534aca2e192f3fcc66c34c16e7e19">DeclarationName::CXXLiteralOperatorName</a>:</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3a76b16a50222b4ca230bfd271af70434c">DeclarationName::CXXUsingDirective</a>:</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>   }</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span> </div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> }</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00723"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a74b759ebd31b4027933b7146b9ad66dc">  723</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a74b759ebd31b4027933b7146b9ad66dc" title="Recursively visit a template name and dispatch to the appropriate method.">RecursiveASTVisitor<Derived>::TraverseTemplateName</a>(<a class="code" href="classclang_1_1TemplateName.html" title="Represents a C++ template name within the type system.">TemplateName</a> Template) {</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DependentTemplateName.html" title="Represents a dependent template name that cannot be resolved prior to template instantiation.">DependentTemplateName</a> *DTN = Template.<a class="code" href="classclang_1_1TemplateName.html#a68dc7f4090ed9ce391ba99779688e65b" title="Retrieve the underlying dependent template name structure, if any.">getAsDependentTemplateName</a>())</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifier(DTN->getQualifier()));</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1QualifiedTemplateName.html" title="Represents a template name that was expressed as a qualified name.">QualifiedTemplateName</a> *QTN = Template.<a class="code" href="classclang_1_1TemplateName.html#a5ea970db151ca691358ca2071ff16899" title="Retrieve the underlying qualified template name structure, if any.">getAsQualifiedTemplateName</a>())</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifier(QTN->getQualifier()));</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> </div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> }</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> </div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00733"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0ff5d227adc1ba7eddf4883073fd6c31">  733</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a0ff5d227adc1ba7eddf4883073fd6c31" title="Recursively visit a template argument and dispatch to the appropriate method for the argument type...">RecursiveASTVisitor<Derived>::TraverseTemplateArgument</a>(</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>                                                 <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgument.html" title="Represents a template argument within a class template specialization.">TemplateArgument</a> &Arg) {</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <span class="keywordflow">switch</span> (Arg.<a class="code" href="classclang_1_1TemplateArgument.html#a17d8d61d5172e159f898a9021695bd56" title="Return the kind of stored template argument.">getKind</a>()) {</div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a8ed3fd7360217d0eeb31ca127775764c" title="Represents an empty template argument, e.g., one that has not been deduced.">TemplateArgument::Null</a>:</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a101f7e3f2d1405aa30edbf22ab529d2c">TemplateArgument::Declaration</a>:</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220af2933924d899f7feba90d4cd4dbae3e1">TemplateArgument::Integral</a>:</div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a67e8430f53204425d241bc440142b08f">TemplateArgument::NullPtr</a>:</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span> </div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a7441a0aac50df9f775662d7fe21f5568" title="The template argument is a type.">TemplateArgument::Type</a>:</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordflow">return</span> getDerived().TraverseType(Arg.<a class="code" href="classclang_1_1TemplateArgument.html#aac7fcb944b5ab1ab3b15eca45b7e9440" title="Retrieve the type for a type template argument.">getAsType</a>());</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span> </div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a1a6bbcb379955f5ef1eb8d26b64c9525">TemplateArgument::Template</a>:</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a4b2338e88673d728203c1927f178cbc1">TemplateArgument::TemplateExpansion</a>:</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     <span class="keywordflow">return</span> getDerived().TraverseTemplateName(</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>                                           Arg.<a class="code" href="classclang_1_1TemplateArgument.html#a12ff4e99d5023e6b7e26efe8da41b157" title="Retrieve the template argument as a template name; if the argument is a pack expansion, return the pattern as a template name.">getAsTemplateOrTemplatePattern</a>());</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span> </div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220afa0b60d25ea226073129f877594bb8c2">TemplateArgument::Expression</a>:</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     <span class="keywordflow">return</span> getDerived().TraverseStmt(Arg.<a class="code" href="classclang_1_1TemplateArgument.html#a54fc0f5b8437869883d603283e3cdcba" title="Retrieve the template argument as an expression.">getAsExpr</a>());</div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span> </div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a2d5a0b8fce2dae0a927c21381da834e1">TemplateArgument::Pack</a>:</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>     <span class="keywordflow">return</span> getDerived().TraverseTemplateArguments(Arg.<a class="code" href="classclang_1_1TemplateArgument.html#aec590020815d7ba7bc6ab7b6f81d0abb" title="Iterator referencing the first argument of a template argument pack.">pack_begin</a>(),</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>                                                   Arg.<a class="code" href="classclang_1_1TemplateArgument.html#ae95d4d43677f12c7117b18d3747ba300" title="The number of template arguments in the given template argument pack.">pack_size</a>());</div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>   }</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> </div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span> }</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span> </div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span> <span class="comment">// FIXME: no template name location?</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span> <span class="comment">// FIXME: no source locations for a template argument pack?</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00764"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a44ab9795569ae3565143994d4996b8b3">  764</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a44ab9795569ae3565143994d4996b8b3" title="Recursively visit a template argument location and dispatch to the appropriate method for the argumen...">RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLoc</a>(</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>                                            <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentLoc.html">TemplateArgumentLoc</a> &ArgLoc) {</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgument.html" title="Represents a template argument within a class template specialization.">TemplateArgument</a> &Arg = ArgLoc.<a class="code" href="classclang_1_1TemplateArgumentLoc.html#ab0f5cfb1abd0ac0c6720609f9ee87d6e">getArgument</a>();</div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span> </div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>   <span class="keywordflow">switch</span> (Arg.<a class="code" href="classclang_1_1TemplateArgument.html#a17d8d61d5172e159f898a9021695bd56" title="Return the kind of stored template argument.">getKind</a>()) {</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a8ed3fd7360217d0eeb31ca127775764c" title="Represents an empty template argument, e.g., one that has not been deduced.">TemplateArgument::Null</a>:</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a101f7e3f2d1405aa30edbf22ab529d2c">TemplateArgument::Declaration</a>:</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220af2933924d899f7feba90d4cd4dbae3e1">TemplateArgument::Integral</a>:</div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a67e8430f53204425d241bc440142b08f">TemplateArgument::NullPtr</a>:</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span> </div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a7441a0aac50df9f775662d7fe21f5568" title="The template argument is a type.">TemplateArgument::Type</a>: {</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>     <span class="comment">// FIXME: how can TSI ever be NULL?</span></div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TSI = ArgLoc.<a class="code" href="classclang_1_1TemplateArgumentLoc.html#a0e8e63e88bd77d4d5f1c1ef4f7378073">getTypeSourceInfo</a>())</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>       <span class="keywordflow">return</span> getDerived().TraverseTypeLoc(TSI->getTypeLoc());</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>       <span class="keywordflow">return</span> getDerived().TraverseType(Arg.<a class="code" href="classclang_1_1TemplateArgument.html#aac7fcb944b5ab1ab3b15eca45b7e9440" title="Retrieve the type for a type template argument.">getAsType</a>());</div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>   }</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span> </div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a1a6bbcb379955f5ef1eb8d26b64c9525">TemplateArgument::Template</a>:</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a4b2338e88673d728203c1927f178cbc1">TemplateArgument::TemplateExpansion</a>:</div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>     <span class="keywordflow">if</span> (ArgLoc.<a class="code" href="classclang_1_1TemplateArgumentLoc.html#ab69d12b4c364e7f7752436dd62e91316">getTemplateQualifierLoc</a>())</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(getDerived().TraverseNestedNameSpecifierLoc(</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>                                             ArgLoc.<a class="code" href="classclang_1_1TemplateArgumentLoc.html#ab69d12b4c364e7f7752436dd62e91316">getTemplateQualifierLoc</a>()));</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>     <span class="keywordflow">return</span> getDerived().TraverseTemplateName(</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>                                          Arg.<a class="code" href="classclang_1_1TemplateArgument.html#a12ff4e99d5023e6b7e26efe8da41b157" title="Retrieve the template argument as a template name; if the argument is a pack expansion, return the pattern as a template name.">getAsTemplateOrTemplatePattern</a>());</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span> </div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220afa0b60d25ea226073129f877594bb8c2">TemplateArgument::Expression</a>:</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>     <span class="keywordflow">return</span> getDerived().TraverseStmt(ArgLoc.<a class="code" href="classclang_1_1TemplateArgumentLoc.html#a6729b663908e686a00c3cf380dda97ab">getSourceExpression</a>());</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span> </div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span>   <span class="keywordflow">case</span> <a class="code" href="classclang_1_1TemplateArgument.html#ad5158465bd96aebe0d9dc44207821220a2d5a0b8fce2dae0a927c21381da834e1">TemplateArgument::Pack</a>:</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     <span class="keywordflow">return</span> getDerived().TraverseTemplateArguments(Arg.<a class="code" href="classclang_1_1TemplateArgument.html#aec590020815d7ba7bc6ab7b6f81d0abb" title="Iterator referencing the first argument of a template argument pack.">pack_begin</a>(),</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>                                                   Arg.<a class="code" href="classclang_1_1TemplateArgument.html#ae95d4d43677f12c7117b18d3747ba300" title="The number of template arguments in the given template argument pack.">pack_size</a>());</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>   }</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span> </div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span> }</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span> </div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00803"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#a234cded0c7991480f86d89ea6868fc06">  803</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#a234cded0c7991480f86d89ea6868fc06" title="Recursively visit a set of template arguments. This can be overridden by a subclass, but it's not expected that will be needed – this visitor always dispatches to another.">RecursiveASTVisitor<Derived>::TraverseTemplateArguments</a>(</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>                                                   <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgument.html" title="Represents a template argument within a class template specialization.">TemplateArgument</a> *<a class="code" href="SemaOverload_8cpp.html#ab0970fce5a85028c7eac6fb99797fea5">Args</a>,</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>                                                             <span class="keywordtype">unsigned</span> NumArgs) {</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I != NumArgs; ++I) {</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgument(Args[I]));</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>   }</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span> </div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> }</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span> </div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00814"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#afaa8c5454a4e7ac33b2852345eea474e">  814</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#afaa8c5454a4e7ac33b2852345eea474e" title="Recursively visit a constructor initializer. This automatically dispatches to another visitor for the...">RecursiveASTVisitor<Derived>::TraverseConstructorInitializer</a>(</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>                                                      <a class="code" href="classclang_1_1CXXCtorInitializer.html" title="Represents a C++ base or member initializer.">CXXCtorInitializer</a> *Init) {</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo = Init-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a56b6b5e669b12dca77038affdf24a65e" title="Returns the declarator information for a base class or delegating initializer.">getTypeSourceInfo</a>())</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TInfo->getTypeLoc()));</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span> </div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   <span class="keywordflow">if</span> (Init-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a3ce8ee1729cf834254d45d7c67cbb0ec" title="Determine whether this initializer is explicitly written in the source code.">isWritten</a>() || getDerived().shouldVisitImplicitCode())</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(Init-><a class="code" href="classclang_1_1CXXCtorInitializer.html#a6a232de857e5b703d4d21fc86588f77b" title="Get the initializer.">getInit</a>()));</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span> }</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span> </div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00825"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#ae278925fa17a83c37cb823284bcb719a">  825</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ae278925fa17a83c37cb823284bcb719a" title="Recursively visit a lambda capture.">RecursiveASTVisitor<Derived>::TraverseLambdaCapture</a>(</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>     <a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *LE, <span class="keyword">const</span> <a class="code" href="classclang_1_1LambdaExpr_1_1Capture.html" title="Describes the capture of a variable or of this, or of a C++1y init-capture.">LambdaExpr::Capture</a> *C) {</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>   <span class="keywordflow">if</span> (C-><a class="code" href="classclang_1_1LambdaExpr_1_1Capture.html#a3d328a980e60d1f053469cbf02f2cef0" title="Determine whether this is an init-capture.">isInitCapture</a>())</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(C-><a class="code" href="classclang_1_1LambdaExpr_1_1Capture.html#abfc87e234012a7f117a93501c4172cfe" title="Retrieve the declaration of the local variable being captured.">getCapturedVar</a>()));</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> }</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span> </div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l00833"></a><span class="lineno"><a class="code" href="classclang_1_1RecursiveASTVisitor.html#ae03e9cdadc00ef84802bd0386d8e8f18">  833</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1RecursiveASTVisitor.html#ae03e9cdadc00ef84802bd0386d8e8f18" title="Recursively visit the body of a lambda expression.">RecursiveASTVisitor<Derived>::TraverseLambdaBody</a>(<a class="code" href="classclang_1_1LambdaExpr.html" title="A C++ lambda expression, which produces a function object (of unspecified type) that can be invoked l...">LambdaExpr</a> *LE) {</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(LE-><a class="code" href="classclang_1_1LambdaExpr.html#a591905c323cf87c754dd226fe215b738" title="Retrieve the body of the lambda.">getBody</a>()));</div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span> }</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> </div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span> </div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span> <span class="comment">// ----------------- Type traversal -----------------</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span> </div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span> <span class="comment">// This macro makes available a variable T, the passed-in type.</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno"><a class="code" href="RecursiveASTVisitor_8h.html#a44f20d102cc60a863f99cfcf913adb73">  842</a></span> <span class="preprocessor">#define DEF_TRAVERSE_TYPE(TYPE, CODE)                     \</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span> <span class="preprocessor">  template<typename Derived>                                           \</span></div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> <span class="preprocessor">  bool RecursiveASTVisitor<Derived>::Traverse##TYPE (TYPE *T) {        \</span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span> <span class="preprocessor">    TRY_TO(WalkUpFrom##TYPE (T));                                      \</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> <span class="preprocessor">    { CODE; }                                                          \</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span> <span class="preprocessor">    return true;                                                       \</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span> <span class="preprocessor">  }</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(BuiltinType, { })</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span> </div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ComplexType, {</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>   })</div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span> </div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(PointerType, {</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPointeeType()));</div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>   })</div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span> </div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(BlockPointerType, {</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPointeeType()));</div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>   })</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span> </div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(LValueReferenceType, {</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPointeeType()));</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>   })</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span> </div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(RValueReferenceType, {</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPointeeType()));</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>   })</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span> </div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(MemberPointerType, {</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(QualType(T->getClass(), 0)));</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPointeeType()));</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>   })</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span> </div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(DecayedType, {</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getOriginalType()));</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>   })</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span> </div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ConstantArrayType, {</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>   })</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span> </div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(IncompleteArrayType, {</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>   })</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span> </div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(VariableArrayType, {</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(T->getSizeExpr()));</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>   })</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span> </div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(DependentSizedArrayType, {</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>     <span class="keywordflow">if</span> (T->getSizeExpr())</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(T->getSizeExpr()));</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>   })</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span> </div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(DependentSizedExtVectorType, {</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>     <span class="keywordflow">if</span> (T->getSizeExpr())</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(T->getSizeExpr()));</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>   })</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span> </div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(VectorType, {</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span>   })</div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> </div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ExtVectorType, {</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getElementType()));</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>   })</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span> </div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(FunctionNoProtoType, {</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getResultType()));</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>   })</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span> </div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(FunctionProtoType, {</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getResultType()));</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span> </div>
+<div class="line"><a name="l00921"></a><span class="lineno"><a class="code" href="namespaceclang.html#a355ba9af5ac2c9c6089bd5e5754f406a">  921</a></span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1QualType.html">FunctionProtoType::arg_type_iterator</a> A = T->arg_type_begin(),</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>                                            AEnd = T->arg_type_end();</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>          A != AEnd; ++A) {</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(*A));</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>     }</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span> </div>
+<div class="line"><a name="l00927"></a><span class="lineno"><a class="code" href="namespaceclang.html#a31973326021121d290a01987c53fdee9">  927</a></span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1QualType.html">FunctionProtoType::exception_iterator</a> E = T->exception_begin(),</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>                                             EEnd = T->exception_end();</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>          E != EEnd; ++E) {</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(*E));</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>     }</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>   })</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span> </div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(UnresolvedUsingType, { })</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(TypedefType, { })</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span> </div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(TypeOfExprType, {</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(T->getUnderlyingExpr()));</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   })</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span> </div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(TypeOfType, {</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getUnderlyingType()));</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>   })</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span> </div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(DecltypeType, {</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(T->getUnderlyingExpr()));</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>   })</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span> </div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(UnaryTransformType, {</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getBaseType()));</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getUnderlyingType()));</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     })</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span> </div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(AutoType, {</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getDeducedType()));</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>   })</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span> </div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(RecordType, { })</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(EnumType, { })</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(TemplateTypeParmType, { })</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(SubstTemplateTypeParmType, { })</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(SubstTemplateTypeParmPackType, { })</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span> </div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(TemplateSpecializationType, {</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateName(T->getTemplateName()));</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArguments(T->getArgs(), T->getNumArgs()));</div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>   })</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span> </div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(InjectedClassNameType, { })</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span> </div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(AttributedType, {</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getModifiedType()));</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>   })</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span> </div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ParenType, {</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getInnerType()));</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>   })</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span> </div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ElaboratedType, {</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>     <span class="keywordflow">if</span> (T->getQualifier()) {</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifier(T->getQualifier()));</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>     }</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getNamedType()));</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>   })</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> </div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(DependentNameType, {</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifier(T->getQualifier()));</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>   })</div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span> </div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(DependentTemplateSpecializationType, {</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifier(T->getQualifier()));</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArguments(T->getArgs(), T->getNumArgs()));</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>   })</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span> </div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(PackExpansionType, {</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPattern()));</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>   })</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span> </div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ObjCInterfaceType, { })</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> </div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ObjCObjectType, {</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="comment">// We have to watch out here because an ObjCInterfaceType's base</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="comment">// type is itself.</span></div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>     <span class="keywordflow">if</span> (T->getBaseType().getTypePtr() != T)</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getBaseType()));</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>   })</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(ObjCObjectPointerType, {</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getPointeeType()));</div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>   })</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div>
+<div class="line"><a name="l01012"></a><span class="lineno"><a class="code" href="namespaceclang.html#a042ea05e7488e4941a11de1347a83a7c"> 1012</a></span> <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a>(<a class="code" href="classclang_1_1AtomicType.html">AtomicType</a>, {</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getValueType()));</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>   })</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> </div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> #undef <a class="code" href="namespaceclang.html#a09d30b24bec4c060884e2aa90cf96575">DEF_TRAVERSE_TYPE</a></div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> </div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="comment">// ----------------- TypeLoc traversal -----------------</span></div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="comment">// This macro makes available a variable TL, the passed-in TypeLoc.</span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="comment">// If requested, it calls WalkUpFrom* for the Type in the given TypeLoc,</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="comment">// in addition to WalkUpFrom* for the TypeLoc itself, such that existing</span></div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="comment">// clients that override the WalkUpFrom*Type() and/or Visit*Type() methods</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="comment">// continue to work.</span></div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> #define <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(<a class="code" href="ASTFwd_8h.html#a704e69091d59d131fb4bc20311f22b9e">TYPE</a>, CODE)                                \</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>   template<typename Derived>                                            \</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>   bool RecursiveASTVisitor<Derived>::Traverse##<a class="code" href="ASTFwd_8h.html#a704e69091d59d131fb4bc20311f22b9e">TYPE</a>##Loc(<a class="code" href="ASTFwd_8h.html#a704e69091d59d131fb4bc20311f22b9e">TYPE</a>##Loc TL) { \</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     if (getDerived().shouldWalkTypesOfTypeLocs())                       \</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       TRY_TO(WalkUpFrom##<a class="code" href="ASTFwd_8h.html#a704e69091d59d131fb4bc20311f22b9e">TYPE</a>(const_cast<TYPE*>(TL.getTypePtr())));     \</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>     TRY_TO(WalkUpFrom##<a class="code" href="ASTFwd_8h.html#a704e69091d59d131fb4bc20311f22b9e">TYPE</a>##Loc(TL));                                  \</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>     { CODE; }                                                           \</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>     return <span class="keyword">true</span>;                                                        \</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>   }</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseQualifiedTypeLoc(</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>     QualifiedTypeLoc TL) {</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>   <span class="comment">// Move this over to the 'main' typeloc tree.  Note that this is a</span></div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>   <span class="comment">// move -- we pretend that we were really looking at the unqualified</span></div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>   <span class="comment">// typeloc all along -- rather than a recursion, so we don't follow</span></div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>   <span class="comment">// the normal CRTP plan of going through</span></div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>   <span class="comment">// getDerived().TraverseTypeLoc.  If we did, we'd be traversing</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>   <span class="comment">// twice for the same type (once as a QualifiedTypeLoc version of</span></div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>   <span class="comment">// the type, once as an UnqualifiedTypeLoc version of the type),</span></div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>   <span class="comment">// which in effect means we'd call VisitTypeLoc twice with the</span></div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   <span class="comment">// 'same' type.  This solves that problem, at the cost of never</span></div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>   <span class="comment">// seeing the qualified version of the type (unless the client</span></div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>   <span class="comment">// subclasses TraverseQualifiedTypeLoc themselves).  It's not a</span></div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>   <span class="comment">// perfect solution.  A perfect solution probably requires making</span></div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>   <span class="comment">// QualifiedTypeLoc a wrapper around TypeLoc -- like QualType is a</span></div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>   <span class="comment">// wrapper around Type* -- rather than being its own class in the</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>   <span class="comment">// type hierarchy.</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>   <span class="keywordflow">return</span> TraverseTypeLoc(TL.getUnqualifiedLoc());</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> }</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> </div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(BuiltinType, { })</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> </div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="comment">// FIXME: ComplexTypeLoc is unfinished</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ComplexType, {</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(TL.getTypePtr()->getElementType()));</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   })</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> </div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(PointerType, {</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPointeeLoc()));</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   })</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> </div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(BlockPointerType, {</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPointeeLoc()));</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>   })</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> </div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(LValueReferenceType, {</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPointeeLoc()));</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>   })</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> </div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(RValueReferenceType, {</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPointeeLoc()));</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>   })</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> </div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="comment">// FIXME: location of base class?</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="comment">// We traverse this in the type case as well, but how is it not reached through</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> <span class="comment">// the pointee type?</span></div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(MemberPointerType, {</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(QualType(TL.getTypePtr()->getClass(), 0)));</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPointeeLoc()));</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>   })</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> </div>
+<div class="line"><a name="l01087"></a><span class="lineno"><a class="code" href="namespaceclang.html#a3d49b7e2dbd17161c1d1d6bb353d5dcd"> 1087</a></span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(<a class="code" href="classclang_1_1DecayedType.html" title="Represents a pointer type decayed from an array or function type.">DecayedType</a>, {</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getOriginalLoc()));</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   })</div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> </div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> template<typename Derived></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a41f5cee4e8966085283ee1254e99ee75">RecursiveASTVisitor<Derived>::TraverseArrayTypeLocHelper</a>(ArrayTypeLoc TL) {</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>   <span class="comment">// This isn't available for ArrayType, but is for the ArrayTypeLoc.</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(TL.getSizeExpr()));</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> }</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> </div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ConstantArrayType, {</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getElementLoc()));</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a41f5cee4e8966085283ee1254e99ee75">TraverseArrayTypeLocHelper</a>(TL);</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>   })</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> </div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(IncompleteArrayType, {</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getElementLoc()));</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a41f5cee4e8966085283ee1254e99ee75">TraverseArrayTypeLocHelper</a>(TL);</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   })</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> </div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(VariableArrayType, {</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getElementLoc()));</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a41f5cee4e8966085283ee1254e99ee75">TraverseArrayTypeLocHelper</a>(TL);</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>   })</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> </div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(DependentSizedArrayType, {</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getElementLoc()));</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a41f5cee4e8966085283ee1254e99ee75">TraverseArrayTypeLocHelper</a>(TL);</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   })</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> </div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="comment">// FIXME: order? why not size expr first?</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> <span class="comment">// FIXME: base VectorTypeLoc is unfinished</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(DependentSizedExtVectorType, {</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>     <span class="keywordflow">if</span> (TL.getTypePtr()->getSizeExpr())</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(TL.getTypePtr()->getSizeExpr()));</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(TL.getTypePtr()->getElementType()));</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   })</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> </div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> <span class="comment">// FIXME: VectorTypeLoc is unfinished</span></div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(VectorType, {</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(TL.getTypePtr()->getElementType()));</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   })</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> </div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> <span class="comment">// FIXME: size and attributes</span></div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> <span class="comment">// FIXME: base VectorTypeLoc is unfinished</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ExtVectorType, {</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(TL.getTypePtr()->getElementType()));</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>   })</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> </div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(FunctionNoProtoType, {</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getResultLoc()));</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   })</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> </div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="comment">// FIXME: location of exception specifications (attributes?)</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(FunctionProtoType, {</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getResultLoc()));</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>     <span class="keyword">const</span> FunctionProtoType *T = TL.getTypePtr();</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> </div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = TL.getNumArgs(); I != E; ++I) {</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>       <span class="keywordflow">if</span> (TL.getArg(I)) {</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>         <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(TL.getArg(I)));</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (I < T->getNumArgs()) {</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>         <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(T->getArgType(I)));</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>       }</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>     }</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> </div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1FunctionProtoType.html#a3398f2e897f32c53492404e3b344b6b2">FunctionProtoType::exception_iterator</a> E = T->exception_begin(),</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>                                             EEnd = T->exception_end();</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>          E != EEnd; ++E) {</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(*E));</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     }</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>   })</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> </div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(UnresolvedUsingType, { })</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(TypedefType, { })</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> </div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(TypeOfExprType, {</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(TL.getUnderlyingExpr()));</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>   })</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> </div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(TypeOfType, {</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getUnderlyingTInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>   })</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> </div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> <span class="comment">// FIXME: location of underlying expr</span></div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(DecltypeType, {</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(TL.getTypePtr()->getUnderlyingExpr()));</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   })</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(UnaryTransformType, {</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getUnderlyingTInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   })</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> </div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(AutoType, {</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(TL.getTypePtr()->getDeducedType()));</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   })</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(RecordType, { })</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(EnumType, { })</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(TemplateTypeParmType, { })</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(SubstTemplateTypeParmType, { })</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(SubstTemplateTypeParmPackType, { })</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> </div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="comment">// FIXME: use the loc for the template name?</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(TemplateSpecializationType, {</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateName(TL.getTypePtr()->getTemplateName()));</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = TL.getNumArgs(); I != E; ++I) {</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLoc(TL.getArgLoc(I)));</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>     }</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   })</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> </div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(InjectedClassNameType, { })</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> </div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ParenType, {</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getInnerLoc()));</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   })</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> </div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(AttributedType, {</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getModifiedLoc()));</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>   })</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> </div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ElaboratedType, {</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     <span class="keywordflow">if</span> (TL.getQualifierLoc()) {</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>     }</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getNamedTypeLoc()));</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   })</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(DependentNameType, {</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   })</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> </div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(DependentTemplateSpecializationType, {</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>     <span class="keywordflow">if</span> (TL.getQualifierLoc()) {</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(TL.getQualifierLoc()));</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>     }</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> </div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = TL.getNumArgs(); I != E; ++I) {</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLoc(TL.getArgLoc(I)));</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     }</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>   })</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> </div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(PackExpansionType, {</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPatternLoc()));</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   })</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ObjCInterfaceType, { })</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> </div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ObjCObjectType, {</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>     <span class="comment">// We have to watch out here because an ObjCInterfaceType's base</span></div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>     <span class="comment">// type is itself.</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>     <span class="keywordflow">if</span> (TL.getTypePtr()->getBaseType().getTypePtr() != TL.getTypePtr())</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getBaseLoc()));</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   })</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> </div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(ObjCObjectPointerType, {</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getPointeeLoc()));</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   })</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> </div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a>(AtomicType, {</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL.getValueLoc()));</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   })</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> #undef <a class="code" href="namespaceclang.html#a55214868769b714dcb027b705760ee73">DEF_TRAVERSE_TYPELOC</a></div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> </div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="comment">// ----------------- Decl traversal -----------------</span></div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> <span class="comment">//</span></div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> <span class="comment">// For a Decl, we automate (in the DEF_TRAVERSE_DECL macro) traversing</span></div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="comment">// the children that come from the DeclContext associated with it.</span></div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="comment">// Therefore each Traverse* only needs to worry about children other</span></div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment">// than those.</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> </div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> template<typename Derived></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseDeclContextHelper(DeclContext *DC) {</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>   <span class="keywordflow">if</span> (!DC)</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>   <span class="keywordflow">for</span> (DeclContext::decl_iterator Child = DC->decls_begin(),</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>            ChildEnd = DC->decls_end();</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>        Child != ChildEnd; ++Child) {</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     <span class="comment">// BlockDecls and CapturedDecls are traversed through BlockExprs and</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>     <span class="comment">// CapturedStmts respectively.</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>     <span class="keywordflow">if</span> (!isa<BlockDecl>(*Child) && !isa<CapturedDecl>(*Child))</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(*Child));</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>   }</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> </div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> }</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> </div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> <span class="comment">// This macro makes available a variable D, the passed-in decl.</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> <span class="preprocessor">#define DEF_TRAVERSE_DECL(DECL, CODE)                           \</span></div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> <span class="preprocessor">template<typename Derived>                                      \</span></div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> <span class="preprocessor">bool RecursiveASTVisitor<Derived>::Traverse##DECL (DECL *D) {   \</span></div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> <span class="preprocessor">  TRY_TO(WalkUpFrom##DECL (D));                                 \</span></div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> <span class="preprocessor">  { CODE; }                                                     \</span></div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="preprocessor">  TRY_TO(TraverseDeclContextHelper(dyn_cast<DeclContext>(D)));  \</span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> <span class="preprocessor">  return true;                                                  \</span></div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <span class="preprocessor">}</span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(AccessSpecDecl, { })</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> </div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(BlockDecl, {</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>     <span class="keywordflow">if</span> (TypeSourceInfo *TInfo = D->getSignatureAsWritten())</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TInfo->getTypeLoc()));</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBody()));</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>     <span class="comment">// This return statement makes sure the traversal of nodes in</span></div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>     <span class="comment">// decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)</span></div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>     <span class="comment">// is skipped - don't remove it.</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>   })</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> </div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(CapturedDecl, {</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBody()));</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     <span class="comment">// This return statement makes sure the traversal of nodes in</span></div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>     <span class="comment">// decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)</span></div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>     <span class="comment">// is skipped - don't remove it.</span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>   })</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(EmptyDecl, { })</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> </div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(FileScopeAsmDecl, {</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getAsmString()));</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>   })</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> </div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ImportDecl, { })</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(FriendDecl, {</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>     <span class="comment">// Friend is either decl or a type.</span></div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>     <span class="keywordflow">if</span> (D->getFriendType())</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getFriendType()->getTypeLoc()));</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(D->getFriendDecl()));</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>   })</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> </div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(FriendTemplateDecl, {</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <span class="keywordflow">if</span> (D->getFriendType())</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getFriendType()->getTypeLoc()));</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(D->getFriendDecl()));</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = D->getNumTemplateParameters(); I < E; ++I) {</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span>       TemplateParameterList *TPL = D->getTemplateParameterList(I);</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1TemplateParameterList.html#a35a6d5bff82496554ed2581554df5240" title="Iterates through the template parameters in this list.">TemplateParameterList::iterator</a> ITPL = TPL->begin(),</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>                                            ETPL = TPL->end();</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>            ITPL != ETPL; ++ITPL) {</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>         <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(*ITPL));</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>       }</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>     }</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>   })</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> </div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ClassScopeFunctionSpecializationDecl, {</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(D->getSpecialization()));</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>     <span class="keywordflow">if</span> (D->hasExplicitTemplateArgs()) {</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>       <span class="keyword">const</span> TemplateArgumentListInfo& args = D->templateArgs();</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>           args.getArgumentArray(), args.size()));</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>     }</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>  })</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> </div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(LinkageSpecDecl, { })</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> </div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCPropertyImplDecl, {</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>     <span class="comment">// FIXME: implement this</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>   })</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> </div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(StaticAssertDecl, {</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getAssertExpr()));</div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getMessage()));</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>   })</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> </div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(TranslationUnitDecl, {</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     <span class="comment">// Code in an unnamed namespace shows up automatically in</span></div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>     <span class="comment">// decls_begin()/decls_end().  Thus we don't need to recurse on</span></div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>     <span class="comment">// D->getAnonymousNamespace().</span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>   })</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> </div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(NamespaceAliasDecl, {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>     <span class="comment">// We shouldn't traverse an aliased namespace, since it will be</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>     <span class="comment">// defined (and, therefore, traversed) somewhere else.</span></div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     <span class="comment">// This return statement makes sure the traversal of nodes in</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     <span class="comment">// decls_begin()/decls_end() (done in the DEF_TRAVERSE_DECL macro)</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <span class="comment">// is skipped - don't remove it.</span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>   })</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> </div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(LabelDecl, {</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>   <span class="comment">// There is no code in a LabelDecl.</span></div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> })</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> </div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> </div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(NamespaceDecl, {</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>     <span class="comment">// Code in an unnamed namespace shows up automatically in</span></div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>     <span class="comment">// decls_begin()/decls_end().  Thus we don't need to recurse on</span></div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>     <span class="comment">// D->getAnonymousNamespace().</span></div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>   })</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> </div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCCompatibleAliasDecl, {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   })</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> </div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCCategoryDecl, {</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>   })</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> </div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCCategoryImplDecl, {</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>   })</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> </div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCImplementationDecl, {</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>   })</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> </div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCInterfaceDecl, {</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>   })</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> </div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCProtocolDecl, {</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   })</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> </div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCMethodDecl, {</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>     <span class="keywordflow">if</span> (D->getResultTypeSourceInfo()) {</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getResultTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     }</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1ObjCMethodDecl.html#abbba9916294190611d98ec23edcf6bef">ObjCMethodDecl::param_iterator</a></div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>            I = D->param_begin(), E = D->param_end(); I != E; ++I) {</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(*I));</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span>     }</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>     <span class="keywordflow">if</span> (D->isThisDeclarationADefinition()) {</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBody()));</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>     }</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>   })</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> </div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCPropertyDecl, {</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     <span class="comment">// FIXME: implement</span></div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>   })</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> </div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(UsingDecl, {</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(D->getNameInfo()));</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>   })</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> </div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(UsingDirectiveDecl, {</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>   })</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> </div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(UsingShadowDecl, { })</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> </div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(OMPThreadPrivateDecl, {</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1OMPThreadPrivateDecl.html#a04422fecf58a08c26d3963dadf73dd26">OMPThreadPrivateDecl::varlist_iterator</a> I = D->varlist_begin(),</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>                                                 E = D->varlist_end();</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(*I));</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>     }</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>   })</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> </div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> <span class="comment">// A helper method for TemplateDecl's children.</span></div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> template<typename Derived></div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseTemplateParameterListHelper(</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>     TemplateParameterList *TPL) {</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   <span class="keywordflow">if</span> (TPL) {</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1TemplateParameterList.html#a35a6d5bff82496554ed2581554df5240" title="Iterates through the template parameters in this list.">TemplateParameterList::iterator</a> I = TPL->begin(), E = TPL->end();</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(*I));</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>     }</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   }</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> }</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> </div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="preprocessor">#define DEF_TRAVERSE_TMPL_INST(TMPLDECLKIND)                                 \</span></div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="preprocessor"></span><span class="comment">/* A helper method for traversing the implicit instantiations of a</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">   class or variable template. */</span><span class="preprocessor">                                            \</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="preprocessor">template<typename Derived>                                                   \</span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="preprocessor">bool RecursiveASTVisitor<Derived>::TraverseTemplateInstantiations(           \</span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <span class="preprocessor">    TMPLDECLKIND##TemplateDecl *D) {                                         \</span></div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="preprocessor">  TMPLDECLKIND##TemplateDecl::spec_iterator end = D->spec_end();             \</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="preprocessor">  for (TMPLDECLKIND##TemplateDecl::spec_iterator it = D->spec_begin();       \</span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <span class="preprocessor">       it != end; ++it) {                                                    \</span></div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="preprocessor">    TMPLDECLKIND##TemplateSpecializationDecl* SD = *it;                      \</span></div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="preprocessor">    switch (SD->getSpecializationKind()) {                                   \</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="preprocessor">    </span><span class="comment">/* Visit the implicit instantiations with the requested pattern. */</span><span class="preprocessor">      \</span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="preprocessor">    case TSK_Undeclared:                                                     \</span></div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> <span class="preprocessor">    case TSK_ImplicitInstantiation:                                          \</span></div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> <span class="preprocessor">      TRY_TO(TraverseDecl(SD));                                              \</span></div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="preprocessor">      break;                                                                 \</span></div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> <span class="preprocessor">    </span><span class="comment">/* We don't need to do anything on an explicit instantiation             </span></div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> <span class="comment">       or explicit specialization because there will be an explicit</span></div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> <span class="comment">       node for it elsewhere. */</span><span class="preprocessor">                                             \</span></div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="preprocessor">    case TSK_ExplicitInstantiationDeclaration:                               \</span></div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="preprocessor">    case TSK_ExplicitInstantiationDefinition:                                \</span></div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="preprocessor">    case TSK_ExplicitSpecialization:                                         \</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="preprocessor">      break;                                                                 \</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="preprocessor">    }                                                                        \</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="preprocessor">  }                                                                          \</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="preprocessor">  return true;                                                               \</span></div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="preprocessor">}</span></div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="preprocessor"></span>   </div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <a class="code" href="RecursiveASTVisitor_8h.html#a10d004652c2d8442a3ea10279228cf24">DEF_TRAVERSE_TMPL_INST</a>(Class)</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <a class="code" href="RecursiveASTVisitor_8h.html#a10d004652c2d8442a3ea10279228cf24">DEF_TRAVERSE_TMPL_INST</a>(Var)</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> </div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="comment">// A helper method for traversing the instantiations of a</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="comment">// function while skipping its specializations.</span></div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> template<typename Derived></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseTemplateInstantiations(</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>     FunctionTemplateDecl *D) {</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>   <a class="code" href="classclang_1_1FunctionTemplateDecl.html#a240b7454e9cc4d2aa88e9b4b2f4503e3">FunctionTemplateDecl::spec_iterator</a> end = D->spec_end();</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1FunctionTemplateDecl.html#a240b7454e9cc4d2aa88e9b4b2f4503e3">FunctionTemplateDecl::spec_iterator</a> it = D->spec_begin(); it != end;</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>        ++it) {</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>     FunctionDecl* FD = *it;</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>     <span class="keywordflow">switch</span> (FD->getTemplateSpecializationKind()) {</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a92763cc9fa42510d19b6689d36e836cb">TSK_Undeclared</a>:</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a62976768097ae1ada5133dca824b7cd8">TSK_ImplicitInstantiation</a>:</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>       <span class="comment">// We don't know what kind of FunctionDecl this is.</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(FD));</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> </div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>     <span class="comment">// FIXME: For now traverse explicit instantiations here. Change that</span></div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     <span class="comment">// once they are represented as dedicated nodes in the AST.</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a59e44ac54dee956568aa545e9f9bee6f">TSK_ExplicitInstantiationDeclaration</a>:</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a4e1ba3c64fa82dff03cc7e5c6371e098">TSK_ExplicitInstantiationDefinition</a>:</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(FD));</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> </div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a5d6a29f74264666bba70d1d1cebd3ea5">TSK_ExplicitSpecialization</a>:</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>     }</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>   }</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> </div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> }</div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> </div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> <span class="comment">// This macro unifies the traversal of class, variable and function</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> <span class="comment">// template declarations.</span></div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> <span class="preprocessor">#define DEF_TRAVERSE_TMPL_DECL(TMPLDECLKIND)                                 \</span></div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> <span class="preprocessor">DEF_TRAVERSE_DECL(TMPLDECLKIND##TemplateDecl, {                              \</span></div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> <span class="preprocessor">    TRY_TO(TraverseDecl(D->getTemplatedDecl()));                             \</span></div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> <span class="preprocessor">    TRY_TO(TraverseTemplateParameterListHelper(D->getTemplateParameters())); \</span></div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> <span class="preprocessor">    </span><span class="comment">/* By default, we do not traverse the instantiations of</span></div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> <span class="comment">       class templates since they do not appear in the user code. The</span></div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> <span class="comment">       following code optionally traverses them.</span></div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> <span class="comment">       </span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="comment">       We only traverse the class instantiations when we see the canonical</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> <span class="comment">       declaration of the template, to ensure we only visit them once. */</span><span class="preprocessor">    \</span></div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> <span class="preprocessor">    if (getDerived().shouldVisitTemplateInstantiations() &&                  \</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> <span class="preprocessor">        D == D->getCanonicalDecl())                                          \</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <span class="preprocessor">      TRY_TO(TraverseTemplateInstantiations(D));                             \</span></div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> <span class="preprocessor">    </span><span class="comment">/* Note that getInstantiatedFromMemberTemplate() is just a link</span></div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> <span class="comment">       from a template instantiation back to the template from which</span></div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> <span class="comment">       it was instantiated, and thus should not be traversed. */</span><span class="preprocessor">             \</span></div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> <span class="preprocessor">  })</span></div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> <a class="code" href="RecursiveASTVisitor_8h.html#aa50d5ed2489eb9d2ecb2282708685688">DEF_TRAVERSE_TMPL_DECL</a>(Class)</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> DEF_TRAVERSE_TMPL_DECL(Var)</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> DEF_TRAVERSE_TMPL_DECL(Function)</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> </div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> DEF_TRAVERSE_DECL(TemplateTemplateParmDecl, {</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>     <span class="comment">// D is the "T" in something like</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>     <span class="comment">//   template <template <typename> class T> class container { };</span></div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(D->getTemplatedDecl()));</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>     <span class="keywordflow">if</span> (D->hasDefaultArgument() && !D->defaultArgumentWasInherited()) {</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLoc(D->getDefaultArgument()));</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>     }</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateParameterListHelper(D->getTemplateParameters()));</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>   })</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> </div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(TemplateTypeParmDecl, {</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>     <span class="comment">// D is the "T" in something like "template<typename T> class vector;"</span></div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>     <span class="keywordflow">if</span> (D->getTypeForDecl())</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(QualType(D->getTypeForDecl(), 0)));</div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>     <span class="keywordflow">if</span> (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getDefaultArgumentInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>   })</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> </div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(TypedefDecl, {</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>     <span class="comment">// We shouldn't traverse D->getTypeForDecl(); it's a result of</span></div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>     <span class="comment">// declaring the typedef, not something that was written in the</span></div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>     <span class="comment">// source.</span></div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>   })</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> </div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(TypeAliasDecl, {</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span>     <span class="comment">// We shouldn't traverse D->getTypeForDecl(); it's a result of</span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>     <span class="comment">// declaring the type alias, not something that was written in the</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>     <span class="comment">// source.</span></div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span>   })</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> </div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(TypeAliasTemplateDecl, {</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(D->getTemplatedDecl()));</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateParameterListHelper(D->getTemplateParameters()));</div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>   })</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> </div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(UnresolvedUsingTypenameDecl, {</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     <span class="comment">// A dependent using declaration which was marked with 'typename'.</span></div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>     <span class="comment">//   template<class T> class A : public B<T> { using typename B<T>::foo; };</span></div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span>     <span class="comment">// We shouldn't traverse D->getTypeForDecl(); it's a result of</span></div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>     <span class="comment">// declaring the type, not something that was written in the</span></div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>     <span class="comment">// source.</span></div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>   })</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> </div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(EnumDecl, {</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>     <span class="keywordflow">if</span> (D->getTypeForDecl())</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(QualType(D->getTypeForDecl(), 0)));</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> </div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>     <span class="comment">// The enumerators are already traversed by</span></div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     <span class="comment">// decls_begin()/decls_end().</span></div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   })</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> </div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> </div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> <span class="comment">// Helper methods for RecordDecl and its children.</span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> template<typename Derived></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseRecordHelper(</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>     RecordDecl *D) {</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>   <span class="comment">// We shouldn't traverse D->getTypeForDecl(); it's a result of</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>   <span class="comment">// declaring the type, not something that was written in the source.</span></div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span> </div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span> }</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> </div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseCXXRecordHelper(</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>     CXXRecordDecl *D) {</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>   <span class="keywordflow">if</span> (!TraverseRecordHelper(D))</div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>   <span class="keywordflow">if</span> (D->isCompleteDefinition()) {</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#aa88e7e85c5b2e83c34a69a8d65abafb2" title="Iterator that traverses the base classes of a class.">CXXRecordDecl::base_class_iterator</a> I = D->bases_begin(),</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>                                             E = D->bases_end();</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(I->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>     }</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>     <span class="comment">// We don't traverse the friends or the conversions, as they are</span></div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>     <span class="comment">// already in decls_begin()/decls_end().</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span>   }</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> }</div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> </div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(RecordDecl, {</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseRecordHelper(D));</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   })</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> </div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(CXXRecordDecl, {</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseCXXRecordHelper(D));</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>   })</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> </div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> #define <a class="code" href="RecursiveASTVisitor_8h.html#a85e6d36aadab994864418203baf6e2b0">DEF_TRAVERSE_TMPL_SPEC_DECL</a>(TMPLDECLKIND) \</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> DEF_TRAVERSE_DECL(TMPLDECLKIND##TemplateSpecializationDecl, {                \</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>     <span class="comment">/* For implicit instantiations ("set<int> x;"), we don't want to</span></div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="comment">       recurse at all, since the instatiated template isn't written in</span></div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> <span class="comment">       the source code anywhere.  (Note the instatiated *type* --</span></div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> <span class="comment">       set<int> -- is written, and will still get a callback of</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> <span class="comment">       TemplateSpecializationType).  For explicit instantiations</span></div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> <span class="comment">       ("template set<int>;"), we do need a callback, since this</span></div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> <span class="comment">       is the only callback that's made for this instantiation.</span></div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> <span class="comment">       We use getTypeAsWritten() to distinguish. */</span>                          \</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>     if (TypeSourceInfo *TSI = D->getTypeAsWritten())                         \</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TSI->getTypeLoc()));                            <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">\</a></div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">                                                                             \</a></div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">    if</a> (!getDerived().shouldVisitTemplateInstantiations() &&                 \</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>         D->getTemplateSpecializationKind() != <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a5d6a29f74264666bba70d1d1cebd3ea5">TSK_ExplicitSpecialization</a>)    \</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>       <span class="comment">/* Returning from here skips traversing the</span></div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> <span class="comment">         declaration context of the *TemplateSpecializationDecl</span></div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> <span class="comment">         (embedded in the DEF_TRAVERSE_DECL() macro)</span></div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> <span class="comment">         which contains the instantiated members of the template. */</span>         \</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;                                                           \</div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>   })</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> <a class="code" href="RecursiveASTVisitor_8h.html#a85e6d36aadab994864418203baf6e2b0">DEF_TRAVERSE_TMPL_SPEC_DECL</a>(Class)</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span> DEF_TRAVERSE_TMPL_SPEC_DECL(Var)</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> </div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span> template <typename Derived></div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseTemplateArgumentLocsHelper(</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>     const TemplateArgumentLoc *TAL, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960ad0386506936fec96a18d01e42d4eb514">Count</a>) {</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0; I < <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960ad0386506936fec96a18d01e42d4eb514">Count</a>; ++I) {</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLoc(TAL[I]));</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>   }</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> }</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> </div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="preprocessor">#define DEF_TRAVERSE_TMPL_PART_SPEC_DECL(TMPLDECLKIND, DECLKIND) \</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="preprocessor">DEF_TRAVERSE_DECL(TMPLDECLKIND##TemplatePartialSpecializationDecl, {         \</span></div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> <span class="preprocessor">    </span><span class="comment">/* The partial specialization. */</span><span class="preprocessor">                                        \</span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span> <span class="preprocessor">    if (TemplateParameterList *TPL = D->getTemplateParameters()) {           \</span></div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> <span class="preprocessor">      for (TemplateParameterList::iterator I = TPL->begin(), E = TPL->end(); \</span></div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> <span class="preprocessor">           I != E; ++I) {                                                    \</span></div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> <span class="preprocessor">        TRY_TO(TraverseDecl(*I));                                            \</span></div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> <span class="preprocessor">      }                                                                      \</span></div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span> <span class="preprocessor">    }                                                                        \</span></div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> <span class="preprocessor">    </span><span class="comment">/* The args that remains unspecialized. */</span><span class="preprocessor">                               \</span></div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> <span class="preprocessor">    TRY_TO(TraverseTemplateArgumentLocsHelper(                               \</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> <span class="preprocessor">                      D->getTemplateArgsAsWritten()->getTemplateArgs(),      \</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> <span class="preprocessor">                      D->getTemplateArgsAsWritten()->NumTemplateArgs));      \</span></div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> <span class="preprocessor">    </span><span class="comment">/* Don't need the *TemplatePartialSpecializationHelper, even</span></div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span> <span class="comment">       though that's our parent class -- we already visit all the</span></div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> <span class="comment">       template args here. */</span><span class="preprocessor">                                                \</span></div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> <span class="preprocessor">    TRY_TO(Traverse##DECLKIND##Helper(D));                                   \</span></div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> <span class="preprocessor">                                                                             \</span></div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> <span class="preprocessor">    </span><span class="comment">/* Instantiations will have been visited with the primary template. */</span><span class="preprocessor">   \</span></div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> <span class="preprocessor">  })</span></div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span> <a class="code" href="RecursiveASTVisitor_8h.html#a21daf2832631048e9c740408d2b60e67">DEF_TRAVERSE_TMPL_PART_SPEC_DECL</a>(Class, CXXRecord)</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> DEF_TRAVERSE_TMPL_PART_SPEC_DECL(Var, Var)</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span> </div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> DEF_TRAVERSE_DECL(EnumConstantDecl, {</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getInitExpr()));</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>   })</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span> </div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(UnresolvedUsingValueDecl, {</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>     <span class="comment">// Like UnresolvedUsingTypenameDecl, but without the 'typename':</span></div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span>     <span class="comment">//    template <class T> Class A : public Base<T> { using Base<T>::foo; };</span></div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(D->getNameInfo()));</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span>   })</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> </div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(IndirectFieldDecl, {})</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> </div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> template<typename Derived></div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseDeclaratorHelper(DeclaratorDecl *D) {</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>   <span class="keywordflow">if</span> (D->getTypeSourceInfo())</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(D->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseType(D->getType()));</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> }</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> </div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(MSPropertyDecl, {</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclaratorHelper(D));</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   })</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> </div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(FieldDecl, {</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclaratorHelper(D));</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>     <span class="keywordflow">if</span> (D->isBitField())</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBitWidth()));</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (D->hasInClassInitializer())</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getInClassInitializer()));</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>   })</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> </div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCAtDefsFieldDecl, {</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclaratorHelper(D));</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span>     <span class="keywordflow">if</span> (D->isBitField())</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBitWidth()));</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     <span class="comment">// FIXME: implement the rest.</span></div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span>   })</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> </div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ObjCIvarDecl, {</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclaratorHelper(D));</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span>     <span class="keywordflow">if</span> (D->isBitField())</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBitWidth()));</div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span>     <span class="comment">// FIXME: implement the rest.</span></div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>   })</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> </div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> template<typename Derived></div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseFunctionHelper(FunctionDecl *D) {</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(D->getQualifierLoc()));</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(D->getNameInfo()));</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> </div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span>   <span class="comment">// If we're an explicit template specialization, iterate over the</span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   <span class="comment">// template args that were explicitly specified.  If we were doing</span></div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>   <span class="comment">// this in typing order, we'd do it between the return type and</span></div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>   <span class="comment">// the function args, but both are handled by the FunctionTypeLoc</span></div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>   <span class="comment">// above, so we have to choose one side.  I've decided to do before.</span></div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> FunctionTemplateSpecializationInfo *FTSI =</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>       D->getTemplateSpecializationInfo()) {</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span>     <span class="keywordflow">if</span> (FTSI->getTemplateSpecializationKind() != <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a92763cc9fa42510d19b6689d36e836cb">TSK_Undeclared</a> &&</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>         FTSI->getTemplateSpecializationKind() != <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a62976768097ae1ada5133dca824b7cd8">TSK_ImplicitInstantiation</a>) {</div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>       <span class="comment">// A specialization might not have explicit template arguments if it has</span></div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>       <span class="comment">// a templated return type and concrete arguments.</span></div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>       <span class="keywordflow">if</span> (<span class="keyword">const</span> ASTTemplateArgumentListInfo *TALI =</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>           FTSI->TemplateArgumentsAsWritten) {</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>         <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(TALI->getTemplateArgs(),</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>                                                   TALI->NumTemplateArgs));</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>       }</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>     }</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span>   }</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> </div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>   <span class="comment">// Visit the function type itself, which can be either</span></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>   <span class="comment">// FunctionNoProtoType or FunctionProtoType, or a typedef.  This</span></div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>   <span class="comment">// also covers the return type and the function parameters,</span></div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>   <span class="comment">// including exception specifications.</span></div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span>   <span class="keywordflow">if</span> (TypeSourceInfo *TSI = D->getTypeSourceInfo()) {</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TSI->getTypeLoc()));</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (getDerived().shouldVisitImplicitCode()) {</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>     <span class="comment">// Visit parameter variable declarations of the implicit function</span></div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>     <span class="comment">// if the traverser is visiting implicit code. Parameter variable</span></div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>     <span class="comment">// declarations do not have valid TypeSourceInfo, so to visit them</span></div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span>     <span class="comment">// we need to traverse the declarations explicitly.</span></div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1FunctionDecl.html#acd4759dcc88e4125a177456fb575bf12">FunctionDecl::param_const_iterator</a> I = D->param_begin(),</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>                                             E = D->param_end(); I != E; ++I)</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(*I));</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>   }</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span> </div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>   <span class="keywordflow">if</span> (CXXConstructorDecl *Ctor = dyn_cast<CXXConstructorDecl>(D)) {</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span>     <span class="comment">// Constructor initializers.</span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXConstructorDecl.html#a286e80abfb8e4b1b2ea76ed194b5c39f" title="Iterates through the member/base initializer list.">CXXConstructorDecl::init_iterator</a> I = Ctor->init_begin(),</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span>                                            E = Ctor->init_end();</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseConstructorInitializer(*I));</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>     }</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>   }</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> </div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>   <span class="keywordflow">if</span> (D->isThisDeclarationADefinition()) {</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getBody()));  <span class="comment">// Function body.</span></div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>   }</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> }</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> </div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(FunctionDecl, {</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>     <span class="comment">// We skip decls_begin/decls_end, which are already covered by</span></div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span>     <span class="comment">// TraverseFunctionHelper().</span></div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span>     <span class="keywordflow">return</span> TraverseFunctionHelper(D);</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>   })</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span> </div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(CXXMethodDecl, {</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span>     <span class="comment">// We skip decls_begin/decls_end, which are already covered by</span></div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span>     <span class="comment">// TraverseFunctionHelper().</span></div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>     <span class="keywordflow">return</span> TraverseFunctionHelper(D);</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>   })</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> </div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(CXXConstructorDecl, {</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>     <span class="comment">// We skip decls_begin/decls_end, which are already covered by</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>     <span class="comment">// TraverseFunctionHelper().</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     <span class="keywordflow">return</span> TraverseFunctionHelper(D);</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>   })</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> </div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> <span class="comment">// CXXConversionDecl is the declaration of a type conversion operator.</span></div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> <span class="comment">// It's not a cast expression.</span></div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(CXXConversionDecl, {</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>     <span class="comment">// We skip decls_begin/decls_end, which are already covered by</span></div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>     <span class="comment">// TraverseFunctionHelper().</span></div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>     <span class="keywordflow">return</span> TraverseFunctionHelper(D);</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span>   })</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> </div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(CXXDestructorDecl, {</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>     <span class="comment">// We skip decls_begin/decls_end, which are already covered by</span></div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     <span class="comment">// TraverseFunctionHelper().</span></div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>     <span class="keywordflow">return</span> TraverseFunctionHelper(D);</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>   })</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> </div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> template<typename Derived></div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseVarHelper(VarDecl *D) {</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclaratorHelper(D));</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>   <span class="comment">// Default params are taken care of when we traverse the ParmVarDecl.</span></div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span>   <span class="keywordflow">if</span> (!isa<ParmVarDecl>(D) &&</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span>       (!D->isCXXForRangeDecl() || getDerived().shouldVisitImplicitCode()))</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getInit()));</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span> }</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> </div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(VarDecl, {</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseVarHelper(D));</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>   })</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> </div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ImplicitParamDecl, {</div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseVarHelper(D));</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>   })</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> </div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(NonTypeTemplateParmDecl, {</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>     <span class="comment">// A non-type template parameter, e.g. "S" in template<int S> class Foo ...</span></div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclaratorHelper(D));</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>     <span class="keywordflow">if</span> (D->hasDefaultArgument() && !D->defaultArgumentWasInherited())</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getDefaultArgument()));</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>   })</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> <a class="code" href="RecursiveASTVisitor_8h.html#a79d03e662e9164c60c3087cef777a0ff">DEF_TRAVERSE_DECL</a>(ParmVarDecl, {</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseVarHelper(D));</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>     <span class="keywordflow">if</span> (D->hasDefaultArg() &&</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>         D->hasUninstantiatedDefaultArg() &&</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>         !D->hasUnparsedDefaultArg())</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getUninstantiatedDefaultArg()));</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> </div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>     <span class="keywordflow">if</span> (D->hasDefaultArg() &&</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>         !D->hasUninstantiatedDefaultArg() &&</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>         !D->hasUnparsedDefaultArg())</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(D->getDefaultArg()));</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>   })</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> </div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> #undef DEF_TRAVERSE_DECL</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span> </div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> <span class="comment">// ----------------- Stmt traversal -----------------</span></div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> <span class="comment">//</span></div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span> <span class="comment">// For stmts, we automate (in the DEF_TRAVERSE_STMT macro) iterating</span></div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span> <span class="comment">// over the children defined in children() (every stmt defines these,</span></div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> <span class="comment">// though sometimes the range is empty).  Each individual Traverse*</span></div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span> <span class="comment">// method only needs to worry about children other than those.  To see</span></div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span> <span class="comment">// what children() does for a given class, see, e.g.,</span></div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> <span class="comment">//   http://clang.llvm.org/doxygen/Stmt_8cpp_source.html</span></div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> <span class="comment">// This macro makes available a variable S, the passed-in stmt.</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> #define <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(<a class="code" href="ASTFwd_8h.html#a359a8aab0e73d127aee4627ea54df394">STMT</a>, CODE)                                   \</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> template<typename Derived>                                              \</div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> bool RecursiveASTVisitor<Derived>::Traverse##<a class="code" href="ASTFwd_8h.html#a359a8aab0e73d127aee4627ea54df394">STMT</a> (<a class="code" href="ASTFwd_8h.html#a359a8aab0e73d127aee4627ea54df394">STMT</a> *S) {           \</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>   TRY_TO(WalkUpFrom##<a class="code" href="ASTFwd_8h.html#a359a8aab0e73d127aee4627ea54df394">STMT</a>(S));                                          \</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>   { CODE; }                                                             \</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>   for (<a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">Stmt::child_range</a> range = S-><a class="code" href="classclang_1_1Stmt.html#a489148e5d234a5a7f00d8b02981bcee5">children</a>(); range; ++range) {       \</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>     TRY_TO(TraverseStmt(*range));                                       \</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>   }                                                                     \</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>   return <span class="keyword">true</span>;                                                          \</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> }</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> </div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(GCCAsmStmt, {</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getAsmString()));</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = S->getNumInputs(); I < E; ++I) {</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getInputConstraintLiteral(I)));</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>     }</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = S->getNumOutputs(); I < E; ++I) {</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getOutputConstraintLiteral(I)));</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>     }</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = S->getNumClobbers(); I < E; ++I) {</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getClobberStringLiteral(I)));</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     }</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     <span class="comment">// children() iterates over inputExpr and outputExpr.</span></div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>   })</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(MSAsmStmt, { </div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>     <span class="comment">// FIXME: MS Asm doesn't currently parse Constraints, Clobbers, etc.  Once</span></div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>     <span class="comment">// added this needs to be implemented.</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>   })</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span> </div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXCatchStmt, {</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(S->getExceptionDecl()));</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     <span class="comment">// children() iterates over the handler block.</span></div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>   })</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span> </div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(DeclStmt, {</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1DeclStmt.html#a2dec08d722e317ca65c7ac517a80f5b6">DeclStmt::decl_iterator</a> I = S->decl_begin(), E = S->decl_end();</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(*I));</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     }</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     <span class="comment">// Suppress the default iteration over children() by</span></div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     <span class="comment">// returning.  Here's why: A DeclStmt looks like 'type var [=</span></div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>     <span class="comment">// initializer]'.  The decls above already traverse over the</span></div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>     <span class="comment">// initializers, so we don't have to do it again (which</span></div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>     <span class="comment">// children() would do).</span></div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>   })</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> </div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> </div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span> <span class="comment">// These non-expr stmts (most of them), do not need any action except</span></div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span> <span class="comment">// iterating over the children.</span></div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(BreakStmt, { })</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXTryStmt, { })</div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CaseStmt, { })</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CompoundStmt, { })</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ContinueStmt, { })</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(DefaultStmt, { })</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(DoStmt, { })</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ForStmt, { })</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(GotoStmt, { })</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(IfStmt, { })</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(IndirectGotoStmt, { })</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(LabelStmt, { })</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(AttributedStmt, { })</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(NullStmt, { })</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCAtCatchStmt, { })</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCAtFinallyStmt, { })</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCAtSynchronizedStmt, { })</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCAtThrowStmt, { })</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCAtTryStmt, { })</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCForCollectionStmt, { })</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCAutoreleasePoolStmt, { })</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXForRangeStmt, {</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>   <span class="keywordflow">if</span> (!getDerived().shouldVisitImplicitCode()) {</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getLoopVarStmt()));</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getRangeInit()));</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getBody()));</div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>     <span class="comment">// Visit everything else only if shouldVisitImplicitCode().</span></div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>   }</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> })</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(MSDependentExistsStmt, {</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(S->getNameInfo()));</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span> })</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ReturnStmt, { })</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SwitchStmt, { })</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(WhileStmt, { })</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span> </div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span> </div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXDependentScopeMemberExpr, {</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(S->getMemberNameInfo()));</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>     <span class="keywordflow">if</span> (S->hasExplicitTemplateArgs()) {</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>           S->getTemplateArgs(), S->getNumTemplateArgs()));</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>     }</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>   })</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span> </div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(DeclRefExpr, {</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(S->getNameInfo()));</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>         S->getTemplateArgs(), S->getNumTemplateArgs()));</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>   })</div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> </div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(DependentScopeDeclRefExpr, {</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(S->getNameInfo()));</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span>     <span class="keywordflow">if</span> (S->hasExplicitTemplateArgs()) {</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>           S->getExplicitTemplateArgs().getTemplateArgs(),</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>           S->getNumTemplateArgs()));</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span>     }</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>   })</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span> </div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(MemberExpr, {</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDeclarationNameInfo(S->getMemberNameInfo()));</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>         S->getTemplateArgs(), S->getNumTemplateArgs()));</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>   })</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> </div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ImplicitCastExpr, {</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>     <span class="comment">// We don't traverse the cast type, as it's not written in the</span></div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>     <span class="comment">// source code.</span></div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>   })</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> </div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CStyleCastExpr, {</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>   })</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> </div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXFunctionalCastExpr, {</div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>   })</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span> </div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXConstCastExpr, {</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>   })</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> </div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXDynamicCastExpr, {</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>   })</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXReinterpretCastExpr, {</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>   })</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> </div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXStaticCastExpr, {</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>   })</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span> </div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> <span class="comment">// InitListExpr is a tricky one, because we want to do all our work on</span></div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <span class="comment">// the syntactic form of the listexpr, but this method takes the</span></div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> <span class="comment">// semantic form by default.  We can't use the macro helper because it</span></div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> <span class="comment">// calls WalkUp*() on the semantic form, before our code can convert</span></div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span> <span class="comment">// to the syntactic form.</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span> template<typename Derived></div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseInitListExpr(InitListExpr *S) {</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>   <span class="keywordflow">if</span> (InitListExpr *Syn = S->getSyntacticForm())</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>     S = Syn;</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(WalkUpFromInitListExpr(S));</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>   <span class="comment">// All we need are the default actions.  FIXME: use a helper function.</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">Stmt::child_range</a> range = S-><a class="code" href="classclang_1_1Stmt.html#a489148e5d234a5a7f00d8b02981bcee5">children</a>(); range; ++range) {</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(*range));</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>   }</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span> }</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> </div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> <span class="comment">// GenericSelectionExpr is a special case because the types and expressions</span></div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> <span class="comment">// are interleaved.  We also need to watch out for null types (default</span></div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span> <span class="comment">// generic associations).</span></div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> TraverseGenericSelectionExpr(GenericSelectionExpr *S) {</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(WalkUpFromGenericSelectionExpr(S));</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getControllingExpr()));</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i != S->getNumAssocs(); ++i) {</div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>     <span class="keywordflow">if</span> (TypeSourceInfo *TS = S->getAssocTypeSourceInfo(i))</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TS->getTypeLoc()));</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getAssocExpr(i)));</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>   }</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> }</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> </div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> <span class="comment">// PseudoObjectExpr is a special case because of the wierdness with</span></div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> <span class="comment">// syntactic expressions and opaque values.</span></div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::</div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> TraversePseudoObjectExpr(PseudoObjectExpr *S) {</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(WalkUpFromPseudoObjectExpr(S));</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getSyntacticForm()));</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1PseudoObjectExpr.html#a4bd00d7e7c8c3c9a2e09210993b3119b">PseudoObjectExpr::semantics_iterator</a></div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>          i = S->semantics_begin(), e = S->semantics_end(); i != e; ++i) {</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>     Expr *sub = *i;</div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>     <span class="keywordflow">if</span> (OpaqueValueExpr *OVE = dyn_cast<OpaqueValueExpr>(sub))</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>       sub = OVE->getSourceExpr();</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(sub));</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>   }</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span> }</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXScalarValueInitExpr, {</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>     <span class="comment">// This is called for code like 'return T()' where T is a built-in</span></div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>     <span class="comment">// (i.e. non-class) type.</span></div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>   })</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span> </div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXNewExpr, {</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   <span class="comment">// The child-iterator will pick up the other arguments.</span></div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getAllocatedTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>   })</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> </div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(OffsetOfExpr, {</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>     <span class="comment">// The child-iterator will pick up the expression representing</span></div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>     <span class="comment">// the field.</span></div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>     <span class="comment">// FIMXE: for code like offsetof(Foo, a.b.c), should we get</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>     <span class="comment">// making a MemberExpr callbacks for Foo.a, Foo.a.b, and Foo.a.b.c?</span></div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>   })</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span> </div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(UnaryExprOrTypeTraitExpr, {</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>     <span class="comment">// The child-iterator will pick up the arg if it's an expression,</span></div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>     <span class="comment">// but not if it's a type.</span></div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>     <span class="keywordflow">if</span> (S->isArgumentType())</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getArgumentTypeInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>   })</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span> </div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXTypeidExpr, {</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>     <span class="comment">// The child-iterator will pick up the arg if it's an expression,</span></div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>     <span class="comment">// but not if it's a type.</span></div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>     <span class="keywordflow">if</span> (S->isTypeOperand())</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeOperandSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>   })</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> </div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(MSPropertyRefExpr, {</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> })</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> </div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXUuidofExpr, {</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>     <span class="comment">// The child-iterator will pick up the arg if it's an expression,</span></div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>     <span class="comment">// but not if it's a type.</span></div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>     <span class="keywordflow">if</span> (S->isTypeOperand())</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeOperandSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>   })</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(UnaryTypeTraitExpr, {</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getQueriedTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   })</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span> </div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(BinaryTypeTraitExpr, {</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getLhsTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getRhsTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span>   })</div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> </div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(TypeTraitExpr, {</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = S->getNumArgs(); I != N; ++I)</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getArg(I)->getTypeLoc()));</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span> })</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span> </div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ArrayTypeTraitExpr, {</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getQueriedTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span>   })</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> </div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ExpressionTraitExpr, {</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseStmt(S->getQueriedExpression()));</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span>   })</div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span> </div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(VAArgExpr, {</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span>     <span class="comment">// The child-iterator will pick up the expression argument.</span></div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getWrittenTypeInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>   })</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> </div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXTemporaryObjectExpr, {</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span>     <span class="comment">// This is called for code like 'return T()' where T is a class type.</span></div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span>   })</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> </div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> <span class="comment">// Walk only the visible parts of lambda expressions.  </span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> template<typename Derived></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseLambdaExpr(LambdaExpr *S) {</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(WalkUpFromLambdaExpr(S));</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> </div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1LambdaExpr.html#a095f40c832b85e1f5cd95cc328808bd8" title="An iterator that walks over the captures of the lambda, both implicit and explicit.">LambdaExpr::capture_iterator</a> C = S->explicit_capture_begin(),</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span>                                  CEnd = S->explicit_capture_end();</div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span>        C != CEnd; ++C) {</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseLambdaCapture(S, C));</div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span>   }</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> </div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>   <span class="keywordflow">if</span> (S->hasExplicitParameters() || S->hasExplicitResultType()) {</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span>     TypeLoc TL = S->getCallOperator()->getTypeSourceInfo()->getTypeLoc();</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span>     <span class="keywordflow">if</span> (S->hasExplicitParameters() && S->hasExplicitResultType()) {</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span>       <span class="comment">// Visit the whole type.</span></div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span>       <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TL));</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (FunctionProtoTypeLoc Proto = TL.getAs<FunctionProtoTypeLoc>()) {</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span>       <span class="keywordflow">if</span> (S->hasExplicitParameters()) {</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span>         <span class="comment">// Visit parameters.</span></div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Proto.getNumArgs(); I != N; ++I) {</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>           <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(Proto.getArg(I)));</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span>         }</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>         <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(Proto.getResultLoc()));</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span>       }        </div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span>     }</div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span>   }</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span> </div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseLambdaBody(S));</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> }</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> </div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXUnresolvedConstructExpr, {</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>     <span class="comment">// This is called for code like 'T()', where T is a template argument.</span></div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span>   })</div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span> </div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span> <span class="comment">// These expressions all might take explicit template arguments.</span></div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> <span class="comment">// We traverse those if so.  FIXME: implement these.</span></div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXConstructExpr, { })</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CallExpr, { })</div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXMemberCallExpr, { })</div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span> </div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> <span class="comment">// These exprs (most of them), do not need any action except iterating</span></div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span> <span class="comment">// over the children.</span></div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(AddrLabelExpr, { })</div>
+<div class="line"><a name="l02214"></a><span class="lineno"> 2214</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ArraySubscriptExpr, { })</div>
+<div class="line"><a name="l02215"></a><span class="lineno"> 2215</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(BlockExpr, {</div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(S->getBlockDecl()));</div>
+<div class="line"><a name="l02217"></a><span class="lineno"> 2217</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// no child statements to loop through.</span></div>
+<div class="line"><a name="l02218"></a><span class="lineno"> 2218</span> })</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ChooseExpr, { })</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CompoundLiteralExpr, {</div>
+<div class="line"><a name="l02221"></a><span class="lineno"> 2221</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeSourceInfo()->getTypeLoc()));</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span> })</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXBindTemporaryExpr, { })</div>
+<div class="line"><a name="l02224"></a><span class="lineno"> 2224</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXBoolLiteralExpr, { })</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXDefaultArgExpr, { })</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXDefaultInitExpr, { })</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXDeleteExpr, { })</div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ExprWithCleanups, { })</div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXNullPtrLiteralExpr, { })</div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXStdInitializerListExpr, { })</div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXPseudoDestructorExpr, {</div>
+<div class="line"><a name="l02232"></a><span class="lineno"> 2232</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>   <span class="keywordflow">if</span> (TypeSourceInfo *ScopeInfo = S->getScopeTypeInfo())</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(ScopeInfo->getTypeLoc()));</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>   <span class="keywordflow">if</span> (TypeSourceInfo *DestroyedTypeInfo = S->getDestroyedTypeInfo())</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(DestroyedTypeInfo->getTypeLoc()));</div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> })</div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXThisExpr, { })</div>
+<div class="line"><a name="l02239"></a><span class="lineno"> 2239</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXThrowExpr, { })</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(UserDefinedLiteral, { })</div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(DesignatedInitExpr, { })</div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ExtVectorElementExpr, { })</div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(GNUNullExpr, { })</div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ImplicitValueInitExpr, { })</div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCBoolLiteralExpr, { })</div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCEncodeExpr, {</div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span>   <span class="keywordflow">if</span> (TypeSourceInfo *TInfo = S->getEncodedTypeSourceInfo())</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TInfo->getTypeLoc()));</div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> })</div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCIsaExpr, { })</div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCIvarRefExpr, { })</div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCMessageExpr, {</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span>   <span class="keywordflow">if</span> (TypeSourceInfo *TInfo = S->getClassReceiverTypeInfo())</div>
+<div class="line"><a name="l02254"></a><span class="lineno"> 2254</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(TInfo->getTypeLoc()));</div>
+<div class="line"><a name="l02255"></a><span class="lineno"> 2255</span> })</div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCPropertyRefExpr, { })</div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCSubscriptRefExpr, { })</div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCProtocolExpr, { })</div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCSelectorExpr, { })</div>
+<div class="line"><a name="l02260"></a><span class="lineno"> 2260</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCIndirectCopyRestoreExpr, { })</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCBridgedCastExpr, {</div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTypeLoc(S->getTypeInfoAsWritten()->getTypeLoc()));</div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span> })</div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ParenExpr, { })</div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ParenListExpr, { })</div>
+<div class="line"><a name="l02266"></a><span class="lineno"> 2266</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(PredefinedExpr, { })</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ShuffleVectorExpr, { })</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ConvertVectorExpr, { })</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(StmtExpr, { })</div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(UnresolvedLookupExpr, {</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span>   <span class="keywordflow">if</span> (S->hasExplicitTemplateArgs()) {</div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(S->getTemplateArgs(),</div>
+<div class="line"><a name="l02274"></a><span class="lineno"> 2274</span>                                               S->getNumTemplateArgs()));</div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span>   }</div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> })</div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> </div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(UnresolvedMemberExpr, {</div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseNestedNameSpecifierLoc(S->getQualifierLoc()));</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span>   <span class="keywordflow">if</span> (S->hasExplicitTemplateArgs()) {</div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span>     <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseTemplateArgumentLocsHelper(S->getTemplateArgs(),</div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span>                                               S->getNumTemplateArgs()));</div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span>   }</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span> })</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span> </div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SEHTryStmt, {})</div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SEHExceptStmt, {})</div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SEHFinallyStmt,{})</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CapturedStmt, {</div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span>   <a class="code" href="namespaceclang.html#acf47c29c7e8546d861758e28a4b11141">TRY_TO</a>(TraverseDecl(S->getCapturedDecl()));</div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> })</div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> </div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXOperatorCallExpr, { })</div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(OpaqueValueExpr, { })</div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CUDAKernelCallExpr, { })</div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> </div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> <span class="comment">// These operators (all of them) do not need any action except</span></div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span> <span class="comment">// iterating over the children.</span></div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(BinaryConditionalOperator, { })</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ConditionalOperator, { })</div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(UnaryOperator, { })</div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(BinaryOperator, { })</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CompoundAssignOperator, { })</div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CXXNoexceptExpr, { })</div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(PackExpansionExpr, { })</div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SizeOfPackExpr, { })</div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SubstNonTypeTemplateParmPackExpr, { })</div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(SubstNonTypeTemplateParmExpr, { })</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(FunctionParmPackExpr, { })</div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(MaterializeTemporaryExpr, { })</div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(AtomicExpr, { })</div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> </div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span> <span class="comment">// These literals (all of them) do not need any action.</span></div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(IntegerLiteral, { })</div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(CharacterLiteral, { })</div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(FloatingLiteral, { })</div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ImaginaryLiteral, { })</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(StringLiteral, { })</div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCStringLiteral, { })</div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCBoxedExpr, { })</div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCArrayLiteral, { })</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(ObjCDictionaryLiteral, { })</div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span>   </div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span> <span class="comment">// Traverse OpenCL: AsType, Convert.</span></div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(AsTypeExpr, { })</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span> </div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span> <span class="comment">// OpenMP directives.</span></div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> <a class="code" href="RecursiveASTVisitor_8h.html#a814c6095d04baa03398bcad25f25075e">DEF_TRAVERSE_STMT</a>(OMPParallelDirective, {</div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span>   ArrayRef<OMPClause *> Clauses = S->clauses();</div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span>   <span class="keywordflow">for</span> (ArrayRef<OMPClause *>::iterator I = Clauses.begin(), E = Clauses.end();</div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>        I != E; ++I)</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>     <span class="keywordflow">if</span> (!TraverseOMPClause(*I)) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span> })</div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span> </div>
+<div class="line"><a name="l02335"></a><span class="lineno"> 2335</span> <span class="comment">// OpenMP clauses.</span></div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span> template<typename Derived></div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::TraverseOMPClause(OMPClause *C) {</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>   <span class="keywordflow">if</span> (!C) <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>   <span class="keywordflow">switch</span> (C->getClauseKind()) {</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span> <span class="preprocessor">#define OPENMP_CLAUSE(Name, Class)                                      \</span></div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span> <span class="preprocessor">  case OMPC_##Name:                                                     \</span></div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span> <span class="preprocessor">    return getDerived().Visit##Class(static_cast<Class*>(C));</span></div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/Basic/OpenMPKinds.def"</span></div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>   <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>   }</div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span> }</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span> </div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::VisitOMPDefaultClause(OMPDefaultClause *C) {</div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span> }</div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span> </div>
+<div class="line"><a name="l02354"></a><span class="lineno"> 2354</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</span> <span class="keyword">template</span><<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span> <span class="keywordtype">void</span> RecursiveASTVisitor<Derived>::VisitOMPClauseList(T *<a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a>) {</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>   <span class="keywordflow">for</span> (<span class="keyword">typename</span> T::varlist_iterator I = Node->varlist_begin(),</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>                                     E = Node->varlist_end();</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>          I != E; ++I)</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>     TraverseStmt(*I);</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span> }</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span> </div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::VisitOMPPrivateClause(OMPPrivateClause *C) {</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span>   VisitOMPClauseList(C);</div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span> }</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</span> </div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::VisitOMPFirstprivateClause(</div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>                                                     OMPFirstprivateClause *C) {</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>   VisitOMPClauseList(C);</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02374"></a><span class="lineno"> 2374</span> }</div>
+<div class="line"><a name="l02375"></a><span class="lineno"> 2375</span> </div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span> <span class="keyword">template</span><<span class="keyword">typename</span> Derived></div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span> <span class="keywordtype">bool</span> RecursiveASTVisitor<Derived>::VisitOMPSharedClause(OMPSharedClause *C) {</div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span>   VisitOMPClauseList(C);</div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span> }</div>
+<div class="line"><a name="l02381"></a><span class="lineno"> 2381</span> </div>
+<div class="line"><a name="l02382"></a><span class="lineno"> 2382</span> <span class="comment">// FIXME: look at the following tricky-seeming exprs to see if we</span></div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span> <span class="comment">// need to recurse on anything.  These are ones that have methods</span></div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span> <span class="comment">// returning decls or qualtypes or nestednamespecifier -- though I'm</span></div>
+<div class="line"><a name="l02385"></a><span class="lineno"> 2385</span> <span class="comment">// not sure if they own them -- or just seemed very complicated, or</span></div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span> <span class="comment">// had lots of sub-types to explore.</span></div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span> <span class="comment">//</span></div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span> <span class="comment">// VisitOverloadExpr and its children: recurse on template args? etc?</span></div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span> </div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span> <span class="comment">// FIXME: go through all the stmts and exprs again, and see which of them</span></div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span> <span class="comment">// create new types, and recurse on the types (TypeLocs?) of those.</span></div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> <span class="comment">// Candidates:</span></div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span> <span class="comment">//</span></div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span> <span class="comment">//    http://clang.llvm.org/doxygen/classclang_1_1CXXTypeidExpr.html</span></div>
+<div class="line"><a name="l02395"></a><span class="lineno"> 2395</span> <span class="comment">//    http://clang.llvm.org/doxygen/classclang_1_1UnaryExprOrTypeTraitExpr.html</span></div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span> <span class="comment">//    http://clang.llvm.org/doxygen/classclang_1_1TypesCompatibleExpr.html</span></div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span> <span class="comment">//    Every class that has getQualifier.</span></div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span> </div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span> <span class="preprocessor">#undef DEF_TRAVERSE_STMT</span></div>
+<div class="line"><a name="l02400"></a><span class="lineno"> 2400</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span> <span class="preprocessor">#undef TRY_TO</span></div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span> </div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span> <span class="preprocessor">#endif // LLVM_CLANG_AST_RECURSIVEASTVISITOR_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Redeclarable_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Redeclarable_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Redeclarable_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Redeclarable_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,291 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: Redeclarable.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_6152e82a4845f7e2a2888050f43c34d1.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">Redeclarable.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="Redeclarable_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===-- Redeclarable.h - Base for Decls that can be redeclared -*- C++ -*-====//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the Redeclarable interface.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#ifndef LLVM_CLANG_AST_REDECLARABLE_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_AST_REDECLARABLE_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "llvm/ADT/PointerIntPair.h"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "llvm/Support/Casting.h"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include <iterator></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">/// \brief Provides common interface for the Decls that can be redeclared.</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> decl_type></div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html">   25</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1Redeclarable.html" title="Provides common interface for the Decls that can be redeclared.">Redeclarable</a> {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html">   28</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html">DeclLink</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>     llvm::PointerIntPair<decl_type *, 1, bool> NextAndIsPrevious;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#a4b3e0be795e9f3c9737ae82528709e88">   31</a></span>     <a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#a4b3e0be795e9f3c9737ae82528709e88">DeclLink</a>(decl_type *D, <span class="keywordtype">bool</span> isLatest)</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>       : NextAndIsPrevious(D, isLatest) { }</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#a32ae0d43fe7969eb95bfa7225561954f">   34</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#a32ae0d43fe7969eb95bfa7225561954f">NextIsPrevious</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !NextAndIsPrevious.getInt(); }</div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#aac5b2d49b52e8bd67856d04a675bbf8e">   35</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#aac5b2d49b52e8bd67856d04a675bbf8e">NextIsLatest</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NextAndIsPrevious.getInt(); }</div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#ae04904e332ebed51154e8d8ef3ddb3aa">   36</a></span>     decl_type *<a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#ae04904e332ebed51154e8d8ef3ddb3aa">getNext</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NextAndIsPrevious.getPointer(); }</div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#ac5a2eff011b47d063b438b6d8630a02d">   37</a></span>     <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#ac5a2eff011b47d063b438b6d8630a02d">setNext</a>(decl_type *D) { NextAndIsPrevious.setPointer(D); }</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   };</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#af98337927287e433681b66d6eca72b81">   40</a></span>   <span class="keyword">static</span> DeclLink <a class="code" href="classclang_1_1Redeclarable.html#af98337927287e433681b66d6eca72b81">PreviousDeclLink</a>(decl_type *D) {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keywordflow">return</span> DeclLink(D, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#ae61967049b1f3c3f074aca04d6d35cd2">   44</a></span>   <span class="keyword">static</span> DeclLink <a class="code" href="classclang_1_1Redeclarable.html#ae61967049b1f3c3f074aca04d6d35cd2">LatestDeclLink</a>(decl_type *D) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="keywordflow">return</span> DeclLink(D, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   }</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">  /// \brief Points to the next redeclaration in the chain.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">  /// If NextIsPrevious() is true, this is a link to the previous declaration</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">  /// of this same Decl. If NextIsLatest() is true, this is the first</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">  /// declaration and Link points to the latest declaration. For example:</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">  ///  #1 int f(int x, int y = 1); // <pointer to #3, true></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">  ///  #2 int f(int x = 0, int y); // <pointer to #1, false></span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">  ///  #3 int f(int x, int y) { return x + y; } // <pointer to #2, false></span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">  /// If there is only one declaration, it is <pointer to self, true></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#a9f7538cb4941acf1eab0fb0f45f9e22f">   59</a></span> <span class="comment"></span>  DeclLink <a class="code" href="classclang_1_1Redeclarable.html#a9f7538cb4941acf1eab0fb0f45f9e22f" title="Points to the next redeclaration in the chain.">RedeclLink</a>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#acd6c26bbafc2ba10ff9111984608000e">   62</a></span>   <a class="code" href="classclang_1_1Redeclarable.html#acd6c26bbafc2ba10ff9111984608000e">Redeclarable</a>() : <a class="code" href="classclang_1_1Redeclarable.html#a9f7538cb4941acf1eab0fb0f45f9e22f" title="Points to the next redeclaration in the chain.">RedeclLink</a>(<a class="code" href="classclang_1_1Redeclarable.html#ae61967049b1f3c3f074aca04d6d35cd2">LatestDeclLink</a>(static_cast<decl_type*>(this))) { }</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">  /// \brief Return the previous declaration of this declaration or NULL if this</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">  /// is the first declaration.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#ae865b5549d99099ecb62d8b3a104f033">   66</a></span> <span class="comment"></span>  decl_type *<a class="code" href="classclang_1_1Redeclarable.html#ae865b5549d99099ecb62d8b3a104f033" title="Return the previous declaration of this declaration or NULL if this is the first declaration.">getPreviousDecl</a>() {</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Redeclarable.html#a9f7538cb4941acf1eab0fb0f45f9e22f" title="Points to the next redeclaration in the chain.">RedeclLink</a>.<a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#a32ae0d43fe7969eb95bfa7225561954f">NextIsPrevious</a>())</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Redeclarable.html#a9f7538cb4941acf1eab0fb0f45f9e22f" title="Points to the next redeclaration in the chain.">RedeclLink</a>.<a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#ae04904e332ebed51154e8d8ef3ddb3aa">getNext</a>();</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   }</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#a758fd91f67063fce8dd025b0f6f76255">   71</a></span>   <span class="keyword">const</span> decl_type *<a class="code" href="classclang_1_1Redeclarable.html#a758fd91f67063fce8dd025b0f6f76255">getPreviousDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span>decl_type *<span class="keyword">></span>(</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>                  <span class="keyword">static_cast<</span><span class="keyword">const </span>decl_type*<span class="keyword">></span>(<span class="keyword">this</span>))-><a class="code" href="classclang_1_1Redeclarable.html#ae865b5549d99099ecb62d8b3a104f033" title="Return the previous declaration of this declaration or NULL if this is the first declaration.">getPreviousDecl</a>();</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   }</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">  /// \brief Return the first declaration of this declaration or itself if this</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  /// is the only declaration.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#aa7a1024597136eeb5417f0a4551d98f3">   78</a></span> <span class="comment"></span>  decl_type *<a class="code" href="classclang_1_1Redeclarable.html#aa7a1024597136eeb5417f0a4551d98f3" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>() {</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     decl_type *D = <span class="keyword">static_cast<</span>decl_type*<span class="keyword">></span>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="keywordflow">while</span> (D->getPreviousDecl())</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       D = D-><a class="code" href="classclang_1_1Redeclarable.html#ae865b5549d99099ecb62d8b3a104f033" title="Return the previous declaration of this declaration or NULL if this is the first declaration.">getPreviousDecl</a>();</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     <span class="keywordflow">return</span> D;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// \brief Return the first declaration of this declaration or itself if this</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">  /// is the only declaration.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#a1631b1b8241751f1fbc64716024119ca">   87</a></span> <span class="comment"></span>  <span class="keyword">const</span> decl_type *<a class="code" href="classclang_1_1Redeclarable.html#a1631b1b8241751f1fbc64716024119ca" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="keyword">const</span> decl_type *D = <span class="keyword">static_cast<</span><span class="keyword">const </span>decl_type*<span class="keyword">></span>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="keywordflow">while</span> (D->getPreviousDecl())</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>       D = D-><a class="code" href="classclang_1_1Redeclarable.html#ae865b5549d99099ecb62d8b3a104f033" title="Return the previous declaration of this declaration or NULL if this is the first declaration.">getPreviousDecl</a>();</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">return</span> D;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   }</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment"></span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  /// \brief True if this is the first declaration in its redeclaration chain.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#af8e1ba27cafe185ab6109acf9e9b95f3">   95</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Redeclarable.html#af8e1ba27cafe185ab6109acf9e9b95f3" title="True if this is the first declaration in its redeclaration chain.">isFirstDecl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Redeclarable.html#a9f7538cb4941acf1eab0fb0f45f9e22f" title="Points to the next redeclaration in the chain.">RedeclLink</a>.<a class="code" href="classclang_1_1Redeclarable_1_1DeclLink.html#aac5b2d49b52e8bd67856d04a675bbf8e">NextIsLatest</a>(); }</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment"></span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">  /// \brief Returns the most recent (re)declaration of this declaration.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#a9ea014cf6b0106a824cb7a1eb0b29252">   98</a></span> <span class="comment"></span>  decl_type *<a class="code" href="classclang_1_1Redeclarable.html#a9ea014cf6b0106a824cb7a1eb0b29252" title="Returns the most recent (re)declaration of this declaration.">getMostRecentDecl</a>() {</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Redeclarable.html#aa7a1024597136eeb5417f0a4551d98f3" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>()->RedeclLink.getNext();</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   }</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// \brief Returns the most recent (re)declaration of this declaration.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#ae477da6a9305b6c11de4a279714b56d1">  103</a></span> <span class="comment"></span>  <span class="keyword">const</span> decl_type *<a class="code" href="classclang_1_1Redeclarable.html#ae477da6a9305b6c11de4a279714b56d1" title="Returns the most recent (re)declaration of this declaration.">getMostRecentDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Redeclarable.html#aa7a1024597136eeb5417f0a4551d98f3" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>()->RedeclLink.getNext();</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   }</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  /// \brief Set the previous declaration. If PrevDecl is NULL, set this as the</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">  /// first and only declaration.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Redeclarable.html#ad243388cb533ba8757f1281c5e85eab9" title="Set the previous declaration. If PrevDecl is NULL, set this as the first and only declaration...">setPreviousDecl</a>(decl_type *PrevDecl);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment">  /// \brief Iterates through all the redeclarations of the same decl.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html">  112</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">    /// Current - The current declaration.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span>    decl_type *Current;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     decl_type *Starter;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <span class="keywordtype">bool</span> PassedFirst;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#ae700142e3a942739d4cd9dcc7fe5a06c">  119</a></span>     <span class="keyword">typedef</span> decl_type*                <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#ae700142e3a942739d4cd9dcc7fe5a06c">value_type</a>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#aeeb988f7be772d4fdcaadb73b27fcf39">  120</a></span>     <span class="keyword">typedef</span> decl_type*                <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#aeeb988f7be772d4fdcaadb73b27fcf39">reference</a>;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a977ca57474f97d020b18d5276019dab8">  121</a></span>     <span class="keyword">typedef</span> decl_type*                <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a977ca57474f97d020b18d5276019dab8">pointer</a>;</div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a9c8b621f5eba3ae49e2ae2e56d06d2aa">  122</a></span>     <span class="keyword">typedef</span> std::forward_iterator_tag <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a9c8b621f5eba3ae49e2ae2e56d06d2aa">iterator_category</a>;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a179583badae0d1d0598cc867b7575233">  123</a></span>     <span class="keyword">typedef</span> <a class="code" href="stddef_8h.html#a6d26a0475a6d6c897e655cdc5d8019d2">std::ptrdiff_t</a>            <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a179583badae0d1d0598cc867b7575233">difference_type</a>;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a99fe1336cfa2cda12e70894d36bb6ac4">  125</a></span>     <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a99fe1336cfa2cda12e70894d36bb6ac4">redecl_iterator</a>() : Current(0) { }</div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a3892d0af85b00adbf4d23f0ab471a44b">  126</a></span>     <span class="keyword">explicit</span> <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a99fe1336cfa2cda12e70894d36bb6ac4">redecl_iterator</a>(decl_type *C)</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>       : Current(C), Starter(C), PassedFirst(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) { }</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a1cd6abb87f84b89842bb4658ec6c7253">  129</a></span>     <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#aeeb988f7be772d4fdcaadb73b27fcf39">reference</a> <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a1cd6abb87f84b89842bb4658ec6c7253">operator*</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Current; }</div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a5bd78ef7ae2c380eb28c958f9678c4ce">  130</a></span>     <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a977ca57474f97d020b18d5276019dab8">pointer</a> <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a5bd78ef7ae2c380eb28c958f9678c4ce">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Current; }</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a71c27b3ac843c98c671f707d0ff0666f">  132</a></span>     <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a>& <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a71c27b3ac843c98c671f707d0ff0666f">operator++</a>() {</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       assert(Current && <span class="stringliteral">"Advancing while iterator has reached end"</span>);</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>       <span class="comment">// Sanity check to avoid infinite loop on invalid redecl chain.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>       <span class="keywordflow">if</span> (Current->isFirstDecl()) {</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>         <span class="keywordflow">if</span> (PassedFirst) {</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>           assert(0 && <span class="stringliteral">"Passed first decl twice, invalid redecl chain!"</span>);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>           Current = 0;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>           <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>         }</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>         PassedFirst = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>       }</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       <span class="comment">// Get either previous decl or latest decl.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       decl_type *Next = Current->RedeclLink.getNext();</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       Current = (Next != Starter ? Next : 0);</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     }</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#ad6ac0046d00beec31856704abae2f7e3">  150</a></span>     <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#ad6ac0046d00beec31856704abae2f7e3">operator++</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> tmp(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       ++(*this);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>       <span class="keywordflow">return</span> tmp;</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     }</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a7fe8d0483955d2dadaea0191e91ca5a8">  156</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a7fe8d0483955d2dadaea0191e91ca5a8">operator==</a>(<a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> x, <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> y) {</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       <span class="keywordflow">return</span> x.Current == y.Current;</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     }</div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a14e7ae49a6ebba9eb71231cd13056147">  159</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html#a14e7ae49a6ebba9eb71231cd13056147">operator!=</a>(<a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> x, <a class="code" href="classclang_1_1Redeclarable_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> y) {</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       <span class="keywordflow">return</span> x.Current != y.Current;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>     }</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   };</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment"></span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">  /// \brief Returns iterator for all the redeclarations of the same decl.</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">  /// It will iterate at least once (when this decl is the only one).</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#a6928dd6745847abaf287b6edacd670da">  166</a></span> <span class="comment"></span>  redecl_iterator <a class="code" href="classclang_1_1Redeclarable.html#a6928dd6745847abaf287b6edacd670da" title="Returns iterator for all the redeclarations of the same decl. It will iterate at least once (when thi...">redecls_begin</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">return</span> redecl_iterator(const_cast<decl_type*>(</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>                                           static_cast<const decl_type*>(<span class="keyword">this</span>)));</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   }</div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#ab13ed4675427b9eeafc130f2757ad479">  170</a></span>   redecl_iterator <a class="code" href="classclang_1_1Redeclarable.html#ab13ed4675427b9eeafc130f2757ad479">redecls_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> redecl_iterator(); }</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a name="l00172"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#a6c90c31849a7e44e82778bc157ad9588">  172</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTDeclReader.html">ASTDeclReader</a>;</div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="code" href="classclang_1_1Redeclarable.html#aaf78a162132cef88281b20d4929a43dd">  173</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTDeclWriter.html">ASTDeclWriter</a>;</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> };</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment"></span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">/// \brief Get the primary declaration for a declaration from an AST file. That</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">/// will be the first-loaded declaration.</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment"></span><a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="namespaceclang.html#a3031877f14285bbd2a34b2a81acc04de" title="Get the primary declaration for a declaration from an AST file. That will be the first-loaded declara...">getPrimaryMergedDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment"></span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">/// \brief Provides common interface for the Decls that cannot be redeclared,</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">/// but can be merged if the same declaration is brought in from multiple</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">/// modules.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> decl_type></div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="code" href="classclang_1_1Mergeable.html">  184</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1Mergeable.html" title="Provides common interface for the Decls that cannot be redeclared, but can be merged if the same decl...">Mergeable</a> {</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="code" href="classclang_1_1Mergeable.html#a1cb5e0c0ea6ad553653dfacb6d191f91">  186</a></span>   <a class="code" href="classclang_1_1Mergeable.html#a1cb5e0c0ea6ad553653dfacb6d191f91">Mergeable</a>() {}</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment"></span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">  /// \brief Return the first declaration of this declaration or itself if this</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">  /// is the only declaration.</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="code" href="classclang_1_1Mergeable.html#a7712201f857700232566dd1148e34eba">  190</a></span> <span class="comment"></span>  decl_type *<a class="code" href="classclang_1_1Mergeable.html#a7712201f857700232566dd1148e34eba" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>() {</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     decl_type *D = <span class="keyword">static_cast<</span>decl_type*<span class="keyword">></span>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="keywordflow">if</span> (!D->isFromASTFile())</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>       <span class="keywordflow">return</span> D;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">return</span> cast<decl_type>(<a class="code" href="namespaceclang.html#a3031877f14285bbd2a34b2a81acc04de" title="Get the primary declaration for a declaration from an AST file. That will be the first-loaded declara...">getPrimaryMergedDecl</a>(const_cast<decl_type*>(D)));</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   }</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment"></span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">  /// \brief Return the first declaration of this declaration or itself if this</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">  /// is the only declaration.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="classclang_1_1Mergeable.html#aa5115718b1bb86f9d049ba2fbeb13e4a">  199</a></span> <span class="comment"></span>  <span class="keyword">const</span> decl_type *<a class="code" href="classclang_1_1Mergeable.html#aa5115718b1bb86f9d049ba2fbeb13e4a" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keyword">const</span> decl_type *D = <span class="keyword">static_cast<</span><span class="keyword">const </span>decl_type*<span class="keyword">></span>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="keywordflow">if</span> (!D->isFromASTFile())</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>       <span class="keywordflow">return</span> D;</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">return</span> cast<decl_type>(<a class="code" href="namespaceclang.html#a3031877f14285bbd2a34b2a81acc04de" title="Get the primary declaration for a declaration from an AST file. That will be the first-loaded declara...">getPrimaryMergedDecl</a>(const_cast<decl_type*>(D)));</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   }</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment"></span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">  /// \brief Returns true if this is the first declaration.</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="code" href="classclang_1_1Mergeable.html#aa759a61e3aecd3e4e9ab8037974042e5">  207</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Mergeable.html#aa759a61e3aecd3e4e9ab8037974042e5" title="Returns true if this is the first declaration.">isFirstDecl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Mergeable.html#a7712201f857700232566dd1148e34eba" title="Return the first declaration of this declaration or itself if this is the only declaration.">getFirstDecl</a>() == <span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> };</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> }</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,160 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: RefactoringCallbacks.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_14ab871e308b37f9042717085145c002.html">Tooling</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">RefactoringCallbacks.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="RefactoringCallbacks_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- RefactoringCallbacks.cpp - Structural query framework ------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor">#include "<a class="code" href="Lexer_8h.html">clang/Lex/Lexer.h</a>"</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include "<a class="code" href="RefactoringCallbacks_8h.html">clang/Tooling/RefactoringCallbacks.h</a>"</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="keyword">namespace </span>tooling {</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a name="l00018"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a4cb2acc7c2ec189cf9087b65c0b86569">   18</a></span> <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a4cb2acc7c2ec189cf9087b65c0b86569">RefactoringCallback::RefactoringCallback</a>() {}</div>
+<div class="line"><a name="l00019"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a81fab9433364b1bcbee8a70133c4644e">   19</a></span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">tooling::Replacements</a> &<a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a81fab9433364b1bcbee8a70133c4644e">RefactoringCallback::getReplacements</a>() {</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">Replace</a>;</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> }</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a6029d35e969321cfb7bd11df9c438d89">   23</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> <a class="code" href="namespaceclang_1_1tooling.html#a6029d35e969321cfb7bd11df9c438d89">replaceStmtWithText</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources,</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> &From,</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>                                        StringRef Text) {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">tooling::Replacement</a>(Sources, <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">CharSourceRange::getTokenRange</a>(</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>       From.<a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>()), Text);</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> }</div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a9da408f04c904874792ec46b1525a758">   29</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> <a class="code" href="namespaceclang_1_1tooling.html#a9da408f04c904874792ec46b1525a758">replaceStmtWithStmt</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources,</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> &From,</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>                                        <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> &To) {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#a6029d35e969321cfb7bd11df9c438d89">replaceStmtWithText</a>(Sources, From, <a class="code" href="classclang_1_1Lexer.html#aa3f368258b00c827b8584752cab77c60" title="Returns a string for the source that the range encompasses.">Lexer::getSourceText</a>(</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>       <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">CharSourceRange::getTokenRange</a>(To.<a class="code" href="classclang_1_1Stmt.html#a6844392ee6148b5fe821f211b95e5d1b">getSourceRange</a>()),</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>       Sources, <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a>()));</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> }</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html#a8991ac3c22d00c3af2fc2570c873bcaa">   37</a></span> <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html#a8991ac3c22d00c3af2fc2570c873bcaa">ReplaceStmtWithText::ReplaceStmtWithText</a>(StringRef FromId, StringRef ToText)</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     : FromId(FromId), ToText(ToText) {}</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html#a34a27238c340b7c5edf2f309a93e0df0">   40</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html#a34a27238c340b7c5edf2f309a93e0df0" title="Called on every match by the MatchFinder.">ReplaceStmtWithText::run</a>(</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keyword">const</span> <a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html" title="Contains all information for a given match.">ast_matchers::MatchFinder::MatchResult</a> &Result) {</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *FromMatch = Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#aa6713f783d367af908a08c231b269e2a" title="Contains the nodes bound on the current match.">Nodes</a>.<a class="code" href="classclang_1_1ast__matchers_1_1BoundNodes.html#a127709c6fea42b141e56ea5c4595b317">getStmtAs</a><<a class="code" href="classclang_1_1Stmt.html">Stmt</a>>(FromId)) {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>     <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">Replace</a>.insert(<a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">tooling::Replacement</a>(</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>         *Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#a155e96a44676c45f962ca457cb2f9e8a">SourceManager</a>,</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>         <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">CharSourceRange::getTokenRange</a>(FromMatch->getSourceRange()),</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>         ToText));</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   }</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> }</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html#ae1631e34b55e74fc0f98c32ca66d4469">   50</a></span> <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html#ae1631e34b55e74fc0f98c32ca66d4469">ReplaceStmtWithStmt::ReplaceStmtWithStmt</a>(StringRef FromId, StringRef ToId)</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     : FromId(FromId), ToId(ToId) {}</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html#adf7b9d7126f78337d2d3f2c9f9f1225a">   53</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html#adf7b9d7126f78337d2d3f2c9f9f1225a" title="Called on every match by the MatchFinder.">ReplaceStmtWithStmt::run</a>(</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keyword">const</span> <a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html" title="Contains all information for a given match.">ast_matchers::MatchFinder::MatchResult</a> &Result) {</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *FromMatch = Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#aa6713f783d367af908a08c231b269e2a" title="Contains the nodes bound on the current match.">Nodes</a>.<a class="code" href="classclang_1_1ast__matchers_1_1BoundNodes.html#a127709c6fea42b141e56ea5c4595b317">getStmtAs</a><<a class="code" href="classclang_1_1Stmt.html">Stmt</a>>(FromId);</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *ToMatch = Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#aa6713f783d367af908a08c231b269e2a" title="Contains the nodes bound on the current match.">Nodes</a>.<a class="code" href="classclang_1_1ast__matchers_1_1BoundNodes.html#a127709c6fea42b141e56ea5c4595b317">getStmtAs</a><<a class="code" href="classclang_1_1Stmt.html">Stmt</a>>(ToId);</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordflow">if</span> (FromMatch && ToMatch)</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">Replace</a>.insert(<a class="code" href="namespaceclang_1_1tooling.html#a9da408f04c904874792ec46b1525a758">replaceStmtWithStmt</a>(</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>         *Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#a155e96a44676c45f962ca457cb2f9e8a">SourceManager</a>, *FromMatch, *ToMatch));</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> }</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html#ae5df023b3069b72ed19e5e417394f437">   62</a></span> <a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html#ae5df023b3069b72ed19e5e417394f437">ReplaceIfStmtWithItsBody::ReplaceIfStmtWithItsBody</a>(StringRef Id,</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>                                                    <span class="keywordtype">bool</span> PickTrueBranch)</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     : Id(Id), PickTrueBranch(PickTrueBranch) {}</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html#a96c9ff8844ed3189ce957d9a9e61b0bf">   66</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html#a96c9ff8844ed3189ce957d9a9e61b0bf" title="Called on every match by the MatchFinder.">ReplaceIfStmtWithItsBody::run</a>(</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="keyword">const</span> <a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html" title="Contains all information for a given match.">ast_matchers::MatchFinder::MatchResult</a> &Result) {</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1IfStmt.html">IfStmt</a> *<a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a> = Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#aa6713f783d367af908a08c231b269e2a" title="Contains the nodes bound on the current match.">Nodes</a>.<a class="code" href="classclang_1_1ast__matchers_1_1BoundNodes.html#a127709c6fea42b141e56ea5c4595b317">getStmtAs</a><<a class="code" href="classclang_1_1IfStmt.html">IfStmt</a>>(Id)) {</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Body = PickTrueBranch ? <a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a>->getThen() : <a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a>->getElse();</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <span class="keywordflow">if</span> (Body) {</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>       <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">Replace</a>.insert(<a class="code" href="namespaceclang_1_1tooling.html#a9da408f04c904874792ec46b1525a758">replaceStmtWithStmt</a>(*Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#a155e96a44676c45f962ca457cb2f9e8a">SourceManager</a>, *<a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a>, *Body));</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!PickTrueBranch) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>       <span class="comment">// If we want to use the 'else'-branch, but it doesn't exist, delete</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       <span class="comment">// the whole 'if'.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">Replace</a>.insert(<a class="code" href="namespaceclang_1_1tooling.html#a6029d35e969321cfb7bd11df9c438d89">replaceStmtWithText</a>(*Result.<a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html#a155e96a44676c45f962ca457cb2f9e8a">SourceManager</a>, *<a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a>, <span class="stringliteral">""</span>));</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     }</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   }</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> }</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> } <span class="comment">// end namespace tooling</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> } <span class="comment">// end namespace clang</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,457 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: RefactoringCallbacks.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_14ab871e308b37f9042717085145c002.html">Tooling</a></li><li class="navelem"><a class="el" href="dir_88d92a3518b6d6dcb8dd1cee7c911282.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">RefactoringCallbacks.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="RefactoringCallbacks_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/Tooling/Release+Asserts/RefactoringCallbacks.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/Release+Asserts/RefactoringCallbacks.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  RefactoringCallbacks.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/RefactoringCallbacks.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchFinder.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchers.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclFriend.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclCXX.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTUnresolvedSet.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTVector.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/UnresolvedSet.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclAccessPair.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Decl.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/APValue.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/include/llvm/ADT/APSInt.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclNodes.inc \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Redeclarable.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Type.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/NestedNameSpecifier.h \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TemplateName.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TypeNodes.def \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/BuiltinTypes.def \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Expr.h \</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/OperationKinds.h \</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Stmt.h \</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclGroup.h \</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/StmtIterator.h \</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CapturedStmt.h \</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/StmtNodes.inc \</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TemplateBase.h \</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TypeTraits.h \</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Builtins.def \</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ExprCXX.h \</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/ExpressionTraits.h \</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Lambda.h \</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TypeLoc.h \</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TypeLocNodes.def \</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclTemplate.h \</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchersInternal.h \</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTTypeTraits.h \</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTFwd.h \</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/StmtCXX.h \</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>  /home/tstellar/llvm/include/llvm/ADT/VariadicFunction.h \</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchersMacros.h \</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>  /home/tstellar/llvm/include/llvm/Support/Regex.h \</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Refactoring.h \</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Tooling.h \</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Driver/Util.h \</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendAction.h \</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendOptions.h \</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/CommandLineSourceLoc.h \</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="JSONCompilationDatabase_8cpp.html#aff1eaf11bcfc05c142268512eeb4e134">CommandLine</a>.h \</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Sema/<a class="code" href="classCodeCompleteOptions.html" title="Options controlling the behavior of code completion.">CodeCompleteOptions</a>.h \</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/ArgumentsAdjusters.h \</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/CompilationDatabase.h</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> </div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h:</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> </div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> </div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> </div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> </div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> </div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> </div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> </div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> </div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h:</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> </div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> </div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> </div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h:</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> </div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> </div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TemplateKinds.h:</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> </div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> </div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> </div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/RefactoringCallbacks.h:</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchFinder.h:</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> </div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchers.h:</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclFriend.h:</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclCXX.h:</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> </div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTUnresolvedSet.h:</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTVector.h:</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/AttrIterator.h:</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> </div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/UnresolvedSet.h:</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> </div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclAccessPair.h:</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Decl.h:</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/APValue.h:</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> /home/tstellar/llvm/include/llvm/ADT/APSInt.h:</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclBase.h:</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> </div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclarationName.h:</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> </div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> </div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> </div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> </div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> </div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclNodes.inc:</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ExternalASTSource.h:</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/CharUnits.h:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Redeclarable.h:</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Type.h:</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/NestedNameSpecifier.h:</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> /home/tstellar/llvm/include/llvm/ADT/FoldingSet.h:</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> </div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TemplateName.h:</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#af8a91eed04532d5da41ef08e7c9c081e" title="The various types of exception specifications that exist in C++11.">ExceptionSpecificationType</a>.h:</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TypeNodes.def:</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/BuiltinTypes.def:</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> </div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> </div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Expr.h:</div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/OperationKinds.h:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/Stmt.h:</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclGroup.h:</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/StmtIterator.h:</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> </div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CapturedStmt.h:</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> </div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/StmtNodes.inc:</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TemplateBase.h:</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> </div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> </div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TypeTraits.h:</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Builtins.def:</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ExprCXX.h:</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> </div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/ExpressionTraits.h:</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Lambda.h:</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TypeLoc.h:</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/TypeLocNodes.def:</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> </div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> </div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/DeclTemplate.h:</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchersInternal.h:</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTTypeTraits.h:</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> </div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/ASTFwd.h:</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/AST/StmtCXX.h:</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> </div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> /home/tstellar/llvm/include/llvm/ADT/VariadicFunction.h:</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> </div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/ASTMatchers/ASTMatchersMacros.h:</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> /home/tstellar/llvm/include/llvm/Support/Regex.h:</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Refactoring.h:</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> </div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Tooling.h:</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> </div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> </div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Driver/Util.h:</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> </div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendAction.h:</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendOptions.h:</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/CommandLineSourceLoc.h:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="JSONCompilationDatabase_8cpp.html#aff1eaf11bcfc05c142268512eeb4e134">CommandLine</a>.h:</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> </div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Sema/<a class="code" href="classCodeCompleteOptions.html" title="Options controlling the behavior of code completion.">CodeCompleteOptions</a>.h:</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/ArgumentsAdjusters.h:</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> </div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/CompilationDatabase.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/RefactoringCallbacks_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,169 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: RefactoringCallbacks.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_595f3151679c28f47cf4097124b3607a.html">Tooling</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">RefactoringCallbacks.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="RefactoringCallbacks_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- RefactoringCallbacks.h - Structural query framework ----*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  Provides callbacks to make common kinds of refactorings easy.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//  The general idea is to construct a matcher expression that describes a</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//  subtree match on the AST and then replace the corresponding source code</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//  either by some specific text or some other AST node.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">//  Example:</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">//  int main(int argc, char **argv) {</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">//    ClangTool Tool(argc, argv);</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="comment">//    MatchFinder Finder;</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="comment">//    ReplaceStmtWithText Callback("integer", "42");</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="comment">//    Finder.AddMatcher(id("integer", expression(integerLiteral())), Callback);</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment">//    return Tool.run(newFrontendActionFactory(&Finder));</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">//  }</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">//  This will replace all integer literals with "42".</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#ifndef LLVM_CLANG_TOOLING_REFACTORING_CALLBACKS_H</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_TOOLING_REFACTORING_CALLBACKS_H</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include "<a class="code" href="ASTMatchFinder_8h.html">clang/ASTMatchers/ASTMatchFinder.h</a>"</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#include "<a class="code" href="Refactoring_8h.html">clang/Tooling/Refactoring.h</a>"</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">namespace </span>tooling {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/// \brief Base class for RefactoringCallbacks.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">/// Collects \c tooling::Replacements while running.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html">   41</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html" title="Base class for RefactoringCallbacks.">RefactoringCallback</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1ast__matchers_1_1MatchFinder_1_1MatchCallback.html" title="Called when the Match registered for it was successfully found in the AST.">ast_matchers::MatchFinder::MatchCallback</a> {</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a4cb2acc7c2ec189cf9087b65c0b86569">RefactoringCallback</a>();</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &<a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a81fab9433364b1bcbee8a70133c4644e">getReplacements</a>();</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">   47</a></span>   <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html#a7429df95078279d82696fde98ac0ef8f">Replace</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> };</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">/// \brief Replace the text of the statement bound to \c FromId with the text in</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// \c ToText.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html">   52</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html" title="Replace the text of the statement bound to FromId with the text in ToText.">ReplaceStmtWithText</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html" title="Base class for RefactoringCallbacks.">RefactoringCallback</a> {</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html#a8991ac3c22d00c3af2fc2570c873bcaa">ReplaceStmtWithText</a>(StringRef FromId, StringRef ToText);</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithText.html#a34a27238c340b7c5edf2f309a93e0df0" title="Called on every match by the MatchFinder.">run</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html" title="Contains all information for a given match.">ast_matchers::MatchFinder::MatchResult</a> &Result);</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   std::string FromId;</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   std::string ToText;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> };</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment"></span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment">/// \brief Replace the text of the statement bound to \c FromId with the text of</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment">/// the statement bound to \c ToId.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html">   64</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html" title="Replace the text of the statement bound to FromId with the text of the statement bound to ToId...">ReplaceStmtWithStmt</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html" title="Base class for RefactoringCallbacks.">RefactoringCallback</a> {</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html#ae1631e34b55e74fc0f98c32ca66d4469">ReplaceStmtWithStmt</a>(StringRef FromId, StringRef ToId);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1ReplaceStmtWithStmt.html#adf7b9d7126f78337d2d3f2c9f9f1225a" title="Called on every match by the MatchFinder.">run</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html" title="Contains all information for a given match.">ast_matchers::MatchFinder::MatchResult</a> &Result);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   std::string FromId;</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   std::string ToId;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> };</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"></span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">/// \brief Replace an if-statement bound to \c Id with the outdented text of its</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">/// body, choosing the consequent or the alternative based on whether</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">/// \c PickTrueBranch is true.</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html">   77</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html" title="Replace an if-statement bound to Id with the outdented text of its body, choosing the consequent or t...">ReplaceIfStmtWithItsBody</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringCallback.html" title="Base class for RefactoringCallbacks.">RefactoringCallback</a> {</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html#ae5df023b3069b72ed19e5e417394f437">ReplaceIfStmtWithItsBody</a>(StringRef Id, <span class="keywordtype">bool</span> PickTrueBranch);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1ReplaceIfStmtWithItsBody.html#a96c9ff8844ed3189ce957d9a9e61b0bf" title="Called on every match by the MatchFinder.">run</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1ast__matchers_1_1MatchFinder_1_1MatchResult.html" title="Contains all information for a given match.">ast_matchers::MatchFinder::MatchResult</a> &Result);</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> </div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   std::string Id;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>   <span class="keyword">const</span> <span class="keywordtype">bool</span> PickTrueBranch;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> };</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> } <span class="comment">// end namespace tooling</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> </div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="preprocessor">#endif // LLVM_CLANG_TOOLING_REFACTORING_CALLBACKS_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,387 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: Refactoring.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_14ab871e308b37f9042717085145c002.html">Tooling</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">Refactoring.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="Refactoring_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- Refactoring.cpp - Framework for clang refactoring tools ----------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  Implements tools to support refactorings.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "<a class="code" href="DiagnosticOptions_8h.html">clang/Basic/DiagnosticOptions.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="FileManager_8h.html" title="Defines the clang::FileManager interface and associated types.">clang/Basic/FileManager.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="TextDiagnosticPrinter_8h.html">clang/Frontend/TextDiagnosticPrinter.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="Lexer_8h.html">clang/Lex/Lexer.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Rewriter_8h.html">clang/Rewrite/Core/Rewriter.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Refactoring_8h.html">clang/Tooling/Refactoring.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/Support/raw_os_ostream.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">namespace </span>tooling {</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a804cadaf427cd68c6992cb23764b6a71">   28</a></span> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#a804cadaf427cd68c6992cb23764b6a71">InvalidLocation</a> = <span class="stringliteral">""</span>;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24">   30</a></span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement::Replacement</a>()</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   : FilePath(<a class="code" href="namespaceclang_1_1tooling.html#a804cadaf427cd68c6992cb23764b6a71">InvalidLocation</a>) {}</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4f009907801c5e0a4b196d22acbdf849">   33</a></span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement::Replacement</a>(StringRef FilePath, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>, <span class="keywordtype">unsigned</span> Length,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>                          StringRef ReplacementText)</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>     : FilePath(FilePath), ReplacementRange(Offset, Length),</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>       ReplacementText(ReplacementText) {}</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#ad42ed4f1cc5982bfc3f5a2c20a55f33e">   38</a></span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement::Replacement</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start,</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>                          <span class="keywordtype">unsigned</span> Length, StringRef ReplacementText) {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   setFromSourceLocation(Sources, Start, Length, ReplacementText);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> }</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> </div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa7cd1b51657bcca852279124e3ad39f0">   43</a></span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement::Replacement</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <span class="keyword">const</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> &<a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a>,</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>                          StringRef ReplacementText) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   setFromSourceRange(Sources, Range, ReplacementText);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> }</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4256b2ed50842fc1a22da0018a492bd9">   48</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4256b2ed50842fc1a22da0018a492bd9" title="Returns whether this replacement can be applied to a file.">Replacement::isApplicable</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">return</span> FilePath != <a class="code" href="namespaceclang_1_1tooling.html#a804cadaf427cd68c6992cb23764b6a71">InvalidLocation</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> }</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa095c3402383b5721b61354f5f527579">   52</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa095c3402383b5721b61354f5f527579" title="Applies the replacement on the Rewriter.">Replacement::apply</a>(<a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#afe4356a77609114d8df0bfc9c2b8701f">SM</a> = Rewrite.<a class="code" href="classclang_1_1Rewriter.html#a13e04a1fdcd207e606877a631f298b31">getSourceMgr</a>();</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *Entry = SM.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(FilePath);</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordflow">if</span> (Entry == <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>)</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="comment">// FIXME: Use SM.translateFile directly.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Location = SM.<a class="code" href="classclang_1_1SourceManager.html#a5573aab1578a194e43c7934e6902aeec" title="Get the source location for the given file:line:col triplet.">translateFileLineCol</a>(Entry, 1, 1);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   ID = Location.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() ?</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     SM.<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Location) :</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     SM.<a class="code" href="classclang_1_1SourceManager.html#acefb5d310242160b1910104bbf4d8b2d" title="Create a new FileID that represents the specified file being #included from the specified IncludePosi...">createFileID</a>(Entry, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>);</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="comment">// FIXME: We cannot check whether Offset + Length is in the file, as</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="comment">// the remapping API is not public in the RewriteBuffer.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start =</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     SM.<a class="code" href="classclang_1_1SourceManager.html#ae1f1d6c242c1db7b224a7a6dd35cb82e" title="Return the source location corresponding to the first byte of the specified file.">getLocForStartOfFile</a>(ID).</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     getLocWithOffset(ReplacementRange.<a class="code" href="classclang_1_1tooling_1_1Range.html#aa7b1636e7865aa91d876326aeb58c46a" title="Accessors.">getOffset</a>());</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="comment">// ReplaceText returns false on success.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="comment">// ReplaceText only fails if the source location is not a file location, in</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="comment">// which case we already returned false earlier.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>   <span class="keywordtype">bool</span> RewriteSucceeded = !Rewrite.<a class="code" href="classclang_1_1Rewriter.html#afe00ce2338ce67ba76832678f21956ed">ReplaceText</a>(</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       Start, ReplacementRange.<a class="code" href="classclang_1_1tooling_1_1Range.html#aec32bbeccc00b4bac840563cf114708f">getLength</a>(), ReplacementText);</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>   assert(RewriteSucceeded);</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keywordflow">return</span> RewriteSucceeded;</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> }</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#a47d4942cff3998e0ada1aae093e03af4">   77</a></span> std::string <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a47d4942cff3998e0ada1aae093e03af4" title="Returns a human readable string representation.">Replacement::toString</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>   std::string result;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   llvm::raw_string_ostream stream(result);</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>   stream << FilePath << <span class="stringliteral">": "</span> << ReplacementRange.<a class="code" href="classclang_1_1tooling_1_1Range.html#aa7b1636e7865aa91d876326aeb58c46a" title="Accessors.">getOffset</a>() << <span class="stringliteral">":+"</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>          << ReplacementRange.<a class="code" href="classclang_1_1tooling_1_1Range.html#aec32bbeccc00b4bac840563cf114708f">getLength</a>() << <span class="stringliteral">":\""</span> << ReplacementText << <span class="stringliteral">"\""</span>;</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> }</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#af6ccdf11a59d790e2d1364003654b5ff">   85</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#af6ccdf11a59d790e2d1364003654b5ff" title="Less-than operator between two Replacements.">operator<</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> &LHS, <span class="keyword">const</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> &RHS) {</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   <span class="keywordflow">if</span> (LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>() != RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>())</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>() < RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>();</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>   <span class="keywordflow">if</span> (LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>() != RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>())</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>() < RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>();</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="keywordflow">if</span> (LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>() != RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>())</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>() < RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>();</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a23304f83d4718bfac106ff42669fffb6">getReplacementText</a>() < RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a23304f83d4718bfac106ff42669fffb6">getReplacementText</a>();</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> }</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a593e11337021880c5409f552dea11190">   95</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#a593e11337021880c5409f552dea11190" title="Equal-to operator between two Replacements.">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> &LHS, <span class="keyword">const</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> &RHS) {</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>() == RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>() &&</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>          LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>() == RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>() &&</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>          LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>() == RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>() &&</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>          LHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a23304f83d4718bfac106ff42669fffb6">getReplacementText</a>() == RHS.<a class="code" href="classclang_1_1tooling_1_1Replacement.html#a23304f83d4718bfac106ff42669fffb6">getReplacementText</a>();</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> }</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="keywordtype">void</span> Replacement::setFromSourceLocation(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources,</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>                                         <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start, <span class="keywordtype">unsigned</span> Length,</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>                                         StringRef ReplacementText) {</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keyword">const</span> std::pair<FileID, unsigned> DecomposedLocation =</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>       Sources.<a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Start);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *Entry = Sources.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(DecomposedLocation.first);</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>   <span class="keywordflow">if</span> (Entry != <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     <span class="comment">// Make FilePath absolute so replacements can be applied correctly when</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="comment">// relative paths for files are used.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <a class="code" href="classllvm_1_1SmallString.html">llvm::SmallString<256></a> FilePath(Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     llvm::error_code EC = llvm::sys::fs::make_absolute(FilePath);</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     this->FilePath = EC ? FilePath.c_str() : Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     this->FilePath = <a class="code" href="namespaceclang_1_1tooling.html#a804cadaf427cd68c6992cb23764b6a71">InvalidLocation</a>;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   }</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   this->ReplacementRange = Range(DecomposedLocation.second, Length);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   this->ReplacementText = ReplacementText;</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">// FIXME: This should go into the Lexer, but we need to figure out how</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">// to handle ranges for refactoring in general first - there is no obvious</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">// good way how to integrate this into the Lexer yet.</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a47aa43221c7ebfbe150deea2d0ab68a9">  124</a></span> <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1tooling.html#a47aa43221c7ebfbe150deea2d0ab68a9">getRangeSize</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <span class="keyword">const</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> &<a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a>) {</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> SpellingBegin = Sources.<a class="code" href="classclang_1_1SourceManager.html#a989650d5a9a5d7f7bd88f2bbe5e5dc29" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getSpellingLoc</a>(Range.<a class="code" href="classclang_1_1CharSourceRange.html#a93f9ab18a904f1c089698b99dace2e82">getBegin</a>());</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> SpellingEnd = Sources.<a class="code" href="classclang_1_1SourceManager.html#a989650d5a9a5d7f7bd88f2bbe5e5dc29" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getSpellingLoc</a>(Range.<a class="code" href="classclang_1_1CharSourceRange.html#a2a3d04e2491bd5b564a1bf4c975ff3f0">getEnd</a>());</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   std::pair<FileID, unsigned> Start = Sources.<a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(SpellingBegin);</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   std::pair<FileID, unsigned> End = Sources.<a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(SpellingEnd);</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>   <span class="keywordflow">if</span> (Start.first != End.first) <span class="keywordflow">return</span> -1;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">if</span> (Range.<a class="code" href="classclang_1_1CharSourceRange.html#a9bc337ba1c6e4e47e0f997196525d12f" title="Return true if the end of this range specifies the start of the last token. Return false if the end o...">isTokenRange</a>())</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     End.second += <a class="code" href="classclang_1_1Lexer.html#aa5a4859612cfd5bbce76ce0ac75f406b">Lexer::MeasureTokenLength</a>(SpellingEnd, Sources,</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>                                             <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a>());</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>   <span class="keywordflow">return</span> End.second - Start.second;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> }</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="keywordtype">void</span> Replacement::setFromSourceRange(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources,</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> &Range,</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>                                      StringRef ReplacementText) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   setFromSourceLocation(Sources, Sources.<a class="code" href="classclang_1_1SourceManager.html#a989650d5a9a5d7f7bd88f2bbe5e5dc29" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getSpellingLoc</a>(Range.<a class="code" href="classclang_1_1CharSourceRange.html#a93f9ab18a904f1c089698b99dace2e82">getBegin</a>()),</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>                         <a class="code" href="namespaceclang_1_1tooling.html#a47aa43221c7ebfbe150deea2d0ab68a9">getRangeSize</a>(Sources, Range), ReplacementText);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> }</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70">  143</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">applyAllReplacements</a>(<span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &Replaces, <a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordtype">bool</span> Result = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>   <span class="keywordflow">for</span> (Replacements::const_iterator I = Replaces.begin(),</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>                                     E = Replaces.end();</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>        I != E; ++I) {</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keywordflow">if</span> (I->isApplicable()) {</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       Result = I->apply(Rewrite) && Result;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>       Result = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     }</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> }</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">// FIXME: Remove this function when Replacements is implemented as std::vector</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">// instead of std::set.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a36b5ad101e40f0c48cce0541fff32c01">  159</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">applyAllReplacements</a>(<span class="keyword">const</span> std::vector<Replacement> &Replaces,</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>                           <a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite) {</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordtype">bool</span> Result = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   <span class="keywordflow">for</span> (std::vector<Replacement>::const_iterator I = Replaces.begin(),</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                                                 E = Replaces.end();</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>        I != E; ++I) {</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="keywordflow">if</span> (I->isApplicable()) {</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>       Result = I->apply(Rewrite) && Result;</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       Result = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     }</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   }</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> }</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a57d62510b56a791e870fbd41e96c2b89">  174</a></span> std::string <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">applyAllReplacements</a>(StringRef Code, <span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &Replaces) {</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>   <a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a> Files((<a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a>()));</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> Diagnostics(</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>       <a class="code" href="classllvm_1_1IntrusiveRefCntPtr.html">IntrusiveRefCntPtr<DiagnosticIDs></a>(<span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticIDs.html" title="Used for handling and querying diagnostic IDs.">DiagnosticIDs</a>),</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>       <span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticOptions.html" title="Options for controlling the compiler diagnostics engine.">DiagnosticOptions</a>);</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   Diagnostics.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a73d6622e8b775233db09bc294a4b1bb0" title="Set the diagnostic client associated with this diagnostic object.">setClient</a>(<span class="keyword">new</span> <a class="code" href="classclang_1_1TextDiagnosticPrinter.html">TextDiagnosticPrinter</a>(</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       llvm::outs(), &Diagnostics.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a8469212767b5537795d077fe84cb32b4" title="Retrieve the diagnostic options.">getDiagnosticOptions</a>()));</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> <a class="code" href="Format_8cpp.html#a8b28f9f83ac8256fbde7e45b0f874f27">SourceMgr</a>(Diagnostics, Files);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> Rewrite(SourceMgr, <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a>());</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   llvm::MemoryBuffer *Buf = llvm::MemoryBuffer::getMemBuffer(Code, <span class="stringliteral">"<stdin>"</span>);</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">clang::FileEntry</a> *Entry =</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       Files.<a class="code" href="classclang_1_1FileManager.html#a7dd8ef9d948ba6281672e34eb8adaa2a" title="Retrieve a file entry for a "virtual" file that acts as if there were a file with the given name on d...">getVirtualFile</a>(<span class="stringliteral">"<stdin>"</span>, Buf->getBufferSize(), 0);</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>   SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753" title="Override the contents of the given source file by providing an already-allocated buffer.">overrideFileContents</a>(Entry, Buf);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> =</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#acefb5d310242160b1910104bbf4d8b2d" title="Create a new FileID that represents the specified file being #included from the specified IncludePosi...">createFileID</a>(Entry, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">clang::SrcMgr::C_User</a>);</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>   <span class="keywordflow">for</span> (Replacements::const_iterator I = Replaces.begin(), E = Replaces.end();</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>        I != E; ++I) {</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> Replace(<span class="stringliteral">"<stdin>"</span>, I->getOffset(), I->getLength(),</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>                         I->getReplacementText());</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">if</span> (!Replace.apply(Rewrite))</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>       <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   }</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   std::string Result;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   llvm::raw_string_ostream OS(Result);</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   Rewrite.<a class="code" href="classclang_1_1Rewriter.html#af32f2495719e07ae3388278d2b5b8102">getEditBuffer</a>(ID).<a class="code" href="classclang_1_1RewriteBuffer.html#ac6173ac696c168df9d6cb3ac197e73a9" title="Write to Stream the result of applying all changes to the original buffer. Note that it isn't safe to...">write</a>(OS);</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   OS.flush();</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> }</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#ab448e18e89f16e4c471a779286db5cb4">  203</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1tooling.html#ab448e18e89f16e4c471a779286db5cb4" title="Calculates how a code Position is shifted when Replaces are applied.">shiftedCodePosition</a>(<span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &Replaces, <span class="keywordtype">unsigned</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>) {</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   <span class="keywordtype">unsigned</span> NewPosition = <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>   <span class="keywordflow">for</span> (Replacements::iterator I = Replaces.begin(), E = Replaces.end(); I != E;</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>        ++I) {</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     <span class="keywordflow">if</span> (I->getOffset() >= <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>)</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>     <span class="keywordflow">if</span> (I->getOffset() + I->getLength() > <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>)</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       NewPosition += I->getOffset() + I->getLength() - <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     NewPosition += I->getReplacementText().size() - I->getLength();</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   }</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>   <span class="keywordflow">return</span> NewPosition;</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> }</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> </div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">// FIXME: Remove this function when Replacements is implemented as std::vector</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">// instead of std::set.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#a8af83110d8be1454a0ca9b5b7d4ccce1">  218</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1tooling.html#ab448e18e89f16e4c471a779286db5cb4" title="Calculates how a code Position is shifted when Replaces are applied.">shiftedCodePosition</a>(<span class="keyword">const</span> std::vector<Replacement> &Replaces,</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>                              <span class="keywordtype">unsigned</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>) {</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordtype">unsigned</span> NewPosition = <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>   <span class="keywordflow">for</span> (std::vector<Replacement>::const_iterator I = Replaces.begin(),</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>                                                 E = Replaces.end();</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>        I != E; ++I) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">if</span> (I->getOffset() >= <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>)</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>     <span class="keywordflow">if</span> (I->getOffset() + I->getLength() > <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>)</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       NewPosition += I->getOffset() + I->getLength() - <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>     NewPosition += I->getReplacementText().size() - I->getLength();</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   }</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <span class="keywordflow">return</span> NewPosition;</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#ae49d080572e151d36fbcc1cd830694ec">  233</a></span> <span class="keywordtype">void</span> <a class="code" href="namespaceclang_1_1tooling.html#ae49d080572e151d36fbcc1cd830694ec" title="Removes duplicate Replacements and reports if Replacements conflict with one another.">deduplicate</a>(std::vector<Replacement> &Replaces,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                  std::vector<Range> &Conflicts) {</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keywordflow">if</span> (Replaces.empty())</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> </div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>   <span class="comment">// Deduplicate</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>   std::sort(Replaces.begin(), Replaces.end());</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   std::vector<Replacement>::iterator End =</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       std::unique(Replaces.begin(), Replaces.end());</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   Replaces.erase(End, Replaces.end());</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> </div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="comment">// Detect conflicts</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   Range ConflictRange(Replaces.front().getOffset(),</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>                       Replaces.front().getLength());</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <span class="keywordtype">unsigned</span> ConflictStart = 0;</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordtype">unsigned</span> ConflictLength = 1;</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 1; i < Replaces.size(); ++i) {</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     Range <a class="code" href="TokenAnnotator_8cpp.html#af9dd7352b5e730aa8ddb81784035c434">Current</a>(Replaces[i].getOffset(), Replaces[i].getLength());</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     <span class="keywordflow">if</span> (ConflictRange.overlapsWith(Current)) {</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="comment">// Extend conflicted range</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       ConflictRange = Range(ConflictRange.getOffset(),</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>                             std::max(ConflictRange.getLength(),</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>                                      Current.<a class="code" href="classclang_1_1tooling_1_1Range.html#aa7b1636e7865aa91d876326aeb58c46a" title="Accessors.">getOffset</a>() + Current.<a class="code" href="classclang_1_1tooling_1_1Range.html#aec32bbeccc00b4bac840563cf114708f">getLength</a>() -</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>                                          ConflictRange.getOffset()));</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>       ++ConflictLength;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>       <span class="keywordflow">if</span> (ConflictLength > 1)</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>         Conflicts.push_back(Range(ConflictStart, ConflictLength));</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       ConflictRange = <a class="code" href="TokenAnnotator_8cpp.html#af9dd7352b5e730aa8ddb81784035c434">Current</a>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       ConflictStart = i;</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       ConflictLength = 1;</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     }</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>   }</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> </div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   <span class="keywordflow">if</span> (ConflictLength > 1)</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>     Conflicts.push_back(Range(ConflictStart, ConflictLength));</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> }</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> </div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a5365f0211f9795916dbe46d9aad2e018">  272</a></span> <a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a5365f0211f9795916dbe46d9aad2e018">RefactoringTool::RefactoringTool</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1tooling_1_1CompilationDatabase.html" title="Interface for compilation databases.">CompilationDatabase</a> &Compilations,</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>                                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<std::string></a> SourcePaths)</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   : <a class="code" href="classclang_1_1tooling_1_1ClangTool.html" title="Utility to run a FrontendAction over a set of files.">ClangTool</a>(Compilations, SourcePaths) {}</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#acec7e9376a157fa662e37ed7096613b4">  276</a></span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &<a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#acec7e9376a157fa662e37ed7096613b4" title="Returns the set of replacements to which replacements should be added during the run of the tool...">RefactoringTool::getReplacements</a>() { <span class="keywordflow">return</span> Replace; }</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a97680f1cca52eaddd838922d15827032">  278</a></span> <span class="keywordtype">int</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a97680f1cca52eaddd838922d15827032" title="Call run(), apply all generated replacements, and immediately save the results to disk...">RefactoringTool::runAndSave</a>(<a class="code" href="classclang_1_1tooling_1_1FrontendActionFactory.html" title="Interface to generate clang::FrontendActions.">FrontendActionFactory</a> *ActionFactory) {</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keywordflow">if</span> (<span class="keywordtype">int</span> Result = <a class="code" href="classclang_1_1tooling_1_1ClangTool.html#acec91f63b45ac7ee2d6c94cb9c10dab3">run</a>(ActionFactory)) {</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>     <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   }</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>   <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> DefaultLangOptions;</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>   <a class="code" href="classllvm_1_1IntrusiveRefCntPtr.html">IntrusiveRefCntPtr<DiagnosticOptions></a> DiagOpts = <span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticOptions.html" title="Options for controlling the compiler diagnostics engine.">DiagnosticOptions</a>();</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <a class="code" href="classclang_1_1TextDiagnosticPrinter.html">TextDiagnosticPrinter</a> DiagnosticPrinter(llvm::errs(), &*DiagOpts);</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> Diagnostics(</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <a class="code" href="classllvm_1_1IntrusiveRefCntPtr.html">IntrusiveRefCntPtr<DiagnosticIDs></a>(<span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticIDs.html" title="Used for handling and querying diagnostic IDs.">DiagnosticIDs</a>()),</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       &*DiagOpts, &DiagnosticPrinter, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> Sources(Diagnostics, <a class="code" href="classclang_1_1tooling_1_1ClangTool.html#a76c46b73c6118b5759df9ffcf2cc9043" title="Returns the file manager used in the tool.">getFiles</a>());</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> Rewrite(Sources, DefaultLangOptions);</div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a70b5fdd395d0007097ce82b4fb7d44df" title="Apply all stored replacements to the given Rewriter.">applyAllReplacements</a>(Rewrite)) {</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     llvm::errs() << <span class="stringliteral">"Skipped some replacements.\n"</span>;</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   }</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="keywordflow">return</span> saveRewrittenFiles(Rewrite);</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> }</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> </div>
+<div class="line"><a name="l00299"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a70b5fdd395d0007097ce82b4fb7d44df">  299</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a70b5fdd395d0007097ce82b4fb7d44df" title="Apply all stored replacements to the given Rewriter.">RefactoringTool::applyAllReplacements</a>(<a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite) {</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">tooling::applyAllReplacements</a>(Replace, Rewrite);</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> }</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="keywordtype">int</span> RefactoringTool::saveRewrittenFiles(<a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite) {</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>   <span class="keywordflow">return</span> Rewrite.<a class="code" href="classclang_1_1Rewriter.html#af8ccd9573dacff3bbd604b8354a17a95">overwriteChangedFiles</a>() ? 1 : 0;</div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> }</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> } <span class="comment">// end namespace tooling</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> } <span class="comment">// end namespace clang</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,316 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: Refactoring.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_14ab871e308b37f9042717085145c002.html">Tooling</a></li><li class="navelem"><a class="el" href="dir_88d92a3518b6d6dcb8dd1cee7c911282.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">Refactoring.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="Refactoring_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/Tooling/Release+Asserts/Refactoring.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/Release+Asserts/Refactoring.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  Refactoring.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/TextDiagnosticPrinter.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Rewrite/Core/Rewriter.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Rewrite/Core/DeltaTree.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Rewrite/Core/RewriteRope.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Refactoring.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Tooling.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Driver/Util.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendAction.h \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendOptions.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/CommandLineSourceLoc.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="JSONCompilationDatabase_8cpp.html#aff1eaf11bcfc05c142268512eeb4e134">CommandLine</a>.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Sema/<a class="code" href="classCodeCompleteOptions.html" title="Options controlling the behavior of code completion.">CodeCompleteOptions</a>.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/ArgumentsAdjusters.h \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/CompilationDatabase.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/include/llvm/Support/raw_os_ostream.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/include/llvm/Support/Path.h</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> </div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/TextDiagnosticPrinter.h:</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h:</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.h:</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/CommentOptions.h:</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/ObjCRuntime.h:</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/VersionTuple.h:</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> /home/tstellar/llvm/include/llvm/ADT/Triple.h:</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h:</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h:</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/OperatorKinds.def:</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TemplateKinds.h:</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Rewrite/Core/Rewriter.h:</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Rewrite/Core/DeltaTree.h:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Rewrite/Core/RewriteRope.h:</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Refactoring.h:</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/Tooling.h:</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Driver/Util.h:</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendAction.h:</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/FrontendOptions.h:</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Frontend/CommandLineSourceLoc.h:</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="JSONCompilationDatabase_8cpp.html#aff1eaf11bcfc05c142268512eeb4e134">CommandLine</a>.h:</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Sema/<a class="code" href="classCodeCompleteOptions.html" title="Options controlling the behavior of code completion.">CodeCompleteOptions</a>.h:</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/ArgumentsAdjusters.h:</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/CompilationDatabase.h:</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> /home/tstellar/llvm/include/llvm/Support/raw_os_ostream.h:</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> /home/tstellar/llvm/include/llvm/Support/Path.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>

Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Refactoring_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,322 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head>
+<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
+<meta name="keywords" content="clang,LLVM,Low Level Virtual Machine,C,C++,doxygen,API,frontend,documentation"/>
+<meta name="description" content="C++ source code API documentation for clang."/>
+<title>clang: Refactoring.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_595f3151679c28f47cf4097124b3607a.html">Tooling</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">Refactoring.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="Refactoring_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> <span class="comment">//===--- Refactoring.h - Framework for clang refactoring tools --*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  Interfaces supporting refactorings that span multiple translation units.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  While single translation unit refactorings are supported via the Rewriter,</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//  when refactoring multiple translation units changes must be stored in a</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//  SourceManager independent form, duplicate changes need to be removed, and</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//  all changes must be applied at once at the end of the refactoring so that</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">//  the code is always parseable.</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#ifndef LLVM_CLANG_TOOLING_REFACTORING_H</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_TOOLING_REFACTORING_H</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="SourceLocation_8h.html" title="Defines the clang::SourceLocation class and associated facilities.">clang/Basic/SourceLocation.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Tooling_8h.html">clang/Tooling/Tooling.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/StringRef.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include <set></span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">class </span>Rewriter;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">class </span>SourceLocation;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">namespace </span>tooling {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// \brief A source range independent of the \c SourceManager.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html">   36</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html#ab3b892d079dad0391fe9a8b1a36a1c90">   38</a></span>   <a class="code" href="classclang_1_1tooling_1_1Range.html#ab3b892d079dad0391fe9a8b1a36a1c90">Range</a>() : Offset(0), Length(0) {}</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html#a1a8389a110c3cefeb2164653a404b35b">   39</a></span>   <a class="code" href="classclang_1_1tooling_1_1Range.html#a1a8389a110c3cefeb2164653a404b35b">Range</a>(<span class="keywordtype">unsigned</span> Offset, <span class="keywordtype">unsigned</span> Length) : Offset(Offset), Length(Length) {}</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  /// \brief Accessors.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment">  /// @{</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html#aa7b1636e7865aa91d876326aeb58c46a">   43</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1tooling_1_1Range.html#aa7b1636e7865aa91d876326aeb58c46a" title="Accessors.">getOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Offset; }</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html#aec32bbeccc00b4bac840563cf114708f">   44</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1tooling_1_1Range.html#aec32bbeccc00b4bac840563cf114708f">getLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Length; }<span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">  /// @}</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">  /// \name Range Predicates</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">  /// @{</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">  /// \brief Whether this range overlaps with \p RHS or not.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html#a02f2d0c7f927cdf73fd90214a264795f">   50</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1Range.html#a02f2d0c7f927cdf73fd90214a264795f">overlapsWith</a>(<a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a> RHS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">return</span> Offset + Length > RHS.Offset && Offset < RHS.Offset + RHS.Length;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   }</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">  /// \brief Whether this range contains \p RHS or not.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Range.html#a1225ac8f4416166815cfb537b6c7c5fc">   55</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1Range.html#a1225ac8f4416166815cfb537b6c7c5fc" title="Whether this range contains RHS or not.">contains</a>(<a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a> RHS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     <span class="keywordflow">return</span> RHS.Offset >= Offset &&</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>            (RHS.Offset + RHS.Length) <= (Offset + Length);</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   }<span class="comment"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">  /// @}</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordtype">unsigned</span> Offset;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordtype">unsigned</span> Length;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> };</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment"></span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment">/// \brief A text replacement.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">/// Represents a SourceManager independent replacement of a range of text in a</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">/// specific file.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html">   70</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1Replacement.html" title="A text replacement.">Replacement</a> {</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">  /// \brief Creates an invalid (not applicable) replacement.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment"></span>  <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement</a>();</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment"></span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  /// \brief Creates a replacement of the range [Offset, Offset+Length) in</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">  /// FilePath with ReplacementText.</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  /// \param FilePath A source file accessible via a SourceManager.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  /// \param Offset The byte offset of the start of the range in the file.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">  /// \param Length The length of the range in bytes.</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment"></span>  <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement</a>(StringRef FilePath, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>               <span class="keywordtype">unsigned</span> Length, StringRef ReplacementText);</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  /// \brief Creates a Replacement of the range [Start, Start+Length) with</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// ReplacementText.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment"></span>  <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start, <span class="keywordtype">unsigned</span> Length,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>               StringRef ReplacementText);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment"></span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">  /// \brief Creates a Replacement of the given range with ReplacementText.</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment"></span>  <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <span class="keyword">const</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> &<a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a>,</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>               StringRef ReplacementText);</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment"></span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  /// \brief Creates a Replacement of the node with ReplacementText.</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment"></span>  <span class="keyword">template</span> <<span class="keyword">typename</span> Node></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <span class="keyword">const</span> <a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a> &NodeToReplace,</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>               StringRef ReplacementText);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment"></span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment">  /// \brief Returns whether this replacement can be applied to a file.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">  /// Only replacements that are in a valid file can be applied.</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4256b2ed50842fc1a22da0018a492bd9" title="Returns whether this replacement can be applied to a file.">isApplicable</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment"></span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">  /// \brief Accessors.</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">  /// @{</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4">  105</a></span> <span class="comment"></span>  StringRef <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a504c5811859c2e1f5a99d065a37627a4" title="Accessors.">getFilePath</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FilePath; }</div>
+<div class="line"><a name="l00106"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">  106</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a4b668d3798d74323583691d4e1006f2f">getOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ReplacementRange.<a class="code" href="classclang_1_1tooling_1_1Range.html#aa7b1636e7865aa91d876326aeb58c46a" title="Accessors.">getOffset</a>(); }</div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">  107</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa9ccf772a294314638132242f7cd1898">getLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ReplacementRange.<a class="code" href="classclang_1_1tooling_1_1Range.html#aec32bbeccc00b4bac840563cf114708f">getLength</a>(); }</div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#a23304f83d4718bfac106ff42669fffb6">  108</a></span>   StringRef <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a23304f83d4718bfac106ff42669fffb6">getReplacementText</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ReplacementText; }<span class="comment"></span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// @}</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment"></span><span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment">  /// \brief Applies the replacement on the Rewriter.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#aa095c3402383b5721b61354f5f527579" title="Applies the replacement on the Rewriter.">apply</a>(<a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">  /// \brief Returns a human readable string representation.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment"></span>  std::string <a class="code" href="classclang_1_1tooling_1_1Replacement.html#a47d4942cff3998e0ada1aae093e03af4" title="Returns a human readable string representation.">toString</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>  <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordtype">void</span> setFromSourceLocation(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Start,</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>                              <span class="keywordtype">unsigned</span> Length, StringRef ReplacementText);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordtype">void</span> setFromSourceRange(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <span class="keyword">const</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> &Range,</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>                           StringRef ReplacementText);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>   std::string FilePath;</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   Range ReplacementRange;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   std::string ReplacementText;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> };</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment"></span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">/// \brief Less-than operator between two Replacements.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#af6ccdf11a59d790e2d1364003654b5ff" title="Less-than operator between two Replacements.">operator<</a>(<span class="keyword">const</span> Replacement &LHS, <span class="keyword">const</span> Replacement &RHS);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment"></span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">/// \brief Equal-to operator between two Replacements.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#a593e11337021880c5409f552dea11190" title="Equal-to operator between two Replacements.">operator==</a>(<span class="keyword">const</span> Replacement &LHS, <span class="keyword">const</span> Replacement &RHS);</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment"></span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">/// \brief A set of Replacements.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">/// FIXME: Change to a vector and deduplicate in the RefactoringTool.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0">  136</a></span> <span class="comment"></span><span class="keyword">typedef</span> std::set<Replacement> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment"></span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">/// \brief Apply all replacements in \p Replaces to the Rewriter \p Rewrite.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">/// Replacement applications happen independently of the success of</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">/// other applications.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">/// \returns true if all replacements apply. false otherwise.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">applyAllReplacements</a>(<span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &Replaces, <a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment"></span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">/// \brief Apply all replacements in \p Replaces to the Rewriter \p Rewrite.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">/// Replacement applications happen independently of the success of</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">/// other applications.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">/// \returns true if all replacements apply. false otherwise.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">applyAllReplacements</a>(<span class="keyword">const</span> std::vector<Replacement> &Replaces,</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>                           <a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite);</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment"></span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">/// \brief Applies all replacements in \p Replaces to \p Code.</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">/// This completely ignores the path stored in each replacement. If one or more</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">/// replacements cannot be applied, this returns an empty \c string.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment"></span>std::string <a class="code" href="namespaceclang_1_1tooling.html#a3f57e1a9b4505e4edb0ab72e57f3cd70" title="Apply all replacements in Replaces to the Rewriter Rewrite.">applyAllReplacements</a>(StringRef Code, <span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &Replaces);</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment"></span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">/// \brief Calculates how a code \p Position is shifted when \p Replaces are</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">/// applied.</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1tooling.html#ab448e18e89f16e4c471a779286db5cb4" title="Calculates how a code Position is shifted when Replaces are applied.">shiftedCodePosition</a>(<span class="keyword">const</span> <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a>& Replaces, <span class="keywordtype">unsigned</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>);</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment"></span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">/// \brief Calculates how a code \p Position is shifted when \p Replaces are</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">/// applied.</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">/// \pre Replaces[i].getOffset() <= Replaces[i+1].getOffset().</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1tooling.html#ab448e18e89f16e4c471a779286db5cb4" title="Calculates how a code Position is shifted when Replaces are applied.">shiftedCodePosition</a>(<span class="keyword">const</span> std::vector<Replacement> &Replaces,</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>                              <span class="keywordtype">unsigned</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>);</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment"></span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">/// \brief Removes duplicate Replacements and reports if Replacements conflict</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">/// with one another.</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">/// \post Replaces[i].getOffset() <= Replaces[i+1].getOffset().</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">/// This function sorts \p Replaces so that conflicts can be reported simply by</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">/// offset into \p Replaces and number of elements in the conflict.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="namespaceclang_1_1tooling.html#ae49d080572e151d36fbcc1cd830694ec" title="Removes duplicate Replacements and reports if Replacements conflict with one another.">deduplicate</a>(std::vector<Replacement> &Replaces,</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                  std::vector<Range> &Conflicts);</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment"></span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">/// \brief Collection of Replacements generated from a single translation unit.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html">  183</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html" title="Collection of Replacements generated from a single translation unit.">TranslationUnitReplacements</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">  /// Name of the main source for the translation unit.</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html#a9d6eb1fddf3f4ddedb95c042958c3020">  185</a></span> <span class="comment"></span>  std::string <a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html#a9d6eb1fddf3f4ddedb95c042958c3020" title="Name of the main source for the translation unit.">MainSourceFile</a>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment"></span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  /// A freeform chunk of text to describe the context of the replacements.</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">  /// Will be printed, for example, when detecting conflicts during replacement</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">  /// deduplication.</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html#a181e3084c3ab66ed1519bf044d4413ea">  190</a></span> <span class="comment"></span>  std::string <a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html#a181e3084c3ab66ed1519bf044d4413ea">Context</a>;</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> </div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html#afcacf321b51d2fdb527b557ac790d95f">  192</a></span>   std::vector<Replacement> <a class="code" href="structclang_1_1tooling_1_1TranslationUnitReplacements.html#afcacf321b51d2fdb527b557ac790d95f">Replacements</a>;</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> };</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment"></span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">/// \brief A tool to run refactorings.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">/// This is a refactoring specific version of \see ClangTool. FrontendActions</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">/// passed to run() and runAndSave() should add replacements to</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">/// getReplacements().</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html">  200</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html" title="A tool to run refactorings.">RefactoringTool</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1tooling_1_1ClangTool.html" title="Utility to run a FrontendAction over a set of files.">ClangTool</a> {</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">  /// \see ClangTool::ClangTool.</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment"></span>  <a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a5365f0211f9795916dbe46d9aad2e018">RefactoringTool</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1tooling_1_1CompilationDatabase.html" title="Interface for compilation databases.">CompilationDatabase</a> &Compilations,</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>                   <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<std::string></a> SourcePaths);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment"></span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">  /// \brief Returns the set of replacements to which replacements should</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">  /// be added during the run of the tool.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment"></span>  <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> &<a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#acec7e9376a157fa662e37ed7096613b4" title="Returns the set of replacements to which replacements should be added during the run of the tool...">getReplacements</a>();</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment"></span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">  /// \brief Call run(), apply all generated replacements, and immediately save</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">  /// the results to disk.</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// \returns 0 upon success. Non-zero upon failure.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment"></span>  <span class="keywordtype">int</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a97680f1cca52eaddd838922d15827032" title="Call run(), apply all generated replacements, and immediately save the results to disk...">runAndSave</a>(<a class="code" href="classclang_1_1tooling_1_1FrontendActionFactory.html" title="Interface to generate clang::FrontendActions.">FrontendActionFactory</a> *ActionFactory);</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment"></span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">  /// \brief Apply all stored replacements to the given Rewriter.</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">  /// Replacement applications happen independently of the success of other</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">  /// applications.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">  /// \returns true if all replacements apply. false otherwise.</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1tooling_1_1RefactoringTool.html#a70b5fdd395d0007097ce82b4fb7d44df" title="Apply all stored replacements to the given Rewriter.">applyAllReplacements</a>(<a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite);</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> </div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">  /// \brief Write all refactored files to disk.</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment"></span>  <span class="keywordtype">int</span> saveRewrittenFiles(<a class="code" href="classclang_1_1Rewriter.html">Rewriter</a> &Rewrite);</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <a class="code" href="namespaceclang_1_1tooling.html#af27322ade483787f0d5aab4ac6f919a0" title="A set of Replacements. FIXME: Change to a vector and deduplicate in the RefactoringTool.">Replacements</a> Replace;</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> };</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="keyword">template</span> <<span class="keyword">typename</span> Node></div>
+<div class="line"><a name="l00233"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1Replacement.html#ae8d1fc39e3911c182339eb86d4fd42d6">  233</a></span> <a class="code" href="classclang_1_1tooling_1_1Replacement.html#ab8392859ae017e6357d657929111cd24" title="Creates an invalid (not applicable) replacement.">Replacement::Replacement</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &Sources, <span class="keyword">const</span> <a class="code" href="ASTMatchFinder_8cpp.html#a1dfddff6f4d91f415ffe4b9a6da5f489">Node</a> &NodeToReplace,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                          StringRef ReplacementText) {</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1tooling_1_1Range.html" title="A source range independent of the SourceManager.">Range</a> =</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">CharSourceRange::getTokenRange</a>(NodeToReplace->getSourceRange());</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   setFromSourceRange(Sources, Range, ReplacementText);</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> }</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> } <span class="comment">// end namespace tooling</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="preprocessor">#endif // end namespace LLVM_CLANG_TOOLING_REFACTORING_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:53 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen 
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more 
+information.</p>
+</body>
+</html>






More information about the llvm-commits mailing list