[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/DeclBase_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/DeclBase_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/DeclBase_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/DeclBase_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,1827 @@
+<!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: DeclBase.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">DeclBase.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="DeclBase_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">//===-- DeclBase.h - Base Classes for representing declarations -*- 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 Decl and DeclContext interfaces.</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_DECLBASE_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_DECLBASE_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="AttrIterator_8h.html">clang/AST/AttrIterator.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclarationName_8h.html">clang/AST/DeclarationName.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Linkage_8h.html" title="Defines the Linkage enumeration and various utility functions.">clang/Basic/Linkage.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Specifiers_8h.html" title="Defines various enumerations that describe declaration and type specifiers.">clang/Basic/Specifiers.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/ADT/PointerUnion.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/Support/Compiler.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/Support/PrettyStackTrace.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">class </span>ASTMutationListener;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">class </span>BlockDecl;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">class </span>CXXRecordDecl;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">class </span>CompoundStmt;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">class </span>DeclContext;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">class </span>DeclarationName;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">class </span>DependentDiagnostic;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">class </span>EnumDecl;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">class </span>FunctionDecl;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">class </span>LinkageComputer;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">class </span>LinkageSpecDecl;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">class </span>Module;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">class </span>NamedDecl;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="keyword">class </span>NamespaceDecl;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="keyword">class </span>ObjCCategoryDecl;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">class </span>ObjCCategoryImplDecl;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">class </span>ObjCContainerDecl;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">class </span>ObjCImplDecl;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="keyword">class </span>ObjCImplementationDecl;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="keyword">class </span>ObjCInterfaceDecl;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keyword">class </span>ObjCMethodDecl;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="keyword">class </span>ObjCProtocolDecl;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="keyword">struct </span>PrintingPolicy;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keyword">class </span>Stmt;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">class </span>StoredDeclsMap;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="keyword">class </span>TranslationUnitDecl;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="keyword">class </span>UsingDirectiveDecl;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> }</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">// DeclContext* is only 4-byte aligned on 32-bit systems.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="keyword">template</span><></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1DeclContext_01_5_01_4.html">   58</a></span>   <span class="keyword">class </span><a class="code" href="classllvm_1_1PointerLikeTypeTraits.html">PointerLikeTypeTraits</a><clang::DeclContext*> {</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>* <a class="code" href="classclang_1_1DeclContext.html">PT</a>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1DeclContext_01_5_01_4.html#a78fab286c6f9be73f68b34cb6498a84d">   61</a></span>   <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> *<a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1DeclContext_01_5_01_4.html#a78fab286c6f9be73f68b34cb6498a84d">getAsVoidPointer</a>(<a class="code" href="classclang_1_1DeclContext.html">PT</a> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) { <span class="keywordflow">return</span> <a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>; }</div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1DeclContext_01_5_01_4.html#ab3c1a76c843faa9fdae0d4d2bbda7809">   62</a></span>   <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1DeclContext.html">PT</a> <a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1DeclContext_01_5_01_4.html#ab3c1a76c843faa9fdae0d4d2bbda7809">getFromVoidPointer</a>(<span class="keywordtype">void</span> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1DeclContext.html">PT</a><span class="keyword">></span>(<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   }</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1DeclContext_01_5_01_4.html#ac3c1fbd7ffe587acd370db562c482e2ea88673aa6b05206f94d8b63f6092132df">   65</a></span>   <span class="keyword">enum</span> { NumLowBitsAvailable = 2 };</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> };</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> }</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">namespace </span>clang {</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">  /// \brief Captures the result of checking the availability of a</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">  /// declaration.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307b">   73</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307b" title="Captures the result of checking the availability of a declaration.">AvailabilityResult</a> {</div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bace746046eb5289be6dc810e4533aa7d1">   74</a></span>     <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bace746046eb5289be6dc810e4533aa7d1">AR_Available</a> = 0,</div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307ba6adbf64b058d62d712217f83c85d31b8">   75</a></span>     <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307ba6adbf64b058d62d712217f83c85d31b8">AR_NotYetIntroduced</a>,</div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bad487c04bb68ba53ac91ce482697f2bd3">   76</a></span>     <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bad487c04bb68ba53ac91ce482697f2bd3">AR_Deprecated</a>,</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307baef5f77edb8ed586e5256a1f644667657">   77</a></span>     <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307baef5f77edb8ed586e5256a1f644667657">AR_Unavailable</a></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> <span class="comment"></span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">/// Decl - This represents one declaration (or definition), e.g. a variable,</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">/// typedef, function, struct, etc.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html">   83</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1Decl.html">Decl</a> {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// \brief Lists the kind of concrete classes of Decl.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196">   86</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a> {</div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="DeclBase_8h.html#aa92803a25582f730a36ae4d5e5f03803">   87</a></span> <span class="preprocessor">#define DECL(DERIVED, BASE) DERIVED,</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="DeclBase_8h.html#a72977b61645eb28918b50572ac31cf87">   88</a></span> <span class="preprocessor"></span><span class="preprocessor">#define ABSTRACT_DECL(DECL)</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="DeclBase_8h.html#a6e17e7334c6750458a783bf776035843">   89</a></span> <span class="preprocessor"></span><span class="preprocessor">#define DECL_RANGE(BASE, START, END) \</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="preprocessor">        first##BASE = START, last##BASE = END,</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="DeclBase_8h.html#ab266db34724e3c2f819b5c39616b1b65">   91</a></span> <span class="preprocessor"></span><span class="preprocessor">#define LAST_DECL_RANGE(BASE, START, END) \</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="preprocessor">        first##BASE = START, last##BASE = END</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</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="l00094"></a><span class="lineno">   94</span>   };</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment"></span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  /// \brief A placeholder type used to construct an empty shell of a</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">  /// decl-derived type that will be filled in later (e.g., by some</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment">  /// deserialization method).</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="structclang_1_1Decl_1_1EmptyShell.html">   99</a></span> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structclang_1_1Decl_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a decl-derived type that will be filled in lat...">EmptyShell</a> { };</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment"></span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">  /// IdentifierNamespace - The different namespaces in which</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// declarations may appear.  According to C99 6.2.3, there are</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">  /// four namespaces, labels, tags, members and ordinary</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">  /// identifiers.  C++ describes lookup completely differently:</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// certain lookups merely "ignore" certain kinds of declarations,</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// usually based on whether the declaration is of a type, etc.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">  /// These are meant as bitmasks, so that searches in</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// C++ can look into the "tag" namespace during ordinary lookup.</span></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">  /// Decl currently provides 15 bits of IDNS bits.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">  112</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">    /// Labels, declared with 'x:' and referenced with 'goto x'.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a889b068bc28ba56b900c0c8db58eec17">  114</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a889b068bc28ba56b900c0c8db58eec17" title="Labels, declared with 'x:' and referenced with 'goto x'.">IDNS_Label</a>               = 0x0001,</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">    /// Tags, declared with 'struct foo;' and referenced with</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">    /// 'struct foo'.  All tags are also types.  This is what</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">    /// elaborated-type-specifiers look for in C.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">  119</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a>                 = 0x0002,</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment"></span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">    /// Types, declared with 'struct foo', typedefs, etc.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">    /// This is what elaborated-type-specifiers look for in C++,</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">    /// but note that it's ill-formed to find a non-tag.</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a6cb28bd82a63a8a39fd86a3dbba7494e">  124</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a6cb28bd82a63a8a39fd86a3dbba7494e">IDNS_Type</a>                = 0x0004,</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment"></span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">    /// Members, declared with object declarations within tag</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">    /// definitions.  In C, these can only be found by "qualified"</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">    /// lookup in member expressions.  In C++, they're found by</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">    /// normal lookup.</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a96e26295d5162e8a76b56de4e5b11602">  130</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a96e26295d5162e8a76b56de4e5b11602">IDNS_Member</a>              = 0x0008,</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment"></span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">    /// Namespaces, declared with 'namespace foo {}'.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment">    /// Lookup for nested-name-specifiers find these.</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ac22906eb1b728c3ed9e7524777b8ea79">  134</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ac22906eb1b728c3ed9e7524777b8ea79">IDNS_Namespace</a>           = 0x0010,</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment"></span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">    /// Ordinary names.  In C, everything that's not a label, tag,</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">    /// or member ends up here.</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">  138</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>            = 0x0020,</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">    /// Objective C \@protocol.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710abdf62fd9f1af5e6c4d726c75569cbee8">  141</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710abdf62fd9f1af5e6c4d726c75569cbee8" title="Objective C @protocol.">IDNS_ObjCProtocol</a>        = 0x0040,</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">    /// This declaration is a friend function.  A friend function</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">    /// declaration is always in this namespace but may also be in</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">    /// IDNS_Ordinary if it was previously declared.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">  146</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a>      = 0x0080,</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">    /// This declaration is a friend class.  A friend class</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">    /// declaration is always in this namespace but may also be in</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">    /// IDNS_Tag|IDNS_Type if it was previously declared.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">  151</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a>           = 0x0100,</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">    /// This declaration is a using declaration.  A using declaration</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">    /// *introduces* a number of other declarations into the current</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">    /// scope, and those declarations use the IDNS of their targets,</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">    /// but the actual using declarations go in this namespace.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710adfc94294fd49428857d181bdb0533fd1">  157</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710adfc94294fd49428857d181bdb0533fd1">IDNS_Using</a>               = 0x0200,</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment"></span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">    /// This declaration is a C++ operator declared in a non-class</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">    /// context.  All such operators are also in IDNS_Ordinary.</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">    /// C++ lexical operator lookup looks for these.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a172a261a236a3ca59c24d63c3e797006">  162</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a172a261a236a3ca59c24d63c3e797006">IDNS_NonMemberOperator</a>   = 0x0400,</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">    /// This declaration is a function-local extern declaration of a</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">    /// variable or function. This may also be IDNS_Ordinary if it</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">    /// has been declared outside any function.</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">  167</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">IDNS_LocalExtern</a>         = 0x0800</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> <span class="comment"></span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="comment">  /// ObjCDeclQualifier - 'Qualifiers' written next to the return and</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment">  /// parameter types in method declarations.  Other than remembering</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">  /// them and mangling them into the method's signature string, these</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  /// are ignored by the compiler; they are consumed by certain</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">  /// remote-messaging frameworks.</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">  /// in, inout, and out are mutually exclusive and apply only to</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">  /// method parameters.  bycopy and byref are mutually exclusive and</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">  /// apply only to method parameters (?).  oneway applies only to</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">  /// results.  All of these expect their corresponding parameter to</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">  /// have a particular type.  None of this is currently enforced by</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">  /// clang.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// This should be kept in sync with ObjCDeclSpec::ObjCDeclQualifier.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24">  184</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24">ObjCDeclQualifier</a> {</div>
+<div class="line"><a name="l00185"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a6121ba08c1e6d7c046fd01753433c2c2">  185</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a6121ba08c1e6d7c046fd01753433c2c2">OBJC_TQ_None</a> = 0x0,</div>
+<div class="line"><a name="l00186"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24aa31bcdc451aec24c0b99b36e61fa7e55">  186</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24aa31bcdc451aec24c0b99b36e61fa7e55">OBJC_TQ_In</a> = 0x1,</div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a79ab8ee52fd8ccb44ad9621f388cfb3d">  187</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a79ab8ee52fd8ccb44ad9621f388cfb3d">OBJC_TQ_Inout</a> = 0x2,</div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24ac040c99ecf4823345ad6a2b286ac2aa3">  188</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24ac040c99ecf4823345ad6a2b286ac2aa3">OBJC_TQ_Out</a> = 0x4,</div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a2e18be6832fceb0e0f072fc597b35f6a">  189</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a2e18be6832fceb0e0f072fc597b35f6a">OBJC_TQ_Bycopy</a> = 0x8,</div>
+<div class="line"><a name="l00190"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a1e0d07f110d2d135cc84223cbe160125">  190</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a1e0d07f110d2d135cc84223cbe160125">OBJC_TQ_Byref</a> = 0x10,</div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a2234a8f5b5bbc359c282726ae29f4890">  191</a></span>     <a class="code" href="classclang_1_1Decl.html#a7f34c574aae8bf17eae69fc7bd8a3e24a2234a8f5b5bbc359c282726ae29f4890">OBJC_TQ_Oneway</a> = 0x20</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> </div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <span class="comment">// Enumeration values used in the bits stored in NextInContextAndBits.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keyword">enum</span> {<span class="comment"></span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">    /// \brief Whether this declaration is a top-level declaration (function,</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">    /// global variable, etc.) that is lexically inside an objc container</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">    /// definition.</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57a98074e55902ae3594fcaac5dfcbe5db6">  200</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57a98074e55902ae3594fcaac5dfcbe5db6" title="Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.">TopLevelDeclInObjCContainerFlag</a> = 0x01,</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">    /// \brief Whether this declaration is private to the module in which it was</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">    /// defined.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57ace54a1d87acb2847ee73d4d44110bb63">  204</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57ace54a1d87acb2847ee73d4d44110bb63" title="Whether this declaration is private to the module in which it was defined.">ModulePrivateFlag</a> = 0x02</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>   <span class="comment"></span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">  /// \brief The next declaration within the same lexical</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">  /// DeclContext. These pointers form the linked list that is</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  /// traversed via DeclContext's decls_begin()/decls_end().</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">  /// The extra two bits are used for the TopLevelDeclInObjCContainer and</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// ModulePrivate bits.</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4">  213</a></span> <span class="comment"></span>  llvm::PointerIntPair<Decl *, 2, unsigned> <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>;</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> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00216"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ae834cdc00c383ce00125fbdfee83d346">  216</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>;</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>   <span class="keyword">struct </span>MultipleDC {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *SemanticDC;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>     <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *LexicalDC;</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> </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">  /// DeclCtx - Holds either a DeclContext* or a MultipleDC*.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">  /// For declarations that don't contain C++ scope specifiers, it contains</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">  /// the DeclContext where the Decl was declared.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">  /// For declarations with C++ scope specifiers, it contains a MultipleDC*</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">  /// with the context where it semantically belongs (SemanticDC) and the</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  /// context where it was lexically declared (LexicalDC).</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  /// e.g.:</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">  ///   namespace A {</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">  ///      void f(); // SemanticDC == LexicalDC == 'namespace A'</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">  ///   }</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">  ///   void A::f(); // SemanticDC == namespace 'A'</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">  ///                // LexicalDC == global namespace</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment"></span>  llvm::PointerUnion<DeclContext*, MultipleDC*> DeclCtx;</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>   <span class="keyword">inline</span> <span class="keywordtype">bool</span> isInSemaDC()<span class="keyword"> const    </span>{ <span class="keywordflow">return</span> DeclCtx.is<<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*>(); }</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   <span class="keyword">inline</span> <span class="keywordtype">bool</span> isOutOfSemaDC()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> DeclCtx.is<MultipleDC*>(); }</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   <span class="keyword">inline</span> MultipleDC *getMultipleDC()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>     <span class="keywordflow">return</span> DeclCtx.get<MultipleDC*>();</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="keyword">inline</span> <a class="code" href="classclang_1_1Decl.html#ae834cdc00c383ce00125fbdfee83d346">DeclContext</a> *getSemanticDC()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>     <span class="keywordflow">return</span> DeclCtx.get<<a class="code" href="classclang_1_1Decl.html#ae834cdc00c383ce00125fbdfee83d346">DeclContext</a>*>();</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>   }</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment"></span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">  /// Loc - The location of this decl.</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment"></span>  SourceLocation Loc;</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">  /// DeclKind - This indicates which class this is.</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> DeclKind : 8;</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">  /// InvalidDecl - This indicates a semantic error occurred.</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> InvalidDecl :  1;</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> <span class="comment"></span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="comment">  /// HasAttrs - This indicates whether the decl has attributes or not.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> HasAttrs : 1;</div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment"></span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">  /// Implicit - Whether this declaration was implicitly generated by</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">  /// the implementation rather than explicitly written by the user.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> Implicit : 1;</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="comment"></span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="comment">  /// \brief Whether this declaration was "used", meaning that a definition is</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="comment">  /// required.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> Used : 1;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment"></span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">  /// \brief Whether this declaration was "referenced".</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment">  /// The difference with 'Used' is whether the reference appears in a</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment">  /// evaluated context or not, e.g. functions used in uninstantiated templates</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="comment">  /// are regarded as "referenced" but not "used".</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> Referenced : 1;</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="comment"></span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="comment">  /// \brief Whether statistic collection is enabled.</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> StatisticsEnabled;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> </div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="comment">  /// Access - Used by C++ decls for the access specifier.</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> <span class="comment"></span>  <span class="comment">// NOTE: VC++ treats enums as signed, avoid using the AccessSpecifier enum</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4">  280</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4" title="Access - Used by C++ decls for the access specifier.">Access</a> : 2;</div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a965aeb04ff64b386738f64e370273360">  281</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1Decl.html#a965aeb04ff64b386738f64e370273360">CXXClassMemberWrapper</a>;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="comment"></span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="comment">  /// \brief Whether this declaration was loaded from an AST file.</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a91dd79d0dcdba11d3760c6abe1930d50">  284</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#a91dd79d0dcdba11d3760c6abe1930d50" title="Whether this declaration was loaded from an AST file.">FromASTFile</a> : 1;</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment"></span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment">  /// \brief Whether this declaration is hidden from normal name lookup, e.g.,</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment">  /// because it is was loaded from an AST file is either module-private or</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="comment">  /// because its submodule has not been made visible.</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ad58279c91e474c764e418e5a09d32073">  289</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#ad58279c91e474c764e418e5a09d32073" title="Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AS...">Hidden</a> : 1;</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment">  /// IdentifierNamespace - This specifies what IDNS_* namespace this lives in.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa3158835ca059c6deed5a9e1aa1e5736">  292</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> : 12;</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="comment"></span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> <span class="comment">  /// \brief If 0, we have not computed the linkage of this declaration.</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment">  /// Otherwise, it is the linkage + 1.</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567">  296</a></span> <span class="comment"></span>  <span class="keyword">mutable</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567" title="If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1...">CacheValidAndLinkage</a> : 3;</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> </div>
+<div class="line"><a name="l00298"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aaf78a162132cef88281b20d4929a43dd">  298</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="l00299"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a6c90c31849a7e44e82778bc157ad9588">  299</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="l00300"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a5d8560551ea81515968dd468e2e4082e">  300</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTReader.html" title="Reads an AST files chain containing the contents of a translation unit.">ASTReader</a>;</div>
+<div class="line"><a name="l00301"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ab9805586875027aa56f34d8e668ae9e5">  301</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1LinkageComputer.html">LinkageComputer</a>;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span> </div>
+<div class="line"><a name="l00303"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a2dc13200d048d20ef758ceb2b37f4508">  303</a></span>   <span class="keyword">template</span><<span class="keyword">typename</span> decl_type> <span class="keyword">friend</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="l00304"></a><span class="lineno">  304</span> </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>   <span class="keywordtype">void</span> CheckAccessDeclContext() <span class="keyword">const</span>;</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> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> </div>
+<div class="line"><a name="l00310"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a35b674a2acc2572e1d81775bb5a9bc53">  310</a></span>   <a class="code" href="classclang_1_1Decl.html#a35b674a2acc2572e1d81775bb5a9bc53">Decl</a>(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a> DK, <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC, <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> L)</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     : <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>(), DeclCtx(DC),</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>       Loc(L), DeclKind(DK), InvalidDecl(0),</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>       HasAttrs(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), Implicit(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), <a class="code" href="ObjCUnusedIVarsChecker_8cpp.html#aaa1fb8acad41bb179fff81835791b18aa7158c3e55dd01a7f0df5b432af5dab3f">Used</a>(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), Referenced(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>       <a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4" title="Access - Used by C++ decls for the access specifier.">Access</a>(<a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa24d2c10b569678923a7bff78b68cb02b">AS_none</a>), <a class="code" href="classclang_1_1Decl.html#a91dd79d0dcdba11d3760c6abe1930d50" title="Whether this declaration was loaded from an AST file.">FromASTFile</a>(0), <a class="code" href="classclang_1_1Decl.html#ad58279c91e474c764e418e5a09d32073" title="Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AS...">Hidden</a>(0),</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a>(<a class="code" href="classclang_1_1Decl.html#a4f78ff7f5966469680472cc2bc3da7f7">getIdentifierNamespaceForKind</a>(DK)),</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>       <a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567" title="If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1...">CacheValidAndLinkage</a>(0)</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>     <span class="keywordflow">if</span> (StatisticsEnabled) <a class="code" href="classclang_1_1Decl.html#a0db40b3ac5d87a633c5f375af5838abd">add</a>(DK);</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> </div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a3b7c2be0e15e3655ea605b79b586e5cf">  321</a></span>   <a class="code" href="classclang_1_1Decl.html#a35b674a2acc2572e1d81775bb5a9bc53">Decl</a>(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a> DK, <a class="code" href="structclang_1_1Decl_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a decl-derived type that will be filled in lat...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     : <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>(), DeclKind(DK), InvalidDecl(0),</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       HasAttrs(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), Implicit(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), <a class="code" href="ObjCUnusedIVarsChecker_8cpp.html#aaa1fb8acad41bb179fff81835791b18aa7158c3e55dd01a7f0df5b432af5dab3f">Used</a>(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), Referenced(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>       <a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4" title="Access - Used by C++ decls for the access specifier.">Access</a>(<a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa24d2c10b569678923a7bff78b68cb02b">AS_none</a>), <a class="code" href="classclang_1_1Decl.html#a91dd79d0dcdba11d3760c6abe1930d50" title="Whether this declaration was loaded from an AST file.">FromASTFile</a>(0), <a class="code" href="classclang_1_1Decl.html#ad58279c91e474c764e418e5a09d32073" title="Whether this declaration is hidden from normal name lookup, e.g., because it is was loaded from an AS...">Hidden</a>(0),</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>       <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a>(<a class="code" href="classclang_1_1Decl.html#a4f78ff7f5966469680472cc2bc3da7f7">getIdentifierNamespaceForKind</a>(DK)),</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567" title="If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1...">CacheValidAndLinkage</a>(0)</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>     <span class="keywordflow">if</span> (StatisticsEnabled) <a class="code" href="classclang_1_1Decl.html#a0db40b3ac5d87a633c5f375af5838abd">add</a>(DK);</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> </div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>   <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Decl.html#a323dc88b702421850083e87b13ad5ecb">~Decl</a>();</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> <span class="comment"></span></div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> <span class="comment">  /// \brief Allocate memory for a deserialized declaration.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="comment">  /// This routine must be used to allocate memory for any declaration that is</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="comment">  /// deserialized from a module file.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> <span class="comment">  /// \param Context The context in which we will allocate memory.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <span class="comment">  /// \param ID The global ID of the deserialized declaration.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> <span class="comment">  /// \param Size The size of the allocated object.</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> *<a class="code" href="classclang_1_1Decl.html#a3026976dfd8cb6aa936c57255dbf5968" title="Allocate memory for a deserialized declaration.">AllocateDeserializedDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>                                         <span class="keywordtype">unsigned</span> <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="l00343"></a><span class="lineno">  343</span>                                         <span class="keywordtype">unsigned</span> Size);</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="comment"></span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="comment">  /// \brief Update a potentially out-of-date declaration.</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#afcec5fd91d1a2ed561a219f8b990e4e9" title="Update a potentially out-of-date declaration.">updateOutOfDate</a>(<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> &II) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> </div>
+<div class="line"><a name="l00348"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a53810ee9e6d128a26968b7e95ba9f033">  348</a></span>   <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> <a class="code" href="classclang_1_1Decl.html#a53810ee9e6d128a26968b7e95ba9f033">getCachedLinkage</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>     <span class="keywordflow">return</span> <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>(<a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567" title="If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1...">CacheValidAndLinkage</a> - 1);</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> </div>
+<div class="line"><a name="l00352"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa0eb399c315caf0100ce30e7edf9b4fe">  352</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#aa0eb399c315caf0100ce30e7edf9b4fe">setCachedLinkage</a>(<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> L)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>     <a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567" title="If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1...">CacheValidAndLinkage</a> = L + 1;</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   }</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> </div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a174933f6de9cbd8b243137ab05be9bce">  356</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a174933f6de9cbd8b243137ab05be9bce">hasCachedLinkage</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a0785cc7d27cf7121afa47db1f881e567" title="If 0, we have not computed the linkage of this declaration. Otherwise, it is the linkage + 1...">CacheValidAndLinkage</a>;</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   }</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> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment"></span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> <span class="comment">  /// \brief Source range that this declaration covers.</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#af32959df6a722f5089bbdd3dd88ea9bd">  363</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> <a class="code" href="classclang_1_1Decl.html#af32959df6a722f5089bbdd3dd88ea9bd" title="Source range that this declaration covers.">getSourceRange</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(<a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>(), <a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>());</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   }</div>
+<div class="line"><a name="l00366"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ae66a13d419e9cad2f6c3643bfce45c54">  366</a></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> <a class="code" href="classclang_1_1Decl.html#ae66a13d419e9cad2f6c3643bfce45c54">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#af32959df6a722f5089bbdd3dd88ea9bd" title="Source range that this declaration covers.">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>();</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   }</div>
+<div class="line"><a name="l00369"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a6eb7b247deafb504e09a9d225bbea0c4">  369</a></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> <a class="code" href="classclang_1_1Decl.html#a6eb7b247deafb504e09a9d225bbea0c4">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#af32959df6a722f5089bbdd3dd88ea9bd" title="Source range that this declaration covers.">getSourceRange</a>().<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>();</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> </div>
+<div class="line"><a name="l00373"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">  373</a></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> <a class="code" href="classclang_1_1Decl.html#a2348196ac4e0b1d5ebb1859c31b99eac">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l00374"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ab9567d0129af38839ace3ddbf21c0ae1">  374</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ab9567d0129af38839ace3ddbf21c0ae1">setLocation</a>(<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> L) { Loc = L; }</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span> </div>
+<div class="line"><a name="l00376"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">  376</a></span>   <a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a> <a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a><span class="keyword">></span>(DeclKind); }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1Decl.html#ab9ea2c2c1b8d56bb2631823e94eb094a">getDeclKindName</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> </div>
+<div class="line"><a name="l00379"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a4e93d06ed785c3f9a3578a26db56233b">  379</a></span>   <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a4e93d06ed785c3f9a3578a26db56233b">getNextDeclInContext</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getPointer(); }</div>
+<div class="line"><a name="l00380"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ad35dab7d4d4e99d9218aeb5833de4ac2">  380</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#ad35dab7d4d4e99d9218aeb5833de4ac2">getNextDeclInContext</a>()<span class="keyword"> const </span>{<span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getPointer();}</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">  382</a></span>   <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>() {</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>     <span class="keywordflow">if</span> (isInSemaDC())</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>       <span class="keywordflow">return</span> getSemanticDC();</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">return</span> getMultipleDC()->SemanticDC;</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   }</div>
+<div class="line"><a name="l00387"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#af6771fe0e3141843dba5fb8771b778df">  387</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#af6771fe0e3141843dba5fb8771b778df">getDeclContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>();</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>   }</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="comment"></span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="comment">  /// Find the innermost non-closure ancestor of this declaration,</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span> <span class="comment">  /// walking up through blocks, lambdas, etc.  If that ancestor is</span></div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> <span class="comment">  /// not a code context (!isFunctionOrMethod()), returns null.</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> <span class="comment">  /// A declaration may be its own non-closure context.</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a8cdc20f30d3d2c6366341e2fe085be14">getNonClosureContext</a>();</div>
+<div class="line"><a name="l00397"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a8666e4d4e374fa355d47eae8ef798600">  397</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a8666e4d4e374fa355d47eae8ef798600">getNonClosureContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#a8cdc20f30d3d2c6366341e2fe085be14">getNonClosureContext</a>();</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   }</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   <a class="code" href="classclang_1_1TranslationUnitDecl.html" title="TranslationUnitDecl - The top declaration context.">TranslationUnitDecl</a> *<a class="code" href="classclang_1_1Decl.html#ac535adfd939a3ade5cafa3062888eae4">getTranslationUnitDecl</a>();</div>
+<div class="line"><a name="l00402"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a5de65a8aa3bd0af79e4afd57ebb09df5">  402</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1TranslationUnitDecl.html" title="TranslationUnitDecl - The top declaration context.">TranslationUnitDecl</a> *<a class="code" href="classclang_1_1Decl.html#a5de65a8aa3bd0af79e4afd57ebb09df5">getTranslationUnitDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#ac535adfd939a3ade5cafa3062888eae4">getTranslationUnitDecl</a>();</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   }</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ac5a3f06d897185fdf43fb6dd4ba0ae49">isInAnonymousNamespace</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span> </div>
+<div class="line"><a name="l00410"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a96fe786efdaa56c50aaa76baaf787a02">  410</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a96fe786efdaa56c50aaa76baaf787a02">setAccess</a>(<a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> AS) {</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>     <a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4" title="Access - Used by C++ decls for the access specifier.">Access</a> = AS;</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> <span class="preprocessor">#ifndef NDEBUG</span></div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> <span class="preprocessor"></span>    CheckAccessDeclContext();</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span> <span class="preprocessor"></span>  }</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span> </div>
+<div class="line"><a name="l00417"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">  417</a></span>   <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> <a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> <span class="preprocessor">#ifndef NDEBUG</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> <span class="preprocessor"></span>    CheckAccessDeclContext();</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> <span class="preprocessor"></span>    <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a>(<a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4" title="Access - Used by C++ decls for the access specifier.">Access</a>);</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   }</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> <span class="comment"></span></div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="comment">  /// \brief Retrieve the access specifier for this declaration, even though</span></div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span> <span class="comment">  /// it may not yet have been properly set.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a813421076e04146522613ca5b0f8c4de">  426</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> <a class="code" href="classclang_1_1Decl.html#a813421076e04146522613ca5b0f8c4de" title="Retrieve the access specifier for this declaration, even though it may not yet have been properly set...">getAccessUnsafe</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a>(<a class="code" href="classclang_1_1Decl.html#ab46c2e3feb27adfb8ff6aa55be944aa4" title="Access - Used by C++ decls for the access specifier.">Access</a>);</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   }</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> </div>
+<div class="line"><a name="l00430"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">  430</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> HasAttrs; }</div>
+<div class="line"><a name="l00431"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a263190b25cf1912d69d8fdbf216d1998">  431</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a263190b25cf1912d69d8fdbf216d1998">setAttrs</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a>& Attrs) {</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>     <span class="keywordflow">return</span> setAttrsImpl(Attrs, <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>());</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   }</div>
+<div class="line"><a name="l00434"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">  434</a></span>   <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a> &<a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>() {</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a>&<span class="keyword">></span>(<span class="keyword">const_cast<</span><span class="keyword">const </span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>());</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>   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a> &<a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a78fd3897ac7d67935dbec592215cea89">dropAttrs</a>();</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">  440</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ae06dbf27ea2b038ffba068a4b24f3913">addAttr</a>(<a class="code" href="classclang_1_1Attr.html" title="Attr - This represents one attribute.">Attr</a> *A) {</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>())</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>       <a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>().push_back(A);</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <a class="code" href="classclang_1_1Decl.html#a263190b25cf1912d69d8fdbf216d1998">setAttrs</a>(<a class="code" href="namespaceclang.html#af3819af3668f2cb1f319fa17e95b904a" title="AttrVec - A vector of Attr, which is how they are stored on the AST.">AttrVec</a>(1, 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> </div>
+<div class="line"><a name="l00447"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a26c62ee021b1672a0d10becdb16fbeb1">  447</a></span>   <span class="keyword">typedef</span> AttrVec::const_iterator <a class="code" href="classclang_1_1Decl.html#a26c62ee021b1672a0d10becdb16fbeb1">attr_iterator</a>;</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="comment">// FIXME: Do not rely on iterators having comparable singular values.</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>   <span class="comment">//        Note that this should error out if they do not.</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a0f748228d545e93f18f56f89148cfdf7">  451</a></span>   <a class="code" href="classclang_1_1Decl.html#a26c62ee021b1672a0d10becdb16fbeb1">attr_iterator</a> <a class="code" href="classclang_1_1Decl.html#a0f748228d545e93f18f56f89148cfdf7">attr_begin</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>() ? <a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>().begin() : 0;</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>   }</div>
+<div class="line"><a name="l00454"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ac0fac4a867a10e52b649ac06e3e3a9dc">  454</a></span>   <a class="code" href="classclang_1_1Decl.html#a26c62ee021b1672a0d10becdb16fbeb1">attr_iterator</a> <a class="code" href="classclang_1_1Decl.html#ac0fac4a867a10e52b649ac06e3e3a9dc">attr_end</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>() ? <a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>().end() : 0;</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> </div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00459"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ace94b0549b59e1bfbfa38c31e256be01">  459</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ace94b0549b59e1bfbfa38c31e256be01">dropAttr</a>() {</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     <span class="keywordflow">if</span> (!HasAttrs) <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span> </div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>     <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a> &Vec = <a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>();</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     Vec.erase(std::remove_if(Vec.begin(), Vec.end(), isa<T, Attr*>), Vec.end());</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>     <span class="keywordflow">if</span> (Vec.empty())</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>       HasAttrs = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   }</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>   <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00470"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa548416c9a4242838889f75b0d21125c">  470</a></span>   <a class="code" href="classclang_1_1specific__attr__iterator.html">specific_attr_iterator<T></a> <a class="code" href="classclang_1_1Decl.html#aa548416c9a4242838889f75b0d21125c">specific_attr_begin</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1specific__attr__iterator.html">specific_attr_iterator<T></a>(<a class="code" href="classclang_1_1Decl.html#a0f748228d545e93f18f56f89148cfdf7">attr_begin</a>());</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>   }</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> T></div>
+<div class="line"><a name="l00474"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ad66b270a4431d18789cae89a3b35f517">  474</a></span>   <a class="code" href="classclang_1_1specific__attr__iterator.html">specific_attr_iterator<T></a> <a class="code" href="classclang_1_1Decl.html#ad66b270a4431d18789cae89a3b35f517">specific_attr_end</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1specific__attr__iterator.html">specific_attr_iterator<T></a>(<a class="code" href="classclang_1_1Decl.html#ac0fac4a867a10e52b649ac06e3e3a9dc">attr_end</a>());</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> </div>
+<div class="line"><a name="l00478"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">  478</a></span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> T *<a class="code" href="classclang_1_1Decl.html#a6a041df02fad17a6fabe51af5de0ea3c">getAttr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>() ? getSpecificAttr<T>(<a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>()) : 0;</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   }</div>
+<div class="line"><a name="l00481"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">  481</a></span>   <span class="keyword">template</span><<span class="keyword">typename</span> T> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ac60cc8b34313e03a5c40277c5c5ad61b">hasAttr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a003fece5918f94442ff29d24f5e8c1cc">hasAttrs</a>() && hasSpecificAttr<T>(<a class="code" href="classclang_1_1Decl.html#a59463d45ab90b696a368b58d23eb49aa">getAttrs</a>());</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="comment"></span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="comment">  /// getMaxAlignment - return the maximum alignment specified by attributes</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span> <span class="comment">  /// on this decl, 0 if there are none.</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#aebbd0c8f8d79688f1b26f3b42f558ac7">getMaxAlignment</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span> <span class="comment"></span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> <span class="comment">  /// setInvalidDecl - Indicates the Decl had a semantic error. This</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="comment">  /// allows for graceful error recovery.</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a46b92fa90488bdc219831b05cd858c0b">setInvalidDecl</a>(<span class="keywordtype">bool</span> Invalid = <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00492"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">  492</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<span class="keywordtype">bool</span>) InvalidDecl; }</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> <span class="comment"></span></div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> <span class="comment">  /// isImplicit - Indicates whether the declaration was implicitly</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> <span class="comment">  /// generated by the implementation. If false, this declaration</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> <span class="comment">  /// was written explicitly in the source code.</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">  497</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">isImplicit</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Implicit; }</div>
+<div class="line"><a name="l00498"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa89b44dad7f4fd7e9c15129f8f0784e4">  498</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#aa89b44dad7f4fd7e9c15129f8f0784e4">setImplicit</a>(<span class="keywordtype">bool</span> I = <span class="keyword">true</span>) { Implicit = I; }</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> <span class="comment"></span></div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> <span class="comment">  /// \brief Whether this declaration was used, meaning that a definition</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span> <span class="comment">  /// is required.</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> <span class="comment">  /// \param CheckUsedAttr When true, also consider the "used" attribute</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> <span class="comment">  /// (in addition to the "used" bit set by \c setUsed()) when determining</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> <span class="comment">  /// whether the function is used.</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ad588cec2ab8cfc2963b9ee5a9a21d304" title="Whether this declaration was used, meaning that a definition is required.">isUsed</a>(<span class="keywordtype">bool</span> CheckUsedAttr = <span class="keyword">true</span>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> <span class="comment"></span></div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> <span class="comment">  /// \brief Set whether the declaration is used, in the sense of odr-use.</span></div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> <span class="comment">  /// This should only be used immediately after creating a declaration.</span></div>
+<div class="line"><a name="l00511"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ab240acf45b9a046f9c1ec9c3ccc428d0">  511</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ab240acf45b9a046f9c1ec9c3ccc428d0" title="Set whether the declaration is used, in the sense of odr-use.">setIsUsed</a>() { <a class="code" href="ObjCUnusedIVarsChecker_8cpp.html#aaa1fb8acad41bb179fff81835791b18aa7158c3e55dd01a7f0df5b432af5dab3f">Used</a> = <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> <span class="comment"></span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> <span class="comment">  /// \brief Mark the declaration used, in the sense of odr-use.</span></div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span> <span class="comment">  /// This notifies any mutation listeners in addition to setting a bit</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span> <span class="comment">  /// indicating the declaration is used.</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a522f503bcbd588c251157ad20fe61362" title="Mark the declaration used, in the sense of odr-use.">markUsed</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C);</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment"></span></div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> <span class="comment">  /// \brief Whether this declaration was referenced.</span></div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a3d1b39277883c845c5d51301f302cf03" title="Whether this declaration was referenced.">isReferenced</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> </div>
+<div class="line"><a name="l00522"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa8edfe1810cd86e605a11febe018f5dd">  522</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#aa8edfe1810cd86e605a11febe018f5dd">setReferenced</a>(<span class="keywordtype">bool</span> R = <span class="keyword">true</span>) { Referenced = R; }</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> <span class="comment"></span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> <span class="comment">  /// \brief Whether this declaration is a top-level declaration (function,</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> <span class="comment">  /// global variable, etc.) that is lexically inside an objc container</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> <span class="comment">  /// definition.</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a552711754a4c45d49c6e2de83917e39a">  527</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a552711754a4c45d49c6e2de83917e39a" title="Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.">isTopLevelDeclInObjCContainer</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getInt() & <a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57a98074e55902ae3594fcaac5dfcbe5db6" title="Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.">TopLevelDeclInObjCContainerFlag</a>;</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   }</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> </div>
+<div class="line"><a name="l00531"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a50e8918bb8e92d50cd197a8521b93c59">  531</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a50e8918bb8e92d50cd197a8521b93c59">setTopLevelDeclInObjCContainer</a>(<span class="keywordtype">bool</span> V = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="keywordtype">unsigned</span> Bits = <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getInt();</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     <span class="keywordflow">if</span> (V)</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>       Bits |= <a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57a98074e55902ae3594fcaac5dfcbe5db6" title="Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.">TopLevelDeclInObjCContainerFlag</a>;</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       Bits &= ~<a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57a98074e55902ae3594fcaac5dfcbe5db6" title="Whether this declaration is a top-level declaration (function, global variable, etc.) that is lexically inside an objc container definition.">TopLevelDeclInObjCContainerFlag</a>;</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>     <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.setInt(Bits);</div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>   }</div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> <span class="comment"></span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span> <span class="comment">  /// \brief Whether this declaration was marked as being private to the</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> <span class="comment">  /// module in which it was defined.</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a80d5f9396cdbe4551ad425b030c99df8">  542</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a80d5f9396cdbe4551ad425b030c99df8" title="Whether this declaration was marked as being private to the module in which it was defined...">isModulePrivate</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getInt() & <a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57ace54a1d87acb2847ee73d4d44110bb63" title="Whether this declaration is private to the module in which it was defined.">ModulePrivateFlag</a>;</div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   }</div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span> </div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span> <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span> <span class="comment">  /// \brief Specify whether this declaration was marked as being private</span></div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> <span class="comment">  /// to the module in which it was defined.</span></div>
+<div class="line"><a name="l00549"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a77b7c1769f7c6ea39899414430461ece">  549</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a77b7c1769f7c6ea39899414430461ece" title="Specify whether this declaration was marked as being private to the module in which it was defined...">setModulePrivate</a>(<span class="keywordtype">bool</span> MP = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>     <span class="keywordtype">unsigned</span> Bits = <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getInt();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>     <span class="keywordflow">if</span> (MP)</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>       Bits |= <a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57ace54a1d87acb2847ee73d4d44110bb63" title="Whether this declaration is private to the module in which it was defined.">ModulePrivateFlag</a>;</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>       Bits &= ~<a class="code" href="classclang_1_1Decl.html#a3017e439ca88823e53869dea0e81ce57ace54a1d87acb2847ee73d4d44110bb63" title="Whether this declaration is private to the module in which it was defined.">ModulePrivateFlag</a>;</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.setInt(Bits);</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   }</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> <span class="comment"></span></div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> <span class="comment">  /// \brief Set the owning module ID.</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a79c1e52b4c8e9855503874b82279b3f5">  559</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a79c1e52b4c8e9855503874b82279b3f5" title="Set the owning module ID.">setOwningModuleID</a>(<span class="keywordtype">unsigned</span> <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="l00560"></a><span class="lineno">  560</span>     assert(<a class="code" href="classclang_1_1Decl.html#a65e7ee086555015067f692bb1c2036f7" title="Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...">isFromASTFile</a>() && <span class="stringliteral">"Only works on a deserialized declaration"</span>);</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>     *((<span class="keywordtype">unsigned</span>*)<span class="keyword">this</span> - 2) = <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="l00562"></a><span class="lineno">  562</span>   }</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   </div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> <span class="comment">  /// \brief Determine the availability of the given declaration.</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span> <span class="comment">  /// This routine will determine the most restrictive availability of</span></div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> <span class="comment">  /// the given declaration (e.g., preferring 'unavailable' to</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="comment">  /// 'deprecated').</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> <span class="comment">  /// \param Message If non-NULL and the result is not \c</span></div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="comment">  /// AR_Available, will be set to a (possibly empty) message</span></div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="comment">  /// describing why the declaration has not been introduced, is</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="comment">  /// deprecated, or is unavailable.</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307b" title="Captures the result of checking the availability of a declaration.">AvailabilityResult</a> <a class="code" href="classclang_1_1Decl.html#a59880f2930b89626b5061e060e80fbdf" title="Determine the availability of the given declaration.">getAvailability</a>(std::string *Message = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="comment"></span></div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="comment">  /// \brief Determine whether this declaration is marked 'deprecated'.</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="comment">  /// \param Message If non-NULL and the declaration is deprecated,</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="comment">  /// this will be set to the message describing why the declaration</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> <span class="comment">  /// was deprecated (which may be empty).</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a01801a9e76ce39a4fe89e6e26d1a6b06">  583</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a01801a9e76ce39a4fe89e6e26d1a6b06" title="Determine whether this declaration is marked 'deprecated'.">isDeprecated</a>(std::string *Message = 0)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a59880f2930b89626b5061e060e80fbdf" title="Determine the availability of the given declaration.">getAvailability</a>(Message) == <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307bad487c04bb68ba53ac91ce482697f2bd3">AR_Deprecated</a>;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   }</div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> <span class="comment"></span></div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span> <span class="comment">  /// \brief Determine whether this declaration is marked 'unavailable'.</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span> <span class="comment">  /// \param Message If non-NULL and the declaration is unavailable,</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> <span class="comment">  /// this will be set to the message describing why the declaration</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> <span class="comment">  /// was made unavailable (which may be empty).</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a6c63f20232a8a1e35cfd0ab2e61e972d">  592</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a6c63f20232a8a1e35cfd0ab2e61e972d" title="Determine whether this declaration is marked 'unavailable'.">isUnavailable</a>(std::string *Message = 0)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a59880f2930b89626b5061e060e80fbdf" title="Determine the availability of the given declaration.">getAvailability</a>(Message) == <a class="code" href="namespaceclang.html#a9dd3516fe36bcaacff9180d4007e307baef5f77edb8ed586e5256a1f644667657">AR_Unavailable</a>;</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   }</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> <span class="comment"></span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span> <span class="comment">  /// \brief Determine whether this is a weak-imported symbol.</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span> <span class="comment">  /// Weak-imported symbols are typically marked with the</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="comment">  /// 'weak_import' attribute, but may also be marked with an</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span> <span class="comment">  /// 'availability' attribute where we're targing a platform prior to</span></div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> <span class="comment">  /// the introduction of this feature.</span></div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a1b071e9bafaf5e1ae1733a31b4fbafc9" title="Determine whether this is a weak-imported symbol.">isWeakImported</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="comment"></span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span> <span class="comment">  /// \brief Determines whether this symbol can be weak-imported,</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span> <span class="comment">  /// e.g., whether it would be well-formed to add the weak_import</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> <span class="comment">  /// attribute.</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span> <span class="comment">  /// \param IsDefinition Set to \c true to indicate that this</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> <span class="comment">  /// declaration cannot be weak-imported because it has a definition.</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a30320d034813e3a5da205608cb54400e" title="Determines whether this symbol can be weak-imported, e.g., whether it would be well-formed to add the...">canBeWeakImported</a>(<span class="keywordtype">bool</span> &IsDefinition) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span> <span class="comment"></span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span> <span class="comment">  /// \brief Determine whether this declaration came from an AST file (such as</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> <span class="comment">  /// a precompiled header or module) rather than having been parsed.</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a65e7ee086555015067f692bb1c2036f7">  614</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a65e7ee086555015067f692bb1c2036f7" title="Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...">isFromASTFile</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a91dd79d0dcdba11d3760c6abe1930d50" title="Whether this declaration was loaded from an AST file.">FromASTFile</a>; }</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span> <span class="comment"></span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span> <span class="comment">  /// \brief Retrieve the global declaration ID associated with this </span></div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> <span class="comment">  /// declaration, which specifies where in the </span></div>
+<div class="line"><a name="l00618"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a57cf20fc798dae7f5fba3e21d455df6b">  618</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#a57cf20fc798dae7f5fba3e21d455df6b" title="Retrieve the global declaration ID associated with this declaration, which specifies where in the...">getGlobalID</a>()<span class="keyword"> const </span>{ </div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Decl.html#a65e7ee086555015067f692bb1c2036f7" title="Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...">isFromASTFile</a>())</div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>       <span class="keywordflow">return</span> *((<span class="keyword">const</span> <span class="keywordtype">unsigned</span>*)<span class="keyword">this</span> - 1);</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   }</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span> <span class="comment">  /// \brief Retrieve the global ID of the module that owns this particular</span></div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="comment">  /// declaration.</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ad8e07680a82d4023feea2ea04cb78abe">  626</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#ad8e07680a82d4023feea2ea04cb78abe" title="Retrieve the global ID of the module that owns this particular declaration.">getOwningModuleID</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Decl.html#a65e7ee086555015067f692bb1c2036f7" title="Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...">isFromASTFile</a>())</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>       <span class="keywordflow">return</span> *((<span class="keyword">const</span> <span class="keywordtype">unsigned</span>*)<span class="keyword">this</span> - 2);</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     </div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>   }</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span> </div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *getOwningModuleSlow() <span class="keyword">const</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="keyword">public</span>:</div>
+<div class="line"><a name="l00637"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa778bce01bd8fefa4b315217ea7f8727">  637</a></span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1Decl.html#aa778bce01bd8fefa4b315217ea7f8727">getOwningModule</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Decl.html#a65e7ee086555015067f692bb1c2036f7" title="Determine whether this declaration came from an AST file (such as a precompiled header or module) rat...">isFromASTFile</a>())</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> </div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     <span class="keywordflow">return</span> getOwningModuleSlow();</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> </div>
+<div class="line"><a name="l00644"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">  644</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">getIdentifierNamespace</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a>;</div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>   }</div>
+<div class="line"><a name="l00647"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a0cddb7108383a0e484638614a6cc9f06">  647</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a0cddb7108383a0e484638614a6cc9f06">isInIdentifierNamespace</a>(<span class="keywordtype">unsigned</span> NS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">getIdentifierNamespace</a>() & NS;</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   }</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1Decl.html#a4f78ff7f5966469680472cc2bc3da7f7">getIdentifierNamespaceForKind</a>(<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> DK);</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span> </div>
+<div class="line"><a name="l00652"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ad37ee42ce65b9a8b4a8eddd194fb9b90">  652</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ad37ee42ce65b9a8b4a8eddd194fb9b90">hasTagIdentifierNamespace</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a64cbf8382938fd7838d02404c5033dae">isTagIdentifierNamespace</a>(<a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">getIdentifierNamespace</a>());</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>   }</div>
+<div class="line"><a name="l00655"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a64cbf8382938fd7838d02404c5033dae">  655</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a64cbf8382938fd7838d02404c5033dae">isTagIdentifierNamespace</a>(<span class="keywordtype">unsigned</span> NS) {</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="comment">// TagDecls have Tag and Type set and may also have TagFriend.</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>     <span class="keywordflow">return</span> (NS & ~<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a>) == (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a6cb28bd82a63a8a39fd86a3dbba7494e">IDNS_Type</a>);</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   }</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span> <span class="comment"></span></div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span> <span class="comment">  /// getLexicalDeclContext - The declaration context where this Decl was</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> <span class="comment">  /// lexically declared (LexicalDC). May be different from</span></div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span> <span class="comment">  /// getDeclContext() (SemanticDC).</span></div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span> <span class="comment">  /// e.g.:</span></div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="comment">  ///   namespace A {</span></div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span> <span class="comment">  ///      void f(); // SemanticDC == LexicalDC == 'namespace A'</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span> <span class="comment">  ///   }</span></div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span> <span class="comment">  ///   void A::f(); // SemanticDC == namespace 'A'</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span> <span class="comment">  ///                // LexicalDC == global namespace</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#aa390f755d0a0a1fc7fc557af886e4c93">  670</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#aa390f755d0a0a1fc7fc557af886e4c93">getLexicalDeclContext</a>() {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">if</span> (isInSemaDC())</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>       <span class="keywordflow">return</span> getSemanticDC();</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     <span class="keywordflow">return</span> getMultipleDC()->LexicalDC;</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>   }</div>
+<div class="line"><a name="l00675"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a238cb29c11686833f47df287ba069c93">  675</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#a238cb29c11686833f47df287ba069c93">getLexicalDeclContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#aa390f755d0a0a1fc7fc557af886e4c93">getLexicalDeclContext</a>();</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> </div>
+<div class="line"><a name="l00679"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#abc98cb8e083ff6e6f2ec51d89a7f0cfe">  679</a></span>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#abc98cb8e083ff6e6f2ec51d89a7f0cfe">isOutOfLine</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#aa390f755d0a0a1fc7fc557af886e4c93">getLexicalDeclContext</a>() != <a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>();</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   }</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span> <span class="comment"></span></div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span> <span class="comment">  /// setDeclContext - Set both the semantic and lexical DeclContext</span></div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span> <span class="comment">  /// to DC.</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ada1b39fcda7fc270cf6e73da6a5d7e51">setDeclContext</a>(<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC);</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span> </div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ae9774d70804bdaa706bd2ba7c5ccb47f">setLexicalDeclContext</a>(<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC);</div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span> <span class="comment"></span></div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> <span class="comment">  /// isDefinedOutsideFunctionOrMethod - This predicate returns true if this</span></div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="comment">  /// scoped decl is defined outside the current function or method.  This is</span></div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span> <span class="comment">  /// roughly global variables and functions, but also handles enums (which</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span> <span class="comment">  /// could be defined inside or outside a function etc).</span></div>
+<div class="line"><a name="l00693"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a42f5381c44d635a940426d34bcff69c3">  693</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a42f5381c44d635a940426d34bcff69c3">isDefinedOutsideFunctionOrMethod</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a64c7ec888871588c93536bfd22774b30" title="If this decl is defined inside a function/method/block it returns the corresponding DeclContext...">getParentFunctionOrMethod</a>() == 0;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> <span class="comment">  /// \brief If this decl is defined inside a function/method/block it returns</span></div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span> <span class="comment">  /// the corresponding DeclContext, otherwise it returns null.</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#a64c7ec888871588c93536bfd22774b30" title="If this decl is defined inside a function/method/block it returns the corresponding DeclContext...">getParentFunctionOrMethod</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00700"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a6f325e7e87b9b58aee0caf78b59d7d82">  700</a></span>   <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#a6f325e7e87b9b58aee0caf78b59d7d82">getParentFunctionOrMethod</a>() {</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>                     <span class="keyword">const_cast<</span><span class="keyword">const </span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#a64c7ec888871588c93536bfd22774b30" title="If this decl is defined inside a function/method/block it returns the corresponding DeclContext...">getParentFunctionOrMethod</a>());</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>   }</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span> <span class="comment"></span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span> <span class="comment">  /// \brief Retrieves the "canonical" declaration of the given declaration.</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a8dc8c86b18af77eba9afe42e4f429fdc">  706</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a8dc8c86b18af77eba9afe42e4f429fdc" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>() { <span class="keywordflow">return</span> <span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00707"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a3b105fddcd189d1bfa7a67bebdfe9d93">  707</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a3b105fddcd189d1bfa7a67bebdfe9d93">getCanonicalDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#a8dc8c86b18af77eba9afe42e4f429fdc" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>();</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   }</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span> <span class="comment"></span></div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> <span class="comment">  /// \brief Whether this particular Decl is a canonical one.</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a2b931baf609b7f7de1e61841a7b0d876">  712</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a2b931baf609b7f7de1e61841a7b0d876" title="Whether this particular Decl is a canonical one.">isCanonicalDecl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a8dc8c86b18af77eba9afe42e4f429fdc" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>() == <span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   </div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span> <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span> <span class="comment">  /// \brief Returns the next redeclaration or itself if this is the only decl.</span></div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span> <span class="comment">  /// Decl subclasses that can be redeclared should override this method so that</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span> <span class="comment">  /// Decl::redecl_iterator can iterate over them.</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a35f46f0ecdf71b1da036c63cedacfff9">  719</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a35f46f0ecdf71b1da036c63cedacfff9" title="Returns the next redeclaration or itself if this is the only decl.">getNextRedeclaration</a>() { <span class="keywordflow">return</span> <span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> <span class="comment"></span></div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> <span class="comment">  /// \brief Implementation of getPreviousDecl(), to be overridden by any</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="comment">  /// subclass that has a redeclaration chain.</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a0d8215ab32acd46eadf7306d55ccdb07">  723</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a0d8215ab32acd46eadf7306d55ccdb07" title="Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain...">getPreviousDeclImpl</a>() { <span class="keywordflow">return</span> 0; }</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span> <span class="comment">  /// \brief Implementation of getMostRecentDecl(), to be overridden by any</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span> <span class="comment">  /// subclass that has a redeclaration chain.  </span></div>
+<div class="line"><a name="l00727"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ac4db6fb4c44624c9ae96f33381c7bc71">  727</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#ac4db6fb4c44624c9ae96f33381c7bc71" title="Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chai...">getMostRecentDeclImpl</a>() { <span class="keywordflow">return</span> <span class="keyword">this</span>; }</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="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> <span class="comment">  /// \brief Iterates through all the redeclarations of the same decl.</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html">  731</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1Decl_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="l00732"></a><span class="lineno">  732</span> <span class="comment">    /// Current - The current declaration.</span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html">Decl</a> *Current;</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>     <a class="code" href="classclang_1_1Decl.html">Decl</a> *Starter;</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span> </div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00737"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a4bf424d0091d64b097abfd2125d9e12e">  737</a></span>     <span class="keyword">typedef</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a4bf424d0091d64b097abfd2125d9e12e">value_type</a>;</div>
+<div class="line"><a name="l00738"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ac010f728ab751e1c068431d196a2cc98">  738</a></span>     <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">value_type</a> &<a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ac010f728ab751e1c068431d196a2cc98">reference</a>;</div>
+<div class="line"><a name="l00739"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ae081247808f39f622380acf9274e5f9b">  739</a></span>     <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">value_type</a> *<a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ae081247808f39f622380acf9274e5f9b">pointer</a>;</div>
+<div class="line"><a name="l00740"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a24338cefb4e4ab63c2e401cccd15f2fc">  740</a></span>     <span class="keyword">typedef</span> std::forward_iterator_tag <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a24338cefb4e4ab63c2e401cccd15f2fc">iterator_category</a>;</div>
+<div class="line"><a name="l00741"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#accfd30944a59e86b7a3bb78a1fe664cf">  741</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_1Decl_1_1redecl__iterator.html#accfd30944a59e86b7a3bb78a1fe664cf">difference_type</a>;</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span> </div>
+<div class="line"><a name="l00743"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ab60f9221152d7ae21f9bde53bd64de65">  743</a></span>     <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ab60f9221152d7ae21f9bde53bd64de65">redecl_iterator</a>() : Current(0) { }</div>
+<div class="line"><a name="l00744"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a2f2c617d2b23b2cc419005ef95969303">  744</a></span>     <span class="keyword">explicit</span> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a2f2c617d2b23b2cc419005ef95969303">redecl_iterator</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *C) : Current(C), Starter(C) { }</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span> </div>
+<div class="line"><a name="l00746"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a0e74e16af00ab91eeeb5db2fe5fb0cf1">  746</a></span>     <a class="code" href="classclang_1_1Decl.html">reference</a> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a0e74e16af00ab91eeeb5db2fe5fb0cf1">operator*</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Current; }</div>
+<div class="line"><a name="l00747"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a15ab0f38272a82ff402003d918e74a18">  747</a></span>     <a class="code" href="classclang_1_1Decl.html">value_type</a> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a15ab0f38272a82ff402003d918e74a18">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Current; }</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span> </div>
+<div class="line"><a name="l00749"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ae6457d20fb9224230785a001ff962583">  749</a></span>     <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a>& <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#ae6457d20fb9224230785a001ff962583">operator++</a>() {</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>       assert(Current && <span class="stringliteral">"Advancing while iterator has reached end"</span>);</div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>       <span class="comment">// Get either previous decl or latest decl.</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>       <a class="code" href="classclang_1_1Decl.html">Decl</a> *Next = Current-><a class="code" href="classclang_1_1Decl.html#a35f46f0ecdf71b1da036c63cedacfff9" title="Returns the next redeclaration or itself if this is the only decl.">getNextRedeclaration</a>();</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>       assert(Next && <span class="stringliteral">"Should return next redeclaration or itself, never null!"</span>);</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       Current = (Next != Starter ? Next : 0);</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a3e779db8fa484ed71fdbed6b0c9e465d">  758</a></span>     <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a3e779db8fa484ed71fdbed6b0c9e465d">operator++</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>       <a class="code" href="classclang_1_1Decl_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="l00760"></a><span class="lineno">  760</span>       ++(*this);</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>       <span class="keywordflow">return</span> tmp;</div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>     }</div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> </div>
+<div class="line"><a name="l00764"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a7fe8d0483955d2dadaea0191e91ca5a8">  764</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a7fe8d0483955d2dadaea0191e91ca5a8">operator==</a>(<a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> x, <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> y) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       <span class="keywordflow">return</span> x.Current == y.Current;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>     }</div>
+<div class="line"><a name="l00767"></a><span class="lineno"><a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a14e7ae49a6ebba9eb71231cd13056147">  767</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html#a14e7ae49a6ebba9eb71231cd13056147">operator!=</a>(<a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> x, <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> y) {</div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>       <span class="keywordflow">return</span> x.Current != y.Current;</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>     }</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   };</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span> <span class="comment"></span></div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span> <span class="comment">  /// \brief Returns iterator for all the redeclarations of the same decl.</span></div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span> <span class="comment">  /// It will iterate at least once (when this decl is the only one).</span></div>
+<div class="line"><a name="l00774"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#affcf7e1d8ede72bffe8db1885bc75ef6">  774</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> <a class="code" href="classclang_1_1Decl.html#affcf7e1d8ede72bffe8db1885bc75ef6" 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="l00775"></a><span class="lineno">  775</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a>(const_cast<Decl*>(<span class="keyword">this</span>));</div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>   }</div>
+<div class="line"><a name="l00777"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ab344977eb918f71339b3aeb605cff3f2">  777</a></span>   <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a> <a class="code" href="classclang_1_1Decl.html#ab344977eb918f71339b3aeb605cff3f2">redecls_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl_1_1redecl__iterator.html" title="Iterates through all the redeclarations of the same decl.">redecl_iterator</a>(); }</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span> <span class="comment"></span></div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span> <span class="comment">  /// \brief Retrieve the previous declaration that declares the same entity</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span> <span class="comment">  /// as this declaration, or NULL if there is no previous declaration.</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a">  781</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a" title="Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a0d8215ab32acd46eadf7306d55ccdb07" title="Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain...">getPreviousDeclImpl</a>(); }</div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span> <span class="comment">  /// \brief Retrieve the most recent declaration that declares the same entity</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span> <span class="comment">  /// as this declaration, or NULL if there is no previous declaration.</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a196f3103a632bc0e7836e3d04da4c36f">  785</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a196f3103a632bc0e7836e3d04da4c36f" title="Retrieve the most recent declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>()<span class="keyword"> const </span>{ </div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#a0d8215ab32acd46eadf7306d55ccdb07" title="Implementation of getPreviousDecl(), to be overridden by any subclass that has a redeclaration chain...">getPreviousDeclImpl</a>();</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>   }</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span> <span class="comment"></span></div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span> <span class="comment">  /// \brief True if this is the first declaration in its redeclaration chain.</span></div>
+<div class="line"><a name="l00790"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ac0dbe34e622e9500ef6ea8310f12e864">  790</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ac0dbe34e622e9500ef6ea8310f12e864" title="True if this is the first declaration in its redeclaration chain.">isFirstDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a" title="Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>() == 0;</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>   }</div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span> <span class="comment"></span></div>
+<div class="line"><a name="l00794"></a><span class="lineno">  794</span> <span class="comment">  /// \brief Retrieve the most recent declaration that declares the same entity</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span> <span class="comment">  /// as this declaration (which may be this declaration).</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#abad5457703312ae51461e73497c033d4">  796</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#abad5457703312ae51461e73497c033d4" title="Retrieve the most recent declaration that declares the same entity as this declaration (which may be ...">getMostRecentDecl</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#ac4db6fb4c44624c9ae96f33381c7bc71" title="Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chai...">getMostRecentDeclImpl</a>(); }</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span> <span class="comment"></span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span> <span class="comment">  /// \brief Retrieve the most recent declaration that declares the same entity</span></div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span> <span class="comment">  /// as this declaration (which may be this declaration).</span></div>
+<div class="line"><a name="l00800"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ad2ae6ab83b40db17eee29b568ce73873">  800</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#ad2ae6ab83b40db17eee29b568ce73873" title="Retrieve the most recent declaration that declares the same entity as this declaration (which may be ...">getMostRecentDecl</a>()<span class="keyword"> const </span>{ </div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Decl.html">Decl</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Decl.html#ac4db6fb4c44624c9ae96f33381c7bc71" title="Implementation of getMostRecentDecl(), to be overridden by any subclass that has a redeclaration chai...">getMostRecentDeclImpl</a>();</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>   }</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span> <span class="comment"></span></div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span> <span class="comment">  /// getBody - If this Decl represents a declaration for a body of code,</span></div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span> <span class="comment">  ///  such as a function or method definition, this method returns the</span></div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span> <span class="comment">  ///  top-level Stmt* of that body.  Otherwise this method returns null.</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a128fd27b232c03226d9a34fcfa959e01">  807</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a>* <a class="code" href="classclang_1_1Decl.html#a128fd27b232c03226d9a34fcfa959e01">getBody</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> 0; }</div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span> <span class="comment"></span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span> <span class="comment">  /// \brief Returns true if this \c Decl represents a declaration for a body of</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span> <span class="comment">  /// code, such as a function or method definition.</span></div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span> <span class="comment">  /// Note that \c hasBody can also return true if any redeclaration of this</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span> <span class="comment">  /// \c Decl represents a declaration for a body of code.</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a04c7d971a174ac1574a1ac541cfc16f8">  813</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a04c7d971a174ac1574a1ac541cfc16f8" title="Returns true if this Decl represents a declaration for a body of code, such as a function or method d...">hasBody</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a128fd27b232c03226d9a34fcfa959e01">getBody</a>() != 0; }</div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span> <span class="comment"></span></div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span> <span class="comment">  /// getBodyRBrace - Gets the right brace of the body, if a body exists.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span> <span class="comment">  /// This works whether the body is a CompoundStmt or a CXXTryStmt.</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span> <span class="comment"></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> <a class="code" href="classclang_1_1Decl.html#ab82f834598084b84b6fd3396698973b6">getBodyRBrace</a>() <span class="keyword">const</span>;</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="comment">// global temp stats (until we have a per-module visitor)</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a0db40b3ac5d87a633c5f375af5838abd">add</a>(<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> k);</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ac016b6ff6aec7230441fc21c8ee584a7">EnableStatistics</a>();</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ad031109eeb3e6968d54b6353d0c9b4f1">PrintStats</a>();</div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span> <span class="comment"></span></div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span> <span class="comment">  /// isTemplateParameter - Determines whether this declaration is a</span></div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span> <span class="comment">  /// template parameter.</span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a1d4075c86d784c816d5a6cbc06d8f871">isTemplateParameter</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span> <span class="comment"></span></div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span> <span class="comment">  /// isTemplateParameter - Determines whether this declaration is a</span></div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span> <span class="comment">  /// template parameter pack.</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#abbe63548a90cbad16c8536c0d3518a49">isTemplateParameterPack</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span> <span class="comment"></span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> <span class="comment">  /// \brief Whether this declaration is a parameter pack.</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#acecdec9cfcf1dd2945705f2817332a81" title="Whether this declaration is a parameter pack.">isParameterPack</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span> <span class="comment"></span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span> <span class="comment">  /// \brief returns true if this declaration is a template</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#ad79b82c9cb0156de52c7f390e22f062f" title="returns true if this declaration is a template">isTemplateDecl</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> <span class="comment"></span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span> <span class="comment">  /// \brief Whether this declaration is a function or function template.</span></div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#acfded90869b5610b7eb1958e843e74d2" title="Whether this declaration is a function or function template.">isFunctionOrFunctionTemplate</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span> <span class="comment"></span></div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span> <span class="comment">  /// \brief Changes the namespace of this declaration to reflect that it's</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span> <span class="comment">  /// a function-local extern declaration.</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> <span class="comment">  /// These declarations appear in the lexical context of the extern</span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span> <span class="comment">  /// declaration, but in the semantic context of the enclosing namespace</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> <span class="comment">  /// scope.</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a33200461fc6b782d8c90e179570cba24">  847</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a33200461fc6b782d8c90e179570cba24" title="Changes the namespace of this declaration to reflect that it's a function-local extern declaration...">setLocalExternDecl</a>() {</div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>     assert((<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> == <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a> ||</div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>             <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> == <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a>) &&</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>            <span class="stringliteral">"namespace is not ordinary"</span>);</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="classclang_1_1Decl.html">Decl</a> *Prev = <a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a" title="Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>();</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>     <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> &= ~<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>;</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>     <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">IDNS_LocalExtern</a>;</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>     <span class="keywordflow">if</span> (Prev && Prev-><a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">getIdentifierNamespace</a>() & <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>)</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>       <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span> <span class="comment">  /// \brief Determine whether this is a block-scope declaration with linkage.</span></div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span> <span class="comment">  /// This will either be a local variable declaration declared 'extern', or a</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span> <span class="comment">  /// local function declaration.</span></div>
+<div class="line"><a name="l00863"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a3cb47fa074a9be295e16c88c0f8f114a">  863</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a3cb47fa074a9be295e16c88c0f8f114a" title="Determine whether this is a block-scope declaration with linkage. This will either be a local variabl...">isLocalExternDecl</a>() {</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> & <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">IDNS_LocalExtern</a>;</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>   }</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span> <span class="comment"></span></div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span> <span class="comment">  /// \brief Changes the namespace of this declaration to reflect that it's</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> <span class="comment">  /// the object of a friend declaration.</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span> <span class="comment">  /// These declarations appear in the lexical context of the friending</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span> <span class="comment">  /// class, but in the semantic context of the actual entity.  This property</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span> <span class="comment">  /// applies only to a specific decl object;  other redeclarations of the</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span> <span class="comment">  /// same entity may not (and probably don't) share this property.</span></div>
+<div class="line"><a name="l00874"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a818da759276d32faf95e55e61037a433">  874</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a818da759276d32faf95e55e61037a433" title="Changes the namespace of this declaration to reflect that it's the object of a friend declaration...">setObjectOfFriendDecl</a>(<span class="keywordtype">bool</span> PerformFriendInjection = <span class="keyword">false</span>) {</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="keywordtype">unsigned</span> OldNS = <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a>;</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     assert((OldNS & (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a> |</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>                      <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a> |</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>                      <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">IDNS_LocalExtern</a>)) &&</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>            <span class="stringliteral">"namespace includes neither ordinary nor tag"</span>);</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     assert(!(OldNS & ~(<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a6cb28bd82a63a8a39fd86a3dbba7494e">IDNS_Type</a> |</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>                        <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a> |</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>                        <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">IDNS_LocalExtern</a>)) &&</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>            <span class="stringliteral">"namespace includes other than ordinary or tag"</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="classclang_1_1Decl.html">Decl</a> *Prev = <a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a" title="Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>();</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> &= ~(<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a6cb28bd82a63a8a39fd86a3dbba7494e">IDNS_Type</a>);</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>     <span class="keywordflow">if</span> (OldNS & (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a>)) {</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>       <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a>;</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       <span class="keywordflow">if</span> (PerformFriendInjection ||</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>           (Prev && Prev-><a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">getIdentifierNamespace</a>() & <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a>))</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>         <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a6cb28bd82a63a8a39fd86a3dbba7494e">IDNS_Type</a>;</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> </div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>     <span class="keywordflow">if</span> (OldNS & (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710ae8bb57335741794e2cfb71deefd7660b">IDNS_LocalExtern</a>)) {</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>       <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a>;</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       <span class="keywordflow">if</span> (PerformFriendInjection ||</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>           (Prev && Prev-><a class="code" href="classclang_1_1Decl.html#a1172fe32c48af6bf358c3ae0e81a9257">getIdentifierNamespace</a>() & <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>))</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>         <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>;</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     }</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>   }</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span> </div>
+<div class="line"><a name="l00903"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319ae">  903</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319ae">FriendObjectKind</a> {</div>
+<div class="line"><a name="l00904"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aea8c4d190206bef7f8aaf21d330805da8a">  904</a></span>     <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aea8c4d190206bef7f8aaf21d330805da8a" title="Not a friend object.">FOK_None</a>,      <span class="comment">///< Not a friend object.</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aeac9e50645487cdb39fa910178e75fb069">  905</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aeac9e50645487cdb39fa910178e75fb069" title="A friend of a previously-declared entity.">FOK_Declared</a>,  <span class="comment">///< A friend of a previously-declared entity.</span></div>
+<div class="line"><a name="l00906"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aea11156859e9cdf5e2c97acc8c12134117">  906</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aea11156859e9cdf5e2c97acc8c12134117" title="A friend of a previously-undeclared entity.">FOK_Undeclared</a> <span class="comment">///< A friend of a previously-undeclared entity.</span></div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span> <span class="comment"></span>  };</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span> <span class="comment"></span></div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> <span class="comment">  /// \brief Determines whether this declaration is the object of a</span></div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> <span class="comment">  /// friend declaration and, if so, what kind.</span></div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span> <span class="comment">  /// There is currently no direct way to find the associated FriendDecl.</span></div>
+<div class="line"><a name="l00913"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a93ed199db8cffcdd6a2729a3b333d2c7">  913</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319ae">FriendObjectKind</a> <a class="code" href="classclang_1_1Decl.html#a93ed199db8cffcdd6a2729a3b333d2c7" title="Determines whether this declaration is the object of a friend declaration and, if so...">getFriendObjectKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>     <span class="keywordtype">unsigned</span> mask =</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>         (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> & (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a22bb6e3dcce3f488eba2cec593311e95">IDNS_TagFriend</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710aca967650768477c1434472f270759ec1">IDNS_OrdinaryFriend</a>));</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>     <span class="keywordflow">if</span> (!mask) <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aea8c4d190206bef7f8aaf21d330805da8a" title="Not a friend object.">FOK_None</a>;</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>     <span class="keywordflow">return</span> (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> & (<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710af56b326acd2688e908a81d22fdbf5f47">IDNS_Tag</a> | <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>) ? <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aeac9e50645487cdb39fa910178e75fb069" title="A friend of a previously-declared entity.">FOK_Declared</a></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>                                                              : <a class="code" href="classclang_1_1Decl.html#a5c6c116afaa4527e010579f579d319aea11156859e9cdf5e2c97acc8c12134117" title="A friend of a previously-undeclared entity.">FOK_Undeclared</a>);</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>   }</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span> <span class="comment"></span></div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span> <span class="comment">  /// Specifies that this declaration is a C++ overloaded non-member.</span></div>
+<div class="line"><a name="l00922"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#ae8f77679597fe7115d7b7d0d2c6f222b">  922</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#ae8f77679597fe7115d7b7d0d2c6f222b" title="Specifies that this declaration is a C++ overloaded non-member.">setNonMemberOperator</a>() {</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     assert(<a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>() == Function || <a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>() == FunctionTemplate);</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     assert((<a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> & <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a404c48f346be24fe30ae9bb910177a34">IDNS_Ordinary</a>) &&</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>            <span class="stringliteral">"visible non-member operators should be in ordinary namespace"</span>);</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710">IdentifierNamespace</a> |= <a class="code" href="classclang_1_1Decl.html#a9e38ae17197f1ebf6cdbb58260133710a172a261a236a3ca59c24d63c3e797006">IDNS_NonMemberOperator</a>;</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>   }</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span> </div>
+<div class="line"><a name="l00929"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#afbcd683967c808475164db7fd6498374">  929</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#afbcd683967c808475164db7fd6498374">classofKind</a>(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a> K) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1Decl.html#a795d0e7b53990387efd5c5b1e49476f9">castToDeclContext</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *);</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1Decl.html#a5997b082d9c85ca9e29b061fbd330ce1">castFromDeclContext</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *);</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>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a45d695e0571f89224194e97cdc7c8475">print</a>(raw_ostream &Out, <span class="keywordtype">unsigned</span> Indentation = 0,</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>              <span class="keywordtype">bool</span> PrintInstantiation = <span class="keyword">false</span>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a45d695e0571f89224194e97cdc7c8475">print</a>(raw_ostream &Out, <span class="keyword">const</span> <a class="code" href="structclang_1_1PrintingPolicy.html" title="Describes how types, statements, expressions, and declarations should be printed.">PrintingPolicy</a> &Policy,</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>              <span class="keywordtype">unsigned</span> Indentation = 0, <span class="keywordtype">bool</span> PrintInstantiation = <span class="keyword">false</span>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>   <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#aad1714771e2e343f9c0b4c5579b5e581">printGroup</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a>** Begin, <span class="keywordtype">unsigned</span> NumDecls,</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>                          raw_ostream &Out, <span class="keyword">const</span> <a class="code" href="structclang_1_1PrintingPolicy.html" title="Describes how types, statements, expressions, and declarations should be printed.">PrintingPolicy</a> &Policy,</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>                          <span class="keywordtype">unsigned</span> Indentation = 0);</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   <span class="comment">// Debuggers don't usually respect default arguments.</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>   LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a17f35f69b299c72163c8a8520f976cf5">dump</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   <span class="comment">// Same as dump(), but forces color printing.</span></div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>   LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a17970791c035e9d8d9d46c9efcec3cfb">dumpColor</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Decl.html#a17f35f69b299c72163c8a8520f976cf5">dump</a>(raw_ostream &Out) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span> </div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>   <span class="keywordtype">void</span> setAttrsImpl(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">AttrVec</a>& Attrs, <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx);</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>   <span class="keywordtype">void</span> setDeclContextsImpl(<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *SemaDC, <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *LexicalDC,</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>                            <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx);</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span> </div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>   <a class="code" href="classclang_1_1ASTMutationListener.html" title="An abstract interface that should be implemented by listeners that want to be notified when an AST en...">ASTMutationListener</a> *<a class="code" href="classclang_1_1Decl.html#a12f9332ca138dc5530583011f86c90b9">getASTMutationListener</a>() <span class="keyword">const</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> <span class="comment"></span></div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span> <span class="comment">/// \brief Determine whether two declarations declare the same entity.</span></div>
+<div class="line"><a name="l00956"></a><span class="lineno"><a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae">  956</a></span> <span class="comment"></span><span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#ad9d926b16adbdbc93705737b69d47cae" title="Determine whether two declarations declare the same entity.">declaresSameEntity</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D1, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D2) {</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   <span class="keywordflow">if</span> (!D1 || !D2)</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   </div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>   <span class="keywordflow">if</span> (D1 == D2)</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>   </div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   <span class="keywordflow">return</span> D1-><a class="code" href="classclang_1_1Decl.html#a8dc8c86b18af77eba9afe42e4f429fdc" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>() == D2-><a class="code" href="classclang_1_1Decl.html#a8dc8c86b18af77eba9afe42e4f429fdc" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>();</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span> }</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span> <span class="comment">/// PrettyStackTraceDecl - If a crash occurs, indicate that it happened when</span></div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span> <span class="comment">/// doing something to a specific decl.</span></div>
+<div class="line"><a name="l00968"></a><span class="lineno"><a class="code" href="classclang_1_1PrettyStackTraceDecl.html">  968</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1PrettyStackTraceDecl.html">PrettyStackTraceDecl</a> : <span class="keyword">public</span> llvm::PrettyStackTraceEntry {</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *TheDecl;</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</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> Loc;</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &SM;</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Message;</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00974"></a><span class="lineno"><a class="code" href="classclang_1_1PrettyStackTraceDecl.html#ad0a21dbe8029acf1a003d4c99fb50399">  974</a></span>   <a class="code" href="classclang_1_1PrettyStackTraceDecl.html#ad0a21dbe8029acf1a003d4c99fb50399">PrettyStackTraceDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *theDecl, <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> L,</div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>                        <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &sm, <span class="keyword">const</span> <span class="keywordtype">char</span> *Msg)</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>   : TheDecl(theDecl), Loc(L), SM(sm), Message(Msg) {}</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>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1PrettyStackTraceDecl.html#a624a6f44251ea641552d26b9ad564373">print</a>(raw_ostream &OS) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span> };</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span> </div>
+<div class="line"><a name="l00981"></a><span class="lineno"><a class="code" href="namespaceclang.html#a967df4b6f890451c3e212f25cf982268">  981</a></span> <span class="keyword">typedef</span> llvm::MutableArrayRef<NamedDecl*> <a class="code" href="namespaceclang.html#a967df4b6f890451c3e212f25cf982268">DeclContextLookupResult</a>;</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span> </div>
+<div class="line"><a name="l00983"></a><span class="lineno"><a class="code" href="namespaceclang.html#a104c3e4d7436ef412435723658aac38e">  983</a></span> <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<NamedDecl *></a> <a class="code" href="namespaceclang.html#a104c3e4d7436ef412435723658aac38e">DeclContextLookupConstResult</a>;</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span> <span class="comment"></span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> <span class="comment">/// DeclContext - This is used only as base class of specific decl types that</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span> <span class="comment">/// can act as declaration contexts. These decls are (only the top classes</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span> <span class="comment">/// that directly derive from DeclContext are mentioned, not their subclasses):</span></div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span> <span class="comment">///   TranslationUnitDecl</span></div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span> <span class="comment">///   NamespaceDecl</span></div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span> <span class="comment">///   FunctionDecl</span></div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span> <span class="comment">///   TagDecl</span></div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span> <span class="comment">///   ObjCMethodDecl</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span> <span class="comment">///   ObjCContainerDecl</span></div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span> <span class="comment">///   LinkageSpecDecl</span></div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span> <span class="comment">///   BlockDecl</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00998"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html">  998</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span> <span class="comment">  /// DeclKind - This indicates which class this is.</span></div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> DeclKind : 8;</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="comment"></span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="comment">  /// \brief Whether this declaration context also has some external</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="comment">  /// storage that contains additional declarations that are lexically</span></div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="comment">  /// part of this context.</span></div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="comment"></span>  <span class="keyword">mutable</span> <span class="keywordtype">bool</span> ExternalLexicalStorage : 1;</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment"></span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> <span class="comment">  /// \brief Whether this declaration context also has some external</span></div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="comment">  /// storage that contains additional declarations that are visible</span></div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="comment">  /// in this context.</span></div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="comment"></span>  <span class="keyword">mutable</span> <span class="keywordtype">bool</span> ExternalVisibleStorage : 1;</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment"></span></div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">  /// \brief Whether this declaration context has had external visible</span></div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="comment">  /// storage added since the last lookup. In this case, \c LookupPtr's</span></div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="comment">  /// invariant may not hold and needs to be fixed before we perform</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment">  /// another lookup.</span></div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> <span class="comment"></span>  <span class="keyword">mutable</span> <span class="keywordtype">bool</span> NeedToReconcileExternalVisibleStorage : 1;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> <span class="comment"></span></div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> <span class="comment">  /// \brief Pointer to the data structure used to lookup declarations</span></div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="comment">  /// within this context (or a DependentStoredDeclsMap if this is a</span></div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="comment">  /// dependent context), and a bool indicating whether we have lazily</span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="comment">  /// omitted any declarations from the map. We maintain the invariant</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> <span class="comment">  /// that, if the map contains an entry for a DeclarationName (and we</span></div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="comment">  /// haven't lazily omitted anything), then it contains all relevant</span></div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> <span class="comment">  /// entries for that name.</span></div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <span class="comment"></span>  <span class="keyword">mutable</span> llvm::PointerIntPair<StoredDeclsMap*, 1, bool> LookupPtr;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> </div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="keyword">protected</span>:<span class="comment"></span></div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> <span class="comment">  /// FirstDecl - The first declaration stored within this declaration</span></div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> <span class="comment">  /// context.</span></div>
+<div class="line"><a name="l01030"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a6c8abf07fec5ca0ea9473e4df302191f"> 1030</a></span> <span class="comment"></span>  <span class="keyword">mutable</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1DeclContext.html#a6c8abf07fec5ca0ea9473e4df302191f">FirstDecl</a>;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="comment"></span></div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="comment">  /// LastDecl - The last declaration stored within this declaration</span></div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="comment">  /// context. FIXME: We could probably cache this value somewhere</span></div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="comment">  /// outside of the DeclContext, to reduce the size of DeclContext by</span></div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">  /// another pointer.</span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#aac2fbacaf55d677a995207285b8f674b"> 1036</a></span> <span class="comment"></span>  <span class="keyword">mutable</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1DeclContext.html#aac2fbacaf55d677a995207285b8f674b">LastDecl</a>;</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div>
+<div class="line"><a name="l01038"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#aaba7a52f8cd35928900f31e661854921"> 1038</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a>;</div>
+<div class="line"><a name="l01039"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a6c90c31849a7e44e82778bc157ad9588"> 1039</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="l01040"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a05a0d9d61e00c31d180a2a8f1d6f7903"> 1040</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTWriter.html" title="Writes an AST file containing the contents of a translation unit.">ASTWriter</a>;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="comment"></span></div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">  /// \brief Build up a chain of declarations.</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> <span class="comment">  /// \returns the first/last pair of declarations.</span></div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> <span class="comment"></span>  <span class="keyword">static</span> std::pair<Decl *, Decl *></div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>   <a class="code" href="classclang_1_1DeclContext.html#a16f7c071ffdda4fa0db903b859684862" title="Build up a chain of declarations.">BuildDeclChain</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Decl*></a> Decls, <span class="keywordtype">bool</span> FieldsAlreadyLoaded);</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> </div>
+<div class="line"><a name="l01048"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a4f9688edb01df0df8a0a642d07eec087"> 1048</a></span>   <a class="code" href="classclang_1_1DeclContext.html#a4f9688edb01df0df8a0a642d07eec087">DeclContext</a>(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Decl::Kind</a> K)</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>       : DeclKind(K), ExternalLexicalStorage(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>         ExternalVisibleStorage(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>         NeedToReconcileExternalVisibleStorage(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), LookupPtr(0, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>         <a class="code" href="classclang_1_1DeclContext.html#a6c8abf07fec5ca0ea9473e4df302191f">FirstDecl</a>(0), <a class="code" href="classclang_1_1DeclContext.html#aac2fbacaf55d677a995207285b8f674b">LastDecl</a>(0) {}</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> </div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>   <a class="code" href="classclang_1_1DeclContext.html#ab81924e8130260519646e62a95621d8f">~DeclContext</a>();</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div>
+<div class="line"><a name="l01057"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a5e0c621abad65a0be1989f1c346af3ef"> 1057</a></span>   <a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Decl::Kind</a> <a class="code" href="classclang_1_1DeclContext.html#a5e0c621abad65a0be1989f1c346af3ef">getDeclKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Decl::Kind</a><span class="keyword">></span>(DeclKind);</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>   }</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1DeclContext.html#aeba4c2505c5b2556f7a12f46943f251f">getDeclKindName</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="comment"></span></div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="comment">  /// getParent - Returns the containing DeclContext.</span></div>
+<div class="line"><a name="l01063"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186"> 1063</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186" title="getParent - Returns the containing DeclContext.">getParent</a>() {</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>     <span class="keywordflow">return</span> cast<Decl>(<span class="keyword">this</span>)->getDeclContext();</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>   }</div>
+<div class="line"><a name="l01066"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a556b73c3953ed69735ded6983ca60918"> 1066</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#a556b73c3953ed69735ded6983ca60918">getParent</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#a31c99b38017e8d702fda9c0f1d021186" title="getParent - Returns the containing DeclContext.">getParent</a>();</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   }</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> <span class="comment"></span></div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> <span class="comment">  /// getLexicalParent - Returns the containing lexical DeclContext. May be</span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <span class="comment">  /// different from getParent, e.g.:</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span> <span class="comment">  ///   namespace A {</span></div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span> <span class="comment">  ///      struct S;</span></div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> <span class="comment">  ///   }</span></div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span> <span class="comment">  ///   struct A::S {}; // getParent() == namespace 'A'</span></div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="comment">  ///                   // getLexicalParent() == translation unit</span></div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a7eb413788a2327dcc0de57c365effcfe"> 1079</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#a7eb413788a2327dcc0de57c365effcfe">getLexicalParent</a>() {</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     <span class="keywordflow">return</span> cast<Decl>(<span class="keyword">this</span>)->getLexicalDeclContext();</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   }</div>
+<div class="line"><a name="l01082"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ade4cfb74a42bd76cf6241ea7ad86f500"> 1082</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#ade4cfb74a42bd76cf6241ea7ad86f500">getLexicalParent</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#a7eb413788a2327dcc0de57c365effcfe">getLexicalParent</a>();</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>   }</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>   <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#ad3f371a23f2b8f92275ef63817701e4e" title="Find the parent context of this context that will be used for unqualified name lookup.">getLookupParent</a>();</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div>
+<div class="line"><a name="l01088"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a022c28d172242fd41756414b771f88c5"> 1088</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#a022c28d172242fd41756414b771f88c5">getLookupParent</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#ad3f371a23f2b8f92275ef63817701e4e" title="Find the parent context of this context that will be used for unqualified name lookup.">getLookupParent</a>();</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> </div>
+<div class="line"><a name="l01092"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a7e742e1d1b7854518d85b28a802a7900"> 1092</a></span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="classclang_1_1DeclContext.html#a7e742e1d1b7854518d85b28a802a7900">getParentASTContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     <span class="keywordflow">return</span> cast<Decl>(<span class="keyword">this</span>)->getASTContext();</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span>   }</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> </div>
+<div class="line"><a name="l01096"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a734331a22b07cc1014201a8ee3ff63ba"> 1096</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a734331a22b07cc1014201a8ee3ff63ba">isClosure</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     <span class="keywordflow">return</span> DeclKind == Decl::Block;</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span>   }</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div>
+<div class="line"><a name="l01100"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ab4bfcf4aa84786435d17aeea28868398"> 1100</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#ab4bfcf4aa84786435d17aeea28868398">isObjCContainer</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>     <span class="keywordflow">switch</span> (DeclKind) {</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>         <span class="keywordflow">case</span> Decl::ObjCCategory:</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>         <span class="keywordflow">case</span> Decl::ObjCCategoryImpl:</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span>         <span class="keywordflow">case</span> Decl::ObjCImplementation:</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>         <span class="keywordflow">case</span> Decl::ObjCInterface:</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>         <span class="keywordflow">case</span> Decl::ObjCProtocol:</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span>             <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>     }</div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>   }</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div>
+<div class="line"><a name="l01112"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a05b966b6459e1d11c317f8abe3e2d66f"> 1112</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a05b966b6459e1d11c317f8abe3e2d66f">isFunctionOrMethod</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>     <span class="keywordflow">switch</span> (DeclKind) {</div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>     <span class="keywordflow">case</span> Decl::Block:</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>     <span class="keywordflow">case</span> Decl::Captured:</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>     <span class="keywordflow">case</span> Decl::ObjCMethod:</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>       <span class="keywordflow">return</span> DeclKind >= Decl::firstFunction && DeclKind <= Decl::lastFunction;</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>     }</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   }</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div>
+<div class="line"><a name="l01123"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ac33a346d4e8db5e892aba87393f4e8e4"> 1123</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#ac33a346d4e8db5e892aba87393f4e8e4">isFileContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>     <span class="keywordflow">return</span> DeclKind == Decl::TranslationUnit || DeclKind == Decl::Namespace;</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> </div>
+<div class="line"><a name="l01127"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#add710d53ebeab05385a08e978862c149"> 1127</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#add710d53ebeab05385a08e978862c149">isTranslationUnit</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>     <span class="keywordflow">return</span> DeclKind == Decl::TranslationUnit;</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"><a class="code" href="classclang_1_1DeclContext.html#a85027c592c0fa8ffa83e2570089217a7"> 1131</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a85027c592c0fa8ffa83e2570089217a7">isRecord</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <span class="keywordflow">return</span> DeclKind >= Decl::firstRecord && DeclKind <= Decl::lastRecord;</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>   }</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> </div>
+<div class="line"><a name="l01135"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ab365d1e47ea9b252eb8c0fc8c3794ffd"> 1135</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#ab365d1e47ea9b252eb8c0fc8c3794ffd">isNamespace</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <span class="keywordflow">return</span> DeclKind == Decl::Namespace;</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>   }</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span> </div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a54029a957eb43fd8754a3865e1e41f04">isInlineNamespace</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="comment"></span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="comment">  /// \brief Determines whether this context is dependent on a</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> <span class="comment">  /// template parameter.</span></div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a0d06ccd1db1b1f60e91d95d50aeae75d" title="Determines whether this context is dependent on a template parameter.">isDependentContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> <span class="comment"></span></div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="comment">  /// isTransparentContext - Determines whether this context is a</span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="comment">  /// "transparent" context, meaning that the members declared in this</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> <span class="comment">  /// context are semantically declared in the nearest enclosing</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="comment">  /// non-transparent (opaque) context but are lexically declared in</span></div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> <span class="comment">  /// this context. For example, consider the enumerators of an</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> <span class="comment">  /// enumeration type:</span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> <span class="comment">  /// @code</span></div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> <span class="comment">  /// enum E {</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> <span class="comment">  ///   Val1</span></div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="comment">  /// };</span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <span class="comment">  /// @endcode</span></div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="comment">  /// Here, E is a transparent context, so its enumerator (Val1) will</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> <span class="comment">  /// appear (semantically) that it is in the same context of E.</span></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> <span class="comment">  /// Examples of transparent contexts include: enumerations (except for</span></div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="comment">  /// C++0x scoped enums), and C++ linkage specifications.</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#abbf5a92a55d4faa4150ee8fd46a60345">isTransparentContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> <span class="comment"></span></div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="comment">  /// \brief Determines whether this context or some of its ancestors is a</span></div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> <span class="comment">  /// linkage specification context that specifies C linkage.</span></div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#ae0d99ad2b118e7eb979e49186362e066" title="Determines whether this context or some of its ancestors is a linkage specification context that spec...">isExternCContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="comment"></span></div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="comment">  /// \brief Determines whether this context or some of its ancestors is a</span></div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="comment">  /// linkage specification context that specifies C++ linkage.</span></div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#abd19a8dc373deaa1e06ec2ff67c53a60" title="Determines whether this context or some of its ancestors is a linkage specification context that spec...">isExternCXXContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> <span class="comment"></span></div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="comment">  /// \brief Determine whether this declaration context is equivalent</span></div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="comment">  /// to the declaration context DC.</span></div>
+<div class="line"><a name="l01172"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ab26c189165e15c46df7e4c734da0b0b8"> 1172</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#ab26c189165e15c46df7e4c734da0b0b8" title="Determine whether this declaration context is equivalent to the declaration context DC...">Equals</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     <span class="keywordflow">return</span> DC && this-><a class="code" href="classclang_1_1DeclContext.html#ac3368ad7389098f8fed5c5d346b77445">getPrimaryContext</a>() == DC-><a class="code" href="classclang_1_1DeclContext.html#ac3368ad7389098f8fed5c5d346b77445">getPrimaryContext</a>();</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   }</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> <span class="comment"></span></div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> <span class="comment">  /// \brief Determine whether this declaration context encloses the</span></div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> <span class="comment">  /// declaration context DC.</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#ac573b7eaf4f3177d1378df80e557160d" title="Determine whether this declaration context encloses the declaration context DC.">Encloses</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="comment"></span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span> <span class="comment">  /// \brief Find the nearest non-closure ancestor of this context,</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> <span class="comment">  /// i.e. the innermost semantic parent of this context which is not</span></div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> <span class="comment">  /// a closure.  A context may be its own non-closure ancestor.</span></div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1DeclContext.html#a23f8e9fe4070789a920919c3de2c106a" title="Find the nearest non-closure ancestor of this context, i.e. the innermost semantic parent of this con...">getNonClosureAncestor</a>();</div>
+<div class="line"><a name="l01184"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a2f72c85884830bf76add065345029611"> 1184</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1DeclContext.html#a2f72c85884830bf76add065345029611">getNonClosureAncestor</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#a23f8e9fe4070789a920919c3de2c106a" title="Find the nearest non-closure ancestor of this context, i.e. the innermost semantic parent of this con...">getNonClosureAncestor</a>();</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>   }</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span> <span class="comment"></span></div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> <span class="comment">  /// getPrimaryContext - There may be many different</span></div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <span class="comment">  /// declarations of the same entity (including forward declarations</span></div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> <span class="comment">  /// of classes, multiple definitions of namespaces, etc.), each with</span></div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> <span class="comment">  /// a different set of declarations. This routine returns the</span></div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> <span class="comment">  /// "primary" DeclContext structure, which will contain the</span></div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="comment">  /// information needed to perform name lookup into this context.</span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#ac3368ad7389098f8fed5c5d346b77445">getPrimaryContext</a>();</div>
+<div class="line"><a name="l01195"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a98430bbffbeaba26013c3ad744c45ff5"> 1195</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#a98430bbffbeaba26013c3ad744c45ff5">getPrimaryContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#ac3368ad7389098f8fed5c5d346b77445">getPrimaryContext</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> <span class="comment">  /// getRedeclContext - Retrieve the context in which an entity conflicts with</span></div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="comment">  /// other entities of the same name, or where it is a redeclaration if the</span></div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> <span class="comment">  /// two entities are compatible. This skips through transparent contexts.</span></div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#a61743ae6acff989a26641900282e6305">getRedeclContext</a>();</div>
+<div class="line"><a name="l01203"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ad5a071ab730062d3dfb51c8a5bf0714f"> 1203</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#ad5a071ab730062d3dfb51c8a5bf0714f">getRedeclContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#a61743ae6acff989a26641900282e6305">getRedeclContext</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> <span class="comment">  /// \brief Retrieve the nearest enclosing namespace context.</span></div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#aa838660af381c6967722c6552580c2a2" title="Retrieve the nearest enclosing namespace context.">getEnclosingNamespaceContext</a>();</div>
+<div class="line"><a name="l01209"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#abb4ca9673d6357b0ebdb5f732488e934"> 1209</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<a class="code" href="classclang_1_1DeclContext.html#abb4ca9673d6357b0ebdb5f732488e934">getEnclosingNamespaceContext</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#aa838660af381c6967722c6552580c2a2" title="Retrieve the nearest enclosing namespace context.">getEnclosingNamespaceContext</a>();</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   }</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <span class="comment"></span></div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> <span class="comment">  /// \brief Test if this context is part of the enclosing namespace set of</span></div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <span class="comment">  /// the context NS, as defined in C++0x [namespace.def]p9. If either context</span></div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span> <span class="comment">  /// isn't a namespace, this is equivalent to Equals().</span></div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <span class="comment">  /// The enclosing namespace set of a namespace is the namespace and, if it is</span></div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment">  /// inline, its enclosing namespace, recursively.</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a8d744642c69985ff084fe3d115642da4" title="Test if this context is part of the enclosing namespace set of the context NS, as defined in C++0x [n...">InEnclosingNamespaceSetOf</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *NS) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span> <span class="comment"></span></div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> <span class="comment">  /// \brief Collects all of the declaration contexts that are semantically</span></div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> <span class="comment">  /// connected to this declaration context.</span></div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span> <span class="comment">  /// For declaration contexts that have multiple semantically connected but</span></div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> <span class="comment">  /// syntactically distinct contexts, such as C++ namespaces, this routine </span></div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> <span class="comment">  /// retrieves the complete set of such declaration contexts in source order.</span></div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> <span class="comment">  /// For example, given:</span></div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> <span class="comment">  /// \code</span></div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> <span class="comment">  /// namespace N {</span></div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <span class="comment">  ///   int x;</span></div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> <span class="comment">  /// }</span></div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> <span class="comment">  /// namespace N {</span></div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> <span class="comment">  ///   int y;</span></div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <span class="comment">  /// }</span></div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="comment">  /// \endcode</span></div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="comment">  /// The \c Contexts parameter will contain both definitions of N.</span></div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> <span class="comment">  /// \param Contexts Will be cleared and set to the set of declaration</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> <span class="comment">  /// contexts that are semanticaly connected to this declaration context,</span></div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> <span class="comment">  /// in source order, including this context (which may be the only result,</span></div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> <span class="comment">  /// for non-namespace contexts).</span></div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a5f3fa8f8c55f4aa5055228c635364d22" title="Collects all of the declaration contexts that are semantically connected to this declaration context...">collectAllContexts</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<DeclContext *></a> &<a class="code" href="TokenAnnotator_8cpp.html#ada696389a664a41c6d11f19e6273d98c">Contexts</a>);</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> <span class="comment"></span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="comment">  /// decl_iterator - Iterates through the declarations stored</span></div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="comment">  /// within this context.</span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html"> 1248</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> {<span class="comment"></span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> <span class="comment">    /// Current - The current declaration.</span></div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> <span class="comment"></span>    <a class="code" href="classclang_1_1Decl.html">Decl</a> *Current;</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>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01253"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ae68a28a71a8b2d128404fd8a2ec165a1"> 1253</a></span>     <span class="keyword">typedef</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ae68a28a71a8b2d128404fd8a2ec165a1">value_type</a>;</div>
+<div class="line"><a name="l01254"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a16a53e7bd4fc8bdd5ef6eb44d04e83f9"> 1254</a></span>     <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">value_type</a> &<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a16a53e7bd4fc8bdd5ef6eb44d04e83f9">reference</a>;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ab4c9132087196228007008a0915fbc13"> 1255</a></span>     <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">value_type</a> *<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ab4c9132087196228007008a0915fbc13">pointer</a>;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a29a14b22c504b4f2d0707514cddced07"> 1256</a></span>     <span class="keyword">typedef</span> std::forward_iterator_tag <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a29a14b22c504b4f2d0707514cddced07">iterator_category</a>;</div>
+<div class="line"><a name="l01257"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#adef0d1dd793864d4e7b9fc9a2ef472b1"> 1257</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_1DeclContext_1_1decl__iterator.html#adef0d1dd793864d4e7b9fc9a2ef472b1">difference_type</a>;</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> </div>
+<div class="line"><a name="l01259"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a0c64c2ec9063c157d2be03bad66f0118"> 1259</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a0c64c2ec9063c157d2be03bad66f0118">decl_iterator</a>() : Current(0) { }</div>
+<div class="line"><a name="l01260"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a439413471784754b73b8780b8c2719cb"> 1260</a></span>     <span class="keyword">explicit</span> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a439413471784754b73b8780b8c2719cb">decl_iterator</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *C) : Current(C) { }</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div>
+<div class="line"><a name="l01262"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a011d2c470ca1df20619ad27626893e12"> 1262</a></span>     <a class="code" href="classclang_1_1Decl.html">reference</a> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a011d2c470ca1df20619ad27626893e12">operator*</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Current; }</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>     <span class="comment">// This doesn't meet the iterator requirements, but it's convenient</span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ab2b17a9fdcd2f081875c6032bf1b9134"> 1264</a></span>     <a class="code" href="classclang_1_1Decl.html">value_type</a> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ab2b17a9fdcd2f081875c6032bf1b9134">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Current; }</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div>
+<div class="line"><a name="l01266"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#aa88ad233048bf877a852269ff5b70f30"> 1266</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a>& <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#aa88ad233048bf877a852269ff5b70f30">operator++</a>() {</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>       Current = Current-><a class="code" href="classclang_1_1Decl.html#a4e93d06ed785c3f9a3578a26db56233b">getNextDeclInContext</a>();</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     }</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> </div>
+<div class="line"><a name="l01271"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a4d09deb2b60ee80060d2733ffb958106"> 1271</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#a4d09deb2b60ee80060d2733ffb958106">operator++</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>       <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> tmp(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>       ++(*this);</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>       <span class="keywordflow">return</span> tmp;</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</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"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ac6dc5ae7afcee0439b49fc30ca411a5a"> 1277</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#ac6dc5ae7afcee0439b49fc30ca411a5a">operator==</a>(<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> x, <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> y) {</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>       <span class="keywordflow">return</span> x.Current == y.Current;</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>     }</div>
+<div class="line"><a name="l01280"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#aa81fb1020e6e2b9c6c82c5428ac19131"> 1280</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html#aa81fb1020e6e2b9c6c82c5428ac19131">operator!=</a>(<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> x, <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> y) {</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>       <span class="keywordflow">return</span> x.Current != y.Current;</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>     }</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>   };</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="comment"></span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> <span class="comment">  /// decls_begin/decls_end - Iterate over the declarations stored in</span></div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <span class="comment">  /// this context.</span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> <span class="comment"></span>  decl_iterator <a class="code" href="classclang_1_1DeclContext.html#a805f9e2d87050dee8b306e22e68b9225">decls_begin</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01288"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a2d01679b86c5d8ff983b6323421dcdbf"> 1288</a></span>   <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> <a class="code" href="classclang_1_1DeclContext.html#a2d01679b86c5d8ff983b6323421dcdbf">decls_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a>(); }</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a290e11133d2a09ff37073aa841a9ae14">decls_empty</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> <span class="comment"></span></div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <span class="comment">  /// noload_decls_begin/end - Iterate over the declarations stored in this</span></div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> <span class="comment">  /// context that are currently loaded; don't attempt to retrieve anything</span></div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> <span class="comment">  /// from an external source.</span></div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> <span class="comment"></span>  decl_iterator <a class="code" href="classclang_1_1DeclContext.html#a08536624fa56ac08c8155783802e0643">noload_decls_begin</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01295"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a618f4d1534e152bb49d054a442858d4d"> 1295</a></span>   <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> <a class="code" href="classclang_1_1DeclContext.html#a618f4d1534e152bb49d054a442858d4d">noload_decls_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a>(); }</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <span class="comment"></span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment">  /// specific_decl_iterator - Iterates over a subrange of</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment">  /// declarations stored in a DeclContext, providing only those that</span></div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment">  /// are of type SpecificDecl (or a class derived from it). This</span></div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="comment">  /// iterator is used, for example, to provide iteration over just</span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span> <span class="comment">  /// the fields within a RecordDecl (with SpecificDecl = FieldDecl).</span></div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <span class="comment"></span>  <span class="keyword">template</span><<span class="keyword">typename</span> SpecificDecl></div>
+<div class="line"><a name="l01303"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html"> 1303</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a> {<span class="comment"></span></div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="comment">    /// Current - The current, underlying declaration iterator, which</span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <span class="comment">    /// will either be NULL or will point to a declaration of</span></div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> <span class="comment">    /// type SpecificDecl.</span></div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> <span class="comment"></span>    <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">DeclContext::decl_iterator</a> Current;</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> <span class="comment"></span></div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> <span class="comment">    /// SkipToNextDecl - Advances the current position up to the next</span></div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="comment">    /// declaration of type SpecificDecl that also meets the criteria</span></div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> <span class="comment">    /// required by Acceptable.</span></div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <span class="comment"></span>    <span class="keywordtype">void</span> SkipToNextDecl() {</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>       <span class="keywordflow">while</span> (*Current && !isa<SpecificDecl>(*Current))</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>         ++Current;</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> </div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01318"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a7f179e7cd918a075cd10fc906b02fa54"> 1318</a></span>     <span class="keyword">typedef</span> SpecificDecl *<a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a7f179e7cd918a075cd10fc906b02fa54">value_type</a>;</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>     <span class="comment">// TODO: Add reference and pointer typedefs (with some appropriate proxy</span></div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     <span class="comment">// type) if we ever have a need for them.</span></div>
+<div class="line"><a name="l01321"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ad5a5694bae22bc970dfcace0598a6eeb"> 1321</a></span>     <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ad5a5694bae22bc970dfcace0598a6eeb">reference</a>;</div>
+<div class="line"><a name="l01322"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a2e9242affdba506c379ea4ed073160ad"> 1322</a></span>     <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a2e9242affdba506c379ea4ed073160ad">pointer</a>;</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <span class="keyword">typedef</span> std::iterator_traits<DeclContext::decl_iterator>::difference_type</div>
+<div class="line"><a name="l01324"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a54a6bf7cb1a2a93b5e7d96e04a27cc69"> 1324</a></span>       <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a54a6bf7cb1a2a93b5e7d96e04a27cc69">difference_type</a>;</div>
+<div class="line"><a name="l01325"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a375a9c0a03ce4e4863d62a677e23cf68"> 1325</a></span>     <span class="keyword">typedef</span> std::forward_iterator_tag <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a375a9c0a03ce4e4863d62a677e23cf68">iterator_category</a>;</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> </div>
+<div class="line"><a name="l01327"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ad3a632da13ef64b15c32e62481bfb2cd"> 1327</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ad3a632da13ef64b15c32e62481bfb2cd">specific_decl_iterator</a>() : Current() { }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <span class="comment"></span></div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> <span class="comment">    /// specific_decl_iterator - Construct a new iterator over a</span></div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> <span class="comment">    /// subset of the declarations the range [C,</span></div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> <span class="comment">    /// end-of-declarations). If A is non-NULL, it is a pointer to a</span></div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> <span class="comment">    /// member function of SpecificDecl that should return true for</span></div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> <span class="comment">    /// all of the SpecificDecl instances that will be in the subset</span></div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> <span class="comment">    /// of iterators. For example, if you want Objective-C instance</span></div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> <span class="comment">    /// methods, SpecificDecl will be ObjCMethodDecl and A will be</span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> <span class="comment">    /// &ObjCMethodDecl::isInstanceMethod.</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a0e59980e7ac1eefa866f76f8d64cc2af"> 1337</a></span> <span class="comment"></span>    <span class="keyword">explicit</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a0e59980e7ac1eefa866f76f8d64cc2af">specific_decl_iterator</a>(<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">DeclContext::decl_iterator</a> C) : Current(C) {</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>       SkipToNextDecl();</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>     }</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> </div>
+<div class="line"><a name="l01341"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a0e3b418bf0064ed2a006204b15367cf1"> 1341</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a7f179e7cd918a075cd10fc906b02fa54">value_type</a> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a0e3b418bf0064ed2a006204b15367cf1">operator*</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<SpecificDecl>(*Current); }</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>     <span class="comment">// This doesn't meet the iterator requirements, but it's convenient</span></div>
+<div class="line"><a name="l01343"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ac3eadf74d03af781c2758c72d0d439a1"> 1343</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a7f179e7cd918a075cd10fc906b02fa54">value_type</a> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ac3eadf74d03af781c2758c72d0d439a1">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> **<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> </div>
+<div class="line"><a name="l01345"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a2d38294342c84e3af83f48096d441075"> 1345</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a>& <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a2d38294342c84e3af83f48096d441075">operator++</a>() {</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>       ++Current;</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>       SkipToNextDecl();</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>     }</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> </div>
+<div class="line"><a name="l01351"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a9824b9311806f33e01044e4ab11480a7"> 1351</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a9824b9311806f33e01044e4ab11480a7">operator++</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>       <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a> tmp(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span>       ++(*this);</div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span>       <span class="keywordflow">return</span> tmp;</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>     }</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> </div>
+<div class="line"><a name="l01357"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a5b626882c6186e343d1f1f0ace04ea14"> 1357</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#a5b626882c6186e343d1f1f0ace04ea14">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a>& x,</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a>& y) {</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>       <span class="keywordflow">return</span> x.Current == y.Current;</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     }</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div>
+<div class="line"><a name="l01362"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ae5147470e2f252b6419ee6fac7a496ed"> 1362</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html#ae5147470e2f252b6419ee6fac7a496ed">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a>& x,</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">specific_decl_iterator</a>& y) {</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>       <span class="keywordflow">return</span> x.Current != y.Current;</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>   };</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="comment"></span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> <span class="comment">  /// \brief Iterates over a filtered subrange of declarations stored</span></div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <span class="comment">  /// in a DeclContext.</span></div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> <span class="comment">  /// This iterator visits only those declarations that are of type</span></div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> <span class="comment">  /// SpecificDecl (or a class derived from it) and that meet some</span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> <span class="comment">  /// additional run-time criteria. This iterator is used, for</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> <span class="comment">  /// example, to provide access to the instance methods within an</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> <span class="comment">  /// Objective-C interface (with SpecificDecl = ObjCMethodDecl and</span></div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> <span class="comment">  /// Acceptable = ObjCMethodDecl::isInstanceMethod).</span></div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> <span class="comment"></span>  <span class="keyword">template</span><<span class="keyword">typename</span> SpecificDecl, <span class="keywordtype">bool</span> (SpecificDecl::*Acceptable)() const></div>
+<div class="line"><a name="l01378"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html"> 1378</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a> {<span class="comment"></span></div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> <span class="comment">    /// Current - The current, underlying declaration iterator, which</span></div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> <span class="comment">    /// will either be NULL or will point to a declaration of</span></div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> <span class="comment">    /// type SpecificDecl.</span></div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> <span class="comment"></span>    <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">DeclContext::decl_iterator</a> Current;</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> <span class="comment"></span></div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> <span class="comment">    /// SkipToNextDecl - Advances the current position up to the next</span></div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <span class="comment">    /// declaration of type SpecificDecl that also meets the criteria</span></div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> <span class="comment">    /// required by Acceptable.</span></div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="comment"></span>    <span class="keywordtype">void</span> SkipToNextDecl() {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>       <span class="keywordflow">while</span> (*Current &&</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>              (!isa<SpecificDecl>(*Current) ||</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>               (Acceptable && !(cast<SpecificDecl>(*Current)->*Acceptable)())))</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>         ++Current;</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</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>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01395"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aea05b135665d8ef60b0a842f737e6ab6"> 1395</a></span>     <span class="keyword">typedef</span> SpecificDecl *<a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aea05b135665d8ef60b0a842f737e6ab6">value_type</a>;</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span>     <span class="comment">// TODO: Add reference and pointer typedefs (with some appropriate proxy</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>     <span class="comment">// type) if we ever have a need for them.</span></div>
+<div class="line"><a name="l01398"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aeec24ac751ef98654a7739effeacf1e8"> 1398</a></span>     <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aeec24ac751ef98654a7739effeacf1e8">reference</a>;</div>
+<div class="line"><a name="l01399"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a006aad0230589f4d6346b5f83d889d0a"> 1399</a></span>     <span class="keyword">typedef</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a006aad0230589f4d6346b5f83d889d0a">pointer</a>;</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span>     <span class="keyword">typedef</span> std::iterator_traits<DeclContext::decl_iterator>::difference_type</div>
+<div class="line"><a name="l01401"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#ad4b072f1952c9373b8acf44a9b1d9d13"> 1401</a></span>       <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#ad4b072f1952c9373b8acf44a9b1d9d13">difference_type</a>;</div>
+<div class="line"><a name="l01402"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#ad2f590f08926babda5a230b9b18c9c1f"> 1402</a></span>     <span class="keyword">typedef</span> std::forward_iterator_tag <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#ad2f590f08926babda5a230b9b18c9c1f">iterator_category</a>;</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> </div>
+<div class="line"><a name="l01404"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a2c7e031981eba46e2702fcc6f795f7ce"> 1404</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a2c7e031981eba46e2702fcc6f795f7ce">filtered_decl_iterator</a>() : Current() { }</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="comment"></span></div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> <span class="comment">    /// filtered_decl_iterator - Construct a new iterator over a</span></div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> <span class="comment">    /// subset of the declarations the range [C,</span></div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> <span class="comment">    /// end-of-declarations). If A is non-NULL, it is a pointer to a</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="comment">    /// member function of SpecificDecl that should return true for</span></div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> <span class="comment">    /// all of the SpecificDecl instances that will be in the subset</span></div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="comment">    /// of iterators. For example, if you want Objective-C instance</span></div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> <span class="comment">    /// methods, SpecificDecl will be ObjCMethodDecl and A will be</span></div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> <span class="comment">    /// &ObjCMethodDecl::isInstanceMethod.</span></div>
+<div class="line"><a name="l01414"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a3af639991fb0dbff9787ba79c263f8b5"> 1414</a></span> <span class="comment"></span>    <span class="keyword">explicit</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a3af639991fb0dbff9787ba79c263f8b5">filtered_decl_iterator</a>(<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">DeclContext::decl_iterator</a> C) : Current(C) {</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>       SkipToNextDecl();</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>     }</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> </div>
+<div class="line"><a name="l01418"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a857a3e83dfd8ff7d8903100a3658ac6d"> 1418</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aea05b135665d8ef60b0a842f737e6ab6">value_type</a> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a857a3e83dfd8ff7d8903100a3658ac6d">operator*</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<SpecificDecl>(*Current); }</div>
+<div class="line"><a name="l01419"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aaa6a476b3ce822f0043222a867643707"> 1419</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aea05b135665d8ef60b0a842f737e6ab6">value_type</a> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#aaa6a476b3ce822f0043222a867643707">operator-></a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<SpecificDecl>(*Current); }</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span> </div>
+<div class="line"><a name="l01421"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a6ef02fbbe222ca1a6bf9c2bf89c5746f"> 1421</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a>& <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a6ef02fbbe222ca1a6bf9c2bf89c5746f">operator++</a>() {</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>       ++Current;</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>       SkipToNextDecl();</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     }</div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> </div>
+<div class="line"><a name="l01427"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a88dff76f72f0342ac0068b40fe3f564e"> 1427</a></span>     <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a88dff76f72f0342ac0068b40fe3f564e">operator++</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>       <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a> tmp(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>       ++(*this);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>       <span class="keywordflow">return</span> tmp;</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>     }</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> </div>
+<div class="line"><a name="l01433"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a49d6582278928622a1a7f01edb183d4b"> 1433</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#a49d6582278928622a1a7f01edb183d4b">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a>& x,</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a>& y) {</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>       <span class="keywordflow">return</span> x.Current == y.Current;</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"><a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#ab7be55526d8a4d894be8d6d2166eb3fc"> 1438</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html#ab7be55526d8a4d894be8d6d2166eb3fc">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a>& x,</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>                            <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext_1_1filtered__decl__iterator.html" title="Iterates over a filtered subrange of declarations stored in a DeclContext.">filtered_decl_iterator</a>& y) {</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>       <span class="keywordflow">return</span> x.Current != y.Current;</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>     }</div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>   };</div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> <span class="comment"></span></div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> <span class="comment">  /// @brief Add the declaration D into this context.</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> <span class="comment">  /// This routine should be invoked when the declaration D has first</span></div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span> <span class="comment">  /// been declared, to place D into the context where it was</span></div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> <span class="comment">  /// (lexically) defined. Every declaration must be added to one</span></div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> <span class="comment">  /// (and only one!) context, where it can be visited via</span></div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="comment">  /// [decls_begin(), decls_end()). Once a declaration has been added</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span> <span class="comment">  /// to its lexical context, the corresponding DeclContext owns the</span></div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> <span class="comment">  /// declaration.</span></div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> <span class="comment">  /// If D is also a NamedDecl, it will be made visible within its</span></div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> <span class="comment">  /// semantic context via makeDeclVisibleInContext.</span></div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a86d2d92d17fbed1a41461bef1ec5cef8" title="Add the declaration D into this context.">addDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> <span class="comment"></span></div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> <span class="comment">  /// @brief Add the declaration D into this context, but suppress</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="comment">  /// searches for external declarations with the same name.</span></div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="comment">  /// Although analogous in function to addDecl, this removes an</span></div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="comment">  /// important check.  This is only useful if the Decl is being</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">  /// added in response to an external search; in all other cases,</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="comment">  /// addDecl() is the right function to use.</span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="comment">  /// See the ASTImporter for use cases.</span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a7749a5b3e0a3791ae5be92fbc24be82f" title="Add the declaration D into this context, but suppress searches for external declarations with the sam...">addDeclInternal</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="comment"></span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="comment">  /// @brief Add the declaration D to this context without modifying</span></div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <span class="comment">  /// any lookup tables.</span></div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> <span class="comment">  /// This is useful for some operations in dependent contexts where</span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="comment">  /// the semantic context might not be dependent;  this basically</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="comment">  /// only happens with friends.</span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#ae6ca78c51f67fc605250953d2f5eb807" title="Add the declaration D to this context without modifying any lookup tables.">addHiddenDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> <span class="comment"></span></div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> <span class="comment">  /// @brief Removes a declaration from this context.</span></div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a864b19d59c7ff20b952e54922cba76ce" title="Removes a declaration from this context.">removeDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>     <span class="comment"></span></div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> <span class="comment">  /// @brief Checks whether a declaration is in this context.</span></div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#aa7e83e639f0f2da61b3263855596d25d" title="Checks whether a declaration is in this context.">containsDecl</a>(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> <span class="comment"></span></div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> <span class="comment">  /// lookup_iterator - An iterator that provides access to the results</span></div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span> <span class="comment">  /// of looking up a name within this context.</span></div>
+<div class="line"><a name="l01484"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a7aef8de2fd6fb3e85cb6f9e50061a69d"> 1484</a></span> <span class="comment"></span>  <span class="keyword">typedef</span> <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> **<a class="code" href="classclang_1_1DeclContext.html#a7aef8de2fd6fb3e85cb6f9e50061a69d">lookup_iterator</a>;</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="comment"></span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment">  /// lookup_const_iterator - An iterator that provides non-mutable</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">  /// access to the results of lookup up a name within this context.</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#aa83c28928182d1434331fe846a2ab628"> 1488</a></span> <span class="comment"></span>  <span class="keyword">typedef</span> <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> * <span class="keyword">const</span> * <a class="code" href="classclang_1_1DeclContext.html#aa83c28928182d1434331fe846a2ab628">lookup_const_iterator</a>;</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> </div>
+<div class="line"><a name="l01490"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530"> 1490</a></span>   <span class="keyword">typedef</span> <a class="code" href="namespaceclang.html#a967df4b6f890451c3e212f25cf982268">DeclContextLookupResult</a> <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">lookup_result</a>;</div>
+<div class="line"><a name="l01491"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a07bbf8075aa830a4eaecdbb822d15125"> 1491</a></span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1ArrayRef.html">DeclContextLookupConstResult</a> <a class="code" href="classclang_1_1DeclContext.html#a07bbf8075aa830a4eaecdbb822d15125">lookup_const_result</a>;</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> <span class="comment"></span></div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="comment">  /// lookup - Find the declarations (if any) with the given Name in</span></div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="comment">  /// this context. Returns a range of iterators that contains all of</span></div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="comment">  /// the declarations with this name, with object, function, member,</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="comment">  /// and enumerator names preceding any tag name. Note that this</span></div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> <span class="comment">  /// routine will not look into parent contexts.</span></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">lookup_result</a> <a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(<a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name);</div>
+<div class="line"><a name="l01499"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ad6d5ab1c6970671b3fb91d6593d7b26a"> 1499</a></span>   <a class="code" href="classllvm_1_1ArrayRef.html">lookup_const_result</a> <a class="code" href="classclang_1_1DeclContext.html#ad6d5ab1c6970671b3fb91d6593d7b26a">lookup</a>(<a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(Name);</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>   }</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> <span class="comment"></span></div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> <span class="comment">  /// \brief Find the declarations with the given name that are visible</span></div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> <span class="comment">  /// within this context; don't attempt to retrieve anything from an</span></div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> <span class="comment">  /// external source.</span></div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclContext.html#ac25dc34eabe6c4e035c76dd3329e8530">lookup_result</a> <a class="code" href="classclang_1_1DeclContext.html#a9861b617b9e392dacdeea6c76eee50a4" title="Find the declarations with the given name that are visible within this context; don't attempt to retr...">noload_lookup</a>(<a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name);</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> <span class="comment"></span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> <span class="comment">  /// \brief A simplistic name lookup mechanism that performs name lookup</span></div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> <span class="comment">  /// into this declaration context without consulting the external source.</span></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> <span class="comment">  /// This function should almost never be used, because it subverts the</span></div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> <span class="comment">  /// usual relationship between a DeclContext and the external source.</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> <span class="comment">  /// See the ASTImporter for the (few, but important) use cases.</span></div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> <span class="comment">  /// FIXME: This is very inefficient; replace uses of it with uses of</span></div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> <span class="comment">  /// noload_lookup.</span></div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#aeb6635dc9f5f904c2c5c716f9fa2b54e" title="A simplistic name lookup mechanism that performs name lookup into this declaration context without co...">localUncachedLookup</a>(<a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name,</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>                            <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<NamedDecl *></a> &Results);</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> <span class="comment"></span></div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> <span class="comment">  /// @brief Makes a declaration visible within this context.</span></div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> <span class="comment">  /// This routine makes the declaration D visible to name lookup</span></div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> <span class="comment">  /// within this context and, if this is a transparent context,</span></div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> <span class="comment">  /// within its parent contexts up to the first enclosing</span></div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> <span class="comment">  /// non-transparent context. Making a declaration visible within a</span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> <span class="comment">  /// context does not transfer ownership of a declaration, and a</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> <span class="comment">  /// declaration can be visible in many contexts that aren't its</span></div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> <span class="comment">  /// lexical context.</span></div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> <span class="comment">  /// If D is a redeclaration of an existing declaration that is</span></div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> <span class="comment">  /// visible from this context, as determined by</span></div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="comment">  /// NamedDecl::declarationReplaces, the previous declaration will be</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> <span class="comment">  /// replaced with D.</span></div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a107cb2ec5172b24089981a4ec66b2197" title="Makes a declaration visible within this context.">makeDeclVisibleInContext</a>(<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D);</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> <span class="comment"></span></div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> <span class="comment">  /// all_lookups_iterator - An iterator that provides a view over the results</span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="comment">  /// of looking up every possible name.</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> <span class="comment"></span>  <span class="keyword">class </span>all_lookups_iterator;</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> <span class="comment"></span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> <span class="comment">  /// \brief Iterators over all possible lookups within this context.</span></div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> <span class="comment"></span>  all_lookups_iterator <a class="code" href="classclang_1_1DeclContext.html#adb00cc1a9e8709ccb39abead0082b2b5" title="Iterators over all possible lookups within this context.">lookups_begin</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>   all_lookups_iterator <a class="code" href="classclang_1_1DeclContext.html#a20f1f2417c28d535321728f403b4fccf">lookups_end</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> <span class="comment"></span></div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span> <span class="comment">  /// \brief Iterators over all possible lookups within this context that are</span></div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> <span class="comment">  /// currently loaded; don't attempt to retrieve anything from an external</span></div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> <span class="comment">  /// source.</span></div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <span class="comment"></span>  all_lookups_iterator <a class="code" href="classclang_1_1DeclContext.html#a4ccbda0757990070fda253d2d12c4893" title="Iterators over all possible lookups within this context that are currently loaded; don't attempt to r...">noload_lookups_begin</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>   all_lookups_iterator <a class="code" href="classclang_1_1DeclContext.html#a520a051295075fe1ab566d5b64148c56">noload_lookups_end</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> <span class="comment"></span></div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> <span class="comment">  /// udir_iterator - Iterates through the using-directives stored</span></div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> <span class="comment">  /// within this context.</span></div>
+<div class="line"><a name="l01552"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a073bdd3d5bbee972cf008ebb15d50bbe"> 1552</a></span> <span class="comment"></span>  <span class="keyword">typedef</span> <a class="code" href="classclang_1_1UsingDirectiveDecl.html" title="Represents C++ using-directive.">UsingDirectiveDecl</a> * <span class="keyword">const</span> * <a class="code" href="classclang_1_1DeclContext.html#a073bdd3d5bbee972cf008ebb15d50bbe">udir_iterator</a>;</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> </div>
+<div class="line"><a name="l01554"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ae44a7e5f8228f6f9c231ddbcf9b96087"> 1554</a></span>   <span class="keyword">typedef</span> std::pair<udir_iterator, udir_iterator> <a class="code" href="classclang_1_1DeclContext.html#ae44a7e5f8228f6f9c231ddbcf9b96087">udir_iterator_range</a>;</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> </div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>   <a class="code" href="classclang_1_1DeclContext.html#ae44a7e5f8228f6f9c231ddbcf9b96087">udir_iterator_range</a> <a class="code" href="classclang_1_1DeclContext.html#a4d67d5fc4d4038c838d14e728250057d">getUsingDirectives</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> </div>
+<div class="line"><a name="l01558"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a9cbcfa6df07be3438c915e48778ab157"> 1558</a></span>   <a class="code" href="classclang_1_1DeclContext.html#a073bdd3d5bbee972cf008ebb15d50bbe">udir_iterator</a> <a class="code" href="classclang_1_1DeclContext.html#a9cbcfa6df07be3438c915e48778ab157">using_directives_begin</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclContext.html#a4d67d5fc4d4038c838d14e728250057d">getUsingDirectives</a>().first;</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"><a class="code" href="classclang_1_1DeclContext.html#a84dac0322b02d7451361ca84d9e999b3"> 1562</a></span>   <a class="code" href="classclang_1_1DeclContext.html#a073bdd3d5bbee972cf008ebb15d50bbe">udir_iterator</a> <a class="code" href="classclang_1_1DeclContext.html#a84dac0322b02d7451361ca84d9e999b3">using_directives_end</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclContext.html#a4d67d5fc4d4038c838d14e728250057d">getUsingDirectives</a>().second;</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>   }</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> </div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>   <span class="comment">// These are all defined in DependentDiagnostic.h.</span></div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>   <span class="keyword">class </span>ddiag_iterator;</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>   <span class="keyword">inline</span> ddiag_iterator <a class="code" href="classclang_1_1DeclContext.html#a7bf8d9d31efce8d8b6d1760fd872274f">ddiag_begin</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>   <span class="keyword">inline</span> ddiag_iterator <a class="code" href="classclang_1_1DeclContext.html#ac3eed636e00885ff4ec2d0d18eae6714">ddiag_end</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> </div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>   <span class="comment">// Low-level accessors</span></div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>     <span class="comment"></span></div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> <span class="comment">  /// \brief Mark the lookup table as needing to be built.  This should be</span></div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> <span class="comment">  /// used only if setHasExternalLexicalStorage() has been called on any</span></div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> <span class="comment">  /// decl context for which this is the primary context.</span></div>
+<div class="line"><a name="l01576"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a698266633d8d44a5cdff3c5fd0df930c"> 1576</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a698266633d8d44a5cdff3c5fd0df930c" title="Mark the lookup table as needing to be built. This should be used only if setHasExternalLexicalStorag...">setMustBuildLookupTable</a>() {</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     LookupPtr.setInt(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>   }</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> <span class="comment"></span></div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> <span class="comment">  /// \brief Retrieve the internal representation of the lookup structure.</span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="comment">  /// This may omit some names if we are lazily building the structure.</span></div>
+<div class="line"><a name="l01582"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a628eef9ddbe4047fbb901596b4bedd58"> 1582</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1StoredDeclsMap.html">StoredDeclsMap</a> *<a class="code" href="classclang_1_1DeclContext.html#a628eef9ddbe4047fbb901596b4bedd58" title="Retrieve the internal representation of the lookup structure. This may omit some names if we are lazi...">getLookupPtr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> LookupPtr.getPointer(); }</div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> <span class="comment"></span></div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> <span class="comment">  /// \brief Ensure the lookup structure is fully-built and return it.</span></div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="comment"></span>  <a class="code" href="classclang_1_1StoredDeclsMap.html">StoredDeclsMap</a> *<a class="code" href="classclang_1_1DeclContext.html#a8d0b8ace2aca42ea5d8614590046dba0" title="Ensure the lookup structure is fully-built and return it.">buildLookup</a>();</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="comment"></span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span> <span class="comment">  /// \brief Whether this DeclContext has external storage containing</span></div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> <span class="comment">  /// additional declarations that are lexically in this context.</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#aa8dec740806276791eb26896b3ea8ffa"> 1589</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#aa8dec740806276791eb26896b3ea8ffa" title="Whether this DeclContext has external storage containing additional declarations that are lexically i...">hasExternalLexicalStorage</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ExternalLexicalStorage; }</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> <span class="comment"></span></div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> <span class="comment">  /// \brief State whether this DeclContext has external storage for</span></div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> <span class="comment">  /// declarations lexically in this context.</span></div>
+<div class="line"><a name="l01593"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a1c49f11a61c8a3597f68a0a3bf4fe4fa"> 1593</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a1c49f11a61c8a3597f68a0a3bf4fe4fa" title="State whether this DeclContext has external storage for declarations lexically in this context...">setHasExternalLexicalStorage</a>(<span class="keywordtype">bool</span> ES = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>     ExternalLexicalStorage = ES;</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>   }</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span> <span class="comment"></span></div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> <span class="comment">  /// \brief Whether this DeclContext has external storage containing</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> <span class="comment">  /// additional declarations that are visible in this context.</span></div>
+<div class="line"><a name="l01599"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#aa20a53d33583b1c82f0762070b2cf375"> 1599</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#aa20a53d33583b1c82f0762070b2cf375" title="Whether this DeclContext has external storage containing additional declarations that are visible in ...">hasExternalVisibleStorage</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ExternalVisibleStorage; }</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> <span class="comment"></span></div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> <span class="comment">  /// \brief State whether this DeclContext has external storage for</span></div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> <span class="comment">  /// declarations visible in this context.</span></div>
+<div class="line"><a name="l01603"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a40e076b186c48345ff6710c4e6af27fd"> 1603</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a40e076b186c48345ff6710c4e6af27fd" title="State whether this DeclContext has external storage for declarations visible in this context...">setHasExternalVisibleStorage</a>(<span class="keywordtype">bool</span> ES = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span>     ExternalVisibleStorage = ES;</div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>     <span class="keywordflow">if</span> (ES && LookupPtr.getPointer())</div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span>       NeedToReconcileExternalVisibleStorage = <span class="keyword">true</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"></span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> <span class="comment">  /// \brief Determine whether the given declaration is stored in the list of</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <span class="comment">  /// declarations lexically within this context.</span></div>
+<div class="line"><a name="l01611"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#af147e24c214f8e7a0004d12d709501f1"> 1611</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#af147e24c214f8e7a0004d12d709501f1" title="Determine whether the given declaration is stored in the list of declarations lexically within this c...">isDeclInLexicalTraversal</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>     <span class="keywordflow">return</span> D && (D-><a class="code" href="classclang_1_1Decl.html#a12da00df1f9f8ec114e82de0cf318eb4" title="The next declaration within the same lexical DeclContext. These pointers form the linked list that is...">NextInContextAndBits</a>.getPointer() || D == <a class="code" href="classclang_1_1DeclContext.html#a6c8abf07fec5ca0ea9473e4df302191f">FirstDecl</a> || </div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>                  D == <a class="code" href="classclang_1_1DeclContext.html#aac2fbacaf55d677a995207285b8f674b">LastDecl</a>);</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> </div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a99825b15877c8b971a3fc934b7ef0255">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l01617"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#a3f586309a949f5300efa313c43d0b3eb"> 1617</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclContext.html#a3f586309a949f5300efa313c43d0b3eb">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *D) { <span class="keywordflow">return</span> <span class="keyword">true</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>   LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#a7298e31f72a63b231f9fba0fa2190d18">dumpDeclContext</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>   LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#ad07b0c8bdf8a9c7477b7e2b96f6fec9e">dumpLookups</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>   LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclContext.html#ad07b0c8bdf8a9c7477b7e2b96f6fec9e">dumpLookups</a>(llvm::raw_ostream &OS) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span> </div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>   <span class="keywordtype">void</span> reconcileExternalVisibleStorage();</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>   <span class="keywordtype">void</span> LoadLexicalDeclsFromExternalStorage() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="comment"></span></div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> <span class="comment">  /// @brief Makes a declaration visible within this context, but</span></div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> <span class="comment">  /// suppresses searches for external declarations with the same</span></div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> <span class="comment">  /// name.</span></div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="comment">  /// Analogous to makeDeclVisibleInContext, but for the exclusive</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="comment">  /// use of addDeclInternal().</span></div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> <span class="comment"></span>  <span class="keywordtype">void</span> makeDeclVisibleInContextInternal(<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D);</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div>
+<div class="line"><a name="l01635"></a><span class="lineno"><a class="code" href="classclang_1_1DeclContext.html#ac0eb563f729de4744dd0611c9bed7974"> 1635</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1DependentDiagnostic.html" title="A dependently-generated diagnostic.">DependentDiagnostic</a>;</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span>   <a class="code" href="classclang_1_1StoredDeclsMap.html">StoredDeclsMap</a> *CreateStoredDeclsMap(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> </div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span>   <span class="keyword">template</span><<a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> (<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>::*Begin)() <span class="keyword">const</span>,</div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span>            <a class="code" href="classclang_1_1DeclContext_1_1decl__iterator.html">decl_iterator</a> (<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a>::*End)() <span class="keyword">const</span>></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span>   <span class="keywordtype">void</span> buildLookupImpl(<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DCtx);</div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span>   <span class="keywordtype">void</span> makeDeclVisibleInContextWithFlags(<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D, <span class="keywordtype">bool</span> Internal,</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span>                                          <span class="keywordtype">bool</span> Rediscoverable);</div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span>   <span class="keywordtype">void</span> makeDeclVisibleInContextImpl(<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *D, <span class="keywordtype">bool</span> Internal);</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> };</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> </div>
+<div class="line"><a name="l01646"></a><span class="lineno"><a class="code" href="classclang_1_1Decl.html#a1d4075c86d784c816d5a6cbc06d8f871"> 1646</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Decl.html#a1d4075c86d784c816d5a6cbc06d8f871">Decl::isTemplateParameter</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>() == TemplateTypeParm || <a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>() == NonTypeTemplateParm ||</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>          <a class="code" href="classclang_1_1Decl.html#a6c53e861dae5545e8f6974af04cb2986">getKind</a>() == TemplateTemplateParm;</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> }</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> </div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> <span class="comment">// Specialization selected when ToTy is not a known subclass of DeclContext.</span></div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> <span class="keyword">template</span> <<span class="keyword">class </span>ToTy,</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>           <span class="keywordtype">bool</span> IsKnownSubtype = ::llvm::is_base_of< DeclContext, ToTy>::value></div>
+<div class="line"><a name="l01654"></a><span class="lineno"><a class="code" href="structclang_1_1cast__convert__decl__context.html"> 1654</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1cast__convert__decl__context.html">cast_convert_decl_context</a> {</div>
+<div class="line"><a name="l01655"></a><span class="lineno"><a class="code" href="structclang_1_1cast__convert__decl__context.html#a19e66c6ba6469b955cfeae9a8865dd59"> 1655</a></span>   <span class="keyword">static</span> <span class="keyword">const</span> ToTy *<a class="code" href="structclang_1_1cast__convert__decl__context.html#a19e66c6ba6469b955cfeae9a8865dd59">doit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *Val) {</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>ToTy*<span class="keyword">></span>(<a class="code" href="classclang_1_1Decl.html#a5997b082d9c85ca9e29b061fbd330ce1">Decl::castFromDeclContext</a>(Val));</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>   }</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div>
+<div class="line"><a name="l01659"></a><span class="lineno"><a class="code" href="structclang_1_1cast__convert__decl__context.html#ac80d702488d7d30a10410d3d1b7eaf70"> 1659</a></span>   <span class="keyword">static</span> ToTy *<a class="code" href="structclang_1_1cast__convert__decl__context.html#ac80d702488d7d30a10410d3d1b7eaf70">doit</a>(<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *Val) {</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>ToTy*<span class="keyword">></span>(<a class="code" href="classclang_1_1Decl.html#a5997b082d9c85ca9e29b061fbd330ce1">Decl::castFromDeclContext</a>(Val));</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>   }</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> };</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> </div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> <span class="comment">// Specialization selected when ToTy is a known subclass of DeclContext.</span></div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> <span class="keyword">template</span> <<span class="keyword">class</span> ToTy></div>
+<div class="line"><a name="l01666"></a><span class="lineno"><a class="code" href="structclang_1_1cast__convert__decl__context_3_01ToTy_00_01true_01_4.html"> 1666</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1cast__convert__decl__context.html">cast_convert_decl_context</a><ToTy, <a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>> {</div>
+<div class="line"><a name="l01667"></a><span class="lineno"><a class="code" href="structclang_1_1cast__convert__decl__context_3_01ToTy_00_01true_01_4.html#ab9288d82e5eba4c90dfdd58ce7102ffd"> 1667</a></span>   <span class="keyword">static</span> <span class="keyword">const</span> ToTy *<a class="code" href="structclang_1_1cast__convert__decl__context_3_01ToTy_00_01true_01_4.html#ab9288d82e5eba4c90dfdd58ce7102ffd">doit</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *Val) {</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keyword">const </span>ToTy*<span class="keyword">></span>(Val);</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>   }</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> </div>
+<div class="line"><a name="l01671"></a><span class="lineno"><a class="code" href="structclang_1_1cast__convert__decl__context_3_01ToTy_00_01true_01_4.html#ab132baed1e4f8f1809b7e458ed76d899"> 1671</a></span>   <span class="keyword">static</span> ToTy *<a class="code" href="structclang_1_1cast__convert__decl__context_3_01ToTy_00_01true_01_4.html#ab132baed1e4f8f1809b7e458ed76d899">doit</a>(<a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *Val) {</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span>ToTy*<span class="keyword">></span>(Val);</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>   }</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> </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> } <span class="comment">// end clang.</span></div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> </div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> <span class="comment"></span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span> <span class="comment">/// isa<T>(DeclContext*)</span></div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> <span class="comment"></span><span class="keyword">template</span> <<span class="keyword">typename</span> To></div>
+<div class="line"><a name="l01683"></a><span class="lineno"><a class="code" href="structllvm_1_1isa__impl_3_01To_00_1_1clang_1_1DeclContext_01_4.html"> 1683</a></span> <span class="keyword">struct </span>isa_impl<To, ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>> {</div>
+<div class="line"><a name="l01684"></a><span class="lineno"><a class="code" href="structllvm_1_1isa__impl_3_01To_00_1_1clang_1_1DeclContext_01_4.html#a10a7635574229b78e648d48b22a498b5"> 1684</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1isa__impl_3_01To_00_1_1clang_1_1DeclContext_01_4.html#a10a7635574229b78e648d48b22a498b5">doit</a>(const ::clang::DeclContext &Val) {</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span>     <span class="keywordflow">return</span> To::classofKind(Val.getDeclKind());</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>   }</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> };</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> <span class="comment"></span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> <span class="comment">/// cast<T>(DeclContext*)</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">class</span> ToTy></div>
+<div class="line"><a name="l01691"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_01const_01_1_1clang_1_1DeclContext_00_01const_01_1_1clang_1_1DeclContext_01_4.html"> 1691</a></span> <span class="keyword">struct </span>cast_convert_val<ToTy,</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>                         const ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>,const <a class="code" href="classclang_1_1DeclContext.html">::clang::DeclContext</a>> {</div>
+<div class="line"><a name="l01693"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_01const_01_1_1clang_1_1DeclContext_00_01const_01_1_1clang_1_1DeclContext_01_4.html#a1b7cbaa59cbbfa3609391c6318e75a3a"> 1693</a></span>   <span class="keyword">static</span> <span class="keyword">const</span> ToTy &<a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_01const_01_1_1clang_1_1DeclContext_00_01const_01_1_1clang_1_1DeclContext_01_4.html#a1b7cbaa59cbbfa3609391c6318e75a3a">doit</a>(const ::clang::DeclContext &Val) {</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>     <span class="keywordflow">return</span> *<a class="code" href="structclang_1_1cast__convert__decl__context.html#a19e66c6ba6469b955cfeae9a8865dd59">::clang::cast_convert_decl_context<ToTy>::doit</a>(&Val);</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>   }</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> };</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> <span class="keyword">template</span><<span class="keyword">class</span> ToTy></div>
+<div class="line"><a name="l01698"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_1_1clang_1_1DeclContext_00_1_1clang_1_1DeclContext_01_4.html"> 1698</a></span> <span class="keyword">struct </span>cast_convert_val<ToTy, ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>, <a class="code" href="classclang_1_1DeclContext.html">::clang::DeclContext</a>> {</div>
+<div class="line"><a name="l01699"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_1_1clang_1_1DeclContext_00_1_1clang_1_1DeclContext_01_4.html#a8abb5a0ee1efe268225b25f41b0f23c0"> 1699</a></span>   <span class="keyword">static</span> ToTy &<a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_1_1clang_1_1DeclContext_00_1_1clang_1_1DeclContext_01_4.html#a8abb5a0ee1efe268225b25f41b0f23c0">doit</a>(::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a> &Val) {</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>     <span class="keywordflow">return</span> *<a class="code" href="structclang_1_1cast__convert__decl__context.html#a19e66c6ba6469b955cfeae9a8865dd59">::clang::cast_convert_decl_context<ToTy>::doit</a>(&Val);</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span>   }</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> <span class="keyword">template</span><<span class="keyword">class</span> ToTy></div>
+<div class="line"><a name="l01704"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_01const_01_1_1clang_1_1DeclContext_01_5_00_01const_6ab4e8a77f9db8d29a90f8abc629a702.html"> 1704</a></span> <span class="keyword">struct </span>cast_convert_val<ToTy,</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>                      const ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>*, const <a class="code" href="classclang_1_1DeclContext.html">::clang::DeclContext</a>*> {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_01const_01_1_1clang_1_1DeclContext_01_5_00_01const_6ab4e8a77f9db8d29a90f8abc629a702.html#abddf93f00d7af2bac757b372e8ea7de8"> 1706</a></span>   <span class="keyword">static</span> <span class="keyword">const</span> ToTy *<a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_01const_01_1_1clang_1_1DeclContext_01_5_00_01const_6ab4e8a77f9db8d29a90f8abc629a702.html#abddf93f00d7af2bac757b372e8ea7de8">doit</a>(const ::clang::DeclContext *Val) {</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>     return ::clang::cast_convert_decl_context<ToTy>::doit(Val);</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>   }</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span> };</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> <span class="keyword">template</span><<span class="keyword">class</span> ToTy></div>
+<div class="line"><a name="l01711"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_1_1clang_1_1DeclContext_01_5_00_1_1clang_1_1DeclContext_01_5_01_4.html"> 1711</a></span> <span class="keyword">struct </span>cast_convert_val<ToTy, ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>*, <a class="code" href="classclang_1_1DeclContext.html">::clang::DeclContext</a>*> {</div>
+<div class="line"><a name="l01712"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_1_1clang_1_1DeclContext_01_5_00_1_1clang_1_1DeclContext_01_5_01_4.html#a9fb7ec99941a46d693c8fa7420193352"> 1712</a></span>   <span class="keyword">static</span> ToTy *<a class="code" href="structllvm_1_1cast__convert__val_3_01ToTy_00_1_1clang_1_1DeclContext_01_5_00_1_1clang_1_1DeclContext_01_5_01_4.html#a9fb7ec99941a46d693c8fa7420193352">doit</a>(::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a> *Val) {</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span>     return ::clang::cast_convert_decl_context<ToTy>::doit(Val);</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span>   }</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> <span class="comment"></span></div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="comment">/// Implement cast_convert_val for Decl -> DeclContext conversions.</span></div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">class</span> FromTy></div>
+<div class="line"><a name="l01719"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01_1_1clang_1_1DeclContext_00_01FromTy_00_01FromTy_01_4.html"> 1719</a></span> <span class="keyword">struct </span>cast_convert_val< ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>, FromTy, FromTy> {</div>
+<div class="line"><a name="l01720"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01_1_1clang_1_1DeclContext_00_01FromTy_00_01FromTy_01_4.html#a774794e70130f51db161647f5c640b54"> 1720</a></span>   static ::clang::DeclContext &<a class="code" href="structllvm_1_1cast__convert__val_3_01_1_1clang_1_1DeclContext_00_01FromTy_00_01FromTy_01_4.html#a774794e70130f51db161647f5c640b54">doit</a>(<span class="keyword">const</span> FromTy &Val) {</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>     <span class="keywordflow">return</span> *FromTy::castToDeclContext(&Val);</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>   }</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</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> <span class="keyword">template</span><<span class="keyword">class</span> FromTy></div>
+<div class="line"><a name="l01726"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01_1_1clang_1_1DeclContext_00_01FromTy_01_5_00_01FromTy_01_5_01_4.html"> 1726</a></span> <span class="keyword">struct </span>cast_convert_val< ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>, FromTy*, FromTy*> {</div>
+<div class="line"><a name="l01727"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01_1_1clang_1_1DeclContext_00_01FromTy_01_5_00_01FromTy_01_5_01_4.html#a1d09a22649a391066bc62a133e466317"> 1727</a></span>   static ::clang::DeclContext *<a class="code" href="structllvm_1_1cast__convert__val_3_01_1_1clang_1_1DeclContext_00_01FromTy_01_5_00_01FromTy_01_5_01_4.html#a1d09a22649a391066bc62a133e466317">doit</a>(<span class="keyword">const</span> FromTy *Val) {</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>     <span class="keywordflow">return</span> FromTy::castToDeclContext(Val);</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> };</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> </div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="keyword">template</span><<span class="keyword">class</span> FromTy></div>
+<div class="line"><a name="l01733"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01const_01_1_1clang_1_1DeclContext_00_01FromTy_00_01FromTy_01_4.html"> 1733</a></span> <span class="keyword">struct </span>cast_convert_val< const ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>, FromTy, FromTy> {</div>
+<div class="line"><a name="l01734"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01const_01_1_1clang_1_1DeclContext_00_01FromTy_00_01FromTy_01_4.html#ade93d6e05540fed2e48f5bf7d0dd52cf"> 1734</a></span>   <span class="keyword">static</span> const ::clang::DeclContext &<a class="code" href="structllvm_1_1cast__convert__val_3_01const_01_1_1clang_1_1DeclContext_00_01FromTy_00_01FromTy_01_4.html#ade93d6e05540fed2e48f5bf7d0dd52cf">doit</a>(<span class="keyword">const</span> FromTy &Val) {</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span>     <span class="keywordflow">return</span> *FromTy::castToDeclContext(&Val);</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> </div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> <span class="keyword">template</span><<span class="keyword">class</span> FromTy></div>
+<div class="line"><a name="l01740"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01const_01_1_1clang_1_1DeclContext_00_01FromTy_01_5_00_01FromTy_01_5_01_4.html"> 1740</a></span> <span class="keyword">struct </span>cast_convert_val< const ::<a class="code" href="classclang_1_1DeclContext.html">clang::DeclContext</a>, FromTy*, FromTy*> {</div>
+<div class="line"><a name="l01741"></a><span class="lineno"><a class="code" href="structllvm_1_1cast__convert__val_3_01const_01_1_1clang_1_1DeclContext_00_01FromTy_01_5_00_01FromTy_01_5_01_4.html#a0cddf0fdb74aa84a0b515f40dc5422d0"> 1741</a></span>   <span class="keyword">static</span> const ::clang::DeclContext *<a class="code" href="structllvm_1_1cast__convert__val_3_01const_01_1_1clang_1_1DeclContext_00_01FromTy_01_5_00_01FromTy_01_5_01_4.html#a0cddf0fdb74aa84a0b515f40dc5422d0">doit</a>(<span class="keyword">const</span> FromTy *Val) {</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span>     <span class="keywordflow">return</span> FromTy::castToDeclContext(Val);</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> </div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> } <span class="comment">// end namespace llvm</span></div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> </div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:31 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/DeclCXX_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/DeclCXX_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/DeclCXX_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/DeclCXX_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2214 @@
+<!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: DeclCXX.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_d3636efc55c6148efe36c59ffa01cb41.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">DeclCXX.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="DeclCXX_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">//===--- DeclCXX.cpp - C++ Declaration AST Node Implementation ------------===//</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 implements the C++ related Decl classes.</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> <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="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "<a class="code" href="ASTContext_8h.html" title="Defines the clang::ASTContext interface.">clang/AST/ASTContext.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="ASTLambda_8h.html" title="This file provides some common utility functions for processing Lambda related AST Constructs...">clang/AST/ASTLambda.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="ASTMutationListener_8h.html">clang/AST/ASTMutationListener.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CXXInheritance_8h.html">clang/AST/CXXInheritance.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</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="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Expr_8h.html">clang/AST/Expr.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</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="l00021"></a><span class="lineno">   21</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="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="IdentifierTable_8h.html" title="Defines the clang::IdentifierInfo, clang::IdentifierTable, and clang::Selector interfaces.">clang/Basic/IdentifierTable.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/ADT/STLExtras.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/SmallPtrSet.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">using namespace </span>clang;</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="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">// Decl Allocation/Deallocation Method Implementations</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keywordtype">void</span> AccessSpecDecl::anchor() { }</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_1AccessSpecDecl.html#a67801ce6d65fbe1e949d470c65487e3c">   33</a></span> <a class="code" href="classclang_1_1AccessSpecDecl.html" title="Represents an access specifier followed by colon ':'.">AccessSpecDecl</a> *<a class="code" href="classclang_1_1AccessSpecDecl.html#a67801ce6d65fbe1e949d470c65487e3c">AccessSpecDecl::CreateDeserialized</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keywordtype">unsigned</span> <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="l00034"></a><span class="lineno">   34</span>   <span class="keywordtype">void</span> *Mem = <a class="code" href="classclang_1_1Decl.html#a3026976dfd8cb6aa936c57255dbf5968" title="Allocate memory for a deserialized declaration.">AllocateDeserializedDecl</a>(C, ID, <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1AccessSpecDecl.html" title="Represents an access specifier followed by colon ':'.">AccessSpecDecl</a>));</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1AccessSpecDecl.html" title="Represents an access specifier followed by colon ':'.">AccessSpecDecl</a>(<a class="code" href="structclang_1_1Decl_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a decl-derived type that will be filled in lat...">EmptyShell</a>());</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> }</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keywordtype">void</span> LazyASTUnresolvedSet::getFromExternalSource(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> *Source = C.<a class="code" href="classclang_1_1ASTContext.html#a28b9de2cb15f599454b7b92cfa65d7e3" title="Retrieve a pointer to the external AST source associated with this AST context, if any...">getExternalSource</a>();</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   assert(Impl.Decls.isLazy() && <span class="stringliteral">"getFromExternalSource for non-lazy set"</span>);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   assert(Source && <span class="stringliteral">"getFromExternalSource with no external source"</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>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1UnresolvedSetIterator.html">ASTUnresolvedSet::iterator</a> I = Impl.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a08553ecf915ac023e18f52273d8fe80c">begin</a>(); I != Impl.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7807cae3421ee059d5c5717f9b5c6739">end</a>(); ++I)</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     I.setDecl(cast<NamedDecl>(Source-><a class="code" href="classclang_1_1ExternalASTSource.html#abf6b21c4e3af3b542dfb5367fba5fa9f" title="Resolve a declaration ID into a declaration, potentially building a new declaration.">GetExternalDecl</a>(</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>         reinterpret_cast<uintptr_t>(I.getDecl()) >> 2)));</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   Impl.Decls.setLazy(<span class="keyword">false</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">   48</span> </div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> CXXRecordDecl::DefinitionData::DefinitionData(<a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *D)</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   : UserDeclaredConstructor(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), UserDeclaredSpecialMembers(0),</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     Aggregate(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>), PlainOldData(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>), Empty(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>), Polymorphic(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>     Abstract(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), IsStandardLayout(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>), HasNoNonEmptyBases(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     HasPrivateFields(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), HasProtectedFields(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), HasPublicFields(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     HasMutableFields(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), HasOnlyCMembers(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     HasInClassInitializer(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), HasUninitializedReferenceMember(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>     NeedOverloadResolutionForMoveConstructor(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     NeedOverloadResolutionForMoveAssignment(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>     NeedOverloadResolutionForDestructor(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     DefaultedMoveConstructorIsDeleted(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     DefaultedMoveAssignmentIsDeleted(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     DefaultedDestructorIsDeleted(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     HasTrivialSpecialMembers(SMF_All),</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     DeclaredNonTrivialSpecialMembers(0),</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     HasIrrelevantDestructor(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     HasConstexprNonCopyMoveConstructor(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     DefaultedDefaultConstructorIsConstexpr(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     HasConstexprDefaultConstructor(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     HasNonLiteralTypeFieldsOrBases(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), ComputedVisibleConversions(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     UserProvidedDefaultConstructor(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), DeclaredSpecialMembers(0),</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     ImplicitCopyConstructorHasConstParam(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     ImplicitCopyAssignmentHasConstParam(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     HasDeclaredCopyConstructorWithConstParam(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     HasDeclaredCopyAssignmentWithConstParam(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     IsLambda(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), NumBases(0), NumVBases(0), Bases(), VBases(),</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     Definition(D), FirstFriend() {</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> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *CXXRecordDecl::DefinitionData::getBasesSlowCase()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="keywordflow">return</span> Bases.get(Definition->getASTContext().getExternalSource());</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> }</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> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *CXXRecordDecl::DefinitionData::getVBasesSlowCase()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">return</span> VBases.get(Definition->getASTContext().getExternalSource());</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> </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a074b1f81c9a458ef3aea9578b6c2bd6d">   86</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a074b1f81c9a458ef3aea9578b6c2bd6d">CXXRecordDecl::CXXRecordDecl</a>(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Kind</a> K, <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548" title="The kind of a tag type.">TagKind</a> TK, <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</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> StartLoc, <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> IdLoc,</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                              <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *Id, <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *PrevDecl)</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>   : <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a>(K, TK, DC, StartLoc, IdLoc, Id, PrevDecl),</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     DefinitionData(PrevDecl ? PrevDecl->DefinitionData : 0),</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     TemplateOrInstantiation() { }</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a5fd9b830edb5b3b128e9eebc1bb2d6d2">   93</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1CXXRecordDecl.html#a5fd9b830edb5b3b128e9eebc1bb2d6d2">CXXRecordDecl::Create</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548" title="The kind of a tag type.">TagKind</a> TK,</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>                                      <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC, <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> StartLoc,</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</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> IdLoc, <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *Id,</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                                      <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a>* PrevDecl,</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>                                      <span class="keywordtype">bool</span> DelayTypeCreation) {</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a>* R = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1CXXRecordDecl.html#a074b1f81c9a458ef3aea9578b6c2bd6d">CXXRecordDecl</a>(CXXRecord, TK, DC, StartLoc, IdLoc,</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>                                            Id, PrevDecl);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   R-><a class="code" href="classclang_1_1TagDecl.html#adb9112a2113fc193cfb390989c68a586" title="Indicates whether it is possible for declarations of this kind to have an out-of-date definition...">MayHaveOutOfDateDef</a> = C.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().Modules;</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="comment">// FIXME: DelayTypeCreation seems like such a hack</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keywordflow">if</span> (!DelayTypeCreation)</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(R, PrevDecl);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keywordflow">return</span> R;</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> </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#acf55a67026181d706573e9232dfdbd8a">  108</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1CXXRecordDecl.html#acf55a67026181d706573e9232dfdbd8a">CXXRecordDecl::CreateLambda</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                                            <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *Info, <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> Loc,</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>                                            <span class="keywordtype">bool</span> Dependent, <span class="keywordtype">bool</span> IsGeneric, </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>                                            <a class="code" href="namespaceclang.html#ac25c19be513bebdca2ed5f8ea0599ff3" title="The default, if any, capture method for a lambda expression.">LambdaCaptureDefault</a> CaptureDefault) {</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a>* R = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1CXXRecordDecl.html#a074b1f81c9a458ef3aea9578b6c2bd6d">CXXRecordDecl</a>(CXXRecord, <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548a0b3e619f5623e9e4395e10893c265d84" title="The "class" keyword.">TTK_Class</a>, DC, Loc, Loc,</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>                                            0, 0);</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   R-><a class="code" href="classclang_1_1TagDecl.html#a6d94e9fe5559bc71890881b6e83974ab" title="IsBeingDefined - True if this is currently being defined.">IsBeingDefined</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   R->DefinitionData = <span class="keyword">new</span> (C) <span class="keyword">struct</span> LambdaDefinitionData(R, Info, </div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>                                                           Dependent, </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>                                                           IsGeneric, </div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>                                                           CaptureDefault);</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>   R-><a class="code" href="classclang_1_1TagDecl.html#adb9112a2113fc193cfb390989c68a586" title="Indicates whether it is possible for declarations of this kind to have an out-of-date definition...">MayHaveOutOfDateDef</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   R-><a class="code" href="classclang_1_1Decl.html#aa89b44dad7f4fd7e9c15129f8f0784e4">setImplicit</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>   C.<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(R, <span class="comment">/*PrevDecl=*/</span>0);</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">return</span> R;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> }</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> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *</div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a4554e2a2ad30319017d48bf3c0e09f0b">  126</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a4554e2a2ad30319017d48bf3c0e09f0b">CXXRecordDecl::CreateDeserialized</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keywordtype">unsigned</span> <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="l00127"></a><span class="lineno">  127</span>   <span class="keywordtype">void</span> *Mem = <a class="code" href="classclang_1_1Decl.html#a3026976dfd8cb6aa936c57255dbf5968" title="Allocate memory for a deserialized declaration.">AllocateDeserializedDecl</a>(C, ID, <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a>));</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *R = <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1CXXRecordDecl.html#a074b1f81c9a458ef3aea9578b6c2bd6d">CXXRecordDecl</a>(CXXRecord, <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548ac341a3cfc4dae72e09e2348561fffc12" title="The "struct" keyword.">TTK_Struct</a>, 0,</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</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>(), <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>(),</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>                                              0, 0);</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>   R-><a class="code" href="classclang_1_1TagDecl.html#adb9112a2113fc193cfb390989c68a586" title="Indicates whether it is possible for declarations of this kind to have an out-of-date definition...">MayHaveOutOfDateDef</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">return</span> R;</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> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a1d45c1075abf87f2a0bfb9305085b9d4">  136</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a1d45c1075abf87f2a0bfb9305085b9d4" title="Sets the base classes of this struct or class.">CXXRecordDecl::setBases</a>(<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> <span class="keyword">const</span> * <span class="keyword">const</span> *Bases,</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>                         <span class="keywordtype">unsigned</span> NumBases) {</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</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>   <span class="keywordflow">if</span> (!<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Bases.isOffset() && <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NumBases > 0)</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>     C.<a class="code" href="classclang_1_1ASTContext.html#a2330fd03812b2f8707442f4c8e5da739">Deallocate</a>(<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().getBases());</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>   <span class="keywordflow">if</span> (NumBases) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="comment">// C++ [dcl.init.aggr]p1:</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="comment">//   An aggregate is [...] a class with [...] no base classes [...].</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Aggregate = <span class="keyword">false</span>;</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>     <span class="comment">// C++ [class]p4:</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>     <span class="comment">//   A POD-struct is an aggregate class...</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="comment">// The set of seen virtual base types.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   llvm::SmallPtrSet<CanQualType, 8> SeenVBaseTypes;</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>   <span class="comment">// The virtual bases of this class.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const CXXBaseSpecifier *, 8></a> VBases;</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>   <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Bases = <span class="keyword">new</span>(C) <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> [NumBases];</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NumBases = NumBases;</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0; i < NumBases; ++i) {</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().getBases()[i] = *Bases[i];</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="comment">// Keep track of inherited vbases for this base class.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *<a class="code" href="classclang_1_1Base.html">Base</a> = Bases[i];</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> BaseType = Base-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a4e9241e65b4b20b372902d0873a9d838" title="Retrieves the type of the base class.">getType</a>();</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="comment">// Skip dependent types; we can't do any checking on them now.</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">if</span> (BaseType-><a class="code" href="classclang_1_1Type.html#a7e475b7859ae970eb837da95e94ab26c">isDependentType</a>())</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseClassDecl</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>       = cast<CXXRecordDecl>(BaseType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</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>     <span class="comment">// A class with a non-empty base class is not empty.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>     <span class="comment">// FIXME: Standard ref?</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a2c1511d7b34b98b0f9763a3d2a73d557" title="Determine whether this is an empty class in the sense of (C++11 [meta.unary.prop]).">isEmpty</a>()) {</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>       <span class="keywordflow">if</span> (!<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty) {</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>         <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>         <span class="comment">//   A standard-layout class is a class that:</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>         <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>         <span class="comment">//    -- either has no non-static data members in the most derived</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>         <span class="comment">//       class and at most one base class with non-static data members,</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>         <span class="comment">//       or has no base classes with non-static data members, and</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>         <span class="comment">// If this is the second non-empty base, then neither of these two</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         <span class="comment">// clauses can be true.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasNoNonEmptyBases = <span class="keyword">false</span>;</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>     </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     <span class="comment">// C++ [class.virtual]p1:</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     <span class="comment">//   A class that declares or inherits a virtual function is called a </span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="comment">//   polymorphic class.</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>     <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#aadd0b19ffcef5977a8414e09f184151f">isPolymorphic</a>())</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Polymorphic = <span class="keyword">true</span>;</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>     <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>     <span class="comment">//   A standard-layout class is a class that: [...]</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>     <span class="comment">//    -- has no non-standard-layout base classes</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>     <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a23cab686c3290814c6c65581b8a5e3ae" title="Determine whether this class has standard layout per (C++ [class]p7)">isStandardLayout</a>())</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</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">  203</span>     <span class="comment">// Record if this base is the first non-literal field or base.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#a2f0589a6a2bd2c11a88ce7a8477fb48f" title="Determine whether this class has a non-literal or/ volatile type non-static data member or base class...">hasNonLiteralTypeFieldsOrBases</a>() && !BaseType-><a class="code" href="classclang_1_1Type.html#a67864aaa7a3c3a3738d57ae21a636942">isLiteralType</a>(C))</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasNonLiteralTypeFieldsOrBases = <span class="keyword">true</span>;</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>     <span class="comment">// Now go through all virtual bases of this base and add them.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_iterator</a> VBase =</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>           BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a8b9f14b77ec81f85caa231179c888a88">vbases_begin</a>(),</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>          E = BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac1d277188897e80f1b69bddad6a7f27e">vbases_end</a>(); VBase != E; ++VBase) {</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>       <span class="comment">// Add this base if it's not already in the list.</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>       <span class="keywordflow">if</span> (SeenVBaseTypes.insert(C.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(VBase->getType()))) {</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>         VBases.push_back(VBase);</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>         <span class="comment">// C++11 [class.copy]p8:</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>         <span class="comment">//   The implicitly-declared copy constructor for a class X will have</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>         <span class="comment">//   the form 'X::X(const X&)' if each [...] virtual base class B of X</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>         <span class="comment">//   has a copy constructor whose first parameter is of type</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>         <span class="comment">//   'const B&' or 'const volatile B&' [...]</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *VBaseDecl = VBase->getType()->getAsCXXRecordDecl())</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>           <span class="keywordflow">if</span> (!VBaseDecl->hasCopyConstructorWithConstParam())</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>             <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ImplicitCopyConstructorHasConstParam = <span class="keyword">false</span>;</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>     }</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>     <span class="keywordflow">if</span> (Base-><a class="code" href="classclang_1_1CXXBaseSpecifier.html#a052cc9c7e1fb5a7095469c3be012c3a4" title="Determines whether the base class is a virtual base class (or not).">isVirtual</a>()) {</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>       <span class="comment">// Add this base if it's not already in the list.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>       <span class="keywordflow">if</span> (SeenVBaseTypes.insert(C.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(BaseType)))</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>         VBases.push_back(Base);</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>       <span class="comment">// C++0x [meta.unary.prop] is_empty:</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>       <span class="comment">//    T is a class type, but not a union type, with ... no virtual base</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       <span class="comment">//    classes</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty = <span class="keyword">false</span>;</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>       <span class="comment">// C++11 [class.ctor]p5, C++11 [class.copy]p12, C++11 [class.copy]p25:</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       <span class="comment">//   A [default constructor, copy/move constructor, or copy/move assignment</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="comment">//   operator for a class X] is trivial [...] if:</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>       <span class="comment">//    -- class X has [...] no virtual base classes</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= SMF_Destructor;</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>       <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>       <span class="comment">//   A standard-layout class is a class that: [...]</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>       <span class="comment">//    -- has [...] no virtual base classes</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>       <span class="comment">// C++11 [dcl.constexpr]p4:</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>       <span class="comment">//   In the definition of a constexpr constructor [...]</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>       <span class="comment">//    -- the class shall not have any virtual base classes</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedDefaultConstructorIsConstexpr = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>       <span class="comment">// C++ [class.ctor]p5:</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>       <span class="comment">//   A default constructor is trivial [...] if:</span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>       <span class="comment">//    -- all the direct base classes of its class have trivial default</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>       <span class="comment">//       constructors.</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>       <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#adef284fa5d796f8312681f67ae05f87b" title="Determine whether this class has a trivial default constructor (C++11 [class.ctor]p5).">hasTrivialDefaultConstructor</a>())</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_DefaultConstructor;</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">// C++0x [class.copy]p13:</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       <span class="comment">//   A copy/move constructor for class X is trivial if [...]</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>       <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>       <span class="comment">//    -- the constructor selected to copy/move each direct base class</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>       <span class="comment">//       subobject is trivial, and</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>       <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ab8839e371c9c9d02ab43f0de669969a7" title="Determine whether this class has a trivial copy constructor (C++ [class.copy]p6, C++11 [class...">hasTrivialCopyConstructor</a>())</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_CopyConstructor;</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>       <span class="comment">// If the base class doesn't have a simple move constructor, we'll eagerly</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>       <span class="comment">// declare it and perform overload resolution to determine which function</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>       <span class="comment">// it actually calls. If it does have a simple move constructor, this</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>       <span class="comment">// check is correct.</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>       <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a07897d986b167418bc3debd8be7e37d4" title="Determine whether this class has a trivial move constructor (C++11 [class.copy]p12)">hasTrivialMoveConstructor</a>())</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_MoveConstructor;</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>       <span class="comment">// C++0x [class.copy]p27:</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>       <span class="comment">//   A copy/move assignment operator for class X is trivial if [...]</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>       <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>       <span class="comment">//    -- the assignment operator selected to copy/move each direct base</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       <span class="comment">//       class subobject is trivial, and</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>       <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a23982e32c70367ecf0a47d4fbb8cae63" title="Determine whether this class has a trivial copy assignment operator (C++ [class.copy]p11, C++11 [class.copy]p25)">hasTrivialCopyAssignment</a>())</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_CopyAssignment;</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>       <span class="comment">// If the base class doesn't have a simple move assignment, we'll eagerly</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>       <span class="comment">// declare it and perform overload resolution to determine which function</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       <span class="comment">// it actually calls. If it does have a simple move assignment, this</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       <span class="comment">// check is correct.</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a33442e47a5c45784a830b49ad54cee83" title="Determine whether this class has a trivial move assignment operator (C++11 [class.copy]p25)">hasTrivialMoveAssignment</a>())</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_MoveAssignment;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="comment">// C++11 [class.ctor]p6:</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       <span class="comment">//   If that user-written default constructor would satisfy the</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>       <span class="comment">//   requirements of a constexpr constructor, the implicitly-defined</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span>       <span class="comment">//   default constructor is constexpr.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a272e5ce94037e8f0135068c3adcc5a54" title="Determine whether this class has a constexpr default constructor.">hasConstexprDefaultConstructor</a>())</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedDefaultConstructorIsConstexpr = <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     <span class="comment">// C++ [class.ctor]p3:</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="comment">//   A destructor is trivial if all the direct base classes of its class</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     <span class="comment">//   have trivial destructors.</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>())</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_Destructor;</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ad49d7b9b70503d49eea0ad9f4cad45b5" title="Determine whether this class has a destructor which has no semantic effect.">hasIrrelevantDestructor</a>())</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasIrrelevantDestructor = <span class="keyword">false</span>;</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>     <span class="comment">// C++11 [class.copy]p18:</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="comment">//   The implicitly-declared copy assignment oeprator for a class X will</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span>     <span class="comment">//   have the form 'X& X::operator=(const X&)' if each direct base class B</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span>     <span class="comment">//   of X has a copy assignment operator whose parameter is of type 'const</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>     <span class="comment">//   B&', 'const volatile B&', or 'B' [...]</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a4368f6c8e44275ac9096b4f8556d7a8d" title="Determine whether this class has a copy assignment operator with a parameter type which is a referenc...">hasCopyAssignmentWithConstParam</a>())</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ImplicitCopyAssignmentHasConstParam = <span class="keyword">false</span>;</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>     <span class="comment">// C++11 [class.copy]p8:</span></div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>     <span class="comment">//   The implicitly-declared copy constructor for a class X will have</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>     <span class="comment">//   the form 'X::X(const X&)' if each direct [...] base class B of X</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     <span class="comment">//   has a copy constructor whose first parameter is of type</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     <span class="comment">//   'const B&' or 'const volatile B&' [...]</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">if</span> (!BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a3f6abf70d4e8afcfd423fdfb75063d02" title="Determine whether this class has a copy constructor with a parameter type which is a reference to a c...">hasCopyConstructorWithConstParam</a>())</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ImplicitCopyConstructorHasConstParam = <span class="keyword">false</span>;</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>     <span class="comment">// A class has an Objective-C object member if... or any of its bases</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="comment">// has an Objective-C object member.</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>     <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a0fbd75f4cfcc85aeaa36554078a1e62f">hasObjectMember</a>())</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>       <a class="code" href="classclang_1_1RecordDecl.html#a92594398b3504a22693556ce3637d079">setHasObjectMember</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     </div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1RecordDecl.html#a3d62e73b14bb7b7f8579b87f1348e6da">hasVolatileMember</a>())</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>       <a class="code" href="classclang_1_1RecordDecl.html#aa6ebd5306b3862f1e9403a07c707dd4c">setHasVolatileMember</a>(<span class="keyword">true</span>);</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>     <span class="comment">// Keep track of the presence of mutable fields.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>     <span class="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac4031735e5a340216c6085cc0bb44f61" title="Determine whether this class, or any of its class subobjects, contains a mutable field.">hasMutableFields</a>())</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasMutableFields = <span class="keyword">true</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="keywordflow">if</span> (BaseClassDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#adf029987d8735f73c29ed7c6af14ebb7" title="Whether this class or any of its subobjects has any members of reference type which would make value-...">hasUninitializedReferenceMember</a>())</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasUninitializedReferenceMember = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     addedClassSubobject(BaseClassDecl);</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>   }</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>   <span class="keywordflow">if</span> (VBases.empty())</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="comment">// Create base specifier for any direct or indirect virtual bases.</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>   <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().VBases = <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>[VBases.size()];</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NumVBases = VBases.size();</div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> I = 0, E = VBases.size(); I != E; ++I) {</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Type.html">Type</a> = VBases[I]->getType();</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>     <span class="keywordflow">if</span> (!Type-><a class="code" href="classclang_1_1Type.html#a7e475b7859ae970eb837da95e94ab26c">isDependentType</a>())</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       addedClassSubobject(Type-><a class="code" href="classclang_1_1Type.html#a7dc6c3dbc192ad98871c3cc484376b9a" title="Retrieves the CXXRecordDecl that this type refers to, either because the type is a RecordType or beca...">getAsCXXRecordDecl</a>());</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().getVBases()[I] = *VBases[I];</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> }</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> <span class="keywordtype">void</span> CXXRecordDecl::addedClassSubobject(<a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Subobj) {</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>   <span class="comment">// C++11 [class.copy]p11:</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   <span class="comment">//   A defaulted copy/move constructor for a class X is defined as</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>   <span class="comment">//   deleted if X has:</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>   <span class="comment">//    -- a direct or virtual base class B that cannot be copied/moved [...]</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   <span class="comment">//    -- a non-static data member of class type M (or array thereof)</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>   <span class="comment">//       that cannot be copied or moved [...]</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>   <span class="keywordflow">if</span> (!Subobj-><a class="code" href="classclang_1_1CXXRecordDecl.html#a11a892e8272485f66eeb31ab3d724e82" title="true if we know for sure that this class has a single, accessible, unambiguous move constructor that ...">hasSimpleMoveConstructor</a>())</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NeedOverloadResolutionForMoveConstructor = <span class="keyword">true</span>;</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>   <span class="comment">// C++11 [class.copy]p23:</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="comment">//   A defaulted copy/move assignment operator for a class X is defined as</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="comment">//   deleted if X has:</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>   <span class="comment">//    -- a direct or virtual base class B that cannot be copied/moved [...]</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>   <span class="comment">//    -- a non-static data member of class type M (or array thereof)</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <span class="comment">//        that cannot be copied or moved [...]</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <span class="keywordflow">if</span> (!Subobj-><a class="code" href="classclang_1_1CXXRecordDecl.html#ab3ae0ea0678dd0ee32f35185d17dd14d" title="true if we know for sure that this class has a single, accessible, unambiguous move assignment operat...">hasSimpleMoveAssignment</a>())</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NeedOverloadResolutionForMoveAssignment = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> </div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="comment">// C++11 [class.ctor]p5, C++11 [class.copy]p11, C++11 [class.dtor]p5:</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   <span class="comment">//   A defaulted [ctor or dtor] for a class X is defined as</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>   <span class="comment">//   deleted if X has:</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>   <span class="comment">//    -- any direct or virtual base class [...] has a type with a destructor</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="comment">//       that is deleted or inaccessible from the defaulted [ctor or dtor].</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   <span class="comment">//    -- any non-static data member has a type with a destructor</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="comment">//       that is deleted or inaccessible from the defaulted [ctor or dtor].</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="keywordflow">if</span> (!Subobj-><a class="code" href="classclang_1_1CXXRecordDecl.html#a37d73e8773387e4cd39ad3d1f69a5a54" title="true if we know for sure that this class has an accessible destructor that is not deleted...">hasSimpleDestructor</a>()) {</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NeedOverloadResolutionForMoveConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NeedOverloadResolutionForDestructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>   }</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> }</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="comment"></span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="comment">/// Callback function for CXXRecordDecl::forallBases that acknowledges</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> <span class="comment">/// that it saw a base class.</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"><a class="code" href="DeclCXX_8cpp.html#a2ac37ba4ef7f8a4f8f7b50186a950bc4">  386</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="DeclCXX_8cpp.html#a2ac37ba4ef7f8a4f8f7b50186a950bc4">SawBase</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *, <span class="keywordtype">void</span> *) {</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> }</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a7acabb31e085543547bf00b369b6082f">  390</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a7acabb31e085543547bf00b369b6082f" title="Determine whether this class has any dependent base classes which are not the current instantiation...">CXXRecordDecl::hasAnyDependentBases</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclContext.html#a0d06ccd1db1b1f60e91d95d50aeae75d" title="Determines whether this context is dependent on a template parameter.">isDependentContext</a>())</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>   <span class="keywordflow">return</span> !<a class="code" href="classclang_1_1CXXRecordDecl.html#acd5fb7de4853357c1fd9a9450f44ce60" title="Determines if the given callback holds for all the direct or indirect base classes of this type...">forallBases</a>(<a class="code" href="DeclCXX_8cpp.html#a2ac37ba4ef7f8a4f8f7b50186a950bc4">SawBase</a>, 0);</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span> }</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span> </div>
+<div class="line"><a name="l00397"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a26f0de2546ef3d9d28815fa6e640d1dc">  397</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a26f0de2546ef3d9d28815fa6e640d1dc" title="Determine whether this class is considered trivially copyable per (C++11 [class]p6).">CXXRecordDecl::isTriviallyCopyable</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>   <span class="comment">// C++0x [class]p5:</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>   <span class="comment">//   A trivially copyable class is a class that:</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span>   <span class="comment">//   -- has no non-trivial copy constructors,</span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#ad297bf5844cf9d6f1fd36074daf19ef0" title="Determine whether this class has a non-trivial copy constructor (C++ [class.copy]p6, C++11 [class.copy]p12)">hasNonTrivialCopyConstructor</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>   <span class="comment">//   -- has no non-trivial move constructors,</span></div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#a999e098e3bc1988f496608ae0d83993f" title="Determine whether this class has a non-trivial move constructor (C++11 [class.copy]p12)">hasNonTrivialMoveConstructor</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="comment">//   -- has no non-trivial copy assignment operators,</span></div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#a7ae435b8a90cabb17c3493348dc83b06" title="Determine whether this class has a non-trivial copy assignment operator (C++ [class.copy]p11, C++11 [class.copy]p25)">hasNonTrivialCopyAssignment</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   <span class="comment">//   -- has no non-trivial move assignment operators, and</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#a214520f28d6d9f4ebbe61ba0a9df0c9e" title="Determine whether this class has a non-trivial move assignment operator (C++11 [class.copy]p25)">hasNonTrivialMoveAssignment</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>   <span class="comment">//   -- has a trivial destructor.</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span> </div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span> }</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span> </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span> <span class="keywordtype">void</span> CXXRecordDecl::markedVirtualFunctionPure() {</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   <span class="comment">// C++ [class.abstract]p2: </span></div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   <span class="comment">//   A class is abstract if it has at least one pure virtual function.</span></div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Abstract = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> }</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> </div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> <span class="keywordtype">void</span> CXXRecordDecl::addedMember(<a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keywordflow">if</span> (!D-><a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">isImplicit</a>() &&</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>       !isa<FieldDecl>(D) &&</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>       !isa<IndirectFieldDecl>(D) &&</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>       (!isa<TagDecl>(D) || cast<TagDecl>(D)->getTagKind() == <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548a0b3e619f5623e9e4395e10893c265d84" title="The "class" keyword.">TTK_Class</a> ||</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>         cast<TagDecl>(D)-><a class="code" href="classclang_1_1TagDecl.html#a085b44700ac5a2dfce438c48a4378aae">getTagKind</a>() == <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548ae64df2e260305d75869b902aa85fa52d" title="The "__interface" keyword.">TTK_Interface</a>))</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasOnlyCMembers = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <span class="comment">// Ignore friends and invalid declarations.</span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#a93ed199db8cffcdd6a2729a3b333d2c7" title="Determines whether this declaration is the object of a friend declaration and, if so...">getFriendObjectKind</a>() || D-><a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>())</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>   </div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>   <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *FunTmpl = dyn_cast<<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a>>(D);</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="keywordflow">if</span> (FunTmpl)</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>     D = FunTmpl-><a class="code" href="classclang_1_1FunctionTemplateDecl.html#ad81ffc46ec5f0ff58641b23a787c55e5" title="Get the underlying function declaration of the template.">getTemplatedDecl</a>();</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   </div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *Method = dyn_cast<CXXMethodDecl>(D)) {</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>     <span class="keywordflow">if</span> (Method->isVirtual()) {</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       <span class="comment">// C++ [dcl.init.aggr]p1:</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       <span class="comment">//   An aggregate is an array or a class with [...] no virtual functions.</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Aggregate = <span class="keyword">false</span>;</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>       <span class="comment">// C++ [class]p4:</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       <span class="comment">//   A POD-struct is an aggregate class...</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</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>       <span class="comment">// Virtual functions make the class non-empty.</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       <span class="comment">// FIXME: Standard ref?</span></div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> </div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       <span class="comment">// C++ [class.virtual]p1:</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="comment">//   A class that declares or inherits a virtual function is called a </span></div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>       <span class="comment">//   polymorphic class.</span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Polymorphic = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> </div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="comment">// C++11 [class.ctor]p5, C++11 [class.copy]p12, C++11 [class.copy]p25:</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>       <span class="comment">//   A [default constructor, copy/move constructor, or copy/move</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>       <span class="comment">//   assignment operator for a class X] is trivial [...] if:</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>       <span class="comment">//    -- class X has no virtual functions [...]</span></div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= SMF_Destructor;</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span> </div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>       <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       <span class="comment">//   A standard-layout class is a class that: [...]</span></div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <span class="comment">//    -- has no virtual functions</span></div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     }</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   }</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span> </div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   <span class="comment">// Notify the listener if an implicit member was added after the definition</span></div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>   <span class="comment">// was completed.</span></div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1TagDecl.html#a9266d1647f8010e74f9ab657b7b0fb96" title="isBeingDefined - Return true if this decl is currently being defined.">isBeingDefined</a>() && D-><a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">isImplicit</a>())</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ASTMutationListener.html" title="An abstract interface that should be implemented by listeners that want to be notified when an AST en...">ASTMutationListener</a> *L = <a class="code" href="classclang_1_1Decl.html#a12f9332ca138dc5530583011f86c90b9">getASTMutationListener</a>())</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       L->AddedCXXImplicitMember(<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Definition, D);</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>   <span class="comment">// The kind of special member this declaration is, if any.</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>   <span class="keywordtype">unsigned</span> SMKind = 0;</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>   <span class="comment">// Handle constructors.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor = dyn_cast<CXXConstructorDecl>(D)) {</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="keywordflow">if</span> (!Constructor->isImplicit()) {</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>       <span class="comment">// Note that we have a user-declared constructor.</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().UserDeclaredConstructor = <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>       <span class="comment">// C++ [class]p4:</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>       <span class="comment">//   A POD-struct is an aggregate class [...]</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>       <span class="comment">// Since the POD bit is meant to be C++03 POD-ness, clear it even if the</span></div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>       <span class="comment">// type is technically an aggregate in C++0x since it wouldn't be in 03.</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     }</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span> </div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="comment">// Technically, "user-provided" is only defined for special member</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="comment">// functions, but the intent of the standard is clearly that it should apply</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     <span class="comment">// to all functions.</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     <span class="keywordtype">bool</span> UserProvided = Constructor->isUserProvided();</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="keywordflow">if</span> (Constructor->isDefaultConstructor()) {</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>       SMKind |= SMF_DefaultConstructor;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> </div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       <span class="keywordflow">if</span> (UserProvided)</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().UserProvidedDefaultConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>       <span class="keywordflow">if</span> (Constructor->isConstexpr())</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasConstexprDefaultConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>     }</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span> </div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>     <span class="keywordflow">if</span> (!FunTmpl) {</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>       <span class="keywordtype">unsigned</span> Quals;</div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>       <span class="keywordflow">if</span> (Constructor->isCopyConstructor(Quals)) {</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>         SMKind |= SMF_CopyConstructor;</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>         <span class="keywordflow">if</span> (Quals & <a class="code" href="classclang_1_1Qualifiers.html#a2754b754fd8a09705c060dc7b48badfea453669a6a4ff7ce22ec7b1024079aaf9">Qualifiers::Const</a>)</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasDeclaredCopyConstructorWithConstParam = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Constructor->isMoveConstructor())</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>         SMKind |= SMF_MoveConstructor;</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>     }</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span> </div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="comment">// Record if we see any constexpr constructors which are neither copy</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>     <span class="comment">// nor move constructors.</span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>     <span class="keywordflow">if</span> (Constructor->isConstexpr() && !Constructor->isCopyOrMoveConstructor())</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasConstexprNonCopyMoveConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> </div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="comment">// C++ [dcl.init.aggr]p1:</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>     <span class="comment">//   An aggregate is an array or a class with no user-declared</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>     <span class="comment">//   constructors [...].</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     <span class="comment">// C++11 [dcl.init.aggr]p1:</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     <span class="comment">//   An aggregate is an array or a class with no user-provided</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     <span class="comment">//   constructors [...].</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().CPlusPlus11</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>           ? UserProvided : !Constructor->isImplicit())</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Aggregate = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   }</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> </div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>   <span class="comment">// Handle destructors.</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *DD = dyn_cast<CXXDestructorDecl>(D)) {</div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     SMKind |= SMF_Destructor;</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> </div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>     <span class="keywordflow">if</span> (!DD->isImplicit())</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasIrrelevantDestructor = <span class="keyword">false</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>     <span class="comment">// C++11 [class.dtor]p5:</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>     <span class="comment">//   A destructor is trivial if [...] the destructor is not virtual.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>     <span class="keywordflow">if</span> (DD->isVirtual())</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_Destructor;</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>   }</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="comment">// Handle member functions.</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *Method = dyn_cast<CXXMethodDecl>(D)) {</div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="keywordflow">if</span> (Method->isCopyAssignmentOperator()) {</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>       SMKind |= SMF_CopyAssignment;</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>       <span class="keyword">const</span> <a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a> *ParamTy =</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>         Method->getParamDecl(0)->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a>>();</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>       <span class="keywordflow">if</span> (!ParamTy || ParamTy-><a class="code" href="classclang_1_1ReferenceType.html#a365c62bb573a3c4b55b4ce408f975ae3">getPointeeType</a>().<a class="code" href="classclang_1_1QualType.html#afea72c89b99446db779fcfb0ea257826" title="Determine whether this type is const-qualified.">isConstQualified</a>())</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasDeclaredCopyAssignmentWithConstParam = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     }</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> </div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>     <span class="keywordflow">if</span> (Method->isMoveAssignmentOperator())</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>       SMKind |= SMF_MoveAssignment;</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> </div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>     <span class="comment">// Keep the list of conversion functions up-to-date.</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXConversionDecl.html" title="Represents a C++ conversion function within a class.">CXXConversionDecl</a> *Conversion = dyn_cast<CXXConversionDecl>(D)) {</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>       <span class="comment">// FIXME: We use the 'unsafe' accessor for the access specifier here,</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>       <span class="comment">// because Sema may not have set it yet. That's really just a misdesign</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>       <span class="comment">// in Sema. However, LLDB *will* have set the access specifier correctly,</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>       <span class="comment">// and adds declarations after the class is technically completed,</span></div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>       <span class="comment">// so completeDefinition()'s overriding of the access specifiers doesn't</span></div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>       <span class="comment">// work.</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span>       <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> AS = Conversion->getAccessUnsafe();</div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> </div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>       <span class="keywordflow">if</span> (Conversion->getPrimaryTemplate()) {</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>         <span class="comment">// We don't record specializations.</span></div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>         <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>         <a class="code" href="classclang_1_1ASTUnresolvedSet.html" title="An UnresolvedSet-like class which uses the ASTContext's allocator.">ASTUnresolvedSet</a> &Conversions = <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Conversions.get(Ctx);</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>         <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *Primary =</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>             FunTmpl ? cast<NamedDecl>(FunTmpl) : cast<NamedDecl>(Conversion);</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>         <span class="keywordflow">if</span> (Primary-><a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a" title="Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>())</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>           Conversions.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a3bbeb348ebc46d1b58365a04ed6136d7">replace</a>(cast<NamedDecl>(Primary-><a class="code" href="classclang_1_1Decl.html#a89eb85283ad2678e94841d45c0a30c3a" title="Retrieve the previous declaration that declares the same entity as this declaration, or NULL if there is no previous declaration.">getPreviousDecl</a>()),</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>                               Primary, AS);</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>           Conversions.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7a29759f2dd0ca4941646d384713b01f">addDecl</a>(Ctx, Primary, AS);</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>     }</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> </div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <span class="keywordflow">if</span> (SMKind) {</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       <span class="comment">// If this is the first declaration of a special member, we no longer have</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>       <span class="comment">// an implicit trivial special member.</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &=</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DeclaredSpecialMembers | ~SMKind;</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>       <span class="keywordflow">if</span> (!Method->isImplicit() && !Method->isUserProvided()) {</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>         <span class="comment">// This method is user-declared but not user-provided. We can't work out</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>         <span class="comment">// whether it's trivial yet (not until we get to the end of the class).</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>         <span class="comment">// We'll handle this method in finishedDefaultedOrDeletedMember.</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Method->isTrivial())</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers |= SMKind;</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DeclaredNonTrivialSpecialMembers |= SMKind;</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="comment">// Note when we have declared a declared special member, and suppress the</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>       <span class="comment">// implicit declaration of this special member.</span></div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DeclaredSpecialMembers |= SMKind;</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span> </div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>       <span class="keywordflow">if</span> (!Method->isImplicit()) {</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().UserDeclaredSpecialMembers |= SMKind;</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>         <span class="comment">// C++03 [class]p4:</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span>         <span class="comment">//   A POD-struct is an aggregate class that has [...] no user-defined</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>         <span class="comment">//   copy assignment operator and no user-defined destructor.</span></div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         <span class="comment">//</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span>         <span class="comment">// Since the POD bit is meant to be C++03 POD-ness, and in C++03,</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>         <span class="comment">// aggregates could not have any constructors, clear it even for an</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>         <span class="comment">// explicitly defaulted or deleted constructor.</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>         <span class="comment">// type is technically an aggregate in C++0x since it wouldn't be in 03.</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>         <span class="comment">//</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>         <span class="comment">// Also, a user-declared move assignment operator makes a class non-POD.</span></div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>         <span class="comment">// This is an extension in C++03.</span></div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>       }</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>     }</div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span> </div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>     <span class="keywordflow">return</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> </div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span>   <span class="comment">// Handle non-static data members.</span></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *Field = dyn_cast<FieldDecl>(D)) {</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span>     <span class="comment">// C++ [class.bit]p2:</span></div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span>     <span class="comment">//   A declaration for a bit-field that omits the identifier declares an </span></div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>     <span class="comment">//   unnamed bit-field. Unnamed bit-fields are not members and cannot be </span></div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>     <span class="comment">//   initialized.</span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>     <span class="keywordflow">if</span> (Field->isUnnamedBitfield())</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span>     </div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span>     <span class="comment">// C++ [dcl.init.aggr]p1:</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span>     <span class="comment">//   An aggregate is an array or a class (clause 9) with [...] no</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>     <span class="comment">//   private or protected non-static data members (clause 11).</span></div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span>     <span class="comment">// A POD must be an aggregate.    </span></div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>     <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>() == <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa7be90b0dcbe2c1b4391457330f68aafa">AS_private</a> || D-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>() == <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa2228b99b74e17dd9730ec288f10842e8">AS_protected</a>) {</div>
+<div class="line"><a name="l00638"></a><span class="lineno">  638</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Aggregate = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</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>     <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="comment">//   A standard-layout class is a class that:</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>     <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     <span class="comment">//    -- has the same access control for all non-static data members,</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>     <span class="keywordflow">switch</span> (D-><a class="code" href="classclang_1_1Decl.html#a81e82461f69e9a50e129ef4bfac42987">getAccess</a>()) {</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa7be90b0dcbe2c1b4391457330f68aafa">AS_private</a>:    <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasPrivateFields = <span class="keyword">true</span>;   <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa2228b99b74e17dd9730ec288f10842e8">AS_protected</a>:  <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasProtectedFields = <span class="keyword">true</span>; <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa163ae3a419460301961bc458f8f01fd3">AS_public</a>:     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasPublicFields = <span class="keyword">true</span>;    <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988fa24d2c10b569678923a7bff78b68cb02b">AS_none</a>:       llvm_unreachable(<span class="stringliteral">"Invalid access specifier"</span>);</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>     };</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>     <span class="keywordflow">if</span> ((<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasPrivateFields + <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasProtectedFields +</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>          <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasPublicFields) > 1)</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span> </div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="comment">// Keep track of the presence of mutable fields.</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span>     <span class="keywordflow">if</span> (Field->isMutable())</div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasMutableFields = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>     </div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span>     <span class="comment">// C++0x [class]p9:</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span>     <span class="comment">//   A POD struct is a class that is both a trivial class and a </span></div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span>     <span class="comment">//   standard-layout class, and has no non-static data members of type </span></div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>     <span class="comment">//   non-POD struct, non-POD union (or array of such types).</span></div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>     <span class="comment">//</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>     <span class="comment">// Automatic Reference Counting: the presence of a member of Objective-C pointer type</span></div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>     <span class="comment">// that does not explicitly have no lifetime makes the class a non-POD.</span></div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="comment">// However, we delay setting PlainOldData to false in this case so that</span></div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>     <span class="comment">// Sema has a chance to diagnostic causes where the same class will be</span></div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>     <span class="comment">// non-POD with Automatic Reference Counting but a POD without ARC.</span></div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>     <span class="comment">// In this case, the class will become a non-POD class when we complete</span></div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="comment">// the definition.</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a> = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     <a class="code" href="classclang_1_1QualType.html">QualType</a> T = Context.<a class="code" href="classclang_1_1ASTContext.html#ac70f0cc2404d89f7e086b68514f2741a" title="Return the innermost element type of an array type.">getBaseElementType</a>(Field->getType());</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#aefead70d5348015b03c14f274621789c">isObjCRetainableType</a>() || T.<a class="code" href="classclang_1_1QualType.html#a14082db735b2de31f1c3a117b52016e4" title="isObjCGCStrong true when Type is objc's strong.">isObjCGCStrong</a>()) {</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>       <span class="keywordflow">if</span> (!Context.<a class="code" href="classclang_1_1ASTContext.html#a3faa7b5a5e8d1637c53dea680acca0ff">getLangOpts</a>().ObjCAutoRefCount ||</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>           T.<a class="code" href="classclang_1_1QualType.html#abf2b347a1ba0ed6b4fad08600273324f" title="getObjCLifetime - Returns lifetime attribute of this type.">getObjCLifetime</a>() != <a class="code" href="classclang_1_1Qualifiers.html#a1280e3f4075ff54f856987cf002ba300a1868aff47acf923ca643cb6950363615">Qualifiers::OCL_ExplicitNone</a>)</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         <a class="code" href="classclang_1_1RecordDecl.html#a92594398b3504a22693556ce3637d079">setHasObjectMember</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>     } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!T.<a class="code" href="classclang_1_1QualType.html#a3a08836efbefa7a6cd172f91e2ecb43c">isCXX98PODType</a>(Context))</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</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">if</span> (T-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) {</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>       <span class="keywordflow">if</span> (!Field->hasInClassInitializer())</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasUninitializedReferenceMember = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span> </div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>       <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>       <span class="comment">//   A standard-layout class is a class that:</span></div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>       <span class="comment">//    -- has no non-static data members of type [...] reference,</span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     }</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> </div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="comment">// Record if this field is the first non-literal or volatile field or base.</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>     <span class="keywordflow">if</span> (!T-><a class="code" href="classclang_1_1Type.html#a67864aaa7a3c3a3738d57ae21a636942">isLiteralType</a>(Context) || T.<a class="code" href="classclang_1_1QualType.html#ace32f56eadc42b2bcf235fccd5a571af" title="Determine whether this type is volatile-qualified.">isVolatileQualified</a>())</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasNonLiteralTypeFieldsOrBases = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span> </div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>     <span class="keywordflow">if</span> (Field->hasInClassInitializer()) {</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasInClassInitializer = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> </div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>       <span class="comment">// C++11 [class]p5:</span></div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>       <span class="comment">//   A default constructor is trivial if [...] no non-static data member</span></div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>       <span class="comment">//   of its class has a brace-or-equal-initializer.</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_DefaultConstructor;</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> </div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>       <span class="comment">// C++11 [dcl.init.aggr]p1:</span></div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       <span class="comment">//   An aggregate is a [...] class with [...] no</span></div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>       <span class="comment">//   brace-or-equal-initializers for non-static data members.</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       <span class="comment">//</span></div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>       <span class="comment">// This rule was removed in C++1y.</span></div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>       <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>().getLangOpts().<a class="code" href="namespaceclang_1_1frontend.html#a09dfa01c4e997a3794d80922c5e853bba4803e9efe1f7b6b5b9fdc9fc86bc0957">CPlusPlus1y</a>)</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Aggregate = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span> </div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span>       <span class="comment">// C++11 [class]p10:</span></div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span>       <span class="comment">//   A POD struct is [...] a trivial class.</span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().PlainOldData = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>     }</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span> </div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>     <span class="comment">// C++11 [class.copy]p23:</span></div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="comment">//   A defaulted copy/move assignment operator for a class X is defined</span></div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>     <span class="comment">//   as deleted if X has:</span></div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>     <span class="comment">//    -- a non-static data member of reference type</span></div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     <span class="keywordflow">if</span> (T-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>())</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedMoveAssignmentIsDeleted = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> </div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RecordTy = T-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()) {</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a>* FieldRec = cast<CXXRecordDecl>(RecordTy->getDecl());</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>       <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a2bd01ec3ffb06b176ced1bfc31abd99f">getDefinition</a>()) {</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>         addedClassSubobject(FieldRec);</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> </div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>         <span class="comment">// We may need to perform overload resolution to determine whether a</span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span>         <span class="comment">// field can be moved if it's const or volatile qualified.</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>         <span class="keywordflow">if</span> (T.<a class="code" href="classclang_1_1QualType.html#abc6490a992eabbeb68526d3104fd4b66" title="Retrieve the set of CVR (const-volatile-restrict) qualifiers applied to this type.">getCVRQualifiers</a>() & (<a class="code" href="classclang_1_1Qualifiers.html#a2754b754fd8a09705c060dc7b48badfea453669a6a4ff7ce22ec7b1024079aaf9">Qualifiers::Const</a> | <a class="code" href="classclang_1_1Qualifiers.html#a2754b754fd8a09705c060dc7b48badfea112191d3a4ad9cbd57f138a0c95e9f6f">Qualifiers::Volatile</a>)) {</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NeedOverloadResolutionForMoveConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().NeedOverloadResolutionForMoveAssignment = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>         }</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>         <span class="comment">// C++11 [class.ctor]p5, C++11 [class.copy]p11:</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>         <span class="comment">//   A defaulted [special member] for a class X is defined as</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>         <span class="comment">//   deleted if:</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>         <span class="comment">//    -- X is a union-like class that has a variant member with a</span></div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>         <span class="comment">//       non-trivial [corresponding special member]</span></div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>         <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()) {</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>           <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a999e098e3bc1988f496608ae0d83993f" title="Determine whether this class has a non-trivial move constructor (C++11 [class.copy]p12)">hasNonTrivialMoveConstructor</a>())</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</span>             <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedMoveConstructorIsDeleted = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>           <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a214520f28d6d9f4ebbe61ba0a9df0c9e" title="Determine whether this class has a non-trivial move assignment operator (C++11 [class.copy]p25)">hasNonTrivialMoveAssignment</a>())</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>             <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedMoveAssignmentIsDeleted = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>           <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a314cd1ab631ceecd9f9bc2b3acd059d5" title="Determine whether this class has a non-trivial destructor (C++ [class.dtor]p3)">hasNonTrivialDestructor</a>())</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>             <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedDestructorIsDeleted = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>         }</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span> </div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>         <span class="comment">// C++0x [class.ctor]p5:</span></div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>         <span class="comment">//   A default constructor is trivial [...] if:</span></div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>         <span class="comment">//    -- for all the non-static data members of its class that are of</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>         <span class="comment">//       class type (or array thereof), each such class has a trivial</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>         <span class="comment">//       default constructor.</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#adef284fa5d796f8312681f67ae05f87b" title="Determine whether this class has a trivial default constructor (C++11 [class.ctor]p5).">hasTrivialDefaultConstructor</a>())</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_DefaultConstructor;</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>         <span class="comment">// C++0x [class.copy]p13:</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>         <span class="comment">//   A copy/move constructor for class X is trivial if [...]</span></div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>         <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span>         <span class="comment">//    -- for each non-static data member of X that is of class type (or</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span>         <span class="comment">//       an array thereof), the constructor selected to copy/move that</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span>         <span class="comment">//       member is trivial;</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#ab8839e371c9c9d02ab43f0de669969a7" title="Determine whether this class has a trivial copy constructor (C++ [class.copy]p6, C++11 [class...">hasTrivialCopyConstructor</a>())</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_CopyConstructor;</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>         <span class="comment">// If the field doesn't have a simple move constructor, we'll eagerly</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span>         <span class="comment">// declare the move constructor for this class and we'll decide whether</span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span>         <span class="comment">// it's trivial then.</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a07897d986b167418bc3debd8be7e37d4" title="Determine whether this class has a trivial move constructor (C++11 [class.copy]p12)">hasTrivialMoveConstructor</a>())</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_MoveConstructor;</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span> </div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span>         <span class="comment">// C++0x [class.copy]p27:</span></div>
+<div class="line"><a name="l00772"></a><span class="lineno">  772</span>         <span class="comment">//   A copy/move assignment operator for class X is trivial if [...]</span></div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>         <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>         <span class="comment">//    -- for each non-static data member of X that is of class type (or</span></div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</span>         <span class="comment">//       an array thereof), the assignment operator selected to</span></div>
+<div class="line"><a name="l00776"></a><span class="lineno">  776</span>         <span class="comment">//       copy/move that member is trivial;</span></div>
+<div class="line"><a name="l00777"></a><span class="lineno">  777</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a23982e32c70367ecf0a47d4fbb8cae63" title="Determine whether this class has a trivial copy assignment operator (C++ [class.copy]p11, C++11 [class.copy]p25)">hasTrivialCopyAssignment</a>())</div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_CopyAssignment;</div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span>         <span class="comment">// If the field doesn't have a simple move assignment, we'll eagerly</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>         <span class="comment">// declare the move assignment for this class and we'll decide whether</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span>         <span class="comment">// it's trivial then.</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno">  782</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a33442e47a5c45784a830b49ad54cee83" title="Determine whether this class has a trivial move assignment operator (C++11 [class.copy]p25)">hasTrivialMoveAssignment</a>())</div>
+<div class="line"><a name="l00783"></a><span class="lineno">  783</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_MoveAssignment;</div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span> </div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5ba24967342c02411fb14790a24b8a8a" title="Determine whether this class has a trivial destructor (C++ [class.dtor]p3)">hasTrivialDestructor</a>())</div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers &= ~SMF_Destructor;</div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#ad49d7b9b70503d49eea0ad9f4cad45b5" title="Determine whether this class has a destructor which has no semantic effect.">hasIrrelevantDestructor</a>())</div>
+<div class="line"><a name="l00788"></a><span class="lineno">  788</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasIrrelevantDestructor = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00789"></a><span class="lineno">  789</span>         <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1RecordDecl.html#a0fbd75f4cfcc85aeaa36554078a1e62f">hasObjectMember</a>())</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>           <a class="code" href="classclang_1_1RecordDecl.html#a92594398b3504a22693556ce3637d079">setHasObjectMember</a>(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</span>         <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1RecordDecl.html#a3d62e73b14bb7b7f8579b87f1348e6da">hasVolatileMember</a>())</div>
+<div class="line"><a name="l00792"></a><span class="lineno">  792</span>           <a class="code" href="classclang_1_1RecordDecl.html#aa6ebd5306b3862f1e9403a07c707dd4c">setHasVolatileMember</a>(<span class="keyword">true</span>);</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="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>         <span class="comment">//   A standard-layout class is a class that:</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>         <span class="comment">//    -- has no non-static data members of type non-standard-layout</span></div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>         <span class="comment">//       class (or array of such types) [...]</span></div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a23cab686c3290814c6c65581b8a5e3ae" title="Determine whether this class has standard layout per (C++ [class]p7)">isStandardLayout</a>())</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</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>         <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>         <span class="comment">//   A standard-layout class is a class that:</span></div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>         <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>         <span class="comment">//    -- has no base classes of the same type as the first non-static</span></div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>         <span class="comment">//       data member.</span></div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>         <span class="comment">// We don't want to expend bits in the state of the record decl</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>         <span class="comment">// tracking whether this is the first non-static data member so we</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span>         <span class="comment">// cheat a bit and use some of the existing state: the empty bit.</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>         <span class="comment">// Virtual bases and virtual methods make a class non-empty, but they</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span>         <span class="comment">// also make it non-standard-layout so we needn't check here.</span></div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>         <span class="comment">// A non-empty base class may leave the class standard-layout, but not</span></div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>         <span class="comment">// if we have arrived here, and have at least on non-static data</span></div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>         <span class="comment">// member. If IsStandardLayout remains true, then the first non-static</span></div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span>         <span class="comment">// data member must come through here with Empty still true, and Empty</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>         <span class="comment">// will subsequently be set to false below.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>         <span class="keywordflow">if</span> (<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout && <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty) {</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>           <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_const_iterator</a> BI = <a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(),</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>                                                         BE = <a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>();</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>                BI != BE; ++BI) {</div>
+<div class="line"><a name="l00820"></a><span class="lineno">  820</span>             <span class="keywordflow">if</span> (Context.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(BI->getType(), T)) {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>               <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>               <span class="keywordflow">break</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>           }</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>         }</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>         </div>
+<div class="line"><a name="l00827"></a><span class="lineno">  827</span>         <span class="comment">// Keep track of the presence of mutable fields.</span></div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>         <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#ac4031735e5a340216c6085cc0bb44f61" title="Determine whether this class, or any of its class subobjects, contains a mutable field.">hasMutableFields</a>())</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasMutableFields = <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>         <span class="comment">// C++11 [class.copy]p13:</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>         <span class="comment">//   If the implicitly-defined constructor would satisfy the</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>         <span class="comment">//   requirements of a constexpr constructor, the implicitly-defined</span></div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span>         <span class="comment">//   constructor is constexpr.</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span>         <span class="comment">// C++11 [dcl.constexpr]p4:</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>         <span class="comment">//    -- every constructor involved in initializing non-static data</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span>         <span class="comment">//       members [...] shall be a constexpr constructor</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span>         <span class="keywordflow">if</span> (!Field->hasInClassInitializer() &&</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>             !FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a272e5ce94037e8f0135068c3adcc5a54" title="Determine whether this class has a constexpr default constructor.">hasConstexprDefaultConstructor</a>() && !<a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>())</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>           <span class="comment">// The standard requires any in-class initializer to be a constant</span></div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>           <span class="comment">// expression. We consider this to be a defect.</span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedDefaultConstructorIsConstexpr = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</span> </div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span>         <span class="comment">// C++11 [class.copy]p8:</span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span>         <span class="comment">//   The implicitly-declared copy constructor for a class X will have</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>         <span class="comment">//   the form 'X::X(const X&)' if [...] for all the non-static data</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span>         <span class="comment">//   members of X that are of a class type M (or array thereof), each</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span>         <span class="comment">//   such class type has a copy constructor whose first parameter is</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span>         <span class="comment">//   of type 'const M&' or 'const volatile M&'.</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a3f6abf70d4e8afcfd423fdfb75063d02" title="Determine whether this class has a copy constructor with a parameter type which is a reference to a c...">hasCopyConstructorWithConstParam</a>())</div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ImplicitCopyConstructorHasConstParam = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span> </div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>         <span class="comment">// C++11 [class.copy]p18:</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span>         <span class="comment">//   The implicitly-declared copy assignment oeprator for a class X will</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span>         <span class="comment">//   have the form 'X& X::operator=(const X&)' if [...] for all the</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>         <span class="comment">//   non-static data members of X that are of a class type M (or array</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>         <span class="comment">//   thereof), each such class type has a copy assignment operator whose</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>         <span class="comment">//   parameter is of type 'const M&', 'const volatile M&' or 'M'.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>         <span class="keywordflow">if</span> (!FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#a4368f6c8e44275ac9096b4f8556d7a8d" title="Determine whether this class has a copy assignment operator with a parameter type which is a referenc...">hasCopyAssignmentWithConstParam</a>())</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ImplicitCopyAssignmentHasConstParam = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span> </div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>         <span class="keywordflow">if</span> (FieldRec-><a class="code" href="classclang_1_1CXXRecordDecl.html#adf029987d8735f73c29ed7c6af14ebb7" title="Whether this class or any of its subobjects has any members of reference type which would make value-...">hasUninitializedReferenceMember</a>() &&</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>             !Field->hasInClassInitializer())</div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasUninitializedReferenceMember = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>       }</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span>       <span class="comment">// Base element type of field is a non-class type.</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span>       <span class="keywordflow">if</span> (!T-><a class="code" href="classclang_1_1Type.html#a67864aaa7a3c3a3738d57ae21a636942">isLiteralType</a>(Context) ||</div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span>           (!Field->hasInClassInitializer() && !<a class="code" href="classclang_1_1TagDecl.html#a76233fd9169fc9bfa27603ad5477f02a">isUnion</a>()))</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedDefaultConstructorIsConstexpr = <span class="keyword">false</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>       <span class="comment">// C++11 [class.copy]p23:</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>       <span class="comment">//   A defaulted copy/move assignment operator for a class X is defined</span></div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>       <span class="comment">//   as deleted if X has:</span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>       <span class="comment">//    -- a non-static data member of const non-class type (or array</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>       <span class="comment">//       thereof)</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>       <span class="keywordflow">if</span> (T.<a class="code" href="classclang_1_1QualType.html#afea72c89b99446db779fcfb0ea257826" title="Determine whether this type is const-qualified.">isConstQualified</a>())</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DefaultedMoveAssignmentIsDeleted = <span class="keyword">true</span>;</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>     <span class="comment">// C++0x [class]p7:</span></div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="comment">//   A standard-layout class is a class that:</span></div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="comment">//    [...]</span></div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>     <span class="comment">//    -- either has no non-static data members in the most derived</span></div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     <span class="comment">//       class and at most one base class with non-static data members,</span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span>     <span class="comment">//       or has no base classes with non-static data members, and</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>     <span class="comment">// At this point we know that we have a non-static data member, so the last</span></div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     <span class="comment">// clause holds.</span></div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>     <span class="keywordflow">if</span> (!<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasNoNonEmptyBases)</div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().IsStandardLayout = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span> </div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>     <span class="comment">// If this is not a zero-length bit-field, then the class is not empty.</span></div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>     <span class="keywordflow">if</span> (<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty) {</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span>       <span class="keywordflow">if</span> (!Field->isBitField() ||</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span>           (!Field->getBitWidth()->isTypeDependent() &&</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>            !Field->getBitWidth()->isValueDependent() &&</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>            Field->getBitWidthValue(Context) != 0))</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Empty = <span class="keyword">false</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>   }</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>   </div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>   <span class="comment">// Handle using declarations of conversion functions.</span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1UsingShadowDecl.html" title="Represents a shadow declaration introduced into a scope by a (resolved) using declaration.">UsingShadowDecl</a> *Shadow = dyn_cast<UsingShadowDecl>(D)) {</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     <span class="keywordflow">if</span> (Shadow->getDeclName().getNameKind()</div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>           == <a class="code" href="classclang_1_1DeclarationName.html#a9ab322d434446b43379d39e41af5cbe3aecafb8f0bcaa01d99791b0bebf534ac6">DeclarationName::CXXConversionFunctionName</a>) {</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>       <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Conversions.get(Ctx).addDecl(Ctx, Shadow, Shadow->getAccess());</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> }</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span> </div>
+<div class="line"><a name="l00912"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a8e01da420c739563af69e7c105d28efc">  912</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a8e01da420c739563af69e7c105d28efc" title="Indicates that the declaration of a defaulted or deleted special member function is now complete...">CXXRecordDecl::finishedDefaultedOrDeletedMember</a>(<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *D) {</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>   assert(!D-><a class="code" href="classclang_1_1Decl.html#ac4fdc680ed3574eb8630eb54d7869125">isImplicit</a>() && !D-><a class="code" href="classclang_1_1CXXMethodDecl.html#a2c0242f39fc3d21693c0b7ae3cbebd47">isUserProvided</a>());</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span> </div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>   <span class="comment">// The kind of special member this declaration is, if any.</span></div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>   <span class="keywordtype">unsigned</span> SMKind = 0;</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>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXConstructorDecl.html" title="Represents a C++ constructor within a class.">CXXConstructorDecl</a> *Constructor = dyn_cast<CXXConstructorDecl>(D)) {</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     <span class="keywordflow">if</span> (Constructor->isDefaultConstructor()) {</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>       SMKind |= SMF_DefaultConstructor;</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>       <span class="keywordflow">if</span> (Constructor->isConstexpr())</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>         <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasConstexprDefaultConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>     }</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>     <span class="keywordflow">if</span> (Constructor->isCopyConstructor())</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>       SMKind |= SMF_CopyConstructor;</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Constructor->isMoveConstructor())</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>       SMKind |= SMF_MoveConstructor;</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Constructor->isConstexpr())</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>       <span class="comment">// We may now know that the constructor is constexpr.</span></div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasConstexprNonCopyMoveConstructor = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isa<CXXDestructorDecl>(D))</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     SMKind |= SMF_Destructor;</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1CXXMethodDecl.html#ad9fbe762f9ee0d3304fde847d7595a8b" title="Determine whether this is a copy-assignment operator, regardless of whether it was declared implicitl...">isCopyAssignmentOperator</a>())</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     SMKind |= SMF_CopyAssignment;</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1CXXMethodDecl.html#ae7f87d55ecf52215e8ae6c1d54a023af" title="Determine whether this is a move assignment operator.">isMoveAssignmentOperator</a>())</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>     SMKind |= SMF_MoveAssignment;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span> </div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>   <span class="comment">// Update which trivial / non-trivial special members we have.</span></div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <span class="comment">// addedMember will have skipped this step for this member.</span></div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   <span class="keywordflow">if</span> (D-><a class="code" href="classclang_1_1FunctionDecl.html#a38f30631618adf76156cc295cd88040a">isTrivial</a>())</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasTrivialSpecialMembers |= SMKind;</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span>   <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>     <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().DeclaredNonTrivialSpecialMembers |= SMKind;</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> </div>
+<div class="line"><a name="l00946"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#adc80f181a4cafb5adacccf4eb23e5509">  946</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#adc80f181a4cafb5adacccf4eb23e5509" title="True if this class is C-like, without C++-specific features, e.g. it contains only public fields...">CXXRecordDecl::isCLike</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1TagDecl.html#a085b44700ac5a2dfce438c48a4378aae">getTagKind</a>() == <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548a0b3e619f5623e9e4395e10893c265d84" title="The "class" keyword.">TTK_Class</a> || <a class="code" href="classclang_1_1TagDecl.html#a085b44700ac5a2dfce438c48a4378aae">getTagKind</a>() == <a class="code" href="namespaceclang.html#a9237bdb3cf715b9bff8bcb3172635548ae64df2e260305d75869b902aa85fa52d" title="The "__interface" keyword.">TTK_Interface</a> ||</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>       !TemplateOrInstantiation.isNull())</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#a29a073661abb8822828dab8774075563">hasDefinition</a>())</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#ab017dfe8ba1d1ecb0f781dc2d2d51635" title="Whether this class is a POD-type (C++ [class]p4)">isPOD</a>() && <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().HasOnlyCMembers;</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span> }</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>  </div>
+<div class="line"><a name="l00956"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a29bc520934e0f53eab7fcf8af73fcaa2">  956</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a29bc520934e0f53eab7fcf8af73fcaa2" title="Determine whether this class describes a generic lambda function object (i.e. function call operator ...">CXXRecordDecl::isGenericLambda</a>()<span class="keyword"> const </span>{ </div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#ab9f7e987bf58b3cb15493d8a36a8f85e" title="Determine whether this class describes a lambda function object.">isLambda</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>   <span class="keywordflow">return</span> getLambdaData().IsGenericLambda;</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span> }</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span> </div>
+<div class="line"><a name="l00961"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a024521a61554035c2b3b0ce02c9ec18e">  961</a></span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a>* <a class="code" href="classclang_1_1CXXRecordDecl.html#a024521a61554035c2b3b0ce02c9ec18e" title="Retrieve the lambda call operator of the closure type if this is a closure type.">CXXRecordDecl::getLambdaCallOperator</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#ab9f7e987bf58b3cb15493d8a36a8f85e" title="Determine whether this class describes a lambda function object.">isLambda</a>()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name = </div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a2017d2a1ae842fcf4e5df3097c7b93ba">DeclarationNames</a>.<a class="code" href="classclang_1_1DeclarationNameTable.html#a203b7bc56be9c91386d77227ee67381e">getCXXOperatorName</a>(OO_Call);</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>   <a class="code" href="classllvm_1_1ArrayRef.html">DeclContext::lookup_const_result</a> Calls = <a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(Name);</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span> </div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>   assert(!Calls.empty() && <span class="stringliteral">"Missing lambda call operator!"</span>);</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>   assert(Calls.size() == 1 && <span class="stringliteral">"More than one lambda call operator!"</span>); </div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>    </div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *CallOp = Calls.front();</div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *CallOpTmpl = </div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>                     dyn_cast<FunctionTemplateDecl>(CallOp)) </div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <span class="keywordflow">return</span> cast<CXXMethodDecl>(CallOpTmpl->getTemplatedDecl());</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>   <span class="keywordflow">return</span> cast<CXXMethodDecl>(CallOp);</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span> }</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span> </div>
+<div class="line"><a name="l00978"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a12d6987e5e773e0c318c20cb8f8d83d8">  978</a></span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a>* <a class="code" href="classclang_1_1CXXRecordDecl.html#a12d6987e5e773e0c318c20cb8f8d83d8" title="Retrieve the lambda static invoker, the address of which is returned by the conversion operator...">CXXRecordDecl::getLambdaStaticInvoker</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#ab9f7e987bf58b3cb15493d8a36a8f85e" title="Determine whether this class describes a lambda function object.">isLambda</a>()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>   <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name = </div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span>     &<a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>().<a class="code" href="classclang_1_1ASTContext.html#a4f95adb9958e22fbe55212ae6482feb4">Idents</a>.<a class="code" href="classclang_1_1IdentifierTable.html#aea14376d325400caa8a8183d14a02f39" title="Return the identifier token info for the specified named identifier.">get</a>(<a class="code" href="namespaceclang.html#ac9c5003398f250df494c5d60f5796421">getLambdaStaticInvokerName</a>());</div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>   <a class="code" href="classllvm_1_1ArrayRef.html">DeclContext::lookup_const_result</a> Invoker = <a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(Name);</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>   <span class="keywordflow">if</span> (Invoker.empty()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>   assert(Invoker.size() == 1 && <span class="stringliteral">"More than one static invoker operator!"</span>);  </div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>   <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *InvokerFun = Invoker.front();</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *InvokerTemplate =</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>                   dyn_cast<FunctionTemplateDecl>(InvokerFun)) </div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>     <span class="keywordflow">return</span> cast<CXXMethodDecl>(InvokerTemplate->getTemplatedDecl());</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>   <span class="keywordflow">return</span> cast<CXXMethodDecl>(InvokerFun); </div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span> }</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span> </div>
+<div class="line"><a name="l00993"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a280c3418f19620336fa7e1854a3f3a22">  993</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a280c3418f19620336fa7e1854a3f3a22" title="For a closure type, retrieve the mapping from captured variables and this to the non-static data memb...">CXXRecordDecl::getCaptureFields</a>(</div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>        llvm::DenseMap<const VarDecl *, FieldDecl *> &Captures,</div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>        <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *&ThisCapture)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>   Captures.clear();</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>   ThisCapture = 0;</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>   LambdaDefinitionData &Lambda = getLambdaData();</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>   <a class="code" href="classclang_1_1DeclContext_1_1specific__decl__iterator.html">RecordDecl::field_iterator</a> Field = <a class="code" href="classclang_1_1RecordDecl.html#a723c70951c30c075e7a516d1933683e4">field_begin</a>();</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   <span class="keywordflow">for</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 = Lambda.Captures, *CEnd = C + Lambda.NumCaptures;</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>        C != CEnd; ++C, ++Field) {</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>     <span class="keywordflow">if</span> (C->capturesThis())</div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>       ThisCapture = *Field;</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     <span class="keywordflow">else</span> <span class="keywordflow">if</span> (C->capturesVariable())</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>       Captures[C->getCapturedVar()] = *Field;</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>   assert(Field == <a class="code" href="classclang_1_1RecordDecl.html#a118f17574e4199f2d26cd20902dc88ca">field_end</a>());</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> }</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> <a class="code" href="classclang_1_1TemplateParameterList.html" title="Stores a list of template parameters for a TemplateDecl and its derived classes.">TemplateParameterList</a> * </div>
+<div class="line"><a name="l01012"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a5bd9ca6b0ff7f3b120a0ad190a6eb1a5"> 1012</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a5bd9ca6b0ff7f3b120a0ad190a6eb1a5" title="Retrieve the generic lambda's template parameter list. Returns null if the class does not represent a...">CXXRecordDecl::getGenericLambdaTemplateParameterList</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span>   <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1CXXRecordDecl.html#ab9f7e987bf58b3cb15493d8a36a8f85e" title="Determine whether this class describes a lambda function object.">isLambda</a>()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>   <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *CallOp = <a class="code" href="classclang_1_1CXXRecordDecl.html#a024521a61554035c2b3b0ce02c9ec18e" title="Retrieve the lambda call operator of the closure type if this is a closure type.">getLambdaCallOperator</a>();     </div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *Tmpl = CallOp-><a class="code" href="classclang_1_1FunctionDecl.html#a88c31f0a03a609ba42f357cd458ec0c6" title="Retrieves the function template that is described by this function declaration.">getDescribedFunctionTemplate</a>())</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>     <span class="keywordflow">return</span> Tmpl->getTemplateParameters();</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</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"><a class="code" href="DeclCXX_8cpp.html#ad1228d6a2ea32b1fb9e79ab73ea96949"> 1020</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> <a class="code" href="DeclCXX_8cpp.html#ad1228d6a2ea32b1fb9e79ab73ea96949">GetConversionType</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context, <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *Conv) {</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> T;</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>   <span class="keywordflow">if</span> (isa<UsingShadowDecl>(Conv))</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     Conv = cast<UsingShadowDecl>(Conv)->getTargetDecl();</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *ConvTemp = dyn_cast<FunctionTemplateDecl>(Conv))</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>     T = ConvTemp->getTemplatedDecl()->getResultType();</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>   <span class="keywordflow">else</span> </div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>     T = cast<CXXConversionDecl>(Conv)->getConversionType();</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>   <span class="keywordflow">return</span> Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(T);</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> }</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="comment"></span></div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="comment">/// Collect the visible conversions of a base class.</span></div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <span class="comment">/// \param Record a base class of the class we're considering</span></div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="comment">/// \param InVirtual whether this base class is a virtual base (or a base</span></div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="comment">///   of a virtual base)</span></div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="comment">/// \param Access the access along the inheritance path to this base</span></div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="comment">/// \param ParentHiddenTypes the conversions provided by the inheritors</span></div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span> <span class="comment">///   of this base</span></div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="comment">/// \param Output the set to which to add conversions from non-virtual bases</span></div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="comment">/// \param VOutput the set to which to add conversions from virtual bases</span></div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> <span class="comment">/// \param HiddenVBaseCs the set of conversions which were hidden in a</span></div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="comment">///   virtual base along some inheritance path</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"><a class="code" href="DeclCXX_8cpp.html#a9db24d289f47af12b7483f3e5f62e0c2"> 1043</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="DeclCXX_8cpp.html#a9db24d289f47af12b7483f3e5f62e0c2">CollectVisibleConversions</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context,</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>                                       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Record,</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>                                       <span class="keywordtype">bool</span> InVirtual,</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>                                       <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> Access,</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>                   <span class="keyword">const</span> llvm::SmallPtrSet<CanQualType, 8> &ParentHiddenTypes,</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>                                       <a class="code" href="classclang_1_1ASTUnresolvedSet.html" title="An UnresolvedSet-like class which uses the ASTContext's allocator.">ASTUnresolvedSet</a> &Output,</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>                                       <a class="code" href="classclang_1_1UnresolvedSetImpl.html" title="A set of unresolved declarations.">UnresolvedSetImpl</a> &VOutput,</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>                            llvm::SmallPtrSet<NamedDecl*, 8> &HiddenVBaseCs) {</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>   <span class="comment">// The set of types which have conversions in this class or its</span></div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>   <span class="comment">// subclasses.  As an optimization, we don't copy the derived set</span></div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>   <span class="comment">// unless it might change.</span></div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>   <span class="keyword">const</span> llvm::SmallPtrSet<CanQualType, 8> *HiddenTypes = &ParentHiddenTypes;</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>   llvm::SmallPtrSet<CanQualType, 8> HiddenTypesBuffer;</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> </div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>   <span class="comment">// Collect the direct conversions and figure out which conversions</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>   <span class="comment">// will be hidden in the subclasses.</span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>   <a class="code" href="classclang_1_1UnresolvedSetIterator.html">CXXRecordDecl::conversion_iterator</a> ConvI = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5d131b53d5705d363bff82c68685f9dd">conversion_begin</a>();</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>   <a class="code" href="classclang_1_1UnresolvedSetIterator.html">CXXRecordDecl::conversion_iterator</a> ConvE = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#ad498b9edf9506021a0bdd54bac2767ae">conversion_end</a>();</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   <span class="keywordflow">if</span> (ConvI != ConvE) {</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>     HiddenTypesBuffer = ParentHiddenTypes;</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>     HiddenTypes = &HiddenTypesBuffer;</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> </div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>     <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1UnresolvedSetIterator.html">CXXRecordDecl::conversion_iterator</a> I = ConvI; I != ConvE; ++I) {</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>       <a class="code" href="classclang_1_1CanQual.html">CanQualType</a> ConvType(<a class="code" href="DeclCXX_8cpp.html#ad1228d6a2ea32b1fb9e79ab73ea96949">GetConversionType</a>(Context, I.getDecl()));</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>       <span class="keywordtype">bool</span> Hidden = ParentHiddenTypes.count(ConvType);</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>       <span class="keywordflow">if</span> (!Hidden)</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>         HiddenTypesBuffer.insert(ConvType);</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>       <span class="comment">// If this conversion is hidden and we're in a virtual base,</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>       <span class="comment">// remember that it's hidden along some inheritance path.</span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       <span class="keywordflow">if</span> (Hidden && InVirtual)</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>         HiddenVBaseCs.insert(cast<NamedDecl>(I.getDecl()->getCanonicalDecl()));</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> </div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>       <span class="comment">// If this conversion isn't hidden, add it to the appropriate output.</span></div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!Hidden) {</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>         <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> IAccess</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>           = <a class="code" href="classclang_1_1CXXRecordDecl.html#a5a3b3b09d1bb359ce8c58e77594091de" title="Calculates the access of a decl that is reached along a path.">CXXRecordDecl::MergeAccess</a>(Access, I.getAccess());</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> </div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>         <span class="keywordflow">if</span> (InVirtual)</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>           VOutput.<a class="code" href="classclang_1_1UnresolvedSetImpl.html#af9acf1f68b7d1987270853e03df07145">addDecl</a>(I.getDecl(), IAccess);</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>         <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>           Output.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7a29759f2dd0ca4941646d384713b01f">addDecl</a>(Context, I.getDecl(), IAccess);</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"> 1087</span>   }</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> </div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>   <span class="comment">// Collect information recursively from any base classes.</span></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_iterator</a></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>          I = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(), E = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = I->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span>     <span class="keywordflow">if</span> (!RT) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> </div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     <a class="code" href="namespaceclang.html#afc8aabd1f46cf32e805cd0d970ef988f" title="A C++ access specifier (public, private, protected), plus the special value "none" which means differ...">AccessSpecifier</a> BaseAccess</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       = <a class="code" href="classclang_1_1CXXRecordDecl.html#a5a3b3b09d1bb359ce8c58e77594091de" title="Calculates the access of a decl that is reached along a path.">CXXRecordDecl::MergeAccess</a>(Access, I->getAccessSpecifier());</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>     <span class="keywordtype">bool</span> BaseInVirtual = InVirtual || I->isVirtual();</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> </div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1Base.html">Base</a> = cast<CXXRecordDecl>(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span>     <a class="code" href="DeclCXX_8cpp.html#a9db24d289f47af12b7483f3e5f62e0c2">CollectVisibleConversions</a>(Context, Base, BaseInVirtual, BaseAccess,</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span>                               *HiddenTypes, Output, VOutput, HiddenVBaseCs);</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> }</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="comment"></span></div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="comment">/// Collect the visible conversions of a class.</span></div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="comment">/// This would be extremely straightforward if it weren't for virtual</span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="comment">/// bases.  It might be worth special-casing that, really.</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"><a class="code" href="DeclCXX_8cpp.html#a07aee6b309cb1871bb65e34d6938c739"> 1109</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="DeclCXX_8cpp.html#a9db24d289f47af12b7483f3e5f62e0c2">CollectVisibleConversions</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context,</div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>                                       <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *Record,</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>                                       <a class="code" href="classclang_1_1ASTUnresolvedSet.html" title="An UnresolvedSet-like class which uses the ASTContext's allocator.">ASTUnresolvedSet</a> &Output) {</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>   <span class="comment">// The collection of all conversions in virtual bases that we've</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>   <span class="comment">// found.  These will be added to the output as long as they don't</span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>   <span class="comment">// appear in the hidden-conversions set.</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   <a class="code" href="classclang_1_1UnresolvedSet.html">UnresolvedSet<8></a> VBaseCs;</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>   <span class="comment">// The set of conversions in virtual bases that we've determined to</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>   <span class="comment">// be hidden.</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>   llvm::SmallPtrSet<NamedDecl*, 8> HiddenVBaseCs;</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> </div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   <span class="comment">// The set of types hidden by classes derived from this one.</span></div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>   llvm::SmallPtrSet<CanQualType, 8> HiddenTypes;</div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> </div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <span class="comment">// Go ahead and collect the direct conversions and add them to the</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="comment">// hidden-types set.</span></div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>   <a class="code" href="classclang_1_1UnresolvedSetIterator.html">CXXRecordDecl::conversion_iterator</a> ConvI = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a5d131b53d5705d363bff82c68685f9dd">conversion_begin</a>();</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   <a class="code" href="classclang_1_1UnresolvedSetIterator.html">CXXRecordDecl::conversion_iterator</a> ConvE = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#ad498b9edf9506021a0bdd54bac2767ae">conversion_end</a>();</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   Output.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a2058c586c38322f78510a1b9726492cf">append</a>(Context, ConvI, ConvE);</div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="keywordflow">for</span> (; ConvI != ConvE; ++ConvI)</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     HiddenTypes.insert(<a class="code" href="DeclCXX_8cpp.html#ad1228d6a2ea32b1fb9e79ab73ea96949">GetConversionType</a>(Context, ConvI.<a class="code" href="classclang_1_1UnresolvedSetIterator.html#a1dc132f2bdb962fd82fa3b8dd1584344">getDecl</a>()));</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> </div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>   <span class="comment">// Recursively collect conversions from base classes.</span></div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_iterator</a></div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>          I = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(), E = Record-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = I->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <span class="keywordflow">if</span> (!RT) <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span> </div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>     <a class="code" href="DeclCXX_8cpp.html#a9db24d289f47af12b7483f3e5f62e0c2">CollectVisibleConversions</a>(Context, cast<CXXRecordDecl>(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>()),</div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>                               I->isVirtual(), I->getAccessSpecifier(),</div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>                               HiddenTypes, Output, VBaseCs, HiddenVBaseCs);</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   }</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span> </div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>   <span class="comment">// Add any unhidden conversions provided by virtual bases.</span></div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1UnresolvedSetIterator.html">UnresolvedSetIterator</a> I = VBaseCs.<a class="code" href="classclang_1_1UnresolvedSetImpl.html#abff310806832bbb17808d17e00fc9945">begin</a>(), E = VBaseCs.<a class="code" href="classclang_1_1UnresolvedSetImpl.html#a892e6b8cc298bd101aedb480b5906c60">end</a>();</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>          I != E; ++I) {</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>     <span class="keywordflow">if</span> (!HiddenVBaseCs.count(cast<NamedDecl>(I.getDecl()->getCanonicalDecl())))</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>       Output.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7a29759f2dd0ca4941646d384713b01f">addDecl</a>(Context, I.getDecl(), I.getAccess());</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span>   }</div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> }</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> <span class="comment"></span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> <span class="comment">/// getVisibleConversionFunctions - get all conversion functions visible</span></div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> <span class="comment">/// in current class; including conversion function templates.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> <span class="comment"></span>std::pair<CXXRecordDecl::conversion_iterator,CXXRecordDecl::conversion_iterator></div>
+<div class="line"><a name="l01154"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#ac27f1f70a41c93a5b10a28a9989cc2ab"> 1154</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#ac27f1f70a41c93a5b10a28a9989cc2ab" title="Get all conversion functions visible in current class, including conversion function templates...">CXXRecordDecl::getVisibleConversionFunctions</a>() {</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Ctx = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> </div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>   <a class="code" href="classclang_1_1ASTUnresolvedSet.html" title="An UnresolvedSet-like class which uses the ASTContext's allocator.">ASTUnresolvedSet</a> *Set;</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>() == <a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>()) {</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>     <span class="comment">// If root class, all conversions are visible.</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span>     Set = &<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Conversions.get(Ctx);</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>     Set = &<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().VisibleConversions.get(Ctx);</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>     <span class="comment">// If visible conversion list is not evaluated, evaluate it.</span></div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>     <span class="keywordflow">if</span> (!<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ComputedVisibleConversions) {</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>       <a class="code" href="DeclCXX_8cpp.html#a9db24d289f47af12b7483f3e5f62e0c2">CollectVisibleConversions</a>(Ctx, <span class="keyword">this</span>, *Set);</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>       <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().ComputedVisibleConversions = <span class="keyword">true</span>;</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>   <span class="keywordflow">return</span> std::make_pair(Set-><a class="code" href="classclang_1_1ASTUnresolvedSet.html#a08553ecf915ac023e18f52273d8fe80c">begin</a>(), Set-><a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7807cae3421ee059d5c5717f9b5c6739">end</a>());</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> }</div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> </div>
+<div class="line"><a name="l01172"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#aba1347c19cec5d8ba54f6b5057be6e6a"> 1172</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#aba1347c19cec5d8ba54f6b5057be6e6a">CXXRecordDecl::removeConversion</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *ConvDecl) {</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>   <span class="comment">// This operation is O(N) but extremely rare.  Sema only uses it to</span></div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>   <span class="comment">// remove UsingShadowDecls in a class that were followed by a direct</span></div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   <span class="comment">// declaration, e.g.:</span></div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   <span class="comment">//   class A : B {</span></div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <span class="comment">//     using B::operator int;</span></div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="comment">//     operator int();</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>   <span class="comment">//   };</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>   <span class="comment">// This is uncommon by itself and even more uncommon in conjunction</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <span class="comment">// with sufficiently large numbers of directly-declared conversions</span></div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>   <span class="comment">// that asymptotic behavior matters.</span></div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> </div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>   <a class="code" href="classclang_1_1ASTUnresolvedSet.html" title="An UnresolvedSet-like class which uses the ASTContext's allocator.">ASTUnresolvedSet</a> &Convs = <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Conversions.get(<a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>());</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, E = Convs.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a9ca2f1c05594b9109e080d14250d973c">size</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>     <span class="keywordflow">if</span> (Convs[I].getDecl() == ConvDecl) {</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>       Convs.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#aa220cc3b18817972467b15dbd526749c">erase</a>(I);</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>       assert(std::find(Convs.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a08553ecf915ac023e18f52273d8fe80c">begin</a>(), Convs.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7807cae3421ee059d5c5717f9b5c6739">end</a>(), ConvDecl) == Convs.<a class="code" href="classclang_1_1ASTUnresolvedSet.html#a7807cae3421ee059d5c5717f9b5c6739">end</a>()</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>              && <span class="stringliteral">"conversion was found multiple times in unresolved set"</span>);</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>       <span class="keywordflow">return</span>;</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>   }</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> </div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>   llvm_unreachable(<span class="stringliteral">"conversion not found in set!"</span>);</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> }</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> </div>
+<div class="line"><a name="l01197"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#ac45cd075737b8802e8b1733037dc1168"> 1197</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1CXXRecordDecl.html#ac45cd075737b8802e8b1733037dc1168" title="If this record is an instantiation of a member class, retrieves the member class from which it was in...">CXXRecordDecl::getInstantiatedFromMemberClass</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MemberSpecializationInfo.html" title="Provides information a specialization of a member of a class template, which may be a member function...">MemberSpecializationInfo</a> *MSInfo = <a class="code" href="classclang_1_1CXXRecordDecl.html#a1faebb33e1cda52affba8a65f2d0a305" title="If this class is an instantiation of a member class of a class template specialization, retrieves the member specialization information.">getMemberSpecializationInfo</a>())</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>     <span class="keywordflow">return</span> cast<CXXRecordDecl>(MSInfo->getInstantiatedFrom());</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>   </div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> }</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> </div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> <span class="keywordtype">void</span> </div>
+<div class="line"><a name="l01205"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a9393456b98de0c5a8e00b541388dc352"> 1205</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a9393456b98de0c5a8e00b541388dc352" title="Specify that this record is an instantiation of the member class RD.">CXXRecordDecl::setInstantiationOfMemberClass</a>(<a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>                                              <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2" title="Describes the kind of template specialization that a particular template specialization declaration r...">TemplateSpecializationKind</a> TSK) {</div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   assert(TemplateOrInstantiation.isNull() && </div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>          <span class="stringliteral">"Previous template or instantiation?"</span>);</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   assert(!isa<ClassTemplatePartialSpecializationDecl>(<span class="keyword">this</span>));</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>   TemplateOrInstantiation </div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     = <span class="keyword">new</span> (<a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>()) <a class="code" href="classclang_1_1MemberSpecializationInfo.html" title="Provides information a specialization of a member of a class template, which may be a member function...">MemberSpecializationInfo</a>(RD, TSK);</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> }</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> </div>
+<div class="line"><a name="l01214"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a35a9c41b4ea506ae0b1a63c60139f38c"> 1214</a></span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2" title="Describes the kind of template specialization that a particular template specialization declaration r...">TemplateSpecializationKind</a> <a class="code" href="classclang_1_1CXXRecordDecl.html#a35a9c41b4ea506ae0b1a63c60139f38c" title="Determine whether this particular class is a specialization or instantiation of a class template or m...">CXXRecordDecl::getTemplateSpecializationKind</a>()<span class="keyword"> const</span>{</div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html" title="Represents a class template specialization, which refers to a class template with a given set of temp...">ClassTemplateSpecializationDecl</a> *Spec</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>         = dyn_cast<ClassTemplateSpecializationDecl>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     <span class="keywordflow">return</span> Spec->getSpecializationKind();</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>   </div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MemberSpecializationInfo.html" title="Provides information a specialization of a member of a class template, which may be a member function...">MemberSpecializationInfo</a> *MSInfo = <a class="code" href="classclang_1_1CXXRecordDecl.html#a1faebb33e1cda52affba8a65f2d0a305" title="If this class is an instantiation of a member class of a class template specialization, retrieves the member specialization information.">getMemberSpecializationInfo</a>())</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>     <span class="keywordflow">return</span> MSInfo->getTemplateSpecializationKind();</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>   </div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2a92763cc9fa42510d19b6689d36e836cb">TSK_Undeclared</a>;</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span> }</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> <span class="keywordtype">void</span> </div>
+<div class="line"><a name="l01226"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#af703af22f8137d329189f4f840043add"> 1226</a></span> <a class="code" href="classclang_1_1CXXRecordDecl.html#af703af22f8137d329189f4f840043add" title="Set the kind of specialization or template instantiation this is.">CXXRecordDecl::setTemplateSpecializationKind</a>(<a class="code" href="namespaceclang.html#ae689bf8e3dcc54751a81974a4a12c3d2" title="Describes the kind of template specialization that a particular template specialization declaration r...">TemplateSpecializationKind</a> TSK) {</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html" title="Represents a class template specialization, which refers to a class template with a given set of temp...">ClassTemplateSpecializationDecl</a> *Spec</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>       = dyn_cast<ClassTemplateSpecializationDecl>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     Spec->setSpecializationKind(TSK);</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>   }</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>   </div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MemberSpecializationInfo.html" title="Provides information a specialization of a member of a class template, which may be a member function...">MemberSpecializationInfo</a> *MSInfo = <a class="code" href="classclang_1_1CXXRecordDecl.html#a1faebb33e1cda52affba8a65f2d0a305" title="If this class is an instantiation of a member class of a class template specialization, retrieves the member specialization information.">getMemberSpecializationInfo</a>()) {</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     MSInfo->setTemplateSpecializationKind(TSK);</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>     <span class="keywordflow">return</span>;</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>   </div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>   llvm_unreachable(<span class="stringliteral">"Not a class template or member class specialization"</span>);</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> }</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> </div>
+<div class="line"><a name="l01241"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4"> 1241</a></span> <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *<a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4" title="Returns the destructor decl for this class.">CXXRecordDecl::getDestructor</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ClassType = Context.<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>   <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>     = Context.<a class="code" href="classclang_1_1ASTContext.html#a2017d2a1ae842fcf4e5df3097c7b93ba">DeclarationNames</a>.<a class="code" href="classclang_1_1DeclarationNameTable.html#a787c1713076f3e5fcaba01ac44550680">getCXXDestructorName</a>(</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>                                           Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(ClassType));</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> </div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   <a class="code" href="classllvm_1_1ArrayRef.html">DeclContext::lookup_const_result</a> R = <a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(Name);</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   <span class="keywordflow">if</span> (R.empty())</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> </div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>   <a class="code" href="classclang_1_1CXXDestructorDecl.html" title="Represents a C++ destructor within a class.">CXXDestructorDecl</a> *Dtor = cast<CXXDestructorDecl>(R.front());</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>   <span class="keywordflow">return</span> Dtor;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> }</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> </div>
+<div class="line"><a name="l01257"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#adc95fb812b9857fef1d3514459b50f8c"> 1257</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#adc95fb812b9857fef1d3514459b50f8c" title="Indicates that the definition of this class is now complete.">CXXRecordDecl::completeDefinition</a>() {</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>   <a class="code" href="classclang_1_1CXXRecordDecl.html#adc95fb812b9857fef1d3514459b50f8c" title="Indicates that the definition of this class is now complete.">completeDefinition</a>(0);</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</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"><a class="code" href="classclang_1_1CXXRecordDecl.html#a705f65d0f7868b2002758217997ac25f"> 1261</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#adc95fb812b9857fef1d3514459b50f8c" title="Indicates that the definition of this class is now complete.">CXXRecordDecl::completeDefinition</a>(<a class="code" href="classclang_1_1CXXFinalOverriderMap.html" title="A mapping from each virtual member function to its set of final overriders.">CXXFinalOverriderMap</a> *FinalOverriders) {</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>   <a class="code" href="classclang_1_1RecordDecl.html#acc8668f235e310c30c64285c46c640be">RecordDecl::completeDefinition</a>();</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>   </div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1RecordDecl.html#a0fbd75f4cfcc85aeaa36554078a1e62f">hasObjectMember</a>() && <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>().getLangOpts().ObjCAutoRefCount) {</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span>     <span class="comment">// Objective-C Automatic Reference Counting:</span></div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     <span class="comment">//   If a class has a non-static data member of Objective-C pointer</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     <span class="comment">//   type (or array thereof), it is a non-POD type and its</span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     <span class="comment">//   default constructor (if any), copy constructor, move constructor,</span></div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     <span class="comment">//   copy assignment operator, move assignment operator, and destructor are</span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>     <span class="comment">//   non-trivial.</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>     <span class="keyword">struct </span>DefinitionData &Data = <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>();</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span>     Data.PlainOldData = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     Data.HasTrivialSpecialMembers = 0;</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>     Data.HasIrrelevantDestructor = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</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>   <span class="comment">// If the class may be abstract (but hasn't been marked as such), check for</span></div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>   <span class="comment">// any pure final overriders.</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1CXXRecordDecl.html#a77cbaa1a8428b5a962def638f4613097" title="Determine whether this class may end up being abstract, even though it is not yet known to be abstrac...">mayBeAbstract</a>()) {</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>     <a class="code" href="classclang_1_1CXXFinalOverriderMap.html" title="A mapping from each virtual member function to its set of final overriders.">CXXFinalOverriderMap</a> MyFinalOverriders;</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>     <span class="keywordflow">if</span> (!FinalOverriders) {</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>       <a class="code" href="classclang_1_1CXXRecordDecl.html#a0abff0810f6dd5032bdc00abc4adfc06" title="Retrieve the final overriders for each virtual member function in the class hierarchy where this clas...">getFinalOverriders</a>(MyFinalOverriders);</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>       FinalOverriders = &MyFinalOverriders;</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span>     }</div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     </div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>     <span class="keywordtype">bool</span> Done = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>     <span class="keywordflow">for</span> (CXXFinalOverriderMap::iterator M = FinalOverriders->begin(), </div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>                                      MEnd = FinalOverriders->end();</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>          M != MEnd && !Done; ++M) {</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>       <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1OverridingMethods.html#a761640037b681eb46fd074cb91e131d2">OverridingMethods::iterator</a> SO = M->second.begin(), </div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>                                     SOEnd = M->second.end();</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>            SO != SOEnd && !Done; ++SO) {</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         assert(SO->second.size() > 0 && </div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>                <span class="stringliteral">"All virtual functions have overridding virtual functions"</span>);</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>         </div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>         <span class="comment">// C++ [class.abstract]p4:</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>         <span class="comment">//   A class is abstract if it contains or inherits at least one</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>         <span class="comment">//   pure virtual function for which the final overrider is pure</span></div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>         <span class="comment">//   virtual.</span></div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>         <span class="keywordflow">if</span> (SO->second.front().Method->isPure()) {</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>           <a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Abstract = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>           Done = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>         }</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</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>   </div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>   <span class="comment">// Set access bits correctly on the directly-declared conversions.</span></div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1UnresolvedSetIterator.html">conversion_iterator</a> I = <a class="code" href="classclang_1_1CXXRecordDecl.html#a5d131b53d5705d363bff82c68685f9dd">conversion_begin</a>(), E = <a class="code" href="classclang_1_1CXXRecordDecl.html#ad498b9edf9506021a0bdd54bac2767ae">conversion_end</a>();</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>        I != E; ++I)</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>     I.setAccess((*I)->getAccess());</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> </div>
+<div class="line"><a name="l01315"></a><span class="lineno"><a class="code" href="classclang_1_1CXXRecordDecl.html#a77cbaa1a8428b5a962def638f4613097"> 1315</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXRecordDecl.html#a77cbaa1a8428b5a962def638f4613097" title="Determine whether this class may end up being abstract, even though it is not yet known to be abstrac...">CXXRecordDecl::mayBeAbstract</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>   <span class="keywordflow">if</span> (<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Abstract || <a class="code" href="classclang_1_1Decl.html#a17ec912fd67469eea51741d45eb0c800">isInvalidDecl</a>() || !<a class="code" href="ASTWriter_8cpp.html#a5c6341076bde2012a21db25f4e2e3792">data</a>().Polymorphic ||</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>       <a class="code" href="classclang_1_1DeclContext.html#a0d06ccd1db1b1f60e91d95d50aeae75d" title="Determines whether this context is dependent on a template parameter.">isDependentContext</a>())</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span>   </div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_const_iterator</a> B = <a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(),</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>                                              BEnd = <a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>();</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>        B != BEnd; ++B) {</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *BaseDecl </div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>       = cast<CXXRecordDecl>(B->getType()->getAs<<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>()->getDecl());</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>     <span class="keywordflow">if</span> (BaseDecl-><a class="code" href="classclang_1_1CXXRecordDecl.html#a25efa8396ce5a920bda100caf5173e3f" title="Determine whether this class has a pure virtual function.">isAbstract</a>())</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>   }</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>   </div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> }</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> </div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> <span class="keywordtype">void</span> CXXMethodDecl::anchor() { }</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> </div>
+<div class="line"><a name="l01334"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#acd2543d24d5f7ef0aecc1aff36eeab4a"> 1334</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXMethodDecl.html#acd2543d24d5f7ef0aecc1aff36eeab4a">CXXMethodDecl::isStatic</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = <a class="code" href="classclang_1_1CXXMethodDecl.html#aa8d27f88a980ce80102d34870e352738" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>();</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>   <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1FunctionDecl.html#aeb4c7e5a876665e4a955ae91f19204d4" title="Returns the storage class as written in the source. For the computed linkage of symbol, see getLinkage.">getStorageClass</a>() == <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370a8ab15f6f81097ed5c20dd71e5ef4aa00">SC_Static</a>)</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> </div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>   <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> OOK = <a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>().<a class="code" href="classclang_1_1DeclarationName.html#a6c76421a3cdb33248e6ae27ceba55caf">getCXXOverloadedOperator</a>();</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CXXMethodDecl.html#abe3e84f0c980e5a5d1ea2277d3e85704">isStaticOverloadedOperator</a>(OOK);</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> }</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div>
+<div class="line"><a name="l01344"></a><span class="lineno"><a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff"> 1344</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff">recursivelyOverrides</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *DerivedMD,</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *BaseMD) {</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXMethodDecl.html#a434f595b2265452cfda5005e9faff858">CXXMethodDecl::method_iterator</a> I = DerivedMD-><a class="code" href="classclang_1_1CXXMethodDecl.html#ab2d3aa2f5421bfd2f9bd370531796b5c">begin_overridden_methods</a>(),</div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>          E = DerivedMD-><a class="code" href="classclang_1_1CXXMethodDecl.html#a32f6ce71668c5f2772a10e6d5362ac90">end_overridden_methods</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = *I;</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>     <span class="keywordflow">if</span> (MD-><a class="code" href="classclang_1_1CXXMethodDecl.html#aa8d27f88a980ce80102d34870e352738" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>() == BaseMD-><a class="code" href="classclang_1_1CXXMethodDecl.html#aa8d27f88a980ce80102d34870e352738" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>())</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span>     <span class="keywordflow">if</span> (<a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff">recursivelyOverrides</a>(MD, BaseMD))</div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span>       <span class="keywordflow">return</span> <span class="keyword">true</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>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> }</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> </div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *</div>
+<div class="line"><a name="l01358"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#acca243ff57c9f2b2a2ee0c7cd867615b"> 1358</a></span> <a class="code" href="classclang_1_1CXXMethodDecl.html#acca243ff57c9f2b2a2ee0c7cd867615b" title="Find the method in RD that corresponds to this one.">CXXMethodDecl::getCorrespondingMethodInClass</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>                                              <span class="keywordtype">bool</span> MayBeBase) {</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>   <span class="keywordflow">if</span> (this-><a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()-><a class="code" href="classclang_1_1CXXMethodDecl.html#aa8d27f88a980ce80102d34870e352738" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>() == RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a38f531b4822da3071fe56cc210978afd" title="Retrieves the "canonical" declaration of the given declaration.">getCanonicalDecl</a>())</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     <span class="keywordflow">return</span> <span class="keyword">this</span>;</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> </div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>   <span class="comment">// Lookup doesn't work for destructors, so handle them separately.</span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>   <span class="keywordflow">if</span> (isa<CXXDestructorDecl>(<span class="keyword">this</span>)) {</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>     <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a69a4522df480ad34e4846b08856a57b4" title="Returns the destructor decl for this class.">getDestructor</a>();</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span>     <span class="keywordflow">if</span> (MD) {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>       <span class="keywordflow">if</span> (<a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff">recursivelyOverrides</a>(MD, <span class="keyword">this</span>))</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>         <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>       <span class="keywordflow">if</span> (MayBeBase && <a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff">recursivelyOverrides</a>(<span class="keyword">this</span>, MD))</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>         <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     }</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</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>   <a class="code" href="classllvm_1_1ArrayRef.html">lookup_const_result</a> Candidates = RD-><a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(<a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>());</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> * <span class="keyword">const</span> * I = Candidates.begin(); I != Candidates.end(); ++I) {</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *MD = dyn_cast<<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a>>(*I);</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     <span class="keywordflow">if</span> (!MD)</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>     <span class="keywordflow">if</span> (<a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff">recursivelyOverrides</a>(MD, <span class="keyword">this</span>))</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>       <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span>     <span class="keywordflow">if</span> (MayBeBase && <a class="code" href="DeclCXX_8cpp.html#a5db728c494fac8cf3e6ace9b11240eff">recursivelyOverrides</a>(<span class="keyword">this</span>, MD))</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>       <span class="keywordflow">return</span> MD;</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</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>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXRecordDecl::base_class_const_iterator</a> I = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a830448d054e3dca2db6851bd4605492c">bases_begin</a>(),</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>          E = RD-><a class="code" href="classclang_1_1CXXRecordDecl.html#a1e27f3ddd2de050a298094ea732bd321">bases_end</a>(); I != E; ++I) {</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1RecordType.html">RecordType</a> *RT = I->getType()-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1RecordType.html">RecordType</a>>();</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>     <span class="keywordflow">if</span> (!RT)</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="classclang_1_1Base.html">Base</a> = cast<CXXRecordDecl>(RT-><a class="code" href="classclang_1_1RecordType.html#a312ab3ebe179cc7d8692c07479c91076">getDecl</a>());</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span>     <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *T = this-><a class="code" href="classclang_1_1CXXMethodDecl.html#acca243ff57c9f2b2a2ee0c7cd867615b" title="Find the method in RD that corresponds to this one.">getCorrespondingMethodInClass</a>(Base);</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span>     <span class="keywordflow">if</span> (T)</div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span>       <span class="keywordflow">return</span> T;</div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span>   }</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> </div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span>   <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</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> </div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *</div>
+<div class="line"><a name="l01401"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#a06d27ed9379997ce80df675ef5107a55"> 1401</a></span> <a class="code" href="classclang_1_1CXXMethodDecl.html#a06d27ed9379997ce80df675ef5107a55">CXXMethodDecl::Create</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD,</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</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> StartLoc,</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>                       <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &NameInfo,</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span>                       <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo,</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span>                       <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370" title="Storage classes.">StorageClass</a> SC, <span class="keywordtype">bool</span> isInline,</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>                       <span class="keywordtype">bool</span> isConstexpr, <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> EndLocation) {</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (C) <a class="code" href="classclang_1_1CXXMethodDecl.html#a3ecab0c439145b72808ba2d641b10b68">CXXMethodDecl</a>(CXXMethod, RD, StartLoc, NameInfo, T, TInfo,</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>                                SC, isInline, isConstexpr,</div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>                                EndLocation);</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> </div>
+<div class="line"><a name="l01412"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#a2cdf03e23a50fa928671685a6bde554c"> 1412</a></span> <a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a> *<a class="code" href="classclang_1_1CXXMethodDecl.html#a2cdf03e23a50fa928671685a6bde554c">CXXMethodDecl::CreateDeserialized</a>(<a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &C, <span class="keywordtype">unsigned</span> <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="l01413"></a><span class="lineno"> 1413</span>   <span class="keywordtype">void</span> *Mem = <a class="code" href="classclang_1_1Decl.html#a3026976dfd8cb6aa936c57255dbf5968" title="Allocate memory for a deserialized declaration.">AllocateDeserializedDecl</a>(C, ID, <span class="keyword">sizeof</span>(<a class="code" href="classclang_1_1CXXMethodDecl.html" title="Represents a static or instance method of a struct/union/class.">CXXMethodDecl</a>));</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>   <span class="keywordflow">return</span> <span class="keyword">new</span> (Mem) <a class="code" href="classclang_1_1CXXMethodDecl.html#a3ecab0c439145b72808ba2d641b10b68">CXXMethodDecl</a>(CXXMethod, 0, <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>(), </div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>                                  <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(), <a class="code" href="classclang_1_1QualType.html">QualType</a>(),</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>                                  0, <a class="code" href="namespaceclang.html#a56dabc7d0ce7d72b9a35f6f5c3f89370aebf74ba707605e744f1303f997b2477f">SC_None</a>, <span class="keyword">false</span>, <span class="keyword">false</span>,</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</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>());</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> </div>
+<div class="line"><a name="l01420"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#a5342fe8c73aaf5aca750caeecf3bb85b"> 1420</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXMethodDecl.html#a5342fe8c73aaf5aca750caeecf3bb85b" title="Determine whether this is a usual deallocation function (C++ [basic.stc.dynamic.deallocation]p2), which is an overloaded delete or delete[] operator with a particular signature.">CXXMethodDecl::isUsualDeallocationFunction</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionDecl.html#add2961020f578864af81da463b72f5ae">getOverloadedOperator</a>() != OO_Delete &&</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>       <a class="code" href="classclang_1_1FunctionDecl.html#add2961020f578864af81da463b72f5ae">getOverloadedOperator</a>() != OO_Array_Delete)</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>     <span class="keywordflow">return</span> <span class="keyword">false</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>   <span class="comment">// C++ [basic.stc.dynamic.deallocation]p2:</span></div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>   <span class="comment">//   A template instance is never a usual deallocation function,</span></div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>   <span class="comment">//   regardless of its signature.</span></div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionDecl.html#aa80c92b0ca1b549276377865073b739a" title="Retrieve the primary template that this function template specialization either specializes or was in...">getPrimaryTemplate</a>())</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> </div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>   <span class="comment">// C++ [basic.stc.dynamic.deallocation]p2:</span></div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span>   <span class="comment">//   If a class T has a member deallocation function named operator delete </span></div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>   <span class="comment">//   with exactly one parameter, then that function is a usual (non-placement)</span></div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>   <span class="comment">//   deallocation function. [...]</span></div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionDecl.html#a6e93edc7b4b6fad6ae4830e005ec539f">getNumParams</a>() == 1)</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     <span class="keywordflow">return</span> <span class="keyword">true</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>   <span class="comment">// C++ [basic.stc.dynamic.deallocation]p2:</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span>   <span class="comment">//   [...] If class T does not declare such an operator delete but does </span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span>   <span class="comment">//   declare a member deallocation function named operator delete with </span></div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span>   <span class="comment">//   exactly two parameters, the second of which has type std::size_t (18.1),</span></div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span>   <span class="comment">//   then this function is a usual deallocation function.</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionDecl.html#a6e93edc7b4b6fad6ae4830e005ec539f">getNumParams</a>() != 2 ||</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>       !Context.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(<a class="code" href="classclang_1_1FunctionDecl.html#ae9634725f4146974e541228f996a96cf">getParamDecl</a>(1)-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>(),</div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>                                       Context.<a class="code" href="classclang_1_1ASTContext.html#ae3093bf57c46337c9a3f2f42ad8764ee" title="Return the unique type for "size_t" (C99 7.17), defined in <stddef.h>.">getSizeType</a>()))</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>                  </div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>   <span class="comment">// This function is a usual deallocation function if there are no </span></div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   <span class="comment">// single-parameter deallocation functions of the same kind.</span></div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   <a class="code" href="classllvm_1_1ArrayRef.html">DeclContext::lookup_const_result</a> R = <a class="code" href="classclang_1_1Decl.html#af67e1a1d24dcc51093b95dbcf68d4288">getDeclContext</a>()-><a class="code" href="classclang_1_1DeclContext.html#a0916b364472e2acc42122885e087222b">lookup</a>(<a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>());</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   <span class="keywordflow">for</span> (DeclContext::lookup_const_result::iterator I = R.begin(), E = R.end();</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>        I != E; ++I) {</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD = dyn_cast<FunctionDecl>(*I))</div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>       <span class="keywordflow">if</span> (FD->getNumParams() == 1)</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>         <span class="keywordflow">return</span> <span class="keyword">false</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>   </div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>   <span class="keywordflow">return</span> <span class="keyword">true</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> </div>
+<div class="line"><a name="l01462"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#ad9fbe762f9ee0d3304fde847d7595a8b"> 1462</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXMethodDecl.html#ad9fbe762f9ee0d3304fde847d7595a8b" title="Determine whether this is a copy-assignment operator, regardless of whether it was declared implicitl...">CXXMethodDecl::isCopyAssignmentOperator</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span>   <span class="comment">// C++0x [class.copy]p17:</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span>   <span class="comment">//  A user-declared copy assignment operator X::operator= is a non-static </span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   <span class="comment">//  non-template member function of class X with exactly one parameter of </span></div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>   <span class="comment">//  type X, X&, const X&, volatile X& or const volatile X&.</span></div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   <span class="keywordflow">if</span> (<span class="comment">/*operator=*/</span><a class="code" href="classclang_1_1FunctionDecl.html#add2961020f578864af81da463b72f5ae">getOverloadedOperator</a>() != OO_Equal ||</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>       <span class="comment">/*non-static*/</span> <a class="code" href="classclang_1_1CXXMethodDecl.html#acd2543d24d5f7ef0aecc1aff36eeab4a">isStatic</a>() || </div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>       <span class="comment">/*non-template*/</span><a class="code" href="classclang_1_1FunctionDecl.html#aa80c92b0ca1b549276377865073b739a" title="Retrieve the primary template that this function template specialization either specializes or was in...">getPrimaryTemplate</a>() || <a class="code" href="classclang_1_1FunctionDecl.html#a88c31f0a03a609ba42f357cd458ec0c6" title="Retrieves the function template that is described by this function declaration.">getDescribedFunctionTemplate</a>() ||</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>       <a class="code" href="classclang_1_1FunctionDecl.html#a6e93edc7b4b6fad6ae4830e005ec539f">getNumParams</a>() != 1)</div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>       </div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ParamType = <a class="code" href="classclang_1_1FunctionDecl.html#ae9634725f4146974e541228f996a96cf">getParamDecl</a>(0)-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1LValueReferenceType.html">LValueReferenceType</a> *Ref = ParamType-><a class="code" href="classclang_1_1Type.html#a12103ea8bee9506930287bab68a08569">getAs</a><<a class="code" href="classclang_1_1LValueReferenceType.html">LValueReferenceType</a>>())</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>     ParamType = Ref-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1">getPointeeType</a>();</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>   </div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   <a class="code" href="classclang_1_1ASTContext.html" title="Holds long-lived AST nodes (such as types and decls) that can be referred to throughout the semantic ...">ASTContext</a> &Context = <a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>();</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ClassType</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>     = Context.<a class="code" href="classclang_1_1ASTContext.html#a7e70bb7eebf01548a0cab752e390ba37" title="Return the canonical (structural) type corresponding to the specified potentially non-canonical type ...">getCanonicalType</a>(Context.<a class="code" href="classclang_1_1ASTContext.html#a028b11acbffc8c91facbab289df57771" title="Return the unique reference to the type for the specified type declaration.">getTypeDeclType</a>(<a class="code" href="classclang_1_1CXXMethodDecl.html#a89937377c3cbaa960c0d35a2b0100071">getParent</a>()));</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>   <span class="keywordflow">return</span> Context.<a class="code" href="classclang_1_1ASTContext.html#a40efa7d4fe133c0a709f0df4b6fcc2bf" title="Determine whether the given types are equivalent after cvr-qualifiers have been removed.">hasSameUnqualifiedType</a>(ClassType, ParamType);</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> }</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> </div>
+<div class="line"><a name="l01483"></a><span class="lineno"><a class="code" href="classclang_1_1CXXMethodDecl.html#ae7f87d55ecf52215e8ae6c1d54a023af"> 1483</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CXXMethodDecl.html#ae7f87d55ecf52215e8ae6c1d54a023af" title="Determine whether this is a move assignment operator.">CXXMethodDecl::isMoveAssignmentOperator</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>   <span class="comment">// C++0x [class.copy]p19:</span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>   <span class="comment">//  A user-declared move assignment operator X::operator= is a non-static</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   <span class="comment">//  non-template member function of class X with exactly one parameter of type</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span>   <span class="comment">//  X&&, const X&&, volatile X&&, or const volatile X&&.</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1FunctionDecl.html#add2961020f578864af81da463b72f5ae">getOverloadedOperator</a>() != OO_Equal || <a class="code" href="classclang_1_1CXXMethodDecl.html#acd2543d24d5f7ef0aecc1aff36eeab4a">isStatic</a>() ||</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>       <a class="code" href="classclang_1_1FunctionDecl.html#aa80c92b0ca1b549276377865073b739a" title="Retrieve the primary template that this function template specialization either specializes or was in...">getPrimaryTemplate</a>() || <a class="code" href="classclang_1_1FunctionDecl.html#a88c31f0a03a609ba42f357cd458ec0c6" title="Retrieves the function template that is described by this function declaration.">getDescribedFunctionTemplate</a>() ||</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>       <a class="code" href="classclang_1_1FunctionDecl.html#a6e93edc7b4b6fad6ae4830e005ec539f">getNumParams</a>() != 1)</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span> </div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ParamType = <a class="code" href="classclang_1_1FunctionDecl.html#ae9634725f4146974e541228f996a96cf">getParamDecl</a>(0)-><a class="code" href="classclang_1_1ValueDecl.html#aefa6d3327144aee23d2935f41d993484">getType</a>();</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>   <span class="keywordflow">if</span> (!isa<RValueReferenceType>(ParamType))</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>   ParamType = ParamType-><a class="code" href="classclang_1_1Type.html#a3a0edf987679f04072a1243b6118add1