[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/Expr_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Expr_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Expr_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/Expr_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,4875 @@
+<!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: Expr.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">Expr.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="Expr_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">//===--- Expr.h - Classes for representing expressions ----------*- 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 Expr interface and subclasses.</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_EXPR_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_EXPR_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="APValue_8h.html">clang/AST/APValue.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="ASTVector_8h.html">clang/AST/ASTVector.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Decl_8h.html">clang/AST/Decl.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="DeclAccessPair_8h.html">clang/AST/DeclAccessPair.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="OperationKinds_8h.html">clang/AST/OperationKinds.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="Stmt_8h.html">clang/AST/Stmt.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="TemplateBase_8h.html">clang/AST/TemplateBase.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "<a class="code" href="CharInfo_8h.html">clang/Basic/CharInfo.h</a>"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "<a class="code" href="TypeTraits_8h.html" title="Defines enumerations for the type traits support.">clang/Basic/TypeTraits.h</a>"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/ADT/APFloat.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/ADT/APSInt.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "llvm/ADT/SmallVector.h"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "llvm/ADT/StringRef.h"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "llvm/Support/Compiler.h"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keyword">class </span>APValue;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keyword">class </span>ASTContext;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">class </span>BlockDecl;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keyword">class </span>CXXBaseSpecifier;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keyword">class </span>CXXMemberCallExpr;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   <span class="keyword">class </span>CXXOperatorCallExpr;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">class </span>CastExpr;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <span class="keyword">class </span>Decl;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keyword">class </span>IdentifierInfo;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">class </span>MaterializeTemporaryExpr;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <span class="keyword">class </span>NamedDecl;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keyword">class </span>ObjCPropertyRefExpr;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <span class="keyword">class </span>OpaqueValueExpr;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keyword">class </span>ParmVarDecl;</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">class </span>TargetInfo;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="namespaceclang.html#ad168a34ddd7654699dc7bca2b869e59b">   49</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// \brief A simple array of base specifiers.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<CXXBaseSpecifier*, 4></a> <a class="code" href="namespaceclang.html#ad168a34ddd7654699dc7bca2b869e59b" title="A simple array of base specifiers.">CXXCastPath</a>;</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"></span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">/// \brief An adjustment to be made to the temporary created when emitting a</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// reference binding, which accesses a particular subobject of that temporary.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html">   56</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1SubobjectAdjustment.html" title="An adjustment to be made to the temporary created when emitting a reference binding, which accesses a particular subobject of that temporary.">SubobjectAdjustment</a> {</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keyword">enum</span> {</div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185abd4f1ff8b2fcfd790bd28bb66cac74fc">   58</a></span>     <a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185abd4f1ff8b2fcfd790bd28bb66cac74fc">DerivedToBaseAdjustment</a>,</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185ab1319ebf218ca95cdf326d5854b9de12">   59</a></span>     <a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185ab1319ebf218ca95cdf326d5854b9de12">FieldAdjustment</a>,</div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185adb8dbc1d7ecbc70648b8ba1a83caf74b">   60</a></span>     <a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185adb8dbc1d7ecbc70648b8ba1a83caf74b">MemberPointerAdjustment</a></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   } <a class="code" href="structclang_1_1SubobjectAdjustment.html#a7a815aabbbe7d379c5e76508078e6d9b">Kind</a>;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html">   64</a></span>   <span class="keyword">struct </span><a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html">DTB</a> {</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html#a2b0c8b11e188bb9f4e0619d536ac3ea8">   65</a></span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *<a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html#a2b0c8b11e188bb9f4e0619d536ac3ea8">BasePath</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html#a4eabe0c26b5d01c0badbfac0c5093930">   66</a></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="structclang_1_1SubobjectAdjustment_1_1DTB.html#a4eabe0c26b5d01c0badbfac0c5093930">DerivedClass</a>;</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"><a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html">   69</a></span>   <span class="keyword">struct </span><a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html">P</a> {</div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html#a53a49e5f984ce6a490d1dbfcec881439">   70</a></span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *<a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html#a53a49e5f984ce6a490d1dbfcec881439">MPT</a>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html#a1c23e9362712f47e5df4a733329c1f47">   71</a></span>     <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html#a1c23e9362712f47e5df4a733329c1f47">RHS</a>;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   };</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   <span class="keyword">union </span>{</div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#ab27288fe4267193d7adcee74952a36b0">   75</a></span>     <span class="keyword">struct </span><a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html">DTB</a> <a class="code" href="structclang_1_1SubobjectAdjustment.html#ab27288fe4267193d7adcee74952a36b0">DerivedToBase</a>;</div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#af8a973aca69f2243418cd0fd5e409f56">   76</a></span>     <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="structclang_1_1SubobjectAdjustment.html#af8a973aca69f2243418cd0fd5e409f56">Field</a>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#abc11dd80aa85835415aa176a60d87190">   77</a></span>     <span class="keyword">struct </span><a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html">P</a> <a class="code" href="structclang_1_1SubobjectAdjustment.html#abc11dd80aa85835415aa176a60d87190">Ptr</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> </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#a6ed447de31927f77feba972fd56a4f18">   80</a></span>   <a class="code" href="structclang_1_1SubobjectAdjustment.html#a6ed447de31927f77feba972fd56a4f18">SubobjectAdjustment</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *BasePath,</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                       <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *DerivedClass)</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     : <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>(<a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185abd4f1ff8b2fcfd790bd28bb66cac74fc">DerivedToBaseAdjustment</a>) {</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     <a class="code" href="structclang_1_1SubobjectAdjustment.html#ab27288fe4267193d7adcee74952a36b0">DerivedToBase</a>.<a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html#a2b0c8b11e188bb9f4e0619d536ac3ea8">BasePath</a> = BasePath;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <a class="code" href="structclang_1_1SubobjectAdjustment.html#ab27288fe4267193d7adcee74952a36b0">DerivedToBase</a>.<a class="code" href="structclang_1_1SubobjectAdjustment_1_1DTB.html#a4eabe0c26b5d01c0badbfac0c5093930">DerivedClass</a> = DerivedClass;</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>   }</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#a95449a3971a255e7872e964f1ef51c42">   87</a></span>   <a class="code" href="structclang_1_1SubobjectAdjustment.html#a6ed447de31927f77feba972fd56a4f18">SubobjectAdjustment</a>(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="structclang_1_1SubobjectAdjustment.html#af8a973aca69f2243418cd0fd5e409f56">Field</a>)</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     : <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>(<a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185ab1319ebf218ca95cdf326d5854b9de12">FieldAdjustment</a>) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     this->Field = <a class="code" href="structclang_1_1SubobjectAdjustment.html#af8a973aca69f2243418cd0fd5e409f56">Field</a>;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   }</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> </div>
+<div class="line"><a name="l00092"></a><span class="lineno"><a class="code" href="structclang_1_1SubobjectAdjustment.html#a3d881564538a547b73b599d981f4f114">   92</a></span>   <a class="code" href="structclang_1_1SubobjectAdjustment.html#a6ed447de31927f77feba972fd56a4f18">SubobjectAdjustment</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1MemberPointerType.html">MemberPointerType</a> *MPT, <a class="code" href="classclang_1_1Expr.html">Expr</a> *RHS)</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>     : <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>(<a class="code" href="structclang_1_1SubobjectAdjustment.html#a1cb81fe2c3446af8b620df662ca3e185adb8dbc1d7ecbc70648b8ba1a83caf74b">MemberPointerAdjustment</a>) {</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>     this-><a class="code" href="structclang_1_1SubobjectAdjustment.html#abc11dd80aa85835415aa176a60d87190">Ptr</a>.<a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html#a53a49e5f984ce6a490d1dbfcec881439">MPT</a> = MPT;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>     this-><a class="code" href="structclang_1_1SubobjectAdjustment.html#abc11dd80aa85835415aa176a60d87190">Ptr</a>.<a class="code" href="structclang_1_1SubobjectAdjustment_1_1P.html#a1c23e9362712f47e5df4a733329c1f47">RHS</a> = RHS;</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   }</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> };</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment"></span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">/// Expr - This represents one expression.  Note that Expr's are subclasses of</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">/// Stmt.  This allows an expression to be transparently used any place a Stmt</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">/// is required.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html">  103</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1Expr.html">Expr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> {</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> TR;</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a5105d4e41c6667994a61c8af39dbb392">  107</a></span>   <a class="code" href="classclang_1_1Expr.html#a5105d4e41c6667994a61c8af39dbb392">Expr</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>        <span class="keywordtype">bool</span> TD, <span class="keywordtype">bool</span> VD, <span class="keywordtype">bool</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>, <span class="keywordtype">bool</span> ContainsUnexpandedParameterPack)</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     : <a class="code" href="classclang_1_1Stmt.html">Stmt</a>(SC)</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   {</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent = TD;</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = VD;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <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="l00114"></a><span class="lineno">  114</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueKind = VK;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ObjectKind = OK;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = ContainsUnexpandedParameterPack;</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(T);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   }</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// \brief Construct an empty expression.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a0f55ce40d66cc415f93ae9367dc80f6e">  121</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1Expr.html#a0f55ce40d66cc415f93ae9367dc80f6e" title="Construct an empty expression.">Expr</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a>) : <a class="code" href="classclang_1_1Stmt.html">Stmt</a>(SC) { }</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">  124</a></span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TR; }</div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">  125</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#a3b6971eecc3301041ba0d18a91fa1ceb">setType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> t) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     <span class="comment">// In C++, the type of an expression is always adjusted so that it</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="comment">// will not have reference type an expression will never have</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="comment">// reference type (C++ [expr]p6). Use</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="comment">// QualType::getNonReferenceType() to retrieve the non-reference</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="comment">// type. Additionally, inspect Expr::isLvalue to determine whether</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="comment">// an expression that is adjusted in this manner should be</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="comment">// considered an lvalue.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     assert((t.<a class="code" href="classclang_1_1QualType.html#a8f87f58000490ad01cd09add1f27d7ac" title="isNull - Return true if this QualType doesn't point to a type yet.">isNull</a>() || !t-><a class="code" href="classclang_1_1Type.html#ab2b860560d2ac12cd365aa09b143d195">isReferenceType</a>()) &&</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>            <span class="stringliteral">"Expressions can't have reference type"</span>);</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     TR = t;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   }</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">  /// isValueDependent - Determines whether this expression is</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">  /// value-dependent (C++ [temp.dep.constexpr]). For example, the</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">  /// array bound of "Chars" in the following example is</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// value-dependent.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">  /// @code</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">  /// template<int Size, char (&Chars)[Size]> struct meta_string;</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">  /// @endcode</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">  146</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent; }</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">  /// \brief Set whether this expression is value-dependent or not.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac52ec8c4d8cec61888c51d0ac9cd262e">  149</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#ac52ec8c4d8cec61888c51d0ac9cd262e" title="Set whether this expression is value-dependent or not.">setValueDependent</a>(<span class="keywordtype">bool</span> VD) {</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueDependent = VD;</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="keywordflow">if</span> (VD)</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   }</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment"></span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">  /// isTypeDependent - Determines whether this expression is</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">  /// type-dependent (C++ [temp.dep.expr]), which means that its type</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">  /// could change from one template instantiation to the next. For</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">  /// example, the expressions "x" and "x + y" are type-dependent in</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">  /// the following code, but "y" is not type-dependent:</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">  /// @code</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">  /// template<typename T></span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">  /// void add(T x, int y) {</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">  ///   x + y;</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">  /// }</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">  /// @endcode</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">  166</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent; }</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment"></span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">  /// \brief Set whether this expression is type-dependent or not.</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#aa993c3c46bada5633ca2b5c12e324b9f">  169</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#aa993c3c46bada5633ca2b5c12e324b9f" title="Set whether this expression is type-dependent or not.">setTypeDependent</a>(<span class="keywordtype">bool</span> TD) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.TypeDependent = TD;</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     <span class="keywordflow">if</span> (TD)</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>       <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   }</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment"></span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">  /// \brief Whether this expression is instantiation-dependent, meaning that</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">  /// it depends in some way on a template parameter, even if neither its type</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">  /// nor (constant) value can change due to the template instantiation.</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">  /// In the following example, the expression \c sizeof(sizeof(T() + T())) is</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">  /// instantiation-dependent (since it involves a template parameter \c T), but</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">  /// is neither type- nor value-dependent, since the type of the inner</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  /// \c sizeof is known (\c std::size_t) and therefore the size of the outer</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// \c sizeof is known.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// \code</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// template<typename T></span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  /// void f(T x, T y) {</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">  ///   sizeof(sizeof(T() + T());</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">  /// }</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">  /// \endcode</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c">  192</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent;</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   }</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment"></span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">  /// \brief Set whether this expression is instantiation-dependent or not.</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9e43b98d0b30200eb9082dbfc213c855">  197</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#a9e43b98d0b30200eb9082dbfc213c855" title="Set whether this expression is instantiation-dependent or not.">setInstantiationDependent</a>(<span class="keywordtype">bool</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="l00198"></a><span class="lineno">  198</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.InstantiationDependent = <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="l00199"></a><span class="lineno">  199</span>   }</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment"></span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">  /// \brief Whether this expression contains an unexpanded parameter</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">  /// pack (for C++11 variadic templates).</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">  /// Given the following function template:</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">  /// \code</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">  /// template<typename F, typename ...Types></span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">  /// void forward(const F &f, Types &&...args) {</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  ///   f(static_cast<Types&&>(args)...);</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">  /// \endcode</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// The expressions \c args and \c static_cast<Types&&>(args) both</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// contain parameter packs.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd">  215</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack;</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="comment"></span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">  /// \brief Set the bit that describes whether this expression</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">  /// contains an unexpanded parameter pack.</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac10a2104ebd3df17dee6fb90f7944162">  221</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#ac10a2104ebd3df17dee6fb90f7944162" title="Set the bit that describes whether this expression contains an unexpanded parameter pack...">setContainsUnexpandedParameterPack</a>(<span class="keywordtype">bool</span> PP = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ContainsUnexpandedParameterPack = PP;</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   }</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment"></span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">  /// getExprLoc - Return the preferred location for the arrow when diagnosing</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">  /// a problem with a generic expression.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</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_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment"></span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  /// isUnusedResultAWarning - Return true if this immediate expression should</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  /// be warned about if the result is unused.  If so, fill in expr, location,</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">  /// and ranges with expr to warn on and source locations/ranges appropriate</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">  /// for a warning.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#aa4cd2157d6d1e2730ecc064adf161d2c">isUnusedResultAWarning</a>(const <a class="code" href="classclang_1_1Expr.html">Expr</a> *&WarnExpr, <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="l00234"></a><span class="lineno">  234</span>                               <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> &R1, <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> &R2,</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</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) const;</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment"></span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">  /// isLValue - True if this expression is an "l-value" according to</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">  /// the rules of the current language.  C and C++ give somewhat</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">  /// different rules for this concept, but in general, the result of</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">  /// an l-value expression identifies a specific object whereas the</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">  /// result of an r-value expression is a value detached from any</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment">  /// specific storage.</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// C++11 divides the concept of "r-value" into pure r-values</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">  /// ("pr-values") and so-called expiring values ("x-values"), which</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">  /// identify specific objects that can be safely cannibalized for</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">  /// their resources.  This is an unfortunate abuse of terminology on</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">  /// the part of the C++ committee.  In Clang, when we say "r-value",</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">  /// we generally mean a pr-value.</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a6ef085b1e84bebe337c2a4ca4d1df5fd">  250</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a6ef085b1e84bebe337c2a4ca4d1df5fd">isLValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>() == <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>; }</div>
+<div class="line"><a name="l00251"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a4cd56ea13000be78c5459f10df89e84a">  251</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a4cd56ea13000be78c5459f10df89e84a">isRValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>() == <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>; }</div>
+<div class="line"><a name="l00252"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a8deff4f116bef25e49044d73f3186946">  252</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a8deff4f116bef25e49044d73f3186946">isXValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>() == <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a63fc11bfcee4743c02b72657c1adcf27" title="An x-value expression is a reference to an object with independent storage but which can be "moved"...">VK_XValue</a>; }</div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">  253</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#ae5788e69a4c1d2d1b1e5ddaa4d525e22">isGLValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>() != <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>; }</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> </div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889f">  255</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889f">LValueClassification</a> {</div>
+<div class="line"><a name="l00256"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889faeefd11efc82ec091d5a323eb27444a79">  256</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889faeefd11efc82ec091d5a323eb27444a79">LV_Valid</a>,</div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa63f889d03cc7ed03a3daeafde6d82758">  257</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa63f889d03cc7ed03a3daeafde6d82758">LV_NotObjectType</a>,</div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa9f0bc88fe958a0aba8b84a8e6065d8ac">  258</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa9f0bc88fe958a0aba8b84a8e6065d8ac">LV_IncompleteVoidType</a>,</div>
+<div class="line"><a name="l00259"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa29f2abd915a5f291eb14ee6ad075b585">  259</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa29f2abd915a5f291eb14ee6ad075b585">LV_DuplicateVectorComponents</a>,</div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa95e6f4aa64ac3509d36cababaf7f935a">  260</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa95e6f4aa64ac3509d36cababaf7f935a">LV_InvalidExpression</a>,</div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa5a6d9f76969e8c41ecf050db5e55f153">  261</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa5a6d9f76969e8c41ecf050db5e55f153">LV_InvalidMessageExpression</a>,</div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa64559fb413b0654df8be34ebe9f50b19">  262</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa64559fb413b0654df8be34ebe9f50b19">LV_MemberFunction</a>,</div>
+<div class="line"><a name="l00263"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fafdf825ce9c49398c25e91457e842f37e">  263</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fafdf825ce9c49398c25e91457e842f37e">LV_SubObjCPropertySetting</a>,</div>
+<div class="line"><a name="l00264"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa4f265f3aed904f5a712c434b2e79a920">  264</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa4f265f3aed904f5a712c434b2e79a920">LV_ClassTemporary</a>,</div>
+<div class="line"><a name="l00265"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa0b262cd6673299b496ee479440955172">  265</a></span>     <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889fa0b262cd6673299b496ee479440955172">LV_ArrayTemporary</a></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   };<span class="comment"></span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment">  /// Reasons why an expression might not be an l-value.</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html#a06213e8da3093d43c44910d9ae8b889f">LValueClassification</a> <a class="code" href="classclang_1_1Expr.html#af6cc8465213e82b8f9c3de2521154f54" title="Reasons why an expression might not be an l-value.">ClassifyLValue</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> </div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437">  270</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437">isModifiableLvalueResult</a> {</div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a652c1988eff98e4733e27158b623420b">  271</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a652c1988eff98e4733e27158b623420b">MLV_Valid</a>,</div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437ad2f1881128f8cf113160ed04ac51b8fe">  272</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437ad2f1881128f8cf113160ed04ac51b8fe">MLV_NotObjectType</a>,</div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437aee285076ffbf28243bef4763b328d2a6">  273</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437aee285076ffbf28243bef4763b328d2a6">MLV_IncompleteVoidType</a>,</div>
+<div class="line"><a name="l00274"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a0da2ff07b2cfe80f2bbbd5265a14892d">  274</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a0da2ff07b2cfe80f2bbbd5265a14892d">MLV_DuplicateVectorComponents</a>,</div>
+<div class="line"><a name="l00275"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a4e030a2b76b5c131d91b2baee91154c1">  275</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a4e030a2b76b5c131d91b2baee91154c1">MLV_InvalidExpression</a>,</div>
+<div class="line"><a name="l00276"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a347311786253ca0020e7acc23233b27c">  276</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a347311786253ca0020e7acc23233b27c">MLV_LValueCast</a>,           <span class="comment">// Specialized form of MLV_InvalidExpression.</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a5b7d9e620086b139b807a739c5c58e11">  277</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a5b7d9e620086b139b807a739c5c58e11">MLV_IncompleteType</a>,</div>
+<div class="line"><a name="l00278"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a68157201891034a2f913b3fae1f6ac6a">  278</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a68157201891034a2f913b3fae1f6ac6a">MLV_ConstQualified</a>,</div>
+<div class="line"><a name="l00279"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437adabf1b0415e0b35487a7ac5cc673e53d">  279</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437adabf1b0415e0b35487a7ac5cc673e53d">MLV_ArrayType</a>,</div>
+<div class="line"><a name="l00280"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a7b8f061da942fb415e65f94383c5819a">  280</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a7b8f061da942fb415e65f94383c5819a">MLV_NoSetterProperty</a>,</div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437ad282911c6021a5a4847837db5c44529f">  281</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437ad282911c6021a5a4847837db5c44529f">MLV_MemberFunction</a>,</div>
+<div class="line"><a name="l00282"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437aa8c4cbe3fc21fbdc6c038e52c758faa6">  282</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437aa8c4cbe3fc21fbdc6c038e52c758faa6">MLV_SubObjCPropertySetting</a>,</div>
+<div class="line"><a name="l00283"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a3ae3d3c5c7703598259ad431ae13c533">  283</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a3ae3d3c5c7703598259ad431ae13c533">MLV_InvalidMessageExpression</a>,</div>
+<div class="line"><a name="l00284"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437ae4f10d47d94e04e6fca1bb51536475b3">  284</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437ae4f10d47d94e04e6fca1bb51536475b3">MLV_ClassTemporary</a>,</div>
+<div class="line"><a name="l00285"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a90f9514d7acbab725d4fdf8d8b0fd7b8">  285</a></span>     <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437a90f9514d7acbab725d4fdf8d8b0fd7b8">MLV_ArrayTemporary</a></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>   };<span class="comment"></span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> <span class="comment">  /// isModifiableLvalue - C99 6.3.2.1: an lvalue that does not have array type,</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="comment">  /// does not have an incomplete type, does not have a const-qualified type,</span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> <span class="comment">  /// and if it is a structure or union, does not have any member (including,</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> <span class="comment">  /// recursively, any member or element of all contained aggregates or unions)</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment">  /// with a const-qualified type.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="comment">  /// \param Loc [in,out] - A source location which *may* be filled</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> <span class="comment">  /// in with the location of the expression making this a</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment">  /// non-modifiable lvalue, if specified.</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html#ac80b10ca440aa11ff2a2b1e2d65bc437">isModifiableLvalueResult</a> <a class="code" href="classclang_1_1Expr.html#a1dfdde5b695feaf1ca69c82e60249831">isModifiableLvalue</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> &Ctx,</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</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 = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> <span class="comment"></span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> <span class="comment">  /// \brief The return type of classify(). Represents the C++11 expression</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> <span class="comment">  ///        taxonomy.</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html">  301</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1Expr_1_1Classification.html" title="The return type of classify(). Represents the C++11 expression taxonomy.">Classification</a> {</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>   <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="comment">    /// \brief The various classification results. Most of these mean prvalue.</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65">  304</a></span> <span class="comment"></span>    <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65" title="The various classification results. Most of these mean prvalue.">Kinds</a> {</div>
+<div class="line"><a name="l00305"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ac6c19ed2cc4ee6063010af269e2d1352">  305</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ac6c19ed2cc4ee6063010af269e2d1352">CL_LValue</a>,</div>
+<div class="line"><a name="l00306"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a0a0e23efd8ca2e0afd142db6ec393ea5">  306</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a0a0e23efd8ca2e0afd142db6ec393ea5">CL_XValue</a>,</div>
+<div class="line"><a name="l00307"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a5318f14e198b1cbdd2a535a63ed98ed5">  307</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a5318f14e198b1cbdd2a535a63ed98ed5">CL_Function</a>, <span class="comment">// Functions cannot be lvalues in C.</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ad163b9919df20dd8ec0aaddee6993b26">  308</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ad163b9919df20dd8ec0aaddee6993b26">CL_Void</a>, <span class="comment">// Void cannot be an lvalue in C.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ae306f953b161636ab5cf004e6ded858e">  309</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ae306f953b161636ab5cf004e6ded858e">CL_AddressableVoid</a>, <span class="comment">// Void expression whose address can be taken in C.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ae1b9ec5d7dd2b3dc0ac6605110d31c3e">  310</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ae1b9ec5d7dd2b3dc0ac6605110d31c3e">CL_DuplicateVectorComponents</a>, <span class="comment">// A vector shuffle with dupes.</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a3273173fa8ae155ad0b437043b6f3352">  311</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a3273173fa8ae155ad0b437043b6f3352">CL_MemberFunction</a>, <span class="comment">// An expression referring to a member function</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ae14940ff3656a776f6133b596ed9bd3e">  312</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ae14940ff3656a776f6133b596ed9bd3e">CL_SubObjCPropertySetting</a>,</div>
+<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a9a211fd9f475bb35e7c704ee0b9935e2">  313</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a9a211fd9f475bb35e7c704ee0b9935e2">CL_ClassTemporary</a>, <span class="comment">// A temporary of class type, or subobject thereof.</span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a34208aff53a2fe8fb467e91e566c90ec">  314</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a34208aff53a2fe8fb467e91e566c90ec">CL_ArrayTemporary</a>, <span class="comment">// A temporary of array type.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a6b0831bee9c584dee3e86ee67b4aab99">  315</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a6b0831bee9c584dee3e86ee67b4aab99">CL_ObjCMessageRValue</a>, <span class="comment">// ObjC message is an rvalue</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ab9c6fa1e702865e1bf3494aed05fe215">  316</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ab9c6fa1e702865e1bf3494aed05fe215">CL_PRValue</a> <span class="comment">// A prvalue for any other reason, of any other type</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     };<span class="comment"></span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> <span class="comment">    /// \brief The results of modification testing.</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6">  319</a></span> <span class="comment"></span>    <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6" title="The results of modification testing.">ModifiableType</a> {</div>
+<div class="line"><a name="l00320"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a80278cba298a8fdfc965f34502242171">  320</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a80278cba298a8fdfc965f34502242171">CM_Untested</a>, <span class="comment">// testModifiable was false.</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a846dfdc0b3ef0c8edd759ead7bef1ced">  321</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a846dfdc0b3ef0c8edd759ead7bef1ced">CM_Modifiable</a>,</div>
+<div class="line"><a name="l00322"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a54dc398c54867f1c6b389954641b5f07">  322</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a54dc398c54867f1c6b389954641b5f07">CM_RValue</a>, <span class="comment">// Not modifiable because it's an rvalue</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6af8edcf78e7b112397911e6d71227a286">  323</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6af8edcf78e7b112397911e6d71227a286">CM_Function</a>, <span class="comment">// Not modifiable because it's a function; C++ only</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a9ab730e0419ea8a7e580199fc5e6488c">  324</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a9ab730e0419ea8a7e580199fc5e6488c">CM_LValueCast</a>, <span class="comment">// Same as CM_RValue, but indicates GCC cast-as-lvalue ext</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6aa3aeda8ed40bc5f777a25048debe3e64">  325</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6aa3aeda8ed40bc5f777a25048debe3e64">CM_NoSetterProperty</a>,<span class="comment">// Implicit assignment to ObjC property without setter</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a20355a351aee5297f076189988d5002d">  326</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a20355a351aee5297f076189988d5002d">CM_ConstQualified</a>,</div>
+<div class="line"><a name="l00327"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6ad6977e5ff19644434e596b3b893e698a">  327</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6ad6977e5ff19644434e596b3b893e698a">CM_ArrayType</a>,</div>
+<div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a74b5ddfc6b3e739b0d1ebca07fb199e0">  328</a></span>       <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a74b5ddfc6b3e739b0d1ebca07fb199e0">CM_IncompleteType</a></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">private</span>:</div>
+<div class="line"><a name="l00332"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#aa33520359f6cc0f51b476790d39ed869">  332</a></span>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1Expr.html">Expr</a>;</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> </div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> Modifiable;</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>     <span class="keyword">explicit</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a0ff4435458c5908f7e4c6582cda7ba3e">Classification</a>(<a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65" title="The various classification results. Most of these mean prvalue.">Kinds</a> k, <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6" title="The results of modification testing.">ModifiableType</a> m)</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       : <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>(k), Modifiable(m)</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>     {}</div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> </div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00342"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a0ff4435458c5908f7e4c6582cda7ba3e">  342</a></span>     <a class="code" href="classclang_1_1Expr_1_1Classification.html#a0ff4435458c5908f7e4c6582cda7ba3e">Classification</a>() {}</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> </div>
+<div class="line"><a name="l00344"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a2c91f3c6db5acbb1d40f757aab224376">  344</a></span>     <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65" title="The various classification results. Most of these mean prvalue.">Kinds</a> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a2c91f3c6db5acbb1d40f757aab224376">getKind</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65" title="The various classification results. Most of these mean prvalue.">Kinds</a><span class="keyword">></span>(<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>); }</div>
+<div class="line"><a name="l00345"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a419b4ecc648d5b492110a38cbf3c51ec">  345</a></span>     <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6" title="The results of modification testing.">ModifiableType</a> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a419b4ecc648d5b492110a38cbf3c51ec">getModifiable</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>       assert(Modifiable != <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a80278cba298a8fdfc965f34502242171">CM_Untested</a> && <span class="stringliteral">"Did not test for modifiability."</span>);</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>       <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6" title="The results of modification testing.">ModifiableType</a><span class="keyword">></span>(Modifiable);</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     }</div>
+<div class="line"><a name="l00349"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a7b17c6581ae178cb495e686b82b631e5">  349</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a7b17c6581ae178cb495e686b82b631e5">isLValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ac6c19ed2cc4ee6063010af269e2d1352">CL_LValue</a>; }</div>
+<div class="line"><a name="l00350"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a7a06c94787327dd87ab43c3bc5389278">  350</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a7a06c94787327dd87ab43c3bc5389278">isXValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a0a0e23efd8ca2e0afd142db6ec393ea5">CL_XValue</a>; }</div>
+<div class="line"><a name="l00351"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a5e6a0db3817e644c920c54a05f03fd12">  351</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a5e6a0db3817e644c920c54a05f03fd12">isGLValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> <= <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a0a0e23efd8ca2e0afd142db6ec393ea5">CL_XValue</a>; }</div>
+<div class="line"><a name="l00352"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#a0f89d86e6ff79e82a097c610202dcff6">  352</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a0f89d86e6ff79e82a097c610202dcff6">isPRValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> >= <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a5318f14e198b1cbdd2a535a63ed98ed5">CL_Function</a>; }</div>
+<div class="line"><a name="l00353"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#ab90abd06302d7e3495ba20239742e946">  353</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#ab90abd06302d7e3495ba20239742e946">isRValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> >= <a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65a0a0e23efd8ca2e0afd142db6ec393ea5">CL_XValue</a>; }</div>
+<div class="line"><a name="l00354"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#abe8029ea3e5878e76f1cbce3e26b3e28">  354</a></span>     <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#abe8029ea3e5878e76f1cbce3e26b3e28">isModifiable</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a419b4ecc648d5b492110a38cbf3c51ec">getModifiable</a>() == <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a846dfdc0b3ef0c8edd759ead7bef1ced">CM_Modifiable</a>; }</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> <span class="comment"></span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> <span class="comment">    /// \brief Create a simple, modifiably lvalue</span></div>
+<div class="line"><a name="l00357"></a><span class="lineno"><a class="code" href="classclang_1_1Expr_1_1Classification.html#aa878718004b88a31f52a0676aebe67ea">  357</a></span> <span class="comment"></span>    <span class="keyword">static</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html" title="The return type of classify(). Represents the C++11 expression taxonomy.">Classification</a> <a class="code" href="classclang_1_1Expr_1_1Classification.html#aa878718004b88a31f52a0676aebe67ea" title="Create a simple, modifiably lvalue.">makeSimpleLValue</a>() {</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr_1_1Classification.html#a0ff4435458c5908f7e4c6582cda7ba3e">Classification</a>(<a class="code" href="classclang_1_1Expr_1_1Classification.html#a8805edc700c85fc09db349e76797fc65ac6c19ed2cc4ee6063010af269e2d1352">CL_LValue</a>, <a class="code" href="classclang_1_1Expr_1_1Classification.html#a296eaf2dfd4d9079c6369c1c617451b6a846dfdc0b3ef0c8edd759ead7bef1ced">CM_Modifiable</a>);</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> </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 Classify - Classify this expression according to the C++11</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> <span class="comment">  ///        expression taxonomy.</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> <span class="comment">  /// C++11 defines ([basic.lval]) a new taxonomy of expressions to replace the</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> <span class="comment">  /// old lvalue vs rvalue. This function determines the type of expression this</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span> <span class="comment">  /// is. There are three expression types:</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> <span class="comment">  /// - lvalues are classical lvalues as in C++03.</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> <span class="comment">  /// - prvalues are equivalent to rvalues in C++03.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> <span class="comment">  /// - xvalues are expressions yielding unnamed rvalue references, e.g. a</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> <span class="comment">  ///   function returning an rvalue reference.</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span> <span class="comment">  /// lvalues and xvalues are collectively referred to as glvalues, while</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span> <span class="comment">  /// prvalues and xvalues together form rvalues.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a69226c1509feed27879120d7da683eff">  374</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr_1_1Classification.html" title="The return type of classify(). Represents the C++11 expression taxonomy.">Classification</a> <a class="code" href="classclang_1_1Expr.html#a69226c1509feed27879120d7da683eff" title="Classify - Classify this expression according to the C++11 expression taxonomy.">Classify</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> &Ctx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>     <span class="keywordflow">return</span> ClassifyImpl(Ctx, 0);</div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="comment"></span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> <span class="comment">  /// \brief ClassifyModifiable - Classify this expression according to the</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="comment">  ///        C++11 expression taxonomy, and see if it is valid on the left side</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="comment">  ///        of an assignment.</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> <span class="comment">  /// This function extends classify in that it also tests whether the</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="comment">  /// expression is modifiable (C99 6.3.2.1p1).</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="comment">  /// \param Loc A source location that might be filled with a relevant location</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> <span class="comment">  ///            if the expression is not modifiable.</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a5cea1136c3c8e9563dbb5e675b315923">  386</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr_1_1Classification.html" title="The return type of classify(). Represents the C++11 expression taxonomy.">Classification</a> <a class="code" href="classclang_1_1Expr.html#a5cea1136c3c8e9563dbb5e675b315923" title="ClassifyModifiable - Classify this expression according to the C++11 expression taxonomy, and see if it is valid on the left side of an assignment.">ClassifyModifiable</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> &Ctx, <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)<span class="keyword"> const</span>{</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     <span class="keywordflow">return</span> ClassifyImpl(Ctx, &Loc);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> <span class="comment">  /// getValueKindForType - Given a formal return or parameter type,</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span> <span class="comment">  /// give its value kind.</span></div>
+<div class="line"><a name="l00392"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ae254706a244368e973ef5790ce6f9b43">  392</a></span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> <a class="code" href="classclang_1_1Expr.html#ae254706a244368e973ef5790ce6f9b43">getValueKindForType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ReferenceType.html">ReferenceType</a> *RT = T-><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="l00394"></a><span class="lineno">  394</span>       <span class="keywordflow">return</span> (isa<LValueReferenceType>(RT)</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>                 ? <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>                 : (RT->getPointeeType()->isFunctionType()</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>                      ? <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a> : <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a63fc11bfcee4743c02b72657c1adcf27" title="An x-value expression is a reference to an object with independent storage but which can be "moved"...">VK_XValue</a>));</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>     <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</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> <span class="comment"></span></div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span> <span class="comment">  /// getValueKind - The value kind that this expression produces.</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb">  402</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> <a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</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">static_cast<</span><a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a><span class="keyword">></span>(<a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueKind);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span> <span class="comment">  /// getObjectKind - The object kind that this expression produces.</span></div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> <span class="comment">  /// Object kinds are meaningful only for expressions that yield an</span></div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span> <span class="comment">  /// l-value or x-value.</span></div>
+<div class="line"><a name="l00409"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">  409</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> <a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">getObjectKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a><span class="keyword">></span>(<a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ObjectKind);</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</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"><a class="code" href="classclang_1_1Expr.html#af687d8ceecb957f20449e034f7b2fd64">  413</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#af687d8ceecb957f20449e034f7b2fd64">isOrdinaryOrBitFieldObject</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK = <a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">getObjectKind</a>();</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     <span class="keywordflow">return</span> (OK == <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a> || OK == <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a9055ba3536b1c12453fbc1c170ed314f" title="A bitfield object is a bitfield on a C or C++ record.">OK_BitField</a>);</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   }</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span> <span class="comment"></span></div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span> <span class="comment">  /// setValueKind - Set the value kind produced by this expression.</span></div>
+<div class="line"><a name="l00419"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ab1650705b7a513344f6de34596bada0d">  419</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#ab1650705b7a513344f6de34596bada0d" title="setValueKind - Set the value kind produced by this expression.">setValueKind</a>(<a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> Cat) { <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ValueKind = Cat; }</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> <span class="comment"></span></div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span> <span class="comment">  /// setObjectKind - Set the object kind produced by this expression.</span></div>
+<div class="line"><a name="l00422"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#aba11e46e71f3b5170d6b32f107be8b00">  422</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#aba11e46e71f3b5170d6b32f107be8b00" title="setObjectKind - Set the object kind produced by this expression.">setObjectKind</a>(<a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> Cat) { <a class="code" href="classclang_1_1Stmt.html#aea431d7e2a72ee20ee4fc02577cf0da8">ExprBits</a>.ObjectKind = Cat; }</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>   Classification ClassifyImpl(<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_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> *Loc) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span> </div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span> <span class="comment"></span></div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> <span class="comment">  /// \brief Returns true if this expression is a gl-value that</span></div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> <span class="comment">  /// potentially refers to a bit-field.</span></div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> <span class="comment">  /// In C++, whether a gl-value refers to a bitfield is essentially</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> <span class="comment">  /// an aspect of the value-kind type system.</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a59de31b13a5f2e4f345a970035656b44">  434</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a59de31b13a5f2e4f345a970035656b44" title="Returns true if this expression is a gl-value that potentially refers to a bit-field.">refersToBitField</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">getObjectKind</a>() == <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a9055ba3536b1c12453fbc1c170ed314f" title="A bitfield object is a bitfield on a C or C++ record.">OK_BitField</a>; }</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span> <span class="comment"></span></div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span> <span class="comment">  /// \brief If this expression refers to a bit-field, retrieve the</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span> <span class="comment">  /// declaration of that bit-field.</span></div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> <span class="comment">  /// Note that this returns a non-null pointer in subtly different</span></div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span> <span class="comment">  /// places than refersToBitField returns true.  In particular, this can</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span> <span class="comment">  /// return a non-null pointer even for r-values loaded from</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> <span class="comment">  /// bit-fields, but it will return null for a conditional bit-field.</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span> <span class="comment"></span>  <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1Expr.html#a818d06525fe0aaed33835537135f2884" title="If this expression refers to a bit-field, retrieve the declaration of that bit-field.">getSourceBitField</a>();</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ae3f3bf58168f692212560b6138417a4d">  445</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1Expr.html#ae3f3bf58168f692212560b6138417a4d">getSourceBitField</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a818d06525fe0aaed33835537135f2884" title="If this expression refers to a bit-field, retrieve the declaration of that bit-field.">getSourceBitField</a>();</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   }</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> <span class="comment"></span></div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span> <span class="comment">  /// \brief If this expression is an l-value for an Objective C</span></div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span> <span class="comment">  /// property, find the underlying property reference expression.</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyRefExpr.html">ObjCPropertyRefExpr</a> *<a class="code" href="classclang_1_1Expr.html#ab7d629321799f7f33abda0858033d21b" title="If this expression is an l-value for an Objective C property, find the underlying property reference ...">getObjCProperty</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span> <span class="comment"></span></div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> <span class="comment">  /// \brief Check if this expression is the ObjC 'self' implicit parameter.</span></div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a212f92f9b838997038e977cc694953ef" title="Check if this expression is the ObjC 'self' implicit parameter.">isObjCSelfExpr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> <span class="comment"></span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="comment">  /// \brief Returns whether this expression refers to a vector element.</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a5a7264c21e63624f6438ee1a377abb4f" title="Returns whether this expression refers to a vector element.">refersToVectorElement</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> <span class="comment"></span></div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span> <span class="comment">  /// \brief Returns whether this expression has a placeholder type.</span></div>
+<div class="line"><a name="l00460"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#aa6b472c5ff8128dd7b78df4f598fa20b">  460</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#aa6b472c5ff8128dd7b78df4f598fa20b" title="Returns whether this expression has a placeholder type.">hasPlaceholderType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#afbbc43da16fd1c4f8caf241cf2bbe7f4">isPlaceholderType</a>();</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>   }</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span> <span class="comment"></span></div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span> <span class="comment">  /// \brief Returns whether this expression has a specific placeholder type.</span></div>
+<div class="line"><a name="l00465"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#add6599e0ddcf885ce579cce60702acbe">  465</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#add6599e0ddcf885ce579cce60702acbe" title="Returns whether this expression has a specific placeholder type.">hasPlaceholderType</a>(<a class="code" href="classclang_1_1BuiltinType.html#a77af33eaf2daca5deac3719c53394eb0">BuiltinType::Kind</a> K)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>     assert(<a class="code" href="classclang_1_1BuiltinType.html#ae1458becdaae47b09b1f88db5d7fdf30" title="Determines whether the given kind corresponds to a placeholder type.">BuiltinType::isPlaceholderTypeKind</a>(K));</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1BuiltinType.html">BuiltinType</a> *BT = dyn_cast<BuiltinType>(<a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()))</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="keywordflow">return</span> BT->getKind() == K;</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>   }</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> <span class="comment"></span></div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> <span class="comment">  /// isKnownToHaveBooleanValue - Return true if this is an integer expression</span></div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> <span class="comment">  /// that is known to return 0 or 1.  This happens for _Bool/bool expressions</span></div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> <span class="comment">  /// but also int expressions which are produced by things like comparisons in</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span> <span class="comment">  /// C.</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a161381479db6c9ec01ee300954de8d2c">isKnownToHaveBooleanValue</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span> <span class="comment"></span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span> <span class="comment">  /// isIntegerConstantExpr - Return true if this expression is a valid integer</span></div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span> <span class="comment">  /// constant expression, and, if so, return its value in Result.  If not a</span></div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span> <span class="comment">  /// valid i-c-e, return false and fill in Loc (if specified) with the location</span></div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span> <span class="comment">  /// of the invalid expression.</span></div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span> <span class="comment">  /// Note: This does not perform the implicit conversions required by C++11</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> <span class="comment">  /// [expr.const]p5.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a9c2d6a6def36088d32a4238a684f37be">isIntegerConstantExpr</a>(llvm::APSInt &Result, <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> &Ctx,</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</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 = 0,</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>                              <span class="keywordtype">bool</span> isEvaluated = <span class="keyword">true</span>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a9c2d6a6def36088d32a4238a684f37be">isIntegerConstantExpr</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> &Ctx,</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</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 = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span> <span class="comment"></span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> <span class="comment">  /// isCXX98IntegralConstantExpr - Return true if this expression is an</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> <span class="comment">  /// integral constant expression in C++98. Can only be used in C++.</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#ad7e9dbdcfe76ee6814d94c0c9863f9f7">isCXX98IntegralConstantExpr</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> <span class="comment"></span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> <span class="comment">  /// isCXX11ConstantExpr - Return true if this expression is a constant</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> <span class="comment">  /// expression in C++11. Can only be used in C++.</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="comment">  /// Note: This does not perform the implicit conversions required by C++11</span></div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span> <span class="comment">  /// [expr.const]p5.</span></div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#addd6736746e1e84e4c12ba5f57b4e860">isCXX11ConstantExpr</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> &Ctx, <a class="code" href="classclang_1_1APValue.html">APValue</a> *Result = 0,</div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</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 = 0) <span class="keyword">const</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">  /// isPotentialConstantExpr - Return true if this function's definition</span></div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span> <span class="comment">  /// might be usable in a constant expression in C++11, if it were marked</span></div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> <span class="comment">  /// constexpr. Return false if the function can never produce a constant</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span> <span class="comment">  /// expression, along with diagnostics describing why not.</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a12f3b690cad0c84578836850be616b64">isPotentialConstantExpr</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD,</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>                                       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>                                         <a class="code" href="namespaceclang.html#aad93c2ca4f90628847152a2d03cb5b2d" title="A partial diagnostic along with the source location where this diagnostic occurs.">PartialDiagnosticAt</a>> &Diags);</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span> <span class="comment"></span></div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> <span class="comment">  /// isConstantInitializer - Returns true if this expression can be emitted to</span></div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> <span class="comment">  /// IR as a constant, and thus can be used as a constant initializer in C.</span></div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a33582799772f481c8263306463a8ee1b">isConstantInitializer</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> &Ctx, <span class="keywordtype">bool</span> ForRef) <span class="keyword">const</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">  /// EvalStatus is a struct with detailed info about an evaluation in progress.</span></div>
+<div class="line"><a name="l00516"></a><span class="lineno"><a class="code" href="structclang_1_1Expr_1_1EvalStatus.html">  516</a></span> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structclang_1_1Expr_1_1EvalStatus.html" title="EvalStatus is a struct with detailed info about an evaluation in progress.">EvalStatus</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> <span class="comment">    /// HasSideEffects - Whether the evaluated expression has side effects.</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span> <span class="comment">    /// For example, (f() && 0) can be folded, but it still has side effects.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"><a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad41b4d6edcf0f4601a63c28779356f3b">  519</a></span> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad41b4d6edcf0f4601a63c28779356f3b">HasSideEffects</a>;</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> <span class="comment"></span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span> <span class="comment">    /// Diag - If this is non-null, it will be filled in with a stack of notes</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span> <span class="comment">    /// indicating why evaluation failed (or why it failed to produce a constant</span></div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span> <span class="comment">    /// expression).</span></div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span> <span class="comment">    /// If the expression is unfoldable, the notes will indicate why it's not</span></div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span> <span class="comment">    /// foldable. If the expression is foldable, but not a constant expression,</span></div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span> <span class="comment">    /// the notes will describes why it isn't a constant expression. If the</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> <span class="comment">    /// expression *is* a constant expression, no notes will be produced.</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"><a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#a7488cd40b42a4151922651a53a4fe936">  528</a></span> <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<PartialDiagnosticAt></a> *<a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#a7488cd40b42a4151922651a53a4fe936">Diag</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"><a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#a4544c8b9a75bf9298095d34876f04c46">  530</a></span>     <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#a4544c8b9a75bf9298095d34876f04c46">EvalStatus</a>() : <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad41b4d6edcf0f4601a63c28779356f3b">HasSideEffects</a>(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#a7488cd40b42a4151922651a53a4fe936">Diag</a>(0) {}</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>     <span class="comment">// hasSideEffects - Return true if the evaluated expression has</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     <span class="comment">// side effects.</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno"><a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad884bda9144213a566df624aeb75d54f">  534</a></span>     <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad884bda9144213a566df624aeb75d54f">hasSideEffects</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       <span class="keywordflow">return</span> <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html#ad41b4d6edcf0f4601a63c28779356f3b">HasSideEffects</a>;</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</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"></span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span> <span class="comment">  /// EvalResult is a struct with detailed info about an evaluated expression.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno"><a class="code" href="structclang_1_1Expr_1_1EvalResult.html">  540</a></span> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structclang_1_1Expr_1_1EvalResult.html" title="EvalResult is a struct with detailed info about an evaluated expression.">EvalResult</a> : <a class="code" href="structclang_1_1Expr_1_1EvalStatus.html" title="EvalStatus is a struct with detailed info about an evaluation in progress.">EvalStatus</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> <span class="comment">    /// Val - This is the value the expression can be folded to.</span></div>
+<div class="line"><a name="l00542"></a><span class="lineno"><a class="code" href="structclang_1_1Expr_1_1EvalResult.html#a94083629a969e7faa7812eb84a7ecd24">  542</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1APValue.html">APValue</a> <a class="code" href="structclang_1_1Expr_1_1EvalResult.html#a94083629a969e7faa7812eb84a7ecd24" title="Val - This is the value the expression can be folded to.">Val</a>;</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">// isGlobalLValue - Return true if the evaluated lvalue expression</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>     <span class="comment">// is global.</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>     <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1Expr_1_1EvalResult.html#ab3e552e8103e16a68ad272a597811d23">isGlobalLValue</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   };</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span> <span class="comment"></span></div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span> <span class="comment">  /// EvaluateAsRValue - Return true if this is a constant which we can fold to</span></div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span> <span class="comment">  /// an rvalue using any crazy technique (that has nothing to do with language</span></div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> <span class="comment">  /// standards) that we want to, even if the expression has side-effects. If</span></div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> <span class="comment">  /// this function returns true, it returns the folded constant in Result. If</span></div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span> <span class="comment">  /// the expression is a glvalue, an lvalue-to-rvalue conversion will be</span></div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span> <span class="comment">  /// applied.</span></div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a5fec5e9213f025021afd2d2a87b2d02a">EvaluateAsRValue</a>(<a class="code" href="structclang_1_1Expr_1_1EvalResult.html" title="EvalResult is a struct with detailed info about an evaluated expression.">EvalResult</a> &Result, <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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span> <span class="comment"></span></div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span> <span class="comment">  /// EvaluateAsBooleanCondition - Return true if this is a constant</span></div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span> <span class="comment">  /// which we we can fold and convert to a boolean condition using</span></div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span> <span class="comment">  /// any crazy technique that we want to, even if the expression has</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span> <span class="comment">  /// side-effects.</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a3be83e04a2ceb51188e5b8a661505ec3">EvaluateAsBooleanCondition</a>(<span class="keywordtype">bool</span> &Result, <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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> </div>
+<div class="line"><a name="l00563"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08a">  563</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08a">SideEffectsKind</a> { <a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08aa71afbc283c05b547db9a8b655f49dcd5">SE_NoSideEffects</a>, <a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08aa4a1fd43d748564539beecb04f16530c8">SE_AllowSideEffects</a> };</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span> <span class="comment"></span></div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span> <span class="comment">  /// EvaluateAsInt - Return true if this is a constant which we can fold and</span></div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> <span class="comment">  /// convert to an integer, using any crazy technique that we want to.</span></div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#aea5aa4f172677bf59f1a149ee1513c9c">EvaluateAsInt</a>(llvm::APSInt &Result, <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> &Ctx,</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>                      <a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08a">SideEffectsKind</a> AllowSideEffects = <a class="code" href="classclang_1_1Expr.html#a23b0a4ca516270db2d6f6337c3e9b08aa71afbc283c05b547db9a8b655f49dcd5">SE_NoSideEffects</a>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span> <span class="comment"></span></div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span> <span class="comment">  /// isEvaluatable - Call EvaluateAsRValue to see if this expression can be</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span> <span class="comment">  /// constant folded without side-effects, but discard the result.</span></div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a34ea5af15a7a831d0b9b872ee1faf7ed">isEvaluatable</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span> <span class="comment"></span></div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span> <span class="comment">  /// HasSideEffects - This routine returns true for all those expressions</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span> <span class="comment">  /// which have any effect other than producing a value. Example is a function</span></div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span> <span class="comment">  /// call, volatile variable read, or throwing an exception.</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#ae87e52ec0e14be11804122a03f8744ed">HasSideEffects</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="comment"></span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="comment">  /// \brief Determine whether this expression involves a call to any function</span></div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="comment">  /// that is not trivial.</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#aecb65a74102b1e3b7d9605a7848df272" title="Determine whether this expression involves a call to any function that is not trivial.">hasNonTrivialCall</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> &Ctx);</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> <span class="comment"></span></div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span> <span class="comment">  /// EvaluateKnownConstInt - Call EvaluateAsRValue and return the folded</span></div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span> <span class="comment">  /// integer. This must be called on an expression that constant folds to an</span></div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> <span class="comment">  /// integer.</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span> <span class="comment"></span>  llvm::APSInt <a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</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> &Ctx,</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>                           <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<PartialDiagnosticAt></a> *<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>=0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span> </div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1Expr.html#aeb008f0e50b4c9b367fe3ef39d58c5c4">EvaluateForOverflow</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span> <span class="comment"></span></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span> <span class="comment">  /// EvaluateAsLValue - Evaluate an expression to see if we can fold it to an</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span> <span class="comment">  /// lvalue with link time known address, with no side-effects.</span></div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a4fdd26501fbedc9e20e85d48240eb6e0">EvaluateAsLValue</a>(EvalResult &Result, <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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span> <span class="comment"></span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> <span class="comment">  /// EvaluateAsInitializer - Evaluate an expression as if it were the</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span> <span class="comment">  /// initializer of the given declaration. Returns true if the initializer</span></div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span> <span class="comment">  /// can be folded to a constant, and produces any relevant notes. In C++11,</span></div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span> <span class="comment">  /// notes will be produced if the expression is not a constant expression.</span></div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#abed980edbda3cea613700061a24f0fbf">EvaluateAsInitializer</a>(<a class="code" href="classclang_1_1APValue.html">APValue</a> &Result, <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> &Ctx,</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span>                              <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *VD,</div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>                              <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<PartialDiagnosticAt></a> &Notes) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span> <span class="comment"></span></div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span> <span class="comment">  /// \brief Enumeration used to describe the kind of Null pointer constant</span></div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span> <span class="comment">  /// returned from \c isNullPointerConstant().</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5">  605</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5" title="Enumeration used to describe the kind of Null pointer constant returned from isNullPointerConstant()...">NullPointerConstantKind</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> <span class="comment">    /// \brief Expression is not a Null pointer constant.</span></div>
+<div class="line"><a name="l00607"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2">  607</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aec64d16ea295463d7320d531eed287b2" title="Expression is not a Null pointer constant.">NPCK_NotNull</a> = 0,</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">    /// \brief Expression is a Null pointer constant built from a zero integer</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span> <span class="comment">    /// expression that is not a simple, possibly parenthesized, zero literal.</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span> <span class="comment">    /// C++ Core Issue 903 will classify these expressions as "not pointers"</span></div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span> <span class="comment">    /// once it is adopted.</span></div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span> <span class="comment">    /// http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#903</span></div>
+<div class="line"><a name="l00614"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5a28a570648444554687512aa087625912">  614</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5a28a570648444554687512aa087625912" title="Expression is a Null pointer constant built from a zero integer expression that is not a simple...">NPCK_ZeroExpression</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 Expression is a Null pointer constant built from a literal zero.</span></div>
+<div class="line"><a name="l00617"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ab0deca18f76f01eed006a8acc1400499">  617</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ab0deca18f76f01eed006a8acc1400499" title="Expression is a Null pointer constant built from a literal zero.">NPCK_ZeroLiteral</a>,</div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span> <span class="comment"></span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span> <span class="comment">    /// \brief Expression is a C++11 nullptr.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aced738ba36bc5bd1f85b8016533bf372">  620</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5aced738ba36bc5bd1f85b8016533bf372" title="Expression is a C++11 nullptr.">NPCK_CXX11_nullptr</a>,</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span> <span class="comment"></span></div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span> <span class="comment">    /// \brief Expression is a GNU-style __null constant.</span></div>
+<div class="line"><a name="l00623"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ae2d5d1b2a88a55026221e89617b42885">  623</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5ae2d5d1b2a88a55026221e89617b42885" title="Expression is a GNU-style __null constant.">NPCK_GNUNull</a></div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   };</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> <span class="comment"></span></div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span> <span class="comment">  /// \brief Enumeration used to describe how \c isNullPointerConstant()</span></div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span> <span class="comment">  /// should cope with value-dependent expressions.</span></div>
+<div class="line"><a name="l00628"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67">  628</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67" title="Enumeration used to describe how isNullPointerConstant() should cope with value-dependent expressions...">NullPointerConstantValueDependence</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span> <span class="comment">    /// \brief Specifies that the expression should never be value-dependent.</span></div>
+<div class="line"><a name="l00630"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a2e70655e166db6a25cc77365db79b7b3">  630</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a2e70655e166db6a25cc77365db79b7b3" title="Specifies that the expression should never be value-dependent.">NPC_NeverValueDependent</a> = 0,</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span> <span class="comment"></span></div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span> <span class="comment">    /// \brief Specifies that a value-dependent expression of integral or</span></div>
+<div class="line"><a name="l00633"></a><span class="lineno">  633</span> <span class="comment">    /// dependent type should be considered a null pointer constant.</span></div>
+<div class="line"><a name="l00634"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a06279741aa9bc21d0a6d5be7aa7f06e7">  634</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a06279741aa9bc21d0a6d5be7aa7f06e7" title="Specifies that a value-dependent expression of integral or dependent type should be considered a null...">NPC_ValueDependentIsNull</a>,</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">    /// \brief Specifies that a value-dependent expression should be considered</span></div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span> <span class="comment">    /// to never be a null pointer constant.</span></div>
+<div class="line"><a name="l00638"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a859ff929282c6409dedca4d3e3c5ab8c">  638</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67a859ff929282c6409dedca4d3e3c5ab8c" title="Specifies that a value-dependent expression should be considered to never be a null pointer constant...">NPC_ValueDependentIsNotNull</a></div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>   };</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span> <span class="comment"></span></div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span> <span class="comment">  /// isNullPointerConstant - C99 6.3.2.3p3 - Test if this reduces down to</span></div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span> <span class="comment">  /// a Null pointer constant. The return value can further distinguish the</span></div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span> <span class="comment">  /// kind of NULL pointer constant that was detected.</span></div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html#a9c3e85e64ae4b9ef321ecd21dc38a4f5" title="Enumeration used to describe the kind of Null pointer constant returned from isNullPointerConstant()...">NullPointerConstantKind</a> <a class="code" href="classclang_1_1Expr.html#ab56d6fd074c831a3e63b45f4f226b35a">isNullPointerConstant</a>(</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</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="l00646"></a><span class="lineno">  646</span>       <a class="code" href="classclang_1_1Expr.html#a8542d93f28013fb0866693834b04ff67" title="Enumeration used to describe how isNullPointerConstant() should cope with value-dependent expressions...">NullPointerConstantValueDependence</a> NPC) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span> <span class="comment"></span></div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span> <span class="comment">  /// isOBJCGCCandidate - Return true if this expression may be used in a read/</span></div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span> <span class="comment">  /// write barrier.</span></div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a35da34a8ae0eff1a6f73b38d7a68a26b">isOBJCGCCandidate</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span> <span class="comment"></span></div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span> <span class="comment">  /// \brief Returns true if this expression is a bound member function.</span></div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a49884252f356fff776e2ac8ff789f7eb" title="Returns true if this expression is a bound member function.">isBoundMemberFunction</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span> <span class="comment"></span></div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span> <span class="comment">  /// \brief Given an expression of bound-member type, find the type</span></div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span> <span class="comment">  /// of the member.  Returns null if this is an *overloaded* bound</span></div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span> <span class="comment">  /// member expression.</span></div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Expr.html#a264da990f2d0d3fc324029187b6cb87d" title="Given an expression of bound-member type, find the type of the member. Returns null if this is an ove...">findBoundMemberType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>);</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">  /// IgnoreImpCasts - Skip past any implicit casts which might</span></div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> <span class="comment">  /// surround this expression.  Only skips ImplicitCastExprs.</span></div>
+<div class="line"><a name="l00662"></a><span class="lineno">  662</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a67dcf7e58610da26c755748a2576a8fc">IgnoreImpCasts</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span> <span class="comment"></span></div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span> <span class="comment">  /// IgnoreImplicit - Skip past any implicit AST nodes which might</span></div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span> <span class="comment">  /// surround this expression.</span></div>
+<div class="line"><a name="l00666"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a4044b5da6ee0f7a5a67419dc5a106883">  666</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a4044b5da6ee0f7a5a67419dc5a106883">IgnoreImplicit</a>() LLVM_READONLY {</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     <span class="keywordflow">return</span> cast<Expr>(<a class="code" href="classclang_1_1Stmt.html#aed458f785aec2ce3c0d8db06a86154c4">Stmt::IgnoreImplicit</a>());</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   }</div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span> </div>
+<div class="line"><a name="l00670"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a5a224d523028d5969d799484b8970120">  670</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a5a224d523028d5969d799484b8970120">IgnoreImplicit</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a4044b5da6ee0f7a5a67419dc5a106883">IgnoreImplicit</a>();</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>   }</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span> <span class="comment"></span></div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span> <span class="comment">  /// IgnoreParens - Ignore parentheses.  If this Expr is a ParenExpr, return</span></div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span> <span class="comment">  ///  its subexpression.  If that subexpression is also a ParenExpr,</span></div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span> <span class="comment">  ///  then this method recursively returns its subexpression, and so forth.</span></div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span> <span class="comment">  ///  Otherwise, the method returns the current Expr.</span></div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span> <span class="comment"></span></div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span> <span class="comment">  /// IgnoreParenCasts - Ignore parentheses and casts.  Strip off any ParenExpr</span></div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span> <span class="comment">  /// or CastExprs, returning their operand.</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span> <span class="comment"></span></div>
+<div class="line"><a name="l00684"></a><span class="lineno">  684</span> <span class="comment">  /// IgnoreParenImpCasts - Ignore parentheses and implicit casts.  Strip off</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span> <span class="comment">  /// any ParenExpr or ImplicitCastExprs, returning their operand.</span></div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a54036c75e73ecdf081729210fa53e582">IgnoreParenImpCasts</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span> <span class="comment"></span></div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span> <span class="comment">  /// IgnoreConversionOperator - Ignore conversion operator. If this Expr is a</span></div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span> <span class="comment">  /// call to a conversion operator, return the argument.</span></div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a94b56550f658f522dbf1798bc2eddc45">IgnoreConversionOperator</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span> </div>
+<div class="line"><a name="l00692"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a8b08544b17714e5abe5b25c864d2839d">  692</a></span>   const <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a94b56550f658f522dbf1798bc2eddc45">IgnoreConversionOperator</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a94b56550f658f522dbf1798bc2eddc45">IgnoreConversionOperator</a>();</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> </div>
+<div class="line"><a name="l00696"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a97f7762fc15a961bb21d6641d2fd70eb">  696</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a97f7762fc15a961bb21d6641d2fd70eb">IgnoreParenImpCasts</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a54036c75e73ecdf081729210fa53e582">IgnoreParenImpCasts</a>();</div>
+<div class="line"><a name="l00698"></a><span class="lineno">  698</span>   }</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span> <span class="comment"></span></div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span> <span class="comment">  /// Ignore parentheses and lvalue casts.  Strip off any ParenExpr and</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span> <span class="comment">  /// CastExprs that represent lvalue casts, returning their operand.</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a4a45449c2f4c4fba9abfb8ecd9fe2cfc">IgnoreParenLValueCasts</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span> </div>
+<div class="line"><a name="l00704"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ace1e70a411dcf1979dd2118a7d0d86c4">  704</a></span>   const <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a4a45449c2f4c4fba9abfb8ecd9fe2cfc">IgnoreParenLValueCasts</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a4a45449c2f4c4fba9abfb8ecd9fe2cfc">IgnoreParenLValueCasts</a>();</div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>   }</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span> <span class="comment"></span></div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span> <span class="comment">  /// IgnoreParenNoopCasts - Ignore parentheses and casts that do not change the</span></div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span> <span class="comment">  /// value (including ptr->int casts of the same size).  Strip off any</span></div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span> <span class="comment">  /// ParenExpr or CastExprs, returning their operand.</span></div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a3ba2c34d95094c419c79ef3aa7be05e8">IgnoreParenNoopCasts</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> &Ctx) LLVM_READONLY;</div>
+<div class="line"><a name="l00712"></a><span class="lineno">  712</span> <span class="comment"></span></div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span> <span class="comment">  /// Ignore parentheses and derived-to-base casts.</span></div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da" title="Ignore parentheses and derived-to-base casts.">ignoreParenBaseCasts</a>() LLVM_READONLY;</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span> </div>
+<div class="line"><a name="l00716"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a5446555c0cd212ebc843e5029a024edd">  716</a></span>   const <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da" title="Ignore parentheses and derived-to-base casts.">ignoreParenBaseCasts</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#af64aa21b7ace12995b752999e500a1da" title="Ignore parentheses and derived-to-base casts.">ignoreParenBaseCasts</a>();</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>   }</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span> <span class="comment"></span></div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span> <span class="comment">  /// \brief Determine whether this expression is a default function argument.</span></div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span> <span class="comment">  /// Default arguments are implicitly generated in the abstract syntax tree</span></div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span> <span class="comment">  /// by semantic analysis for function calls, object constructions, etc. in</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span> <span class="comment">  /// C++. Default arguments are represented by \c CXXDefaultArgExpr nodes;</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span> <span class="comment">  /// this routine also looks through any implicit casts to determine whether</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span> <span class="comment">  /// the expression is a default argument.</span></div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a49201023b2da44bcaf57ac2fcef1ac15" title="Determine whether this expression is a default function argument.">isDefaultArgument</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span> <span class="comment"></span></div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> <span class="comment">  /// \brief Determine whether the result of this expression is a</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> <span class="comment">  /// temporary object of the given class type.</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a5f329c4e416440b980064951f6980cfa" title="Determine whether the result of this expression is a temporary object of the given class type...">isTemporaryObject</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> &Ctx, <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *TempTy) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span> <span class="comment"></span></div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span> <span class="comment">  /// \brief Whether this expression is an implicit reference to 'this' in C++.</span></div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a708f4067778bd15a94cbca96d179989c" title="Whether this expression is an implicit reference to 'this' in C++.">isImplicitCXXThis</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span> </div>
+<div class="line"><a name="l00736"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#ae429d45f3f7e29ae649bf34ed7a6faed">  736</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#ae429d45f3f7e29ae649bf34ed7a6faed">IgnoreImpCasts</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a67dcf7e58610da26c755748a2576a8fc">IgnoreImpCasts</a>();</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>   }</div>
+<div class="line"><a name="l00739"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a11cab9db81ca3805a60548a077654d8a">  739</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a11cab9db81ca3805a60548a077654d8a">IgnoreParens</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a6128786ad6c6ad61b66ad4ddf09b1bd8">IgnoreParens</a>();</div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   }</div>
+<div class="line"><a name="l00742"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a2dd393e82ecc8562862e5e57297847f1">  742</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a2dd393e82ecc8562862e5e57297847f1">IgnoreParenCasts</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a397a707d10e0d3ac4a150325eafa4368">IgnoreParenCasts</a>();</div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   }</div>
+<div class="line"><a name="l00745"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#abe429f7069b64ab4c452254b485edabb">  745</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#abe429f7069b64ab4c452254b485edabb">IgnoreParenNoopCasts</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> &Ctx) <span class="keyword">const</span> LLVM_READONLY {</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1Expr.html#a3ba2c34d95094c419c79ef3aa7be05e8">IgnoreParenNoopCasts</a>(Ctx);</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="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a7e4cf6838c1cf4095a67f643d56c4426">hasAnyTypeDependentArguments</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> Exprs);</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span> <span class="comment"></span></div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span> <span class="comment">  /// \brief For an expression of class type or pointer to class type,</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span> <span class="comment">  /// return the most derived class decl the expression is known to refer to.</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span> <span class="comment">  /// If this expression is a cast, this method looks through it to find the</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span> <span class="comment">  /// most derived decl that can be inferred from the expression.</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span> <span class="comment">  /// This is valid because derived-to-base conversions have undefined</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span> <span class="comment">  /// behavior if the object isn't dynamically of the derived type.</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span> <span class="comment"></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_1Expr.html#a3850b5db8a316c79f4ca87126a37a1b1" title="For an expression of class type or pointer to class type, return the most derived class decl the expr...">getBestDynamicClassType</a>() <span class="keyword">const</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">  /// Walk outwards from an expression we want to bind a reference to and</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span> <span class="comment">  /// find the expression whose lifetime needs to be extended. Record</span></div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span> <span class="comment">  /// the LHSs of comma expressions and adjustments needed along the path.</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#ab68ef9ee6af809f73ba54a9db42e8a72">skipRValueSubobjectAdjustments</a>(</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const Expr *></a> &CommaLHS,</div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span>       <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<SubobjectAdjustment></a> &Adjustments) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span> <span class="comment"></span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span> <span class="comment">  /// Skip irrelevant expressions to find what should be materialize for</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno">  768</span> <span class="comment">  /// binding with a reference.</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *</div>
+<div class="line"><a name="l00770"></a><span class="lineno">  770</span>   <a class="code" href="classclang_1_1Expr.html#a3b61739df96b7ad58a1dcafc16ea8c63">findMaterializedTemporary</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1MaterializeTemporaryExpr.html" title="Represents a prvalue temporary that is written into memory so that a reference can bind to it...">MaterializeTemporaryExpr</a> *&MTE) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00771"></a><span class="lineno">  771</span> </div>
+<div class="line"><a name="l00772"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a24762de25433051d29dfc4c2faeb8e9a">  772</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1Expr.html#a24762de25433051d29dfc4c2faeb8e9a">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l00773"></a><span class="lineno">  773</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() >= firstExprConstant &&</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>            T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() <= lastExprConstant;</div>
+<div class="line"><a name="l00775"></a><span class="lineno">  775</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">  777</span> </div>
+<div class="line"><a name="l00778"></a><span class="lineno">  778</span> </div>
+<div class="line"><a name="l00779"></a><span class="lineno">  779</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span> <span class="comment">// Primary Expressions.</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno">  781</span> <span class="comment">//===----------------------------------------------------------------------===//</span></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">/// OpaqueValueExpr - An expression referring to an opaque object of a</span></div>
+<div class="line"><a name="l00784"></a><span class="lineno">  784</span> <span class="comment">/// fixed type and value class.  These don't correspond to concrete</span></div>
+<div class="line"><a name="l00785"></a><span class="lineno">  785</span> <span class="comment">/// syntax; instead they're used to express operations (usually copy</span></div>
+<div class="line"><a name="l00786"></a><span class="lineno">  786</span> <span class="comment">/// operations) on values whose source is generally obvious from</span></div>
+<div class="line"><a name="l00787"></a><span class="lineno">  787</span> <span class="comment">/// context.</span></div>
+<div class="line"><a name="l00788"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html">  788</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l00789"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#ad6427d648931017bffcb2f90b8930f9d">  789</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l00790"></a><span class="lineno">  790</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *SourceExpr;</div>
+<div class="line"><a name="l00791"></a><span class="lineno">  791</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="l00792"></a><span class="lineno">  792</span> </div>
+<div class="line"><a name="l00793"></a><span class="lineno">  793</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00794"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#af483a4b2b7461bc2256f12ac4d6a9f26">  794</a></span>   <a class="code" href="classclang_1_1OpaqueValueExpr.html#af483a4b2b7461bc2256f12ac4d6a9f26">OpaqueValueExpr</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> Loc, <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK,</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>                   <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK = <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>                   <a class="code" href="classclang_1_1Expr.html">Expr</a> *SourceExpr = 0)</div>
+<div class="line"><a name="l00797"></a><span class="lineno">  797</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(OpaqueValueExprClass, T, VK, OK,</div>
+<div class="line"><a name="l00798"></a><span class="lineno">  798</span>            T->isDependentType(), </div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>            T->isDependentType() || </div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>            (SourceExpr && SourceExpr-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>()),</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>            T->isInstantiationDependentType(),</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       SourceExpr(SourceExpr), Loc(Loc) {</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>   }</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span> <span class="comment"></span></div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span> <span class="comment">  /// Given an expression which invokes a copy constructor --- i.e.  a</span></div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span> <span class="comment">  /// CXXConstructExpr, possibly wrapped in an ExprWithCleanups ---</span></div>
+<div class="line"><a name="l00808"></a><span class="lineno">  808</span> <span class="comment">  /// find the OpaqueValueExpr that's the source of the construction.</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *<a class="code" href="classclang_1_1OpaqueValueExpr.html#a2af873597d5eaa06dbd39b702fbabf44">findInCopyConstruct</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>);</div>
+<div class="line"><a name="l00810"></a><span class="lineno">  810</span> </div>
+<div class="line"><a name="l00811"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#a5fc280395be3ac87a18c270eadba61a1">  811</a></span>   <span class="keyword">explicit</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html#af483a4b2b7461bc2256f12ac4d6a9f26">OpaqueValueExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(OpaqueValueExprClass, Empty) { }</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span> <span class="comment"></span></div>
+<div class="line"><a name="l00814"></a><span class="lineno">  814</span> <span class="comment">  /// \brief Retrieve the location of this expression.</span></div>
+<div class="line"><a name="l00815"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#a52859d05b2eea3a401d119c8c1d61080">  815</a></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_1OpaqueValueExpr.html#a52859d05b2eea3a401d119c8c1d61080" title="Retrieve the location of this expression.">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span> </div>
+<div class="line"><a name="l00817"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#ab811f29b98fdde63d2bca04d57f33a97">  817</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_1OpaqueValueExpr.html#ab811f29b98fdde63d2bca04d57f33a97">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>     <span class="keywordflow">return</span> SourceExpr ? SourceExpr-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>() : Loc;</div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span>   }</div>
+<div class="line"><a name="l00820"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#aa87d8389fe4cf1937d918786ecfec3d6">  820</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_1OpaqueValueExpr.html#aa87d8389fe4cf1937d918786ecfec3d6">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00821"></a><span class="lineno">  821</span>     <span class="keywordflow">return</span> SourceExpr ? SourceExpr-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>() : Loc;</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span>   }</div>
+<div class="line"><a name="l00823"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#af23678fd018a790a4f0e75e65a6ed0c2">  823</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_1OpaqueValueExpr.html#af23678fd018a790a4f0e75e65a6ed0c2">getExprLoc</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l00824"></a><span class="lineno">  824</span>     <span class="keywordflow">if</span> (SourceExpr) <span class="keywordflow">return</span> SourceExpr-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span>     <span class="keywordflow">return</span> Loc;</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> </div>
+<div class="line"><a name="l00828"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#ae7b427673a30d4c246b2246da1ac01cd">  828</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1OpaqueValueExpr.html#ae7b427673a30d4c246b2246da1ac01cd">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span> <span class="comment"></span></div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> <span class="comment">  /// The source expression of an opaque value expression is the</span></div>
+<div class="line"><a name="l00831"></a><span class="lineno">  831</span> <span class="comment">  /// expression which originally generated the value.  This is</span></div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span> <span class="comment">  /// provided as a convenience for analyses that don't wish to</span></div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span> <span class="comment">  /// precisely model the execution behavior of the program.</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">  /// The source expression is typically set when building the</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span> <span class="comment">  /// expression which binds the opaque value expression in the first</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> <span class="comment">  /// place.</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#ab105e60e67105a6ea713896d632e9670">  838</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1OpaqueValueExpr.html#ab105e60e67105a6ea713896d632e9670">getSourceExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> SourceExpr; }</div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span> </div>
+<div class="line"><a name="l00840"></a><span class="lineno"><a class="code" href="classclang_1_1OpaqueValueExpr.html#aaece5d7cecc6258a81ef58941dd266c8">  840</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1OpaqueValueExpr.html#aaece5d7cecc6258a81ef58941dd266c8">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == OpaqueValueExprClass;</div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</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"></span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span> <span class="comment">/// \brief A reference to a declared variable, function, enum, etc.</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span> <span class="comment">/// [C99 6.5.1p2]</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span> <span class="comment">/// This encodes all the information about how a declaration is referenced</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span> <span class="comment">/// within an expression.</span></div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span> <span class="comment">/// There are several optional constructs attached to DeclRefExprs only when</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span> <span class="comment">/// they apply in order to conserve memory. These are laid out past the end of</span></div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span> <span class="comment">/// the object, and flags in the DeclRefExprBitfield track whether they exist:</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span> <span class="comment">///   DeclRefExprBits.HasQualifier:</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span> <span class="comment">///       Specifies when this declaration reference expression has a C++</span></div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span> <span class="comment">///       nested-name-specifier.</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span> <span class="comment">///   DeclRefExprBits.HasFoundDecl:</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span> <span class="comment">///       Specifies when this declaration reference expression has a record of</span></div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span> <span class="comment">///       a NamedDecl (different from the referenced ValueDecl) which was found</span></div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span> <span class="comment">///       during name lookup and/or overload resolution.</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span> <span class="comment">///   DeclRefExprBits.HasTemplateKWAndArgsInfo:</span></div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span> <span class="comment">///       Specifies when this declaration reference expression has an explicit</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span> <span class="comment">///       C++ template keyword and/or template argument list.</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span> <span class="comment">///   DeclRefExprBits.RefersToEnclosingLocal</span></div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span> <span class="comment">///       Specifies when this declaration reference expression (validly)</span></div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span> <span class="comment">///       refers to a local variable from a different function.</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html">  868</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> <span class="comment">  /// \brief The declaration that we are referencing.</span></div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span> <span class="comment"></span>  <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D;</div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span> <span class="comment"></span></div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span> <span class="comment">  /// \brief The location of the declaration name itself.</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</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> Loc;</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span> <span class="comment"></span></div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span> <span class="comment">  /// \brief Provides source/type location info for the declaration name</span></div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span> <span class="comment">  /// embedded in D.</span></div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span> <span class="comment"></span>  <a class="code" href="structclang_1_1DeclarationNameLoc.html">DeclarationNameLoc</a> DNLoc;</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span> <span class="comment"></span></div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span> <span class="comment">  /// \brief Helper to retrieve the optional NestedNameSpecifierLoc.</span></div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span> <span class="comment"></span>  <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> &getInternalQualifierLoc() {</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     assert(<a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>());</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> *<span class="keyword">></span>(<span class="keyword">this</span> + 1);</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>   }</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span> <span class="comment"></span></div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span> <span class="comment">  /// \brief Helper to retrieve the optional NestedNameSpecifierLoc.</span></div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> &getInternalQualifierLoc()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)->getInternalQualifierLoc();</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>   }</div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span> <span class="comment"></span></div>
+<div class="line"><a name="l00890"></a><span class="lineno">  890</span> <span class="comment">  /// \brief Test whether there is a distinct FoundDecl attached to the end of</span></div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span> <span class="comment">  /// this DRE.</span></div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span> <span class="comment"></span>  <span class="keywordtype">bool</span> hasFoundDecl()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HasFoundDecl; }</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span> <span class="comment"></span></div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</span> <span class="comment">  /// \brief Helper to retrieve the optional NamedDecl through which this</span></div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</span> <span class="comment">  /// reference occurred.</span></div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span> <span class="comment"></span>  <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *&getInternalFoundDecl() {</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>     assert(hasFoundDecl());</div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>())</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>       <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> **<span class="keyword">></span>(&getInternalQualifierLoc() + 1);</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     <span class="keywordflow">return</span> *<span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> **<span class="keyword">></span>(<span class="keyword">this</span> + 1);</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"></span></div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span> <span class="comment">  /// \brief Helper to retrieve the optional NamedDecl through which this</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span> <span class="comment">  /// reference occurred.</span></div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span> <span class="comment"></span>  <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *getInternalFoundDecl()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)->getInternalFoundDecl();</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span>   }</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>   <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</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> &Ctx,</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span>               <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</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> TemplateKWLoc,</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>               <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D, <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a771346de459eacc4867cf6d6740c75b8">refersToEnclosingLocal</a>,</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>               <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &NameInfo,</div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>               <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *FoundD,</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>               <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *TemplateArgs,</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>               <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK);</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span> <span class="comment"></span></div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span> <span class="comment">  /// \brief Construct an empty declaration reference expression.</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     : <a class="code" href="classclang_1_1Expr.html#a5105d4e41c6667994a61c8af39dbb392">Expr</a>(DeclRefExprClass, Empty) { }</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span> <span class="comment"></span></div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span> <span class="comment">  /// \brief Computes the type- and value-dependence flags for this</span></div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span> <span class="comment">  /// declaration reference expression.</span></div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span> <span class="comment"></span>  <span class="keywordtype">void</span> computeDependence(<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);</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span> </div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00927"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ad6a677663af5bb650c08127ef4ec5979">  927</a></span>   <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>(<a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D, <span class="keywordtype">bool</span> refersToEnclosingLocal, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>               <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <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="l00929"></a><span class="lineno">  929</span>               <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameLoc.html">DeclarationNameLoc</a> &LocInfo = <a class="code" href="structclang_1_1DeclarationNameLoc.html">DeclarationNameLoc</a>())</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(DeclRefExprClass, T, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>       D(D), Loc(L), DNLoc(LocInfo) {</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>     <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HasQualifier = 0;</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>     <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HasTemplateKWAndArgsInfo = 0;</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>     <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HasFoundDecl = 0;</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>     <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HadMultipleCandidates = 0;</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>     <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.RefersToEnclosingLocal = <a class="code" href="classclang_1_1DeclRefExpr.html#a771346de459eacc4867cf6d6740c75b8">refersToEnclosingLocal</a>;</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     computeDependence(D-><a class="code" href="classclang_1_1Decl.html#a213239e747fb0b3a0cacd86267339af2">getASTContext</a>());</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span>   }</div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span> </div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a04911722f06e6ca8705dd58a8e65d0c3">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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>                              <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</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> TemplateKWLoc,</div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>                              <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D,</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>                              <span class="keywordtype">bool</span> isEnclosingLocal,</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</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> NameLoc,</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>                              <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK,</div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>                              <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *FoundD = 0,</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>                              <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *TemplateArgs = 0);</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span> </div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a04911722f06e6ca8705dd58a8e65d0c3">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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>,</div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>                              <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</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> TemplateKWLoc,</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>                              <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D,</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>                              <span class="keywordtype">bool</span> isEnclosingLocal,</div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>                              <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &NameInfo,</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>                              <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK,</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>                              <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *FoundD = 0,</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>                              <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *TemplateArgs = 0);</div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span> <span class="comment"></span></div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span> <span class="comment">  /// \brief Construct an empty declaration reference expression.</span></div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a4d3eca9ce3aaef2eb9b7fc08b72b542b" title="Construct an empty declaration reference expression.">CreateEmpty</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="l00962"></a><span class="lineno">  962</span>                                   <span class="keywordtype">bool</span> HasQualifier,</div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>                                   <span class="keywordtype">bool</span> HasFoundDecl,</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>                                   <span class="keywordtype">bool</span> HasTemplateKWAndArgsInfo,</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>                                   <span class="keywordtype">unsigned</span> NumTemplateArgs);</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span> </div>
+<div class="line"><a name="l00967"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">  967</a></span>   <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>() { <span class="keywordflow">return</span> D; }</div>
+<div class="line"><a name="l00968"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a8af20c33e479257088fec9fb69655a79">  968</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a8af20c33e479257088fec9fb69655a79">getDecl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> D; }</div>
+<div class="line"><a name="l00969"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#af4f7817ae7b70fbdf232783ca8d7f26a">  969</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclRefExpr.html#af4f7817ae7b70fbdf232783ca8d7f26a">setDecl</a>(<a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *NewD) { D = NewD; }</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span> </div>
+<div class="line"><a name="l00971"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#adc8df026c9385651a3bda72a4ebbd7ff">  971</a></span>   <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> <a class="code" href="classclang_1_1DeclRefExpr.html#adc8df026c9385651a3bda72a4ebbd7ff">getNameInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(<a class="code" href="classclang_1_1DeclRefExpr.html#a22eec021070f5d0733e90b6c5c127a25">getDecl</a>()->getDeclName(), Loc, DNLoc);</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>   }</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span> </div>
+<div class="line"><a name="l00975"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ab4616545c45fc9569eb99471396361b9">  975</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_1DeclRefExpr.html#ab4616545c45fc9569eb99471396361b9">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l00976"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a51a56c12f63138a82935a96e36d201d5">  976</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a51a56c12f63138a82935a96e36d201d5">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="l00977"></a><span class="lineno">  977</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_1DeclRefExpr.html#acc93335153ba84a4fe505566db291b97">getLocStart</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</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_1DeclRefExpr.html#a8ff400ff5047e7f07ada527727fae66a">getLocEnd</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span> <span class="comment"></span></div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span> <span class="comment">  /// \brief Determine whether this declaration reference was preceded by a</span></div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span> <span class="comment">  /// C++ nested-name-specifier, e.g., \c N::foo.</span></div>
+<div class="line"><a name="l00982"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a">  982</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HasQualifier; }</div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span> <span class="comment"></span></div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span> <span class="comment">  /// \brief If the name was qualified, retrieves the nested-name-specifier</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span> <span class="comment">  /// that precedes the name. Otherwise, returns NULL.</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a71a3610ea639c60e3d812912e3c00598">  986</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1NestedNameSpecifier.html" title="Represents a C++ nested name specifier, such as "\::std::vector<int>::".">NestedNameSpecifier</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a71a3610ea639c60e3d812912e3c00598" title="If the name was qualified, retrieves the nested-name-specifier that precedes the name. Otherwise, returns NULL.">getQualifier</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>())</div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>       <span class="keywordflow">return</span> 0;</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> getInternalQualifierLoc().<a class="code" href="classclang_1_1NestedNameSpecifierLoc.html#a5654a95772981f5a91f100b767604af9" title="Retrieve the nested-name-specifier to which this instance refers.">getNestedNameSpecifier</a>();</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> <span class="comment"></span></div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span> <span class="comment">  /// \brief If the name was qualified, retrieves the nested-name-specifier</span></div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span> <span class="comment">  /// that precedes the name, with source-location information.</span></div>
+<div class="line"><a name="l00995"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#aa9be2986f6c7cf13e6327a2c417a47f0">  995</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> <a class="code" href="classclang_1_1DeclRefExpr.html#aa9be2986f6c7cf13e6327a2c417a47f0" title="If the name was qualified, retrieves the nested-name-specifier that precedes the name, with source-location information.">getQualifierLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>())</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a>();</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>     <span class="keywordflow">return</span> getInternalQualifierLoc();</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>   }</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="comment"></span></div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span> <span class="comment">  /// \brief Get the NamedDecl through which this reference occurred.</span></div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span> <span class="comment">  /// This Decl may be different from the ValueDecl actually referred to in the</span></div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="comment">  /// presence of using declarations, etc. It always returns non-NULL, and may</span></div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment">  /// simple return the ValueDecl when appropriate.</span></div>
+<div class="line"><a name="l01007"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a97b341b0280572b1058c7b09e18ee4cf"> 1007</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a97b341b0280572b1058c7b09e18ee4cf" title="Get the NamedDecl through which this reference occurred.">getFoundDecl</a>() {</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>     <span class="keywordflow">return</span> hasFoundDecl() ? getInternalFoundDecl() : D;</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> <span class="comment"></span></div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <span class="comment">  /// \brief Get the NamedDecl through which this reference occurred.</span></div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> <span class="comment">  /// See non-const variant.</span></div>
+<div class="line"><a name="l01013"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a3d1c640e20bac2a263a969dda988944e"> 1013</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1NamedDecl.html">NamedDecl</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a3d1c640e20bac2a263a969dda988944e" title="Get the NamedDecl through which this reference occurred. See non-const variant.">getFoundDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>     <span class="keywordflow">return</span> hasFoundDecl() ? getInternalFoundDecl() : D;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   }</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> </div>
+<div class="line"><a name="l01017"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a093aaddaead472b1925af5c9c9c23495"> 1017</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a093aaddaead472b1925af5c9c9c23495">hasTemplateKWAndArgsInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HasTemplateKWAndArgsInfo;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>   }</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="comment"></span></div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="comment">  /// \brief Return the optional template keyword and arguments info.</span></div>
+<div class="line"><a name="l01022"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390"> 1022</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>() {</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#a093aaddaead472b1925af5c9c9c23495">hasTemplateKWAndArgsInfo</a>())</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> </div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>     <span class="keywordflow">if</span> (hasFoundDecl())</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>       <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<span class="keyword">></span>(</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>         &getInternalFoundDecl() + 1);</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="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html#ab790630e8b2e9e490b86cb5e6ea1c35a" title="Determine whether this declaration reference was preceded by a C++ nested-name-specifier, e.g., N::foo.">hasQualifier</a>())</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>       <span class="keywordflow">return</span> reinterpret_cast<ASTTemplateKWAndArgsInfo *>(</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>         &getInternalQualifierLoc() + 1);</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> </div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<span class="keyword">></span>(<span class="keyword">this</span> + 1);</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>   }</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> <span class="comment"></span></div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> <span class="comment">  /// \brief Return the optional template keyword and arguments info.</span></div>
+<div class="line"><a name="l01038"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a04fe3b11c566ac014f4f3f981875812e"> 1038</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a04fe3b11c566ac014f4f3f981875812e" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>();</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>   }</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 Retrieve the location of the template keyword preceding</span></div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="comment">  /// this name, if any.</span></div>
+<div class="line"><a name="l01044"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a2dbab2714a2f91978c68ca718447b870"> 1044</a></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_1DeclRefExpr.html#a2dbab2714a2f91978c68ca718447b870" title="Retrieve the location of the template keyword preceding this name, if any.">getTemplateKeywordLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#a093aaddaead472b1925af5c9c9c23495">hasTemplateKWAndArgsInfo</a>()) <span class="keywordflow">return</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="l01046"></a><span class="lineno"> 1046</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#a2265210ea5d26c1d5207f6d88bad56ae" title="Get the source location of the template keyword.">getTemplateKeywordLoc</a>();</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>   }</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <span class="comment"></span></div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="comment">  /// \brief Retrieve the location of the left angle bracket starting the</span></div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="comment">  /// explicit template argument list following the name, if any.</span></div>
+<div class="line"><a name="l01051"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a3364f279fde6dc52c0c903ea834f954f"> 1051</a></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_1DeclRefExpr.html#a3364f279fde6dc52c0c903ea834f954f" title="Retrieve the location of the left angle bracket starting the explicit template argument list followin...">getLAngleLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#a093aaddaead472b1925af5c9c9c23495">hasTemplateKWAndArgsInfo</a>()) <span class="keywordflow">return</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="l01053"></a><span class="lineno"> 1053</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#a0b671f58dd0ae3f03bc373c1f10a21db" title="The source location of the left angle bracket ('<').">LAngleLoc</a>;</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>   }</div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="comment"></span></div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="comment">  /// \brief Retrieve the location of the right angle bracket ending the</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <span class="comment">  /// explicit template argument list following the name, if any.</span></div>
+<div class="line"><a name="l01058"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a2e8cd9704bf849d38a54d3a2f8160086"> 1058</a></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_1DeclRefExpr.html#a2e8cd9704bf849d38a54d3a2f8160086" title="Retrieve the location of the right angle bracket ending the explicit template argument list following...">getRAngleLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#a093aaddaead472b1925af5c9c9c23495">hasTemplateKWAndArgsInfo</a>()) <span class="keywordflow">return</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="l01060"></a><span class="lineno"> 1060</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#a01f497faea4892b83792b19f5bc841b8" title="The source location of the right angle bracket ('>').">RAngleLoc</a>;</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>   }</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="comment"></span></div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="comment">  /// \brief Determines whether the name in this declaration reference</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="comment">  /// was preceded by the template keyword.</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a8a1bd49622273e411b256e80b6f546b8"> 1065</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a8a1bd49622273e411b256e80b6f546b8" title="Determines whether the name in this declaration reference was preceded by the template keyword...">hasTemplateKeyword</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a2dbab2714a2f91978c68ca718447b870" title="Retrieve the location of the template keyword preceding this name, if any.">getTemplateKeywordLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>(); }</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="comment"></span></div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> <span class="comment">  /// \brief Determines whether this declaration reference was followed by an</span></div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="comment">  /// explicit template argument list.</span></div>
+<div class="line"><a name="l01069"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8"> 1069</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a3364f279fde6dc52c0c903ea834f954f" title="Retrieve the location of the left angle bracket starting the explicit template argument list followin...">getLAngleLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>(); }</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> <span class="comment"></span></div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> <span class="comment">  /// \brief Retrieve the explicit template argument list that followed the</span></div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> <span class="comment">  /// member template name.</span></div>
+<div class="line"><a name="l01073"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea"> 1073</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html" title="Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.">ASTTemplateArgumentListInfo</a> &<a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</a>() {</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>     assert(<a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>());</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     <span class="keywordflow">return</span> *<a class="code" href="classclang_1_1DeclRefExpr.html#a415cc88f4b438d040e72eb6312be1390" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>();</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>   }</div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span> <span class="comment"></span></div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span> <span class="comment">  /// \brief Retrieve the explicit template argument list that followed the</span></div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="comment">  /// member template name.</span></div>
+<div class="line"><a name="l01080"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ad7cd0b319e9b7cfb81c1bbd60dbd1d9a"> 1080</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html" title="Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.">ASTTemplateArgumentListInfo</a> &<a class="code" href="classclang_1_1DeclRefExpr.html#ad7cd0b319e9b7cfb81c1bbd60dbd1d9a" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1DeclRefExpr.html" title="A reference to a declared variable, function, enum, etc. [C99 6.5.1p2].">DeclRefExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</a>();</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   }</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="comment"></span></div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <span class="comment">  /// \brief Retrieves the optional explicit template arguments.</span></div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="comment">  /// This points to the same data as getExplicitTemplateArgs(), but</span></div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="comment">  /// returns null if there are no explicit template arguments.</span></div>
+<div class="line"><a name="l01087"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#acf7665aa10010c5c0851180099b2f27c"> 1087</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html" title="Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.">ASTTemplateArgumentListInfo</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#acf7665aa10010c5c0851180099b2f27c" title="Retrieves the optional explicit template arguments. This points to the same data as getExplicitTempla...">getOptionalExplicitTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>     <span class="keywordflow">return</span> &<a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</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> <span class="comment"></span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="comment">  /// \brief Copies the template arguments (if present) into the given</span></div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="comment">  /// structure.</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a45f80edfe815d922cb6b74fb2acede9a"> 1094</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a45f80edfe815d922cb6b74fb2acede9a" title="Copies the template arguments (if present) into the given structure.">copyTemplateArgumentsInto</a>(<a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> &List)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span>       <a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</a>().<a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#a89b109fea3643eb3f2e81f1727dabd4e">copyInto</a>(List);</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>   }</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="comment"></span></div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="comment">  /// \brief Retrieve the template arguments provided as part of this</span></div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="comment">  /// template-id.</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a5d2405fcef137a4770f85e6247d7cab1"> 1101</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentLoc.html">TemplateArgumentLoc</a> *<a class="code" href="classclang_1_1DeclRefExpr.html#a5d2405fcef137a4770f85e6247d7cab1" title="Retrieve the template arguments provided as part of this template-id.">getTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> </div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</a>().<a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#af40d5d31948b9f43765e31c4f192f951" title="Retrieve the template arguments.">getTemplateArgs</a>();</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span>   }</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="comment"></span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="comment">  /// \brief Retrieve the number of template arguments provided as part of this</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="comment">  /// template-id.</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a6c6408dbf7d4583386c4c15b2852735a"> 1110</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a6c6408dbf7d4583386c4c15b2852735a" title="Retrieve the number of template arguments provided as part of this template-id.">getNumTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1DeclRefExpr.html#adc1b59b4a37f7caa694300701faf4ee8" title="Determines whether this declaration reference was followed by an explicit template argument list...">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> </div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a3f5776a21f17e7e6ed22521280a5e2ea" title="Retrieve the explicit template argument list that followed the member template name.">getExplicitTemplateArgs</a>().<a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#ae908711a8955cf8298257a35342fafe2" title="The number of template arguments in TemplateArgs. The actual template arguments (if any) are stored a...">NumTemplateArgs</a>;</div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>   }</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span> <span class="comment"></span></div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="comment">  /// \brief Returns true if this expression refers to a function that</span></div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="comment">  /// was resolved from an overloaded set having size greater than 1.</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#af1a88fea117aad0eef3d20e0a879b082"> 1119</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#af1a88fea117aad0eef3d20e0a879b082" title="Returns true if this expression refers to a function that was resolved from an overloaded set having ...">hadMultipleCandidates</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HadMultipleCandidates;</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   }<span class="comment"></span></div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> <span class="comment">  /// \brief Sets the flag telling whether this expression refers to</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> <span class="comment">  /// a function that was resolved from an overloaded set having size</span></div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> <span class="comment">  /// greater than 1.</span></div>
+<div class="line"><a name="l01125"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a61950f4575df5616a0223aad2df65a9c"> 1125</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a61950f4575df5616a0223aad2df65a9c" title="Sets the flag telling whether this expression refers to a function that was resolved from an overload...">setHadMultipleCandidates</a>(<span class="keywordtype">bool</span> V = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>     <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.HadMultipleCandidates = V;</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>   }</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> <span class="comment"></span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> <span class="comment">  /// Does this DeclRefExpr refer to a local declaration from an</span></div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> <span class="comment">  /// enclosing function scope?</span></div>
+<div class="line"><a name="l01131"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a771346de459eacc4867cf6d6740c75b8"> 1131</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#a771346de459eacc4867cf6d6740c75b8">refersToEnclosingLocal</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#abddc0bde0c112a8b91f0536adba14dd4">DeclRefExprBits</a>.RefersToEnclosingLocal;</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_1DeclRefExpr.html#acb11b44a8350e1712c74362ab35dff8e"> 1135</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1DeclRefExpr.html#acb11b44a8350e1712c74362ab35dff8e">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == DeclRefExprClass;</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="comment">// Iterators</span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#a9dc3c62b2bf6a9060b9af4a181324699"> 1140</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1DeclRefExpr.html#a9dc3c62b2bf6a9060b9af4a181324699">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> </div>
+<div class="line"><a name="l01142"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ad6427d648931017bffcb2f90b8930f9d"> 1142</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l01143"></a><span class="lineno"><a class="code" href="classclang_1_1DeclRefExpr.html#ab6b1376d59ae2643970df578c721ae74"> 1143</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtWriter.html">ASTStmtWriter</a>;</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> };</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="comment"></span></div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="comment">/// PredefinedExpr - [C99 6.4.2.2] - A predefined identifier such as __func__.</span></div>
+<div class="line"><a name="l01147"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html"> 1147</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1PredefinedExpr.html" title="PredefinedExpr - [C99 6.4.2.2] - A predefined identifier such as func.">PredefinedExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01149"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50"> 1149</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> {</div>
+<div class="line"><a name="l01150"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a63a6c07cbf9d1fd113a77d728c0ce72b"> 1150</a></span>     <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a63a6c07cbf9d1fd113a77d728c0ce72b">Func</a>,</div>
+<div class="line"><a name="l01151"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a0d65b8179039a2da4571a8e78cf26585"> 1151</a></span>     <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a0d65b8179039a2da4571a8e78cf26585">Function</a>,</div>
+<div class="line"><a name="l01152"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a887a6c4e6d464221415d589b84d3742d"> 1152</a></span>     <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a887a6c4e6d464221415d589b84d3742d">LFunction</a>,  <span class="comment">// Same as Function, but as wide string.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a4db1d92858c9789019b184fae2fc111a"> 1153</a></span>     <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a4db1d92858c9789019b184fae2fc111a">FuncDName</a>,</div>
+<div class="line"><a name="l01154"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a471dba9ecad152996c6a24a562b7892b"> 1154</a></span>     <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a471dba9ecad152996c6a24a562b7892b">PrettyFunction</a>,<span class="comment"></span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> <span class="comment">    /// PrettyFunctionNoVirtual - The same as PrettyFunction, except that the</span></div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="comment">    /// 'virtual' keyword is omitted for virtual member functions.</span></div>
+<div class="line"><a name="l01157"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a042dfb8d95fd03bec822b0516ce5fe49"> 1157</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50a042dfb8d95fd03bec822b0516ce5fe49">PrettyFunctionNoVirtual</a></div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>   };</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> </div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</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="l01162"></a><span class="lineno"> 1162</span>   <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> <a class="code" href="classclang_1_1Type.html">Type</a>;</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01164"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#ad8d7145f94b7836797cf7e62fec38f48"> 1164</a></span>   <a class="code" href="classclang_1_1PredefinedExpr.html#ad8d7145f94b7836797cf7e62fec38f48">PredefinedExpr</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, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>, <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> IT)</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(PredefinedExprClass, type, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>            type->isDependentType(), type->isDependentType(),</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>            type->isInstantiationDependentType(),</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>            <span class="comment">/*ContainsUnexpandedParameterPack=*/</span><a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>       Loc(l), <a class="code" href="classclang_1_1Type.html">Type</a>(IT) {}</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> <span class="comment"></span></div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="comment">  /// \brief Construct an empty predefined expression.</span></div>
+<div class="line"><a name="l01172"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#af3e88c6cb6b624295cc2592f44867d58"> 1172</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1PredefinedExpr.html#ad8d7145f94b7836797cf7e62fec38f48">PredefinedExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(PredefinedExprClass, Empty) { }</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> </div>
+<div class="line"><a name="l01175"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a3bf41fb240534802584e70cd8f4edd30"> 1175</a></span>   <a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> <a class="code" href="classclang_1_1PredefinedExpr.html#a3bf41fb240534802584e70cd8f4edd30">getIdentType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Type.html">Type</a>; }</div>
+<div class="line"><a name="l01176"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#addc2d5d0bd5fa1be483ba94e066eb09b"> 1176</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1PredefinedExpr.html#addc2d5d0bd5fa1be483ba94e066eb09b">setIdentType</a>(<a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> IT) { <a class="code" href="classclang_1_1Type.html">Type</a> = IT; }</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div>
+<div class="line"><a name="l01178"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#aedb3c8713aed875117f2f47096ec6afc"> 1178</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_1PredefinedExpr.html#aedb3c8713aed875117f2f47096ec6afc">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01179"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a249ce0de52164fdc174fe8db43d4ddd4"> 1179</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1PredefinedExpr.html#a249ce0de52164fdc174fe8db43d4ddd4">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="l01180"></a><span class="lineno"> 1180</span> </div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>   <span class="keyword">static</span> std::string <a class="code" href="classclang_1_1PredefinedExpr.html#a3c318ef01a2b227e51dc3dbece0a8f63">ComputeName</a>(<a class="code" href="classclang_1_1PredefinedExpr.html#a6ba67c391b52ae36d1e6fb2173b35d50">IdentType</a> IT, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *CurrentDecl);</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> </div>
+<div class="line"><a name="l01183"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#ad0b3cc797aae7455fa816914b90f3dd5"> 1183</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_1PredefinedExpr.html#ad0b3cc797aae7455fa816914b90f3dd5">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01184"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#aa1353df76ef374d2399b37ffe1be0bbd"> 1184</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_1PredefinedExpr.html#aa1353df76ef374d2399b37ffe1be0bbd">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> </div>
+<div class="line"><a name="l01186"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#a27d0868b517f21e3d29793a376a21b1a"> 1186</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PredefinedExpr.html#a27d0868b517f21e3d29793a376a21b1a">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == PredefinedExprClass;</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>   }</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> </div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01191"></a><span class="lineno"><a class="code" href="classclang_1_1PredefinedExpr.html#ab51b3f33bd67f046c06bd84aeb32c695"> 1191</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1PredefinedExpr.html#ab51b3f33bd67f046c06bd84aeb32c695">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</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> <span class="comment"></span></div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span> <span class="comment">/// \brief Used by IntegerLiteral/FloatingLiteral to store the numeric without</span></div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> <span class="comment">/// leaking memory.</span></div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> <span class="comment">/// For large floats/integers, APFloat/APInt will allocate memory from the heap</span></div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> <span class="comment">/// to represent these numbers.  Unfortunately, when we use a BumpPtrAllocator</span></div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> <span class="comment">/// to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with</span></div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> <span class="comment">/// the APFloat/APInt values will never get freed. APNumericStorage uses</span></div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span> <span class="comment">/// ASTContext's allocator for memory allocation.</span></div>
+<div class="line"><a name="l01202"></a><span class="lineno"><a class="code" href="classclang_1_1APNumericStorage.html"> 1202</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1APNumericStorage.html" title="Used by IntegerLiteral/FloatingLiteral to store the numeric without leaking memory.">APNumericStorage</a> {</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   <span class="keyword">union </span>{</div>
+<div class="line"><a name="l01204"></a><span class="lineno"><a class="code" href="classclang_1_1APNumericStorage.html#a4b323406329e7cbd9e60973f39742b40"> 1204</a></span>     uint64_t <a class="code" href="classclang_1_1APNumericStorage.html#a4b323406329e7cbd9e60973f39742b40" title="Used to store the <= 64 bits integer value.">VAL</a>;    <span class="comment">///< Used to store the <= 64 bits integer value.</span></div>
+<div class="line"><a name="l01205"></a><span class="lineno"><a class="code" href="classclang_1_1APNumericStorage.html#a3ed740c3b319f1dd2ca8bf6e93ad74d9"> 1205</a></span> <span class="comment"></span>    uint64_t *<a class="code" href="classclang_1_1APNumericStorage.html#a3ed740c3b319f1dd2ca8bf6e93ad74d9" title="Used to store the >64 bits integer value.">pVal</a>;  <span class="comment">///< Used to store the >64 bits integer value.</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="keywordtype">unsigned</span> BitWidth;</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> </div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>   <span class="keywordtype">bool</span> hasAllocation()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> llvm::APInt::getNumWords(BitWidth) > 1; }</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> </div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>   <a class="code" href="classclang_1_1APNumericStorage.html#ad34acbf5bae751a555c9bc3e8e11721c">APNumericStorage</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1APNumericStorage.html#ad34acbf5bae751a555c9bc3e8e11721c">APNumericStorage</a> &) LLVM_DELETED_FUNCTION;</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   <span class="keywordtype">void</span> operator=(const <a class="code" href="classclang_1_1APNumericStorage.html#ad34acbf5bae751a555c9bc3e8e11721c">APNumericStorage</a> &) LLVM_DELETED_FUNCTION;</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> </div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> protected:</div>
+<div class="line"><a name="l01215"></a><span class="lineno"><a class="code" href="classclang_1_1APNumericStorage.html#ad34acbf5bae751a555c9bc3e8e11721c"> 1215</a></span>   <a class="code" href="classclang_1_1APNumericStorage.html" title="Used by IntegerLiteral/FloatingLiteral to store the numeric without leaking memory.">APNumericStorage</a>() : <a class="code" href="classclang_1_1APNumericStorage.html#a4b323406329e7cbd9e60973f39742b40" title="Used to store the <= 64 bits integer value.">VAL</a>(0), BitWidth(0) { }</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> </div>
+<div class="line"><a name="l01217"></a><span class="lineno"><a class="code" href="classclang_1_1APNumericStorage.html#a7cbf3208673ceabaf37a8223a079c6a2"> 1217</a></span>   llvm::APInt <a class="code" href="classclang_1_1APNumericStorage.html#a7cbf3208673ceabaf37a8223a079c6a2">getIntValue</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>     <span class="keywordtype">unsigned</span> NumWords = llvm::APInt::getNumWords(BitWidth);</div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>     <span class="keywordflow">if</span> (NumWords > 1)</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>       <span class="keywordflow">return</span> llvm::APInt(BitWidth, NumWords, <a class="code" href="classclang_1_1APNumericStorage.html#a3ed740c3b319f1dd2ca8bf6e93ad74d9" title="Used to store the >64 bits integer value.">pVal</a>);</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>       <span class="keywordflow">return</span> llvm::APInt(BitWidth, <a class="code" href="classclang_1_1APNumericStorage.html#a4b323406329e7cbd9e60973f39742b40" title="Used to store the <= 64 bits integer value.">VAL</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>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APNumericStorage.html#aecc4f5ec57da8f775e6355e55efe2e4b">setIntValue</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="keyword">const</span> llvm::APInt &Val);</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> };</div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> </div>
+<div class="line"><a name="l01227"></a><span class="lineno"><a class="code" href="classclang_1_1APIntStorage.html"> 1227</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1APIntStorage.html">APIntStorage</a> : <span class="keyword">private</span> <a class="code" href="classclang_1_1APNumericStorage.html" title="Used by IntegerLiteral/FloatingLiteral to store the numeric without leaking memory.">APNumericStorage</a> {</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01229"></a><span class="lineno"><a class="code" href="classclang_1_1APIntStorage.html#a2e483ee266dda1302a3bb4ef6ceab5a9"> 1229</a></span>   llvm::APInt <a class="code" href="classclang_1_1APIntStorage.html#a2e483ee266dda1302a3bb4ef6ceab5a9">getValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1APNumericStorage.html#a7cbf3208673ceabaf37a8223a079c6a2">getIntValue</a>(); }</div>
+<div class="line"><a name="l01230"></a><span class="lineno"><a class="code" href="classclang_1_1APIntStorage.html#a6838a8ac3812017f1fdad135db8091c9"> 1230</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APIntStorage.html#a6838a8ac3812017f1fdad135db8091c9">setValue</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="keyword">const</span> llvm::APInt &Val) {</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>     <a class="code" href="classclang_1_1APNumericStorage.html#aecc4f5ec57da8f775e6355e55efe2e4b">setIntValue</a>(C, Val);</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> };</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> </div>
+<div class="line"><a name="l01235"></a><span class="lineno"><a class="code" href="classclang_1_1APFloatStorage.html"> 1235</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1APFloatStorage.html">APFloatStorage</a> : <span class="keyword">private</span> <a class="code" href="classclang_1_1APNumericStorage.html" title="Used by IntegerLiteral/FloatingLiteral to store the numeric without leaking memory.">APNumericStorage</a> {</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01237"></a><span class="lineno"><a class="code" href="classclang_1_1APFloatStorage.html#a35358a2a6dda82361ee7620413954fbd"> 1237</a></span>   llvm::APFloat <a class="code" href="classclang_1_1APFloatStorage.html#a35358a2a6dda82361ee7620413954fbd">getValue</a>(<span class="keyword">const</span> llvm::fltSemantics &Semantics)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>     <span class="keywordflow">return</span> llvm::APFloat(Semantics, <a class="code" href="classclang_1_1APNumericStorage.html#a7cbf3208673ceabaf37a8223a079c6a2">getIntValue</a>());</div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>   }</div>
+<div class="line"><a name="l01240"></a><span class="lineno"><a class="code" href="classclang_1_1APFloatStorage.html#ac44e3264a98de92710fc3affe070d26d"> 1240</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1APFloatStorage.html#ac44e3264a98de92710fc3affe070d26d">setValue</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="keyword">const</span> llvm::APFloat &Val) {</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>     <a class="code" href="classclang_1_1APNumericStorage.html#aecc4f5ec57da8f775e6355e55efe2e4b">setIntValue</a>(C, Val.bitcastToAPInt());</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span>   }</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> };</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div>
+<div class="line"><a name="l01245"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html"> 1245</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a>, <span class="keyword">public</span> <a class="code" href="classclang_1_1APIntStorage.html">APIntStorage</a> {</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</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="l01247"></a><span class="lineno"> 1247</span> <span class="comment"></span></div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="comment">  /// \brief Construct an empty integer literal.</span></div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>     : <a class="code" href="classclang_1_1Expr.html#a5105d4e41c6667994a61c8af39dbb392">Expr</a>(IntegerLiteralClass, Empty) { }</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"> 1253</span>   <span class="comment">// type should be IntTy, LongTy, LongLongTy, UnsignedIntTy, UnsignedLongTy,</span></div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>   <span class="comment">// or UnsignedLongLongTy</span></div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>   <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</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="keyword">const</span> llvm::APInt &V, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</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> l);</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="comment"></span></div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> <span class="comment">  /// \brief Returns a new integer literal with value 'V' and type 'type'.</span></div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment">  /// \param type - either IntTy, LongTy, LongLongTy, UnsignedIntTy,</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> <span class="comment">  /// UnsignedLongTy, or UnsignedLongLongTy which should match the size of V</span></div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> <span class="comment">  /// \param V - the value that the returned integer literal contains.</span></div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *<a class="code" href="classclang_1_1IntegerLiteral.html#a68782c17506bd26183c21aa2bf9dc1d7" title="Returns a new integer literal with value 'V' and type 'type'.">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, <span class="keyword">const</span> llvm::APInt &V,</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> type, <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);<span class="comment"></span></div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> <span class="comment">  /// \brief Returns a new empty integer literal.</span></div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1IntegerLiteral.html">IntegerLiteral</a> *<a class="code" href="classclang_1_1IntegerLiteral.html#a68782c17506bd26183c21aa2bf9dc1d7" title="Returns a new integer literal with value 'V' and type 'type'.">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="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty);</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> </div>
+<div class="line"><a name="l01267"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#acea6588062a9a4e3729db66d9f27e2fc"> 1267</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_1IntegerLiteral.html#acea6588062a9a4e3729db66d9f27e2fc">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01268"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#a88777f5a65209b0a292f330f1ace9484"> 1268</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_1IntegerLiteral.html#a88777f5a65209b0a292f330f1ace9484">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> <span class="comment"></span></div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> <span class="comment">  /// \brief Retrieve the location of the literal.</span></div>
+<div class="line"><a name="l01271"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#ad6bec6e7dfedecd7cca739d3179efdd5"> 1271</a></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_1IntegerLiteral.html#ad6bec6e7dfedecd7cca739d3179efdd5" title="Retrieve the location of the literal.">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div>
+<div class="line"><a name="l01273"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#a471f5a9a0b68e0feac287a6f1abedbdf"> 1273</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1IntegerLiteral.html#a471f5a9a0b68e0feac287a6f1abedbdf">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> Location) { Loc = Location; }</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> </div>
+<div class="line"><a name="l01275"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#abbc46a984ae4c4287112b9cb31357421"> 1275</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1IntegerLiteral.html#abbc46a984ae4c4287112b9cb31357421">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == IntegerLiteralClass;</div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>   }</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> </div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01280"></a><span class="lineno"><a class="code" href="classclang_1_1IntegerLiteral.html#a62536641428a1798e3db5c570a57ca97"> 1280</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1IntegerLiteral.html#a62536641428a1798e3db5c570a57ca97">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> };</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> </div>
+<div class="line"><a name="l01283"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html"> 1283</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1CharacterLiteral.html">CharacterLiteral</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01285"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5"> 1285</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5">CharacterKind</a> {</div>
+<div class="line"><a name="l01286"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a08e3f9f7fd013aa69b4a75f24551f6dc"> 1286</a></span>     <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a08e3f9f7fd013aa69b4a75f24551f6dc">Ascii</a>,</div>
+<div class="line"><a name="l01287"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a70464a26a96a1688688e266cb8d1fee3"> 1287</a></span>     <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a70464a26a96a1688688e266cb8d1fee3">Wide</a>,</div>
+<div class="line"><a name="l01288"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a8ba6555b5155e42e59ff364db7172f56"> 1288</a></span>     <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a8ba6555b5155e42e59ff364db7172f56">UTF16</a>,</div>
+<div class="line"><a name="l01289"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a102d8aac4de3eb6f54fa6faaba788e04"> 1289</a></span>     <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5a102d8aac4de3eb6f54fa6faaba788e04">UTF32</a></div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>   };</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> </div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>   <span class="keywordtype">unsigned</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>;</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</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="l01295"></a><span class="lineno"> 1295</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>   <span class="comment">// type should be IntTy</span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#ab45d4d9b40f79fcdd5e15440ba7a92c4"> 1297</a></span>   <a class="code" href="classclang_1_1CharacterLiteral.html#ab45d4d9b40f79fcdd5e15440ba7a92c4">CharacterLiteral</a>(<span class="keywordtype">unsigned</span> value, <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5">CharacterKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</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> l)</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(CharacterLiteralClass, type, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>       <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>(value), Loc(l) {</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>     <a class="code" href="classclang_1_1Stmt.html#a689621947f067ef49e8a9206c3319419">CharacterLiteralBits</a>.Kind = <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>   }</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="comment"></span></div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> <span class="comment">  /// \brief Construct an empty character literal.</span></div>
+<div class="line"><a name="l01306"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#ad7ce539977fbe30213352f6f69dbbc7d"> 1306</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1CharacterLiteral.html#ad7ce539977fbe30213352f6f69dbbc7d" title="Construct an empty character literal.">CharacterLiteral</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) : <a class="code" href="classclang_1_1Expr.html">Expr</a>(CharacterLiteralClass, Empty) { }</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> </div>
+<div class="line"><a name="l01308"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#afb68d60925a8eac73529401d080ac6da"> 1308</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_1CharacterLiteral.html#afb68d60925a8eac73529401d080ac6da">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01309"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#aaedcb499dc23172233cc47b6691dd67f"> 1309</a></span>   <a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5">CharacterKind</a> <a class="code" href="classclang_1_1CharacterLiteral.html#aaedcb499dc23172233cc47b6691dd67f">getKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5">CharacterKind</a><span class="keyword">></span>(<a class="code" href="classclang_1_1Stmt.html#a689621947f067ef49e8a9206c3319419">CharacterLiteralBits</a>.Kind);</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>   }</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> </div>
+<div class="line"><a name="l01313"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a8eb899a18df2fcf5cb24325b2f76c345"> 1313</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_1CharacterLiteral.html#a8eb899a18df2fcf5cb24325b2f76c345">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01314"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a4ed0c43e8203e1975db48af286442a66"> 1314</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_1CharacterLiteral.html#a4ed0c43e8203e1975db48af286442a66">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> </div>
+<div class="line"><a name="l01316"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a7cf792977bc8a5b9d1719236e52e350c"> 1316</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CharacterLiteral.html#a7cf792977bc8a5b9d1719236e52e350c">getValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a>; }</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> </div>
+<div class="line"><a name="l01318"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a3e00aea15e544133942a32bf9d7e9fa1"> 1318</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharacterLiteral.html#a3e00aea15e544133942a32bf9d7e9fa1">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> Location) { Loc = Location; }</div>
+<div class="line"><a name="l01319"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a4d1af248027a1b9b914397d5b9d19d7f"> 1319</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharacterLiteral.html#a4d1af248027a1b9b914397d5b9d19d7f">setKind</a>(<a class="code" href="classclang_1_1CharacterLiteral.html#a25be2b9b66ceb513ac98c3d24a700ef5">CharacterKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>) { <a class="code" href="classclang_1_1Stmt.html#a689621947f067ef49e8a9206c3319419">CharacterLiteralBits</a>.Kind = <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>; }</div>
+<div class="line"><a name="l01320"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a2203c008d81379e425fb3bc63b277a82"> 1320</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharacterLiteral.html#a2203c008d81379e425fb3bc63b277a82">setValue</a>(<span class="keywordtype">unsigned</span> Val) { <a class="code" href="UninitializedValues_8cpp.html#a896c037a32087c5c20d97e64a1786880">Value</a> = Val; }</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> </div>
+<div class="line"><a name="l01322"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#a5699905fad69822b5a31017df93c0cc3"> 1322</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharacterLiteral.html#a5699905fad69822b5a31017df93c0cc3">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == CharacterLiteralClass;</div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>   }</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> </div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01327"></a><span class="lineno"><a class="code" href="classclang_1_1CharacterLiteral.html#abd0c579e352f3c8a3a3e73d434b5795d"> 1327</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1CharacterLiteral.html#abd0c579e352f3c8a3a3e73d434b5795d">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</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> </div>
+<div class="line"><a name="l01330"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html"> 1330</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a>, <span class="keyword">private</span> <a class="code" href="classclang_1_1APFloatStorage.html">APFloatStorage</a> {</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</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="l01332"></a><span class="lineno"> 1332</span> </div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</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="keyword">const</span> llvm::APFloat &V, <span class="keywordtype">bool</span> isexact,</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>                   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Type.html">Type</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);</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> <span class="comment"></span></div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> <span class="comment">  /// \brief Construct an empty floating-point literal.</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</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="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty);</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> </div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> *<a class="code" href="classclang_1_1FloatingLiteral.html#a2bc4547a98776a980ebc7c7f81efdd3f">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, <span class="keyword">const</span> llvm::APFloat &V,</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>                                  <span class="keywordtype">bool</span> isexact, <a class="code" href="classclang_1_1QualType.html">QualType</a> Type, <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="l01342"></a><span class="lineno"> 1342</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1FloatingLiteral.html">FloatingLiteral</a> *<a class="code" href="classclang_1_1FloatingLiteral.html#a2bc4547a98776a980ebc7c7f81efdd3f">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="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty);</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="classclang_1_1FloatingLiteral.html#abd8fbf2605c142c303083b99de2557d3"> 1344</a></span>   llvm::APFloat <a class="code" href="classclang_1_1FloatingLiteral.html#abd8fbf2605c142c303083b99de2557d3">getValue</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1APFloatStorage.html#a35358a2a6dda82361ee7620413954fbd">APFloatStorage::getValue</a>(<a class="code" href="classclang_1_1FloatingLiteral.html#a26bb6a1d69c9a1ca48596e5c16f731e3" title="Return the APFloat semantics this literal uses.">getSemantics</a>());</div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   }</div>
+<div class="line"><a name="l01347"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a4ddfc482dcf95915bbb56f7f683abe06"> 1347</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FloatingLiteral.html#a4ddfc482dcf95915bbb56f7f683abe06">setValue</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="keyword">const</span> llvm::APFloat &Val) {</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span>     assert(&<a class="code" href="classclang_1_1FloatingLiteral.html#a26bb6a1d69c9a1ca48596e5c16f731e3" title="Return the APFloat semantics this literal uses.">getSemantics</a>() == &Val.getSemantics() && <span class="stringliteral">"Inconsistent semantics"</span>);</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span>     <a class="code" href="classclang_1_1APFloatStorage.html#ac44e3264a98de92710fc3affe070d26d">APFloatStorage::setValue</a>(C, Val);</div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span>   }</div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> <span class="comment"></span></div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="comment">  /// Get a raw enumeration value representing the floating-point semantics of</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> <span class="comment">  /// this literal (32-bit IEEE, x87, ...), suitable for serialisation.</span></div>
+<div class="line"><a name="l01354"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a85f579016b58f48471c49667943d4d04"> 1354</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5c">APFloatSemantics</a> <a class="code" href="classclang_1_1FloatingLiteral.html#a85f579016b58f48471c49667943d4d04">getRawSemantics</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5c">APFloatSemantics</a><span class="keyword">></span>(<a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics);</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> <span class="comment"></span></div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> <span class="comment">  /// Set the raw enumeration value representing the floating-point semantics of</span></div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> <span class="comment">  /// this literal (32-bit IEEE, x87, ...), suitable for serialisation.</span></div>
+<div class="line"><a name="l01360"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a00ff1b45b8f87e866045003a78e0d947"> 1360</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FloatingLiteral.html#a00ff1b45b8f87e866045003a78e0d947">setRawSemantics</a>(<a class="code" href="classclang_1_1Stmt.html#abfcf6dae0f3321a3bd6460681d8b7a5c">APFloatSemantics</a> Sem) {</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.Semantics = Sem;</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"></span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> <span class="comment">  /// Return the APFloat semantics this literal uses.</span></div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> <span class="comment"></span>  <span class="keyword">const</span> llvm::fltSemantics &<a class="code" href="classclang_1_1FloatingLiteral.html#a26bb6a1d69c9a1ca48596e5c16f731e3" title="Return the APFloat semantics this literal uses.">getSemantics</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <span class="comment"></span></div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="comment">  /// Set the APFloat semantics this literal uses.</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FloatingLiteral.html#a0369791d279f7eb15a48814e62d386d8" title="Set the APFloat semantics this literal uses.">setSemantics</a>(<span class="keyword">const</span> llvm::fltSemantics &Sem);</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> </div>
+<div class="line"><a name="l01370"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#aa3b4dfb8461e049e471da588cd2208ef"> 1370</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FloatingLiteral.html#aa3b4dfb8461e049e471da588cd2208ef">isExact</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.IsExact; }</div>
+<div class="line"><a name="l01371"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a9ed2d3f517e217ddf3f6064646df530d"> 1371</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FloatingLiteral.html#a9ed2d3f517e217ddf3f6064646df530d">setExact</a>(<span class="keywordtype">bool</span> E) { <a class="code" href="classclang_1_1Stmt.html#a50c9d46b0e6caadff4e39c11201a5a3d">FloatingLiteralBits</a>.IsExact = E; }</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> <span class="comment"></span></div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> <span class="comment">  /// getValueAsApproximateDouble - This returns the value as an inaccurate</span></div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> <span class="comment">  /// double.  Note that this may cause loss of precision, but is useful for</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> <span class="comment">  /// debugging dumps, etc.</span></div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> <span class="comment"></span>  <span class="keywordtype">double</span> <a class="code" href="classclang_1_1FloatingLiteral.html#ae46cb03b9842650e681250dbc1f902b6">getValueAsApproximateDouble</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> </div>
+<div class="line"><a name="l01378"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a59ba1debc34144aba97adf107086e16b"> 1378</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_1FloatingLiteral.html#a59ba1debc34144aba97adf107086e16b">getLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01379"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#acf8c9d1043ad5920d8d3e91a71832941"> 1379</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FloatingLiteral.html#acf8c9d1043ad5920d8d3e91a71832941">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="l01380"></a><span class="lineno"> 1380</span> </div>
+<div class="line"><a name="l01381"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#adaacab8bd658dd22fbc65e1510f9adb2"> 1381</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_1FloatingLiteral.html#adaacab8bd658dd22fbc65e1510f9adb2">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01382"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a17e90dd11031bcc651a6e6f95c1d6443"> 1382</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_1FloatingLiteral.html#a17e90dd11031bcc651a6e6f95c1d6443">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div>
+<div class="line"><a name="l01384"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#aa2001102a715ec8d544389248c2643ac"> 1384</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FloatingLiteral.html#aa2001102a715ec8d544389248c2643ac">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == FloatingLiteralClass;</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>   }</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> </div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01389"></a><span class="lineno"><a class="code" href="classclang_1_1FloatingLiteral.html#a43eb4cc40d3166b09adbb69865cb1f22"> 1389</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1FloatingLiteral.html#a43eb4cc40d3166b09adbb69865cb1f22">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span> };</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span> <span class="comment"></span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> <span class="comment">/// ImaginaryLiteral - We support imaginary integer and floating point literals,</span></div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="comment">/// like "1.0i".  We represent these as a wrapper around FloatingLiteral and</span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="comment">/// IntegerLiteral classes.  Instances of this class always have a Complex type</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="comment">/// whose element type matches the subexpression.</span></div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html"> 1397</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ImaginaryLiteral.html">ImaginaryLiteral</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Val;</div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01400"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#a5e828b68646a869dc099e4c4a8943c0a"> 1400</a></span>   <a class="code" href="classclang_1_1ImaginaryLiteral.html#a5e828b68646a869dc099e4c4a8943c0a">ImaginaryLiteral</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *val, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty)</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ImaginaryLiteralClass, Ty, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span>       Val(val) {}</div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="comment"></span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="comment">  /// \brief Build an empty imaginary literal.</span></div>
+<div class="line"><a name="l01406"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#aaef29b59ea72c192aee88277af1b288a"> 1406</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ImaginaryLiteral.html#a5e828b68646a869dc099e4c4a8943c0a">ImaginaryLiteral</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ImaginaryLiteralClass, Empty) { }</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#a7322766e392b031711373159ec23e119"> 1409</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ImaginaryLiteral.html#a7322766e392b031711373159ec23e119">getSubExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l01410"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#a70a7b6e1058a7d360be6822b0d7f5c28"> 1410</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ImaginaryLiteral.html#a70a7b6e1058a7d360be6822b0d7f5c28">getSubExpr</a>() { <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l01411"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#aec155ce15cc83c891ea1455a60108046"> 1411</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ImaginaryLiteral.html#aec155ce15cc83c891ea1455a60108046">setSubExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { Val = E; }</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> </div>
+<div class="line"><a name="l01413"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#a97befeacef4cbc1f7c90ea0097b28392"> 1413</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_1ImaginaryLiteral.html#a97befeacef4cbc1f7c90ea0097b28392">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Val-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>(); }</div>
+<div class="line"><a name="l01414"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#a94dea4acc88ba2b9c1e0889c24739d68"> 1414</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_1ImaginaryLiteral.html#a94dea4acc88ba2b9c1e0889c24739d68">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Val-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>(); }</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> </div>
+<div class="line"><a name="l01416"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#ae316720e3bae36d1b6c2b3aaeac162cf"> 1416</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ImaginaryLiteral.html#ae316720e3bae36d1b6c2b3aaeac162cf">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ImaginaryLiteralClass;</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"> 1420</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01421"></a><span class="lineno"><a class="code" href="classclang_1_1ImaginaryLiteral.html#ada4ab05e6a4b7a79e652e3cd689d4d97"> 1421</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ImaginaryLiteral.html#ada4ab05e6a4b7a79e652e3cd689d4d97">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&Val, &Val+1); }</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> };</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> <span class="comment"></span></div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="comment">/// StringLiteral - This represents a string literal expression, e.g. "foo"</span></div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> <span class="comment">/// or L"bar" (wide strings).  The actual string is returned by getBytes()</span></div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span> <span class="comment">/// is NOT null-terminated, and the length of the string is determined by</span></div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> <span class="comment">/// calling getByteLength().  The C type for a string is always a</span></div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="comment">/// ConstantArrayType.  In C++, the char type is const qualified, in C it is</span></div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> <span class="comment">/// not.</span></div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> <span class="comment">/// Note that strings in C can be formed by concatenation of multiple string</span></div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> <span class="comment">/// literal pptokens in translation phase #6.  This keeps track of the locations</span></div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="comment">/// of each of these pieces.</span></div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> <span class="comment">/// Strings in C can also be truncated and extended by assigning into arrays,</span></div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> <span class="comment">/// e.g. with constructs like:</span></div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> <span class="comment">///   char X[2] = "foobar";</span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> <span class="comment">/// In this case, getByteLength() will return 6, but the string literal will</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> <span class="comment">/// have type "char[2]".</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html"> 1440</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01442"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460"> 1442</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> {</div>
+<div class="line"><a name="l01443"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14"> 1443</a></span>     <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14">Ascii</a>,</div>
+<div class="line"><a name="l01444"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9"> 1444</a></span>     <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9">Wide</a>,</div>
+<div class="line"><a name="l01445"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a"> 1445</a></span>     <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a">UTF8</a>,</div>
+<div class="line"><a name="l01446"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381"> 1446</a></span>     <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381">UTF16</a>,</div>
+<div class="line"><a name="l01447"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a4c1b71b4a68274a86d73a47b3d19167f"> 1447</a></span>     <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a4c1b71b4a68274a86d73a47b3d19167f">UTF32</a></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> </div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01451"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ad6427d648931017bffcb2f90b8930f9d"> 1451</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> </div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>   <span class="keyword">union </span>{</div>
+<div class="line"><a name="l01454"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a49f451f779183f12e41d8e2eccdd4def"> 1454</a></span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1StringLiteral.html#a49f451f779183f12e41d8e2eccdd4def">asChar</a>;</div>
+<div class="line"><a name="l01455"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a2051d3afbe9f20f6542558836e10e7d5"> 1455</a></span>     <span class="keyword">const</span> uint16_t *<a class="code" href="classclang_1_1StringLiteral.html#a2051d3afbe9f20f6542558836e10e7d5">asUInt16</a>;</div>
+<div class="line"><a name="l01456"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ae1db802ad882aeab521572070152b5a6"> 1456</a></span>     <span class="keyword">const</span> uint32_t *<a class="code" href="classclang_1_1StringLiteral.html#ae1db802ad882aeab521572070152b5a6">asUInt32</a>;</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>   } StrData;</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span>   <span class="keywordtype">unsigned</span> Length;</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span>   <span class="keywordtype">unsigned</span> CharByteWidth : 4;</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span>   <span class="keywordtype">unsigned</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> : 3;</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span>   <span class="keywordtype">unsigned</span> IsPascal : 1;</div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span>   <span class="keywordtype">unsigned</span> NumConcatenated;</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</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> TokLocs[1];</div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> </div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span>   <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty) :</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a>(StringLiteralClass, Ty, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340ab67545101f6b01efc1ecf6a0cefc7ee7" title="An l-value expression is a reference to an object with independent storage.">VK_LValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>          <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) {}</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> </div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span>   <span class="keyword">static</span> <span class="keywordtype">int</span> mapCharByteWidth(TargetInfo <span class="keyword">const</span> &target,<a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> k);</div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span> </div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> <span class="comment">  /// This is the "fully general" constructor that allows representation of</span></div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="comment">  /// strings formed from multiple concatenated tokens.</span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="comment"></span>  <span class="keyword">static</span> StringLiteral *<a class="code" href="classclang_1_1StringLiteral.html#a8707628d2fd939e14b14b1b3f499f64a">Create</a>(<span class="keyword">const</span> ASTContext &C, StringRef Str,</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>                                <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <span class="keywordtype">bool</span> Pascal, QualType Ty,</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>                                <span class="keyword">const</span> SourceLocation *Loc, <span class="keywordtype">unsigned</span> NumStrs);</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span> <span class="comment"></span></div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> <span class="comment">  /// Simple constructor for string literals made from one token.</span></div>
+<div class="line"><a name="l01479"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#aeae635367f55b34e2a716ffe12eb0b52"> 1479</a></span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *<a class="code" href="classclang_1_1StringLiteral.html#a8707628d2fd939e14b14b1b3f499f64a">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, StringRef Str,</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>                                <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <span class="keywordtype">bool</span> Pascal, <a class="code" href="classclang_1_1QualType.html">QualType</a> Ty,</div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</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="l01482"></a><span class="lineno"> 1482</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1StringLiteral.html#a8707628d2fd939e14b14b1b3f499f64a">Create</a>(C, Str, Kind, Pascal, Ty, &Loc, 1);</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>   }</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span> <span class="comment"></span></div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span> <span class="comment">  /// \brief Construct an empty string literal.</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a> *<a class="code" href="classclang_1_1StringLiteral.html#a256efef1600d3b2fb4e4b4dd5f347dfd" title="Construct an empty string literal.">CreateEmpty</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> NumStrs);</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div>
+<div class="line"><a name="l01488"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a5ac45571169396e74d296c733811a243"> 1488</a></span>   StringRef <a class="code" href="classclang_1_1StringLiteral.html#a5ac45571169396e74d296c733811a243">getString</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span>     assert(CharByteWidth==1</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span>            && <span class="stringliteral">"This function is used in places that assume strings use char"</span>);</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>     <span class="keywordflow">return</span> StringRef(StrData.asChar, <a class="code" href="classclang_1_1StringLiteral.html#a1509ebfcf424c3234a084282f445c3e6">getByteLength</a>());</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> <span class="comment"></span></div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="comment">  /// Allow access to clients that need the byte representation, such as</span></div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> <span class="comment">  /// ASTWriterStmt::VisitStringLiteral().</span></div>
+<div class="line"><a name="l01496"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ac610f51a12e7f18be455179877b8e9c2"> 1496</a></span> <span class="comment"></span>  StringRef <a class="code" href="classclang_1_1StringLiteral.html#ac610f51a12e7f18be455179877b8e9c2">getBytes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>     <span class="comment">// FIXME: StringRef may not be the right type to use as a result for this.</span></div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     <span class="keywordflow">if</span> (CharByteWidth == 1)</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>       <span class="keywordflow">return</span> StringRef(StrData.asChar, <a class="code" href="classclang_1_1StringLiteral.html#a1509ebfcf424c3234a084282f445c3e6">getByteLength</a>());</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>     <span class="keywordflow">if</span> (CharByteWidth == 4)</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>       <span class="keywordflow">return</span> StringRef(reinterpret_cast<const char*>(StrData.asUInt32),</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>                        <a class="code" href="classclang_1_1StringLiteral.html#a1509ebfcf424c3234a084282f445c3e6">getByteLength</a>());</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>     assert(CharByteWidth == 2 && <span class="stringliteral">"unsupported CharByteWidth"</span>);</div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>     <span class="keywordflow">return</span> StringRef(reinterpret_cast<const char*>(StrData.asUInt16),</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>                      <a class="code" href="classclang_1_1StringLiteral.html#a1509ebfcf424c3234a084282f445c3e6">getByteLength</a>());</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>   }</div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span> </div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StringLiteral.html#ad010c5d50fb376b8f57d58e4f911161d">outputString</a>(raw_ostream &OS) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> </div>
+<div class="line"><a name="l01510"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#aaa05172236515550a9a3e41d4c152b92"> 1510</a></span>   uint32_t <a class="code" href="classclang_1_1StringLiteral.html#aaa05172236515550a9a3e41d4c152b92">getCodeUnit</a>(<span class="keywordtype">size_t</span> i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>     assert(i < Length && <span class="stringliteral">"out of bounds access"</span>);</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>     <span class="keywordflow">if</span> (CharByteWidth == 1)</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>       <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span><span class="keyword">></span>(StrData.asChar[i]);</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>     <span class="keywordflow">if</span> (CharByteWidth == 4)</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>       <span class="keywordflow">return</span> StrData.asUInt32[i];</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>     assert(CharByteWidth == 2 && <span class="stringliteral">"unsupported CharByteWidth"</span>);</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>     <span class="keywordflow">return</span> StrData.asUInt16[i];</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>   }</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> </div>
+<div class="line"><a name="l01520"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a1509ebfcf424c3234a084282f445c3e6"> 1520</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1StringLiteral.html#a1509ebfcf424c3234a084282f445c3e6">getByteLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> CharByteWidth*Length; }</div>
+<div class="line"><a name="l01521"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#af2c46f51df665b6837c7d11cbb4a312c"> 1521</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1StringLiteral.html#af2c46f51df665b6837c7d11cbb4a312c">getLength</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Length; }</div>
+<div class="line"><a name="l01522"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a1e6df71fc612f1b4353be0b05e3d04c7"> 1522</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1StringLiteral.html#a1e6df71fc612f1b4353be0b05e3d04c7">getCharByteWidth</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> CharByteWidth; }</div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> <span class="comment"></span></div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> <span class="comment">  /// \brief Sets the string data to the given string data.</span></div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StringLiteral.html#a632d622d4921be2bd7d0c05d4267bd65" title="Sets the string data to the given string data.">setString</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, StringRef Str,</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>                  <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <span class="keywordtype">bool</span> IsPascal);</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> </div>
+<div class="line"><a name="l01528"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a4cd7dc9166f3226b46ec4314eb9063af"> 1528</a></span>   <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a> <a class="code" href="classclang_1_1StringLiteral.html#a4cd7dc9166f3226b46ec4314eb9063af">getKind</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460">StringKind</a><span class="keyword">></span>(<a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>); }</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> </div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> </div>
+<div class="line"><a name="l01531"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a7de7620dc8a11dcd19cd60c2517a955d"> 1531</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#a7de7620dc8a11dcd19cd60c2517a955d">isAscii</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a1d65c2a7fa94893f57f6d15e3edbcb14">Ascii</a>; }</div>
+<div class="line"><a name="l01532"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a5dbfadc8802e9ee61f8f95dacb3bb93e"> 1532</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#a5dbfadc8802e9ee61f8f95dacb3bb93e">isWide</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460af78d80b058e4f2366161f59c458ffcb9">Wide</a>; }</div>
+<div class="line"><a name="l01533"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ac0deb02295b643313afb899b2b998675"> 1533</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#ac0deb02295b643313afb899b2b998675">isUTF8</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a50ddcd2275e37f6cf81ad684a5b2838a">UTF8</a>; }</div>
+<div class="line"><a name="l01534"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a409b20c0563c042acf106d7807fd7b53"> 1534</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#a409b20c0563c042acf106d7807fd7b53">isUTF16</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a39a273d718f83f3182468eaabf090381">UTF16</a>; }</div>
+<div class="line"><a name="l01535"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a0914ebf483f8638973ab9c285a685477"> 1535</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#a0914ebf483f8638973ab9c285a685477">isUTF32</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == <a class="code" href="classclang_1_1StringLiteral.html#a3be0aa06c87ed73880cce3487c40d460a4c1b71b4a68274a86d73a47b3d19167f">UTF32</a>; }</div>
+<div class="line"><a name="l01536"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#af0866682e8a69c080fc280f33878e2c6"> 1536</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#af0866682e8a69c080fc280f33878e2c6">isPascal</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsPascal; }</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> </div>
+<div class="line"><a name="l01538"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a96a9378f873031c3252cf6ea47d244c5"> 1538</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#a96a9378f873031c3252cf6ea47d244c5">containsNonAsciiOrNull</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>     StringRef Str = <a class="code" href="classclang_1_1StringLiteral.html#a5ac45571169396e74d296c733811a243">getString</a>();</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = Str.size(); i != e; ++i)</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>       <span class="keywordflow">if</span> (!<a class="code" href="namespaceclang.html#ae6cfdfe27adee1fba37bcbc3f4c591b1" title="Returns true if this is an ASCII character.">isASCII</a>(Str[i]) || !Str[i])</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>   }</div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span> <span class="comment"></span></div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> <span class="comment">  /// getNumConcatenated - Get the number of string literal tokens that were</span></div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> <span class="comment">  /// concatenated in translation phase #6 to form this string literal.</span></div>
+<div class="line"><a name="l01548"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ad4768f2ffce70bf93afea2e2f9c80471"> 1548</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1StringLiteral.html#ad4768f2ffce70bf93afea2e2f9c80471">getNumConcatenated</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NumConcatenated; }</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> </div>
+<div class="line"><a name="l01550"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a70bba0d378413d6a0610a5f64e5d162c"> 1550</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_1StringLiteral.html#a70bba0d378413d6a0610a5f64e5d162c">getStrTokenLoc</a>(<span class="keywordtype">unsigned</span> TokNum)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>     assert(TokNum < NumConcatenated && <span class="stringliteral">"Invalid tok number"</span>);</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>     <span class="keywordflow">return</span> TokLocs[TokNum];</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_1StringLiteral.html#af2d49eaa123a9189cc080038f0fa19ba"> 1554</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StringLiteral.html#af2d49eaa123a9189cc080038f0fa19ba">setStrTokenLoc</a>(<span class="keywordtype">unsigned</span> TokNum, <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="l01555"></a><span class="lineno"> 1555</span>     assert(TokNum < NumConcatenated && <span class="stringliteral">"Invalid tok number"</span>);</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>     TokLocs[TokNum] = L;</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>   }</div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span> <span class="comment"></span></div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span> <span class="comment">  /// getLocationOfByte - Return a source location that points to the specified</span></div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> <span class="comment">  /// byte of this string literal.</span></div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <span class="comment">  /// Strings are amazingly complex.  They can be formed from multiple tokens</span></div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span> <span class="comment">  /// and can have escape sequences in them in addition to the usual trigraph</span></div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span> <span class="comment">  /// and escaped newline business.  This routine handles this complexity.</span></div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</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_1StringLiteral.html#a5119c730aa105f479e2809cd2c9c7d8c" title="getLocationOfByte - Return a source location that points to the specified byte of this string literal...">getLocationOfByte</a>(<span class="keywordtype">unsigned</span> ByteNo, <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#afe4356a77609114d8df0bfc9c2b8701f">SM</a>,</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &Features,</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>                                    <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &Target) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> </div>
+<div class="line"><a name="l01570"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#ae230ea03e42b7e9edd373160243e408d"> 1570</a></span>   <span class="keyword">typedef</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> *<a class="code" href="classclang_1_1StringLiteral.html#ae230ea03e42b7e9edd373160243e408d">tokloc_iterator</a>;</div>
+<div class="line"><a name="l01571"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a240091681eb20b172076cdc479c11f08"> 1571</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...">tokloc_iterator</a> <a class="code" href="classclang_1_1StringLiteral.html#a240091681eb20b172076cdc479c11f08">tokloc_begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TokLocs; }</div>
+<div class="line"><a name="l01572"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a72490af27341a400f5c77ea57c268d50"> 1572</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...">tokloc_iterator</a> <a class="code" href="classclang_1_1StringLiteral.html#a72490af27341a400f5c77ea57c268d50">tokloc_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TokLocs+NumConcatenated; }</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> </div>
+<div class="line"><a name="l01574"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#aa43ad588db383f5f78a29019acd5b02b"> 1574</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_1StringLiteral.html#aa43ad588db383f5f78a29019acd5b02b">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> TokLocs[0]; }</div>
+<div class="line"><a name="l01575"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a28ae177d3b94543dedd6e3ea266a46f3"> 1575</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_1StringLiteral.html#a28ae177d3b94543dedd6e3ea266a46f3">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>     <span class="keywordflow">return</span> TokLocs[NumConcatenated - 1];</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</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"><a class="code" href="classclang_1_1StringLiteral.html#a3af5168e774d47309a9fd15f6b677816"> 1579</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StringLiteral.html#a3af5168e774d47309a9fd15f6b677816">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == StringLiteralClass;</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span>   }</div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> </div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01584"></a><span class="lineno"><a class="code" href="classclang_1_1StringLiteral.html#a6c05f733c91a22b0964f0f62c5a3addc"> 1584</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1StringLiteral.html#a6c05f733c91a22b0964f0f62c5a3addc">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> };</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">/// ParenExpr - This represents a parethesized expression, e.g. "(1)".  This</span></div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> <span class="comment">/// AST node is only formed if full location information is requested.</span></div>
+<div class="line"><a name="l01589"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html"> 1589</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ParenExpr.html">ParenExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</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> L, R;</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Val;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01593"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a0cbc73519ef6ddffb1a06ed9794fd100"> 1593</a></span>   <a class="code" href="classclang_1_1ParenExpr.html#a0cbc73519ef6ddffb1a06ed9794fd100">ParenExpr</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, <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> r, <a class="code" href="classclang_1_1Expr.html">Expr</a> *val)</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ParenExprClass, val-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>(),</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>            val-><a class="code" href="classclang_1_1Expr.html#aacbe243ee99ac093e4eba5e40d6a9edb" title="getValueKind - The value kind that this expression produces.">getValueKind</a>(), val-><a class="code" href="classclang_1_1Expr.html#a6fd3892ddf8334fc9b311daaa93a27f5">getObjectKind</a>(),</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>            val-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(), val-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>            val-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>(),</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>            val-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>       L(l), R(r), Val(val) {}</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 Construct an empty parenthesized expression.</span></div>
+<div class="line"><a name="l01602"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a2438b162fc704cbe3fd3b59464a5d951"> 1602</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ParenExpr.html#a0cbc73519ef6ddffb1a06ed9794fd100">ParenExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ParenExprClass, Empty) { }</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span> </div>
+<div class="line"><a name="l01605"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#afd9e25d5ae91df9ada9e26b74b60422b"> 1605</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ParenExpr.html#afd9e25d5ae91df9ada9e26b74b60422b">getSubExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l01606"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a647efc9888b533e141cd08ec741f3aa4"> 1606</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ParenExpr.html#a647efc9888b533e141cd08ec741f3aa4">getSubExpr</a>() { <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l01607"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#af3892b1a0ef3dbcf257d114497feae0b"> 1607</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ParenExpr.html#af3892b1a0ef3dbcf257d114497feae0b">setSubExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { Val = E; }</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> </div>
+<div class="line"><a name="l01609"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a4f1693fb9741a17052def26cc3114c26"> 1609</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_1ParenExpr.html#a4f1693fb9741a17052def26cc3114c26">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> L; }</div>
+<div class="line"><a name="l01610"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#ab2d767a8f486e41a8f01979146a28af2"> 1610</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_1ParenExpr.html#ab2d767a8f486e41a8f01979146a28af2">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> R; }</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="comment"></span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="comment">  /// \brief Get the location of the left parentheses '('.</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a5534a909d5d763818a125f0fd30270d6"> 1613</a></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_1ParenExpr.html#a5534a909d5d763818a125f0fd30270d6" title="Get the location of the left parentheses '('.">getLParen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> L; }</div>
+<div class="line"><a name="l01614"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a37dbdda3958be9fbfb4f9fc9eed2b97e"> 1614</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ParenExpr.html#a37dbdda3958be9fbfb4f9fc9eed2b97e">setLParen</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> Loc) { L = Loc; }</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span> <span class="comment"></span></div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span> <span class="comment">  /// \brief Get the location of the right parentheses ')'.</span></div>
+<div class="line"><a name="l01617"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a0343e648dfb087cf408ec516cb186f95"> 1617</a></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_1ParenExpr.html#a0343e648dfb087cf408ec516cb186f95" title="Get the location of the right parentheses ')'.">getRParen</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> R; }</div>
+<div class="line"><a name="l01618"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a7d9dc8f65cf1f0c24d9cf68a11a5aeae"> 1618</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ParenExpr.html#a7d9dc8f65cf1f0c24d9cf68a11a5aeae">setRParen</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> Loc) { R = Loc; }</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span> </div>
+<div class="line"><a name="l01620"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a1e1771ea35022214f40a4b5a55422044"> 1620</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ParenExpr.html#a1e1771ea35022214f40a4b5a55422044">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ParenExprClass;</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> </div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01625"></a><span class="lineno"><a class="code" href="classclang_1_1ParenExpr.html#a922129b73bc8ad265c2bc87403a31d48"> 1625</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ParenExpr.html#a922129b73bc8ad265c2bc87403a31d48">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&Val, &Val+1); }</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> };</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> </div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> <span class="comment"></span></div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span> <span class="comment">/// UnaryOperator - This represents the unary-expression's (except sizeof and</span></div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> <span class="comment">/// alignof), the postinc/postdec operators from postfix-expression, and various</span></div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="comment">/// extensions.</span></div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> <span class="comment">/// Notes on various nodes:</span></div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> <span class="comment">/// Real/Imag - These return the real/imag part of a complex operand.  If</span></div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> <span class="comment">///   applied to a non-complex value, the former returns its operand and the</span></div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> <span class="comment">///   later returns zero in the type of the operand.</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html"> 1639</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1UnaryOperator.html">UnaryOperator</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01641"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#ab8b1d3c68e201873715ee2770cfa1d11"> 1641</a></span>   <span class="keyword">typedef</span> <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">UnaryOperatorKind</a> <a class="code" href="classclang_1_1UnaryOperator.html#ab8b1d3c68e201873715ee2770cfa1d11">Opcode</a>;</div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> </div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>   <span class="keywordtype">unsigned</span> Opc : 5;</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</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="l01646"></a><span class="lineno"> 1646</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Val;</div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div>
+<div class="line"><a name="l01649"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a7dd1ccfe8b4a082a0b8f9a1266e5f5b3"> 1649</a></span>   <a class="code" href="classclang_1_1UnaryOperator.html#a7dd1ccfe8b4a082a0b8f9a1266e5f5b3">UnaryOperator</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *input, <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> opc, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>                 <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK, <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="l01651"></a><span class="lineno"> 1651</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(UnaryOperatorClass, type, VK, OK,</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>            input-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || type->isDependentType(),</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>            input-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>            (input-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>             type->isInstantiationDependentType()),</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>            input-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>       Opc(opc), Loc(l), Val(input) {}</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> <span class="comment"></span></div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> <span class="comment">  /// \brief Build an empty unary operator.</span></div>
+<div class="line"><a name="l01660"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a92a454c7766271f1797425b55b3d76c6"> 1660</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1UnaryOperator.html#a7dd1ccfe8b4a082a0b8f9a1266e5f5b3">UnaryOperator</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(UnaryOperatorClass, Empty), Opc(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa74539ddfc7ac7056cfaeeca1deed46be">UO_AddrOf</a>) { }</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> </div>
+<div class="line"><a name="l01663"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b"> 1663</a></span>   <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> <a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a><span class="keyword">></span>(Opc); }</div>
+<div class="line"><a name="l01664"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#af9baa9877b7db90b9c23b0c20b26ed48"> 1664</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryOperator.html#af9baa9877b7db90b9c23b0c20b26ed48">setOpcode</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> O) { Opc = O; }</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> </div>
+<div class="line"><a name="l01666"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10"> 1666</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1UnaryOperator.html#a64fdf148f4f40ae0a35e2bc7e0bfac10">getSubExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l01667"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a1404c614047b4413472986de537a4edf"> 1667</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryOperator.html#a1404c614047b4413472986de537a4edf">setSubExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { Val = E; }</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> <span class="comment"></span></div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span> <span class="comment">  /// getOperatorLoc - Return the location of the operator.</span></div>
+<div class="line"><a name="l01670"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a0fa25f2d735fdc9ee601228c5bd4ad68"> 1670</a></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_1UnaryOperator.html#a0fa25f2d735fdc9ee601228c5bd4ad68" title="getOperatorLoc - Return the location of the operator.">getOperatorLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01671"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a295a91f9da70ed78b8d28eab8270c312"> 1671</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryOperator.html#a295a91f9da70ed78b8d28eab8270c312">setOperatorLoc</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="l01672"></a><span class="lineno"> 1672</span> <span class="comment"></span></div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> <span class="comment">  /// isPostfix - Return true if this is a postfix operation, like x++.</span></div>
+<div class="line"><a name="l01674"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a06787d3f61811942ff2ab5b0e8bf36d3"> 1674</a></span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a06787d3f61811942ff2ab5b0e8bf36d3" title="isPostfix - Return true if this is a postfix operation, like x++.">isPostfix</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) {</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>     <span class="keywordflow">return</span> Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa6d908d314a5f7c26833ffc0c453b9a40">UO_PostInc</a> || Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5cd3ab72d62411d215161f9f852cc589">UO_PostDec</a>;</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"></span></div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> <span class="comment">  /// isPrefix - Return true if this is a prefix operation, like --x.</span></div>
+<div class="line"><a name="l01679"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#ae44ff2deb4f7d9563ef71dd9e5036e3a"> 1679</a></span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#ae44ff2deb4f7d9563ef71dd9e5036e3a" title="isPrefix - Return true if this is a prefix operation, like –x.">isPrefix</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) {</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span>     <span class="keywordflow">return</span> Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e13dc1c94cb3c4aec9526575bdd424d">UO_PreInc</a> || Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a>;</div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span>   }</div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> </div>
+<div class="line"><a name="l01683"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#adfacce14f3397c4bbe9d5f3bfc18fa2b"> 1683</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#adfacce14f3397c4bbe9d5f3bfc18fa2b">isPrefix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#adfacce14f3397c4bbe9d5f3bfc18fa2b">isPrefix</a>(<a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>()); }</div>
+<div class="line"><a name="l01684"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a4772d749615d146f00e21ee5f3dff6ed"> 1684</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a4772d749615d146f00e21ee5f3dff6ed">isPostfix</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#a4772d749615d146f00e21ee5f3dff6ed">isPostfix</a>(<a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>()); }</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> </div>
+<div class="line"><a name="l01686"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a864c52dc9afc55802152d89de9703014"> 1686</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a864c52dc9afc55802152d89de9703014">isIncrementOp</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) {</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>     <span class="keywordflow">return</span> Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa8e13dc1c94cb3c4aec9526575bdd424d">UO_PreInc</a> || Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa6d908d314a5f7c26833ffc0c453b9a40">UO_PostInc</a>;</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>   }</div>
+<div class="line"><a name="l01689"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a78ba6b49f4a05585cde6c9da6d76e378"> 1689</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a78ba6b49f4a05585cde6c9da6d76e378">isIncrementOp</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#a78ba6b49f4a05585cde6c9da6d76e378">isIncrementOp</a>(<a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>());</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>   }</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> </div>
+<div class="line"><a name="l01693"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#aa403410b471ba46ef38a2af17ca7e162"> 1693</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#aa403410b471ba46ef38a2af17ca7e162">isDecrementOp</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) {</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>     <span class="keywordflow">return</span> Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a> || Op == <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa5cd3ab72d62411d215161f9f852cc589">UO_PostDec</a>;</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>   }</div>
+<div class="line"><a name="l01696"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#afcfec48525f68f01344240e54307e609"> 1696</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#afcfec48525f68f01344240e54307e609">isDecrementOp</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#afcfec48525f68f01344240e54307e609">isDecrementOp</a>(<a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>());</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>   }</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> </div>
+<div class="line"><a name="l01700"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a8bb4e39e2730299574a557c2de454bf2"> 1700</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a8bb4e39e2730299574a557c2de454bf2">isIncrementDecrementOp</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) { <span class="keywordflow">return</span> Op <= <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffade6bd9d0cc5c62a832da915f7e837562">UO_PreDec</a>; }</div>
+<div class="line"><a name="l01701"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#ad7efc89eee73f2dbd63d9ed7000c40a3"> 1701</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#ad7efc89eee73f2dbd63d9ed7000c40a3">isIncrementDecrementOp</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#ad7efc89eee73f2dbd63d9ed7000c40a3">isIncrementDecrementOp</a>(<a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>());</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>   }</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> </div>
+<div class="line"><a name="l01705"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#af02f3331beca0eabdf1bb1f9973f7405"> 1705</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#af02f3331beca0eabdf1bb1f9973f7405">isArithmeticOp</a>(<a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fff">Opcode</a> Op) {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>     <span class="keywordflow">return</span> Op >= <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffa3663aba90ba0dd36bff0db1db1e20a5e">UO_Plus</a> && Op <= <a class="code" href="namespaceclang.html#a8daaf3ab8b5c55053f6da47944e48fffab236f32b7261ecbeb4da53fedab54d4b">UO_LNot</a>;</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>   }</div>
+<div class="line"><a name="l01708"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a5662eea82269802bc305a6d1a3fd9589"> 1708</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a5662eea82269802bc305a6d1a3fd9589">isArithmeticOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#a5662eea82269802bc305a6d1a3fd9589">isArithmeticOp</a>(<a class="code" href="classclang_1_1UnaryOperator.html#a4fceff35ff6b7f186590155fa21df48b">getOpcode</a>()); }</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span> <span class="comment"></span></div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> <span class="comment">  /// getOpcodeStr - Turn an Opcode enum value into the punctuation char it</span></div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> <span class="comment">  /// corresponds to, e.g. "sizeof" or "[pre]++"</span></div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> <span class="comment"></span>  <span class="keyword">static</span> StringRef <a class="code" href="classclang_1_1UnaryOperator.html#aea67833acedd6409746250b8e1612dcd" title="getOpcodeStr - Turn an Opcode enum value into the punctuation char it corresponds to...">getOpcodeStr</a>(<a class="code" href="classclang_1_1UnaryOperator.html#ab8b1d3c68e201873715ee2770cfa1d11">Opcode</a> Op);</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> <span class="comment"></span></div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> <span class="comment">  /// \brief Retrieve the unary opcode that corresponds to the given</span></div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> <span class="comment">  /// overloaded operator.</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1UnaryOperator.html#ab8b1d3c68e201873715ee2770cfa1d11">Opcode</a> <a class="code" href="classclang_1_1UnaryOperator.html#aafb3e461d57de88ba95cf611b4075779" title="Retrieve the unary opcode that corresponds to the given overloaded operator.">getOverloadedOpcode</a>(<a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> OO, <span class="keywordtype">bool</span> Postfix);</div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="comment"></span></div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="comment">  /// \brief Retrieve the overloaded operator kind that corresponds to</span></div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="comment">  /// the given unary opcode.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> <a class="code" href="classclang_1_1UnaryOperator.html#a7f13ac5ac20a199f92a74c2cd4d5e749" title="Retrieve the overloaded operator kind that corresponds to the given unary opcode.">getOverloadedOperator</a>(<a class="code" href="classclang_1_1UnaryOperator.html#ab8b1d3c68e201873715ee2770cfa1d11">Opcode</a> Opc);</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> </div>
+<div class="line"><a name="l01722"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a0cbd1afa8da8e3d494714358b55dc6a7"> 1722</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_1UnaryOperator.html#a0cbd1afa8da8e3d494714358b55dc6a7">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#a4772d749615d146f00e21ee5f3dff6ed">isPostfix</a>() ? Val-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>() : Loc;</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>   }</div>
+<div class="line"><a name="l01725"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a5d0eb5ccb1954b1fbb364d29d02596a4"> 1725</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_1UnaryOperator.html#a5d0eb5ccb1954b1fbb364d29d02596a4">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryOperator.html#a4772d749615d146f00e21ee5f3dff6ed">isPostfix</a>() ? Loc : Val-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span>   }</div>
+<div class="line"><a name="l01728"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a6ead0bc5f545fb836280f8ff6f2ddcac"> 1728</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_1UnaryOperator.html#a6ead0bc5f545fb836280f8ff6f2ddcac">getExprLoc</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Loc; }</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> </div>
+<div class="line"><a name="l01730"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a05dab8192c342c82d057616ba0dcd52b"> 1730</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryOperator.html#a05dab8192c342c82d057616ba0dcd52b">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == UnaryOperatorClass;</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>   }</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> </div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01735"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryOperator.html#a80628be7c4c0f57fa7011af39b07e880"> 1735</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1UnaryOperator.html#a80628be7c4c0f57fa7011af39b07e880">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&Val, &Val+1); }</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> <span class="comment"></span></div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <span class="comment">/// OffsetOfExpr - [C99 7.17] - This represents an expression of the form</span></div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> <span class="comment">/// offsetof(record-type, member-designator). For example, given:</span></div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> <span class="comment">/// @code</span></div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="comment">/// struct S {</span></div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> <span class="comment">///   float f;</span></div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="comment">///   double d;</span></div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> <span class="comment">/// };</span></div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> <span class="comment">/// struct T {</span></div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> <span class="comment">///   int i;</span></div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="comment">///   struct S s[10];</span></div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="comment">/// };</span></div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> <span class="comment">/// @endcode</span></div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> <span class="comment">/// we can represent and evaluate the expression @c offsetof(struct T, s[2].d).</span></div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> <span class="comment"></span></div>
+<div class="line"><a name="l01752"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html"> 1752</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   <span class="comment">// __builtin_offsetof(type, identifier(.identifier|[expr])*)</span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html"> 1755</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> {</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>   <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> <span class="comment">    /// \brief The kind of offsetof node we have.</span></div>
+<div class="line"><a name="l01758"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5a"> 1758</a></span> <span class="comment"></span>    <span class="keyword">enum</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5a" title="The kind of offsetof node we have.">Kind</a> {<span class="comment"></span></div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span> <span class="comment">      /// \brief An index into an array.</span></div>
+<div class="line"><a name="l01760"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa0248cc6e1b578faeaf38e1407e7b401f"> 1760</a></span> <span class="comment"></span>      <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa0248cc6e1b578faeaf38e1407e7b401f" title="An index into an array.">Array</a> = 0x00,<span class="comment"></span></div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> <span class="comment">      /// \brief A field.</span></div>
+<div class="line"><a name="l01762"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307"> 1762</a></span> <span class="comment"></span>      <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307" title="A field.">Field</a> = 0x01,<span class="comment"></span></div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> <span class="comment">      /// \brief A field in a dependent type, known only by its name.</span></div>
+<div class="line"><a name="l01764"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa9dc210a69ad5a5f8dcaf9fedaba33747"> 1764</a></span> <span class="comment"></span>      <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa9dc210a69ad5a5f8dcaf9fedaba33747" title="A field in a dependent type, known only by its name.">Identifier</a> = 0x02,<span class="comment"></span></div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span> <span class="comment">      /// \brief An implicit indirection through a C++ base class, when the</span></div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span> <span class="comment">      /// field found is in a base class.</span></div>
+<div class="line"><a name="l01767"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa5f2a710e8647367697f9aeccf4d01bcf"> 1767</a></span> <span class="comment"></span>      <a class="code" href="classclang_1_1Base.html">Base</a> = 0x03</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span>     };</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> </div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>   <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     <span class="keyword">enum</span> { MaskBits = 2, Mask = 0x03 };</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <span class="comment"></span></div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span> <span class="comment">    /// \brief The source range that covers this part of the designator.</span></div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> <span class="comment"></span>    <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> Range;</div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span> <span class="comment"></span></div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> <span class="comment">    /// \brief The data describing the designator, which comes in three</span></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="comment">    /// different forms, depending on the lower two bits.</span></div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="comment">    ///   - An unsigned index into the array of Expr*'s stored after this node</span></div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> <span class="comment">    ///     in memory, for [constant-expression] designators.</span></div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> <span class="comment">    ///   - A FieldDecl*, for references to a known field.</span></div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> <span class="comment">    ///   - An IdentifierInfo*, for references to a field with a given name</span></div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> <span class="comment">    ///     when the class type is dependent.</span></div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span> <span class="comment">    ///   - A CXXBaseSpecifier*, for references that look at a field in a</span></div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span> <span class="comment">    ///     base class.</span></div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> <span class="comment"></span>    uintptr_t Data;</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> </div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>   <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> <span class="comment">    /// \brief Create an offsetof node that refers to an array element.</span></div>
+<div class="line"><a name="l01789"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ad8dfc4ab4e19c69f6b6123ddd1bc436d"> 1789</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ad8dfc4ab4e19c69f6b6123ddd1bc436d" title="Create an offsetof node that refers to an array element.">OffsetOfNode</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> LBracketLoc, <span class="keywordtype">unsigned</span> Index,</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</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> RBracketLoc)</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>       : Range(LBracketLoc, RBracketLoc), Data((Index << 2) | <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa0248cc6e1b578faeaf38e1407e7b401f" title="An index into an array.">Array</a>) { }</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span> <span class="comment"></span></div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> <span class="comment">    /// \brief Create an offsetof node that refers to a field.</span></div>
+<div class="line"><a name="l01794"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ae4a6847efe7576f481ea2b8660fd3ca1"> 1794</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ad8dfc4ab4e19c69f6b6123ddd1bc436d" title="Create an offsetof node that refers to an array element.">OffsetOfNode</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> DotLoc, <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307" title="A field.">Field</a>,</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</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> NameLoc)</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span>       : Range(DotLoc.isValid()? DotLoc : NameLoc, NameLoc),</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>         Data(reinterpret_cast<uintptr_t>(Field) | <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a>::Field) { }</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> <span class="comment"></span></div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> <span class="comment">    /// \brief Create an offsetof node that refers to an identifier.</span></div>
+<div class="line"><a name="l01800"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a0cfd8cd466b5b1479019f81b9c8811db"> 1800</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ad8dfc4ab4e19c69f6b6123ddd1bc436d" title="Create an offsetof node that refers to an array element.">OffsetOfNode</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> DotLoc, <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *Name,</div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</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> NameLoc)</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>       : Range(DotLoc.isValid()? DotLoc : NameLoc, NameLoc),</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>         Data(reinterpret_cast<uintptr_t>(Name) | <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa9dc210a69ad5a5f8dcaf9fedaba33747" title="A field in a dependent type, known only by its name.">Identifier</a>) { }</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> <span class="comment"></span></div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> <span class="comment">    /// \brief Create an offsetof node that refers into a C++ base class.</span></div>
+<div class="line"><a name="l01806"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a90fd0c30f24466415d5239ccdf52d194"> 1806</a></span> <span class="comment"></span>    <span class="keyword">explicit</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ad8dfc4ab4e19c69f6b6123ddd1bc436d" title="Create an offsetof node that refers to an array element.">OffsetOfNode</a>(<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>)</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span>       : Range(), Data(reinterpret_cast<uintptr_t>(Base) | <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a>::Base) {}</div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span> <span class="comment"></span></div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span> <span class="comment">    /// \brief Determine what kind of offsetof node this is.</span></div>
+<div class="line"><a name="l01810"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a"> 1810</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5a" title="The kind of offsetof node we have.">Kind</a> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span>       <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5a" title="The kind of offsetof node we have.">Kind</a><span class="keyword">></span>(Data & Mask);</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span>     }</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span> <span class="comment"></span></div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> <span class="comment">    /// \brief For an array element node, returns the index into the array</span></div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> <span class="comment">    /// of expressions.</span></div>
+<div class="line"><a name="l01816"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a930c486170f468e14f24531ea7e7a08d"> 1816</a></span> <span class="comment"></span>    <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a930c486170f468e14f24531ea7e7a08d" title="For an array element node, returns the index into the array of expressions.">getArrayExprIndex</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>       assert(<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>() == <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa0248cc6e1b578faeaf38e1407e7b401f" title="An index into an array.">Array</a>);</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>       <span class="keywordflow">return</span> Data >> 2;</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span>     }</div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> <span class="comment"></span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> <span class="comment">    /// \brief For a field offsetof node, returns the field.</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a6a0d18d6fc8e8c5d21f25a30abef92bc"> 1822</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a6a0d18d6fc8e8c5d21f25a30abef92bc" title="For a field offsetof node, returns the field.">getField</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span>       assert(<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>() == <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a69cd6b0d43a15c8eb59f58a870679a5aa857cf8e702d44631ad43e2e77a7ea307" title="A field.">Field</a>);</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>       <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<span class="keyword">></span>(Data & ~(uintptr_t)Mask);</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>     }</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> <span class="comment"></span></div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> <span class="comment">    /// \brief For a field or identifier offsetof node, returns the name of</span></div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span> <span class="comment">    /// the field.</span></div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> <span class="comment"></span>    <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ab518d7dc8948f86d5c144e5154103cb4" title="For a field or identifier offsetof node, returns the name of the field.">getFieldName</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> <span class="comment"></span></div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> <span class="comment">    /// \brief For a base class node, returns the base specifier.</span></div>
+<div class="line"><a name="l01832"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ae67b3629af70eaa42b64135e4f74e36e"> 1832</a></span> <span class="comment"></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_1OffsetOfExpr_1_1OffsetOfNode.html#ae67b3629af70eaa42b64135e4f74e36e" title="For a base class node, returns the base specifier.">getBase</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>       assert(<a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a64d4e6c5970c305ce2a9021354bf948a" title="Determine what kind of offsetof node this is.">getKind</a>() == <a class="code" href="classclang_1_1Base.html">Base</a>);</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>       <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *<span class="keyword">></span>(Data & ~(uintptr_t)Mask);</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>     }</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span> <span class="comment"></span></div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> <span class="comment">    /// \brief Retrieve the source range that covers this offsetof node.</span></div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> <span class="comment">    ///</span></div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> <span class="comment">    /// For an array element node, the source range contains the locations of</span></div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> <span class="comment">    /// the square brackets. For a field or identifier node, the source range</span></div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> <span class="comment">    /// contains the location of the period (if there is one) and the</span></div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> <span class="comment">    /// identifier.</span></div>
+<div class="line"><a name="l01843"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a36f12c507026795d03aa8e4dd8787a4d"> 1843</a></span> <span class="comment"></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_1OffsetOfExpr_1_1OffsetOfNode.html#a36f12c507026795d03aa8e4dd8787a4d" title="Retrieve the source range that covers this offsetof node.">getSourceRange</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Range; }</div>
+<div class="line"><a name="l01844"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#ab0e569fe136669b6a53f218946b37465"> 1844</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_1OffsetOfExpr_1_1OffsetOfNode.html#ab0e569fe136669b6a53f218946b37465">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(); }</div>
+<div class="line"><a name="l01845"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html#a4c96957901b90ffdfc7dafc8728c5f4d"> 1845</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_1OffsetOfExpr_1_1OffsetOfNode.html#a4c96957901b90ffdfc7dafc8728c5f4d">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>(); }</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span>   };</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span> </div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> </div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</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> OperatorLoc, RParenLoc;</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span>   <span class="comment">// Base type;</span></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TSInfo;</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span>   <span class="comment">// Number of sub-components (i.e. instances of OffsetOfNode).</span></div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span>   <span class="keywordtype">unsigned</span> NumComps;</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>   <span class="comment">// Number of sub-expressions (i.e. array subscript expressions).</span></div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>   <span class="keywordtype">unsigned</span> NumExprs;</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> </div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span>   <a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</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_1QualType.html">QualType</a> <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</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> OperatorLoc, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *tsi,</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>                <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<OffsetOfNode></a> comps, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> exprs,</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</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> RParenLoc);</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> </div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>   <span class="keyword">explicit</span> <a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a>(<span class="keywordtype">unsigned</span> numComps, <span class="keywordtype">unsigned</span> numExprs)</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(OffsetOfExprClass, EmptyShell()),</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>       TSInfo(0), NumComps(numComps), NumExprs(numExprs) {}</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> </div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span> </div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>   <span class="keyword">static</span> OffsetOfExpr *<a class="code" href="classclang_1_1OffsetOfExpr.html#a7ab83bcf654847162a784389232dc001">Create</a>(<span class="keyword">const</span> ASTContext &C, QualType <a class="code" href="namespaceclang_1_1ast__matchers.html#a82efb51f28681d561f9ce42fecf09d4b" title="Matches Types in the clang AST.">type</a>,</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>                               SourceLocation OperatorLoc, TypeSourceInfo *tsi,</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>                               ArrayRef<OffsetOfNode> comps,</div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>                               ArrayRef<Expr*> exprs, SourceLocation RParenLoc);</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> </div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>   <span class="keyword">static</span> OffsetOfExpr *<a class="code" href="classclang_1_1OffsetOfExpr.html#a427f25c47af5c02a517402bd6d3b51d2">CreateEmpty</a>(<span class="keyword">const</span> ASTContext &C,</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>                                    <span class="keywordtype">unsigned</span> NumComps, <span class="keywordtype">unsigned</span> NumExprs);</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span> <span class="comment"></span></div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> <span class="comment">  /// getOperatorLoc - Return the location of the operator.</span></div>
+<div class="line"><a name="l01878"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a8097217a17284664dbcc8ef7e642c4a3"> 1878</a></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_1OffsetOfExpr.html#a8097217a17284664dbcc8ef7e642c4a3" title="getOperatorLoc - Return the location of the operator.">getOperatorLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OperatorLoc; }</div>
+<div class="line"><a name="l01879"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a41808e937af78695a81aadfb2ae77511"> 1879</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#a41808e937af78695a81aadfb2ae77511">setOperatorLoc</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) { OperatorLoc = L; }</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> <span class="comment"></span></div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> <span class="comment">  /// \brief Return the location of the right parentheses.</span></div>
+<div class="line"><a name="l01882"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#abfaa338d37f94471b769f49b3ea90ff3"> 1882</a></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_1OffsetOfExpr.html#abfaa338d37f94471b769f49b3ea90ff3" title="Return the location of the right parentheses.">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l01883"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#ad528ea8a9ca6bdcca231c38f3d6c150e"> 1883</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#ad528ea8a9ca6bdcca231c38f3d6c150e">setRParenLoc</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> R) { RParenLoc = R; }</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> </div>
+<div class="line"><a name="l01885"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#af9cbc9c1bfd2718c71897de759a8b712"> 1885</a></span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1OffsetOfExpr.html#af9cbc9c1bfd2718c71897de759a8b712">getTypeSourceInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>     <span class="keywordflow">return</span> TSInfo;</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>   }</div>
+<div class="line"><a name="l01888"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a83cff34272f945ca5df0ce2eddd77afc"> 1888</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#a83cff34272f945ca5df0ce2eddd77afc">setTypeSourceInfo</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *tsi) {</div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>     TSInfo = tsi;</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span>   }</div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> </div>
+<div class="line"><a name="l01892"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#acac1a1531e6ae11d202494ab8082f75e"> 1892</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> &<a class="code" href="classclang_1_1OffsetOfExpr.html#acac1a1531e6ae11d202494ab8082f75e">getComponent</a>(<span class="keywordtype">unsigned</span> Idx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>     assert(Idx < NumComps && <span class="stringliteral">"Subscript out of range"</span>);</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><span class="keyword">const </span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> *<span class="keyword">></span> (<span class="keyword">this</span> + 1)[Idx];</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>   }</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span> </div>
+<div class="line"><a name="l01897"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#ac3062b3b00ec5b1632d10e45a67cc1d3"> 1897</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#ac3062b3b00ec5b1632d10e45a67cc1d3">setComponent</a>(<span class="keywordtype">unsigned</span> Idx, <a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> ON) {</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>     assert(Idx < NumComps && <span class="stringliteral">"Subscript out of range"</span>);</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>     <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> *<span class="keyword">></span> (<span class="keyword">this</span> + 1)[Idx] = ON;</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>   }</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span> </div>
+<div class="line"><a name="l01902"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a60b308dd07d2995e2e89369865828ed6"> 1902</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#a60b308dd07d2995e2e89369865828ed6">getNumComponents</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>     <span class="keywordflow">return</span> NumComps;</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>   }</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span> </div>
+<div class="line"><a name="l01906"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#aee7f36a552640efa5e67f1c15007932c"> 1906</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a>* <a class="code" href="classclang_1_1OffsetOfExpr.html#aee7f36a552640efa5e67f1c15007932c">getIndexExpr</a>(<span class="keywordtype">unsigned</span> Idx) {</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>     assert(Idx < NumExprs && <span class="stringliteral">"Subscript out of range"</span>);</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> **<span class="keyword">></span>(</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>                     <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> *<span class="keyword">></span>(<span class="keyword">this</span>+1) + NumComps)[Idx];</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>   }</div>
+<div class="line"><a name="l01911"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a90e54424b324c27eeb2cf970c71a6dcd"> 1911</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1OffsetOfExpr.html#a90e54424b324c27eeb2cf970c71a6dcd">getIndexExpr</a>(<span class="keywordtype">unsigned</span> Idx)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1OffsetOfExpr.html">OffsetOfExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1OffsetOfExpr.html#aee7f36a552640efa5e67f1c15007932c">getIndexExpr</a>(Idx);</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>   }</div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> </div>
+<div class="line"><a name="l01915"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a7ba06452f6102f626932cc747c6fe1f0"> 1915</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#a7ba06452f6102f626932cc747c6fe1f0">setIndexExpr</a>(<span class="keywordtype">unsigned</span> Idx, <a class="code" href="classclang_1_1Expr.html">Expr</a>* E) {</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>     assert(Idx < NumComps && <span class="stringliteral">"Subscript out of range"</span>);</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span>     <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> **<span class="keyword">></span>(</div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>                 <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a> *<span class="keyword">></span>(<span class="keyword">this</span>+1) + NumComps)[Idx] = E;</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>   }</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span> </div>
+<div class="line"><a name="l01921"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a1e7583642eb70ef65817d5642160a985"> 1921</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#a1e7583642eb70ef65817d5642160a985">getNumExpressions</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     <span class="keywordflow">return</span> NumExprs;</div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>   }</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span> </div>
+<div class="line"><a name="l01925"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a609954172f886ebaf176fa11596c45cf"> 1925</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_1OffsetOfExpr.html#a609954172f886ebaf176fa11596c45cf">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> OperatorLoc; }</div>
+<div class="line"><a name="l01926"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a82385253562b3788fe3589057e5ce417"> 1926</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_1OffsetOfExpr.html#a82385253562b3788fe3589057e5ce417">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span> </div>
+<div class="line"><a name="l01928"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#a6a84918c7789609181bfb12f87f00974"> 1928</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1OffsetOfExpr.html#a6a84918c7789609181bfb12f87f00974">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == OffsetOfExprClass;</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>   }</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span> </div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l01933"></a><span class="lineno"><a class="code" href="classclang_1_1OffsetOfExpr.html#ab2e7d961f4d92f63e7dd4452e647dcf5"> 1933</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1OffsetOfExpr.html#ab2e7d961f4d92f63e7dd4452e647dcf5">children</a>() {</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span>     <a class="code" href="classclang_1_1Stmt.html">Stmt</a> **begin =</div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>       <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1Stmt.html">Stmt</a>**<span class="keyword">></span>(<span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1OffsetOfExpr_1_1OffsetOfNode.html">OffsetOfNode</a>*<span class="keyword">></span>(<span class="keyword">this</span> + 1)</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>                                + NumComps);</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(begin, begin + NumExprs);</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>   }</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span> };</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span> <span class="comment"></span></div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> <span class="comment">/// UnaryExprOrTypeTraitExpr - expression with either a type or (unevaluated)</span></div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> <span class="comment">/// expression operand.  Used for sizeof/alignof (C99 6.5.3.4) and</span></div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> <span class="comment">/// vec_step (OpenCL 1.1 6.11.12).</span></div>
+<div class="line"><a name="l01944"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html"> 1944</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>   <span class="keyword">union </span>{</div>
+<div class="line"><a name="l01946"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a7143931277bed1b2dfc7977b132c1c1c"> 1946</a></span>     <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a7143931277bed1b2dfc7977b132c1c1c">Ty</a>;</div>
+<div class="line"><a name="l01947"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aeda6e97d76814bf0f0ac6e9d33186758"> 1947</a></span>     <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aeda6e97d76814bf0f0ac6e9d33186758">Ex</a>;</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span>   } Argument;</div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</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> OpLoc, RParenLoc;</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span> </div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l01952"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ae14083902c8e8a7c8bbde8178184e0e7"> 1952</a></span>   <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ae14083902c8e8a7c8bbde8178184e0e7">UnaryExprOrTypeTraitExpr</a>(<a class="code" href="namespaceclang.html#a5d73f06594a5ccb763a726bed94a541f" title="Names for the "expression or type" traits.">UnaryExprOrTypeTrait</a> ExprKind, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo,</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>                            <a class="code" href="classclang_1_1QualType.html">QualType</a> resultType, <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> op,</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</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> rp) :</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a>(UnaryExprOrTypeTraitExprClass, resultType, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <span class="comment">// Never type-dependent (C++ [temp.dep.expr]p3).</span></div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>            <span class="comment">// Value-dependent if the argument is type-dependent.</span></div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>            TInfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isDependentType(),</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>            TInfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isInstantiationDependentType(),</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>            TInfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>       OpLoc(op), RParenLoc(rp) {</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span>     <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.Kind = ExprKind;</div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>     <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.IsType = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>     Argument.Ty = TInfo;</div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>   }</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> </div>
+<div class="line"><a name="l01967"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a0d7a26b652c144a6db9295cf8e840feb"> 1967</a></span>   <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ae14083902c8e8a7c8bbde8178184e0e7">UnaryExprOrTypeTraitExpr</a>(<a class="code" href="namespaceclang.html#a5d73f06594a5ccb763a726bed94a541f" title="Names for the "expression or type" traits.">UnaryExprOrTypeTrait</a> ExprKind, <a class="code" href="classclang_1_1Expr.html">Expr</a> *E,</div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>                            <a class="code" href="classclang_1_1QualType.html">QualType</a> resultType, <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> op,</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</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> rp) :</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>       <a class="code" href="classclang_1_1Expr.html">Expr</a>(UnaryExprOrTypeTraitExprClass, resultType, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <span class="comment">// Never type-dependent (C++ [temp.dep.expr]p3).</span></div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>            <span class="comment">// Value-dependent if the argument is type-dependent.</span></div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>            E-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(),</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>            E-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>(),</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>            E-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>       OpLoc(op), RParenLoc(rp) {</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>     <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.Kind = ExprKind;</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>     <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.IsType = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>     Argument.Ex = E;</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>   }</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> <span class="comment"></span></div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> <span class="comment">  /// \brief Construct an empty sizeof/alignof expression.</span></div>
+<div class="line"><a name="l01983"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aee11d853a2d52ad74e5e3574377faea1"> 1983</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ae14083902c8e8a7c8bbde8178184e0e7">UnaryExprOrTypeTraitExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(UnaryExprOrTypeTraitExprClass, Empty) { }</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> </div>
+<div class="line"><a name="l01986"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aa2277a3ae31b20bd06f41d6adc1620ef"> 1986</a></span>   <a class="code" href="namespaceclang.html#a5d73f06594a5ccb763a726bed94a541f" title="Names for the "expression or type" traits.">UnaryExprOrTypeTrait</a> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aa2277a3ae31b20bd06f41d6adc1620ef">getKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespaceclang.html#a5d73f06594a5ccb763a726bed94a541f" title="Names for the "expression or type" traits.">UnaryExprOrTypeTrait</a><span class="keyword">></span>(<a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.Kind);</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>   }</div>
+<div class="line"><a name="l01989"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a163c7f804e9277ec723dfe2bed186962"> 1989</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a163c7f804e9277ec723dfe2bed186962">setKind</a>(<a class="code" href="namespaceclang.html#a5d73f06594a5ccb763a726bed94a541f" title="Names for the "expression or type" traits.">UnaryExprOrTypeTrait</a> K) { <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.Kind = K;}</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span> </div>
+<div class="line"><a name="l01991"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad4754c1823bdc76d1702724674bc8c9e"> 1991</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad4754c1823bdc76d1702724674bc8c9e">isArgumentType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.IsType; }</div>
+<div class="line"><a name="l01992"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a22c14930a8a14748b2309318af0b649f"> 1992</a></span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a22c14930a8a14748b2309318af0b649f">getArgumentType</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a75605ca2b18e200471b467c1c2d1862d">getArgumentTypeInfo</a>()-><a class="code" href="classclang_1_1TypeSourceInfo.html#affbab53588a16a2bc948f2493d93a4e2" title="Return the type wrapped by this type source info.">getType</a>();</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span>   }</div>
+<div class="line"><a name="l01995"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a75605ca2b18e200471b467c1c2d1862d"> 1995</a></span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a75605ca2b18e200471b467c1c2d1862d">getArgumentTypeInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span>     assert(<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad4754c1823bdc76d1702724674bc8c9e">isArgumentType</a>() && <span class="stringliteral">"calling getArgumentType() when arg is expr"</span>);</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span>     <span class="keywordflow">return</span> Argument.Ty;</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span>   }</div>
+<div class="line"><a name="l01999"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a32752572fcb378247e114a7e7b5d1e6c"> 1999</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a32752572fcb378247e114a7e7b5d1e6c">getArgumentExpr</a>() {</div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span>     assert(!<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad4754c1823bdc76d1702724674bc8c9e">isArgumentType</a>() && <span class="stringliteral">"calling getArgumentExpr() when arg is type"</span>);</div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span>     <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a>*<span class="keyword">></span>(Argument.Ex);</div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span>   }</div>
+<div class="line"><a name="l02003"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ae1f1da977591b08ec430b7352562a025"> 2003</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ae1f1da977591b08ec430b7352562a025">getArgumentExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html">UnaryExprOrTypeTraitExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a32752572fcb378247e114a7e7b5d1e6c">getArgumentExpr</a>();</div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span>   }</div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> </div>
+<div class="line"><a name="l02007"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad5e41ff99adda1cbe16e81152a8f3d6b"> 2007</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad5e41ff99adda1cbe16e81152a8f3d6b">setArgument</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) {</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>     Argument.Ex = E;</div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>     <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.IsType = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>   }</div>
+<div class="line"><a name="l02011"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#afc9f705723212c3ffdd5d3c2246d66cb"> 2011</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#afc9f705723212c3ffdd5d3c2246d66cb">setArgument</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo) {</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span>     Argument.Ty = TInfo;</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>     <a class="code" href="classclang_1_1Stmt.html#a0a726488789e3bcfab8bfc4124436c91">UnaryExprOrTypeTraitExprBits</a>.IsType = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>   }</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> <span class="comment"></span></div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> <span class="comment">  /// Gets the argument type, or the type of the argument expression, whichever</span></div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> <span class="comment">  /// is appropriate.</span></div>
+<div class="line"><a name="l02018"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a0569c161451a2b03d39fba40d67e0c77"> 2018</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a0569c161451a2b03d39fba40d67e0c77">getTypeOfArgument</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#ad4754c1823bdc76d1702724674bc8c9e">isArgumentType</a>() ? <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a22c14930a8a14748b2309318af0b649f">getArgumentType</a>() : <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a32752572fcb378247e114a7e7b5d1e6c">getArgumentExpr</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>();</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>   }</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> </div>
+<div class="line"><a name="l02022"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a50b0e8a21c7a43e02699a56e1bf17516"> 2022</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_1UnaryExprOrTypeTraitExpr.html#a50b0e8a21c7a43e02699a56e1bf17516">getOperatorLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpLoc; }</div>
+<div class="line"><a name="l02023"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a35d34ea406b3d90a88332ff9dff74b08"> 2023</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a35d34ea406b3d90a88332ff9dff74b08">setOperatorLoc</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) { OpLoc = L; }</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span> </div>
+<div class="line"><a name="l02025"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a119fd38cc96909cec7005e10f757be60"> 2025</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_1UnaryExprOrTypeTraitExpr.html#a119fd38cc96909cec7005e10f757be60">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l02026"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a7f448da0e9f1070f0390b2b21f9b729a"> 2026</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a7f448da0e9f1070f0390b2b21f9b729a">setRParenLoc</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) { RParenLoc = L; }</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> </div>
+<div class="line"><a name="l02028"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a3e5ee0fb9b5be3dd0b0e6f477482ca55"> 2028</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_1UnaryExprOrTypeTraitExpr.html#a3e5ee0fb9b5be3dd0b0e6f477482ca55">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> OpLoc; }</div>
+<div class="line"><a name="l02029"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aade3c39dd8f86cff426d6e5a3932c3ad"> 2029</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_1UnaryExprOrTypeTraitExpr.html#aade3c39dd8f86cff426d6e5a3932c3ad">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span> </div>
+<div class="line"><a name="l02031"></a><span class="lineno"><a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aa0803052b49d578f5232b7255f8a55f2"> 2031</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#aa0803052b49d578f5232b7255f8a55f2">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == UnaryExprOrTypeTraitExprClass;</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span>   }</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span> </div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>   <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a> <a class="code" href="classclang_1_1UnaryExprOrTypeTraitExpr.html#a84fc7ce9aea9830a2277644b46c7646e">children</a>();</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> };</div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span> </div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span> <span class="comment">// Postfix Operators.</span></div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> <span class="comment"></span></div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <span class="comment">/// ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.</span></div>
+<div class="line"><a name="l02044"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html"> 2044</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ArraySubscriptExpr.html" title="ArraySubscriptExpr - [C99 6.5.2.1] Array Subscripting.">ArraySubscriptExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>   <span class="keyword">enum</span> { LHS, RHS, END_EXPR=2 };</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a>* SubExprs[END_EXPR];</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</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> RBracketLoc;</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02049"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0118ac6d2658063debf6b26a02c70015"> 2049</a></span>   <a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0118ac6d2658063debf6b26a02c70015">ArraySubscriptExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs, <a class="code" href="classclang_1_1QualType.html">QualType</a> t,</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>                      <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</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> rbracketloc)</div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>   : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ArraySubscriptExprClass, t, VK, OK,</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>          lhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(),</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>          lhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span>          (lhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>           rhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span>          (lhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span>           rhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())),</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span>     RBracketLoc(rbracketloc) {</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span>     SubExprs[LHS] = lhs;</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span>     SubExprs[RHS] = rhs;</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>   }</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> <span class="comment"></span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> <span class="comment">  /// \brief Create an empty array subscript expression.</span></div>
+<div class="line"><a name="l02065"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#af37786800ce851091c677c931c50edb7"> 2065</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0118ac6d2658063debf6b26a02c70015">ArraySubscriptExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Shell)</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ArraySubscriptExprClass, Shell) { }</div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span> <span class="comment"></span></div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span> <span class="comment">  /// An array access can be written A[4] or 4[A] (both are equivalent).</span></div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span> <span class="comment">  /// - getBase() and getIdx() always present the normalized view: A[4].</span></div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span> <span class="comment">  ///    In this case getBase() returns "A" and getIdx() returns "4".</span></div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> <span class="comment">  /// - getLHS() and getRHS() present the syntactic view. e.g. for</span></div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> <span class="comment">  ///    4[A] getLHS() returns "4".</span></div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> <span class="comment">  /// Note: Because vector element access is also written A[4] we must</span></div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> <span class="comment">  /// predicate the format conversion in getBase and getIdx only on the</span></div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> <span class="comment">  /// the type of the RHS, as it is possible for the LHS to be a vector of</span></div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> <span class="comment">  /// integer type</span></div>
+<div class="line"><a name="l02077"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27"> 2077</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27">getLHS</a>() { <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]); }</div>
+<div class="line"><a name="l02078"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a7d95264a8a9de85d001af89fd590fba1"> 2078</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a7d95264a8a9de85d001af89fd590fba1">getLHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]); }</div>
+<div class="line"><a name="l02079"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#af00ec8b08c6015509e4416aacd1d8412"> 2079</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#af00ec8b08c6015509e4416aacd1d8412">setLHS</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[LHS] = E; }</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> </div>
+<div class="line"><a name="l02081"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8"> 2081</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>() { <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]); }</div>
+<div class="line"><a name="l02082"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a33a24e85cd5a01c8fce30be716c612b9"> 2082</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a33a24e85cd5a01c8fce30be716c612b9">getRHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]); }</div>
+<div class="line"><a name="l02083"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#aaa46d7ff390ba7bf6df9ced12ae5615a"> 2083</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#aaa46d7ff390ba7bf6df9ced12ae5615a">setRHS</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[RHS] = E; }</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> </div>
+<div class="line"><a name="l02085"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad303686acb8af8aa3d7169ba7e15f9fd"> 2085</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad303686acb8af8aa3d7169ba7e15f9fd">getBase</a>() {</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>     <span class="keywordflow">return</span> cast<Expr>(<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() ? <a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27">getLHS</a>():<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>());</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>   }</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span> </div>
+<div class="line"><a name="l02089"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#adc4ee735cbd5343f10a5f10c4865dca3"> 2089</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#adc4ee735cbd5343f10a5f10c4865dca3">getBase</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>     <span class="keywordflow">return</span> cast<Expr>(<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() ? <a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27">getLHS</a>():<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>());</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span>   }</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> </div>
+<div class="line"><a name="l02093"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#acc51394d086143bf3e2c93a73fcc2a85"> 2093</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#acc51394d086143bf3e2c93a73fcc2a85">getIdx</a>() {</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>     <span class="keywordflow">return</span> cast<Expr>(<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() ? <a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>():<a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27">getLHS</a>());</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>   }</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> </div>
+<div class="line"><a name="l02097"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a11b074511cdc10f42f3666015301d9b0"> 2097</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a11b074511cdc10f42f3666015301d9b0">getIdx</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>     <span class="keywordflow">return</span> cast<Expr>(<a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>()-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Type.html#a8bde7a56623fd89e9efafde792c56dac">isIntegerType</a>() ? <a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0eef1e615457142f643f6fd75c347ec8">getRHS</a>():<a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27">getLHS</a>());</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>   }</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> </div>
+<div class="line"><a name="l02101"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ab88be581c4e6cab1bfbf8ab70e6209c0"> 2101</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_1ArraySubscriptExpr.html#ab88be581c4e6cab1bfbf8ab70e6209c0">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#aeea519b6d1b664187c66bf16b2f63d27">getLHS</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>   }</div>
+<div class="line"><a name="l02104"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#acb85dc1ce632052c92b8cb9f156c91a5"> 2104</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_1ArraySubscriptExpr.html#acb85dc1ce632052c92b8cb9f156c91a5">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RBracketLoc; }</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> </div>
+<div class="line"><a name="l02106"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a4fa8f15e1e1bab39de451951047cc257"> 2106</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_1ArraySubscriptExpr.html#a4fa8f15e1e1bab39de451951047cc257">getRBracketLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RBracketLoc; }</div>
+<div class="line"><a name="l02107"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad7494282b5f5bc971924447d941e1915"> 2107</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad7494282b5f5bc971924447d941e1915">setRBracketLoc</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) { RBracketLoc = L; }</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span> </div>
+<div class="line"><a name="l02109"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#a0828d8a5ebce87cbdd011cf9d7bcdb62"> 2109</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_1ArraySubscriptExpr.html#a0828d8a5ebce87cbdd011cf9d7bcdb62">getExprLoc</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#ad303686acb8af8aa3d7169ba7e15f9fd">getBase</a>()-><a class="code" href="classclang_1_1Expr.html#ab4fa508722ecc1546ad73cb31b0dc06c">getExprLoc</a>();</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>   }</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span> </div>
+<div class="line"><a name="l02113"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ae8881ef0c27cdf921978755f4672d0be"> 2113</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#ae8881ef0c27cdf921978755f4672d0be">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ArraySubscriptExprClass;</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>   }</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> </div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"><a class="code" href="classclang_1_1ArraySubscriptExpr.html#ae34f8869adbfc1c7912c2745b094ecae"> 2118</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ArraySubscriptExpr.html#ae34f8869adbfc1c7912c2745b094ecae">children</a>() {</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubExprs[0], &SubExprs[0]+END_EXPR);</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span>   }</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span> };</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span> </div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> <span class="comment"></span></div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> <span class="comment">/// CallExpr - Represents a function call (C99 6.5.2.2, C++ [expr.call]).</span></div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> <span class="comment">/// CallExpr itself represents a normal function call, e.g., "f(x, 2)",</span></div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span> <span class="comment">/// while its subclasses may represent alternative syntax that (semantically)</span></div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> <span class="comment">/// results in a function call. For example, CXXOperatorCallExpr is</span></div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> <span class="comment">/// a subclass for overloaded operator calls that use operator syntax, e.g.,</span></div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> <span class="comment">/// "str1 + str2" to resolve to a function call.</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html"> 2130</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CallExpr.html">CallExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>   <span class="keyword">enum</span> { FN=0, PREARGS_START=1 };</div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> **SubExprs;</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>   <span class="keywordtype">unsigned</span> NumArgs;</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</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> RParenLoc;</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> </div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>   <span class="comment">// These versions of the constructor are for derived classes.</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr</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_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="classclang_1_1Expr.html">Expr</a> *fn, <span class="keywordtype">unsigned</span> NumPreArgs,</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>            <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> args, <a class="code" href="classclang_1_1QualType.html">QualType</a> t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK,</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</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> rparenloc);</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span>   <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr</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_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <span class="keywordtype">unsigned</span> NumPreArgs,</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span>            <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty);</div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> </div>
+<div class="line"><a name="l02144"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a7755a10faf76a6ae169171eb7838fa87"> 2144</a></span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1CallExpr.html#a7755a10faf76a6ae169171eb7838fa87">getPreArg</a>(<span class="keywordtype">unsigned</span> i) {</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span>     assert(i < <a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>() && <span class="stringliteral">"Prearg access out of range!"</span>);</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span>     <span class="keywordflow">return</span> SubExprs[PREARGS_START+i];</div>
+<div class="line"><a name="l02147"></a><span class="lineno"> 2147</span>   }</div>
+<div class="line"><a name="l02148"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a796e2e1601506cbf6f15621abb9bb8df"> 2148</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1CallExpr.html#a796e2e1601506cbf6f15621abb9bb8df">getPreArg</a>(<span class="keywordtype">unsigned</span> i)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span>     assert(i < <a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>() && <span class="stringliteral">"Prearg access out of range!"</span>);</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span>     <span class="keywordflow">return</span> SubExprs[PREARGS_START+i];</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span>   }</div>
+<div class="line"><a name="l02152"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a85a24d49222012225a0a3ed497b42df8"> 2152</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CallExpr.html#a85a24d49222012225a0a3ed497b42df8">setPreArg</a>(<span class="keywordtype">unsigned</span> i, <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *PreArg) {</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span>     assert(i < <a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>() && <span class="stringliteral">"Prearg access out of range!"</span>);</div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span>     SubExprs[PREARGS_START+i] = PreArg;</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span>   }</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> </div>
+<div class="line"><a name="l02157"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf"> 2157</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a3f45ae9c6a8dc16d25ac70caa5da480d">CallExprBits</a>.NumPreArgs; }</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> </div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span>   <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr</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_1Expr.html">Expr</a> *fn, <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> args, <a class="code" href="classclang_1_1QualType.html">QualType</a> t,</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span>            <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <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> rparenloc);</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> <span class="comment"></span></div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> <span class="comment">  /// \brief Build an empty call expression.</span></div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> <span class="comment"></span>  <a class="code" href="classclang_1_1CallExpr.html#a51a3e2af9888d216a9e975b240de3c5a">CallExpr</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_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, EmptyShell Empty);</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> </div>
+<div class="line"><a name="l02166"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75"> 2166</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CallExpr.html#a3a2b7cbceb661c81f0d6eb937610eb75">getCallee</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[FN]); }</div>
+<div class="line"><a name="l02167"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#ab4a8390212bdfd96c41f5451af3fb701"> 2167</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CallExpr.html#ab4a8390212bdfd96c41f5451af3fb701">getCallee</a>() { <span class="keywordflow">return</span> cast<Expr>(SubExprs[FN]); }</div>
+<div class="line"><a name="l02168"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#aeca54c889e3d14ce4586b674785afe1d"> 2168</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CallExpr.html#aeca54c889e3d14ce4586b674785afe1d">setCallee</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *F) { SubExprs[FN] = F; }</div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> </div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span>   <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53">getCalleeDecl</a>();</div>
+<div class="line"><a name="l02171"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#ae44d03af60abcd2ab25f5cab142a7877"> 2171</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1CallExpr.html#ae44d03af60abcd2ab25f5cab142a7877">getCalleeDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1CallExpr.html">CallExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1CallExpr.html#a68507440cf707685b486b1f446d28f53">getCalleeDecl</a>();</div>
+<div class="line"><a name="l02173"></a><span class="lineno"> 2173</span>   }</div>
+<div class="line"><a name="l02174"></a><span class="lineno"> 2174</span> <span class="comment"></span></div>
+<div class="line"><a name="l02175"></a><span class="lineno"> 2175</span> <span class="comment">  /// \brief If the callee is a FunctionDecl, return it. Otherwise return 0.</span></div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> <span class="comment"></span>  <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *<a class="code" href="classclang_1_1CallExpr.html#a88bb91e7e67e378fd6a895c1f679901d" title="If the callee is a FunctionDecl, return it. Otherwise return 0.">getDirectCallee</a>();</div>
+<div class="line"><a name="l02177"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a4e15c32c03bed346e06558b44a314ea3"> 2177</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *<a class="code" href="classclang_1_1CallExpr.html#a4e15c32c03bed346e06558b44a314ea3">getDirectCallee</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1CallExpr.html">CallExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1CallExpr.html#a88bb91e7e67e378fd6a895c1f679901d" title="If the callee is a FunctionDecl, return it. Otherwise return 0.">getDirectCallee</a>();</div>
+<div class="line"><a name="l02179"></a><span class="lineno"> 2179</span>   }</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> <span class="comment"></span></div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> <span class="comment">  /// getNumArgs - Return the number of actual arguments to this call.</span></div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l02183"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83"> 2183</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NumArgs; }</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> <span class="comment"></span></div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span> <span class="comment">  /// \brief Retrieve the call arguments.</span></div>
+<div class="line"><a name="l02186"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a002f3ab7a8bee413d7b5c7b9ff5fa8a5"> 2186</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> **<a class="code" href="classclang_1_1CallExpr.html#a002f3ab7a8bee413d7b5c7b9ff5fa8a5" title="Retrieve the call arguments.">getArgs</a>() {</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> **<span class="keyword">></span>(SubExprs+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+PREARGS_START);</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span>   }</div>
+<div class="line"><a name="l02189"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#add26db28b5aab45ede431e068c559ceb"> 2189</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<span class="keyword">const</span> *<a class="code" href="classclang_1_1CallExpr.html#add26db28b5aab45ede431e068c559ceb">getArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1CallExpr.html">CallExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1CallExpr.html#a002f3ab7a8bee413d7b5c7b9ff5fa8a5" title="Retrieve the call arguments.">getArgs</a>();</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span>   }</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span> <span class="comment"></span></div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> <span class="comment">  /// getArg - Return the specified argument.</span></div>
+<div class="line"><a name="l02194"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6"> 2194</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CallExpr.html#aa454d6f1e76623da60451885239f63c6" title="getArg - Return the specified argument.">getArg</a>(<span class="keywordtype">unsigned</span> Arg) {</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span>     assert(Arg < NumArgs && <span class="stringliteral">"Arg access out of range!"</span>);</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span>     <span class="keywordflow">return</span> cast<Expr>(SubExprs[Arg+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+PREARGS_START]);</div>
+<div class="line"><a name="l02197"></a><span class="lineno"> 2197</span>   }</div>
+<div class="line"><a name="l02198"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#ad2f669d6f61b2667130b62032c472e01"> 2198</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CallExpr.html#ad2f669d6f61b2667130b62032c472e01">getArg</a>(<span class="keywordtype">unsigned</span> Arg)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span>     assert(Arg < NumArgs && <span class="stringliteral">"Arg access out of range!"</span>);</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span>     <span class="keywordflow">return</span> cast<Expr>(SubExprs[Arg+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+PREARGS_START]);</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span>   }</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> <span class="comment"></span></div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span> <span class="comment">  /// setArg - Set the specified argument.</span></div>
+<div class="line"><a name="l02204"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a32e4d50338ced19a9ccccfabc6455431"> 2204</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CallExpr.html#a32e4d50338ced19a9ccccfabc6455431" title="setArg - Set the specified argument.">setArg</a>(<span class="keywordtype">unsigned</span> Arg, <a class="code" href="classclang_1_1Expr.html">Expr</a> *ArgExpr) {</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span>     assert(Arg < NumArgs && <span class="stringliteral">"Arg access out of range!"</span>);</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span>     SubExprs[Arg+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+PREARGS_START] = ArgExpr;</div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span>   }</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> <span class="comment"></span></div>
+<div class="line"><a name="l02209"></a><span class="lineno"> 2209</span> <span class="comment">  /// setNumArgs - This changes the number of arguments present in this call.</span></div>
+<div class="line"><a name="l02210"></a><span class="lineno"> 2210</span> <span class="comment">  /// Any orphaned expressions are deleted by this, and any new operands are set</span></div>
+<div class="line"><a name="l02211"></a><span class="lineno"> 2211</span> <span class="comment">  /// to null.</span></div>
+<div class="line"><a name="l02212"></a><span class="lineno"> 2212</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CallExpr.html#a464f6c494736790d709ccca973b56047">setNumArgs</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> NumArgs);</div>
+<div class="line"><a name="l02213"></a><span class="lineno"> 2213</span> </div>
+<div class="line"><a name="l02214"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a412676516171ab282bc6fb9ce296e60e"> 2214</a></span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1ExprIterator.html">ExprIterator</a> <a class="code" href="classclang_1_1CallExpr.html#a412676516171ab282bc6fb9ce296e60e">arg_iterator</a>;</div>
+<div class="line"><a name="l02215"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a33b7d022308277b2f4615d971ca955c4"> 2215</a></span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1ConstExprIterator.html">ConstExprIterator</a> <a class="code" href="classclang_1_1CallExpr.html#a33b7d022308277b2f4615d971ca955c4">const_arg_iterator</a>;</div>
+<div class="line"><a name="l02216"></a><span class="lineno"> 2216</span> </div>
+<div class="line"><a name="l02217"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3"> 2217</a></span>   <a class="code" href="classclang_1_1ExprIterator.html">arg_iterator</a> <a class="code" href="classclang_1_1CallExpr.html#a6f97281c2e5e3820685951be98b661a3">arg_begin</a>() { <span class="keywordflow">return</span> SubExprs+PREARGS_START+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>(); }</div>
+<div class="line"><a name="l02218"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836"> 2218</a></span>   <a class="code" href="classclang_1_1ExprIterator.html">arg_iterator</a> <a class="code" href="classclang_1_1CallExpr.html#a7131a2da85b34d34e00ec7c6004b0836">arg_end</a>() {</div>
+<div class="line"><a name="l02219"></a><span class="lineno"> 2219</span>     <span class="keywordflow">return</span> SubExprs+PREARGS_START+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+<a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>();</div>
+<div class="line"><a name="l02220"></a><span class="lineno"> 2220</span>   }</div>
+<div class="line"><a name="l02221"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a3aee79801c53e227301fa29fbce5e4b5"> 2221</a></span>   <a class="code" href="classclang_1_1ConstExprIterator.html">const_arg_iterator</a> <a class="code" href="classclang_1_1CallExpr.html#a3aee79801c53e227301fa29fbce5e4b5">arg_begin</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02222"></a><span class="lineno"> 2222</span>     <span class="keywordflow">return</span> SubExprs+PREARGS_START+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>();</div>
+<div class="line"><a name="l02223"></a><span class="lineno"> 2223</span>   }</div>
+<div class="line"><a name="l02224"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a718debb8168ef73d44ce71c234195f19"> 2224</a></span>   <a class="code" href="classclang_1_1ConstExprIterator.html">const_arg_iterator</a> <a class="code" href="classclang_1_1CallExpr.html#a718debb8168ef73d44ce71c234195f19">arg_end</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02225"></a><span class="lineno"> 2225</span>     <span class="keywordflow">return</span> SubExprs+PREARGS_START+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+<a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>();</div>
+<div class="line"><a name="l02226"></a><span class="lineno"> 2226</span>   }</div>
+<div class="line"><a name="l02227"></a><span class="lineno"> 2227</span> <span class="comment"></span></div>
+<div class="line"><a name="l02228"></a><span class="lineno"> 2228</span> <span class="comment">  /// This method provides fast access to all the subexpressions of</span></div>
+<div class="line"><a name="l02229"></a><span class="lineno"> 2229</span> <span class="comment">  /// a CallExpr without going through the slower virtual child_iterator</span></div>
+<div class="line"><a name="l02230"></a><span class="lineno"> 2230</span> <span class="comment">  /// interface.  This provides efficient reverse iteration of the</span></div>
+<div class="line"><a name="l02231"></a><span class="lineno"> 2231</span> <span class="comment">  /// subexpressions.  This is currently used for CFG construction.</span></div>
+<div class="line"><a name="l02232"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#aaa88f283fe84e1051fad34d193f5a8fc"> 2232</a></span> <span class="comment"></span>  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Stmt*></a> <a class="code" href="classclang_1_1CallExpr.html#aaa88f283fe84e1051fad34d193f5a8fc">getRawSubExprs</a>() {</div>
+<div class="line"><a name="l02233"></a><span class="lineno"> 2233</span>     <span class="keywordflow">return</span> <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Stmt*></a>(SubExprs,</div>
+<div class="line"><a name="l02234"></a><span class="lineno"> 2234</span>                            <a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>() + PREARGS_START + <a class="code" href="classclang_1_1CallExpr.html#a244fff3c657a825bbfe3771137c8fb83">getNumArgs</a>());</div>
+<div class="line"><a name="l02235"></a><span class="lineno"> 2235</span>   }</div>
+<div class="line"><a name="l02236"></a><span class="lineno"> 2236</span> <span class="comment"></span></div>
+<div class="line"><a name="l02237"></a><span class="lineno"> 2237</span> <span class="comment">  /// getNumCommas - Return the number of commas that must have been present in</span></div>
+<div class="line"><a name="l02238"></a><span class="lineno"> 2238</span> <span class="comment">  /// this function call.</span></div>
+<div class="line"><a name="l02239"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a801dd31530d06820bf83fb51c7b12e3f"> 2239</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CallExpr.html#a801dd31530d06820bf83fb51c7b12e3f">getNumCommas</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NumArgs ? NumArgs - 1 : 0; }</div>
+<div class="line"><a name="l02240"></a><span class="lineno"> 2240</span> <span class="comment"></span></div>
+<div class="line"><a name="l02241"></a><span class="lineno"> 2241</span> <span class="comment">  /// isBuiltinCall - If this is a call to a builtin, return the builtin ID.  If</span></div>
+<div class="line"><a name="l02242"></a><span class="lineno"> 2242</span> <span class="comment">  /// not, return 0.</span></div>
+<div class="line"><a name="l02243"></a><span class="lineno"> 2243</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CallExpr.html#ab1d8251c5169109b2f6dd3abf238155a">isBuiltinCall</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l02244"></a><span class="lineno"> 2244</span> <span class="comment"></span></div>
+<div class="line"><a name="l02245"></a><span class="lineno"> 2245</span> <span class="comment">  /// \brief Returns \c true if this is a call to a builtin which does not</span></div>
+<div class="line"><a name="l02246"></a><span class="lineno"> 2246</span> <span class="comment">  /// evaluate side-effects within its arguments.</span></div>
+<div class="line"><a name="l02247"></a><span class="lineno"> 2247</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CallExpr.html#a5215eff85fa3335ac4eb6eb9817e0d10" title="Returns true if this is a call to a builtin which does not evaluate side-effects within its arguments...">isUnevaluatedBuiltinCall</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> &Ctx) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l02248"></a><span class="lineno"> 2248</span> <span class="comment"></span></div>
+<div class="line"><a name="l02249"></a><span class="lineno"> 2249</span> <span class="comment">  /// getCallReturnType - Get the return type of the call expr. This is not</span></div>
+<div class="line"><a name="l02250"></a><span class="lineno"> 2250</span> <span class="comment">  /// always the type of the expr itself, if the return type is a reference</span></div>
+<div class="line"><a name="l02251"></a><span class="lineno"> 2251</span> <span class="comment">  /// type.</span></div>
+<div class="line"><a name="l02252"></a><span class="lineno"> 2252</span> <span class="comment"></span>  <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1CallExpr.html#abacb26ed953d3bdb1f8bb67cdeaba298">getCallReturnType</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l02253"></a><span class="lineno"> 2253</span> </div>
+<div class="line"><a name="l02254"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#ae2e04e19f10f2a8e4ea98ef2f03430f5"> 2254</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_1CallExpr.html#ae2e04e19f10f2a8e4ea98ef2f03430f5">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l02255"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a264efc519767e4baac5a1084bc9a6226"> 2255</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CallExpr.html#a264efc519767e4baac5a1084bc9a6226">setRParenLoc</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) { RParenLoc = L; }</div>
+<div class="line"><a name="l02256"></a><span class="lineno"> 2256</span> </div>
+<div class="line"><a name="l02257"></a><span class="lineno"> 2257</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_1CallExpr.html#a4852265598bd0c47f24844f91d0e700c">getLocStart</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l02258"></a><span class="lineno"> 2258</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_1CallExpr.html#a9b37da360400f6d73cc0094ca97b9825">getLocEnd</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l02259"></a><span class="lineno"> 2259</span> </div>
+<div class="line"><a name="l02260"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a28eadeb786758d4b74f818f556a90ce4"> 2260</a></span>   static <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CallExpr.html#a28eadeb786758d4b74f818f556a90ce4">classof</a>(const <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02261"></a><span class="lineno"> 2261</span>     <span class="keywordflow">return</span> T->getStmtClass() >= firstCallExprConstant &&</div>
+<div class="line"><a name="l02262"></a><span class="lineno"> 2262</span>            T->getStmtClass() <= lastCallExprConstant;</div>
+<div class="line"><a name="l02263"></a><span class="lineno"> 2263</span>   }</div>
+<div class="line"><a name="l02264"></a><span class="lineno"> 2264</span> </div>
+<div class="line"><a name="l02265"></a><span class="lineno"> 2265</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l02266"></a><span class="lineno"><a class="code" href="classclang_1_1CallExpr.html#a418ccad258f60d66ea6676ddb565ec38"> 2266</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1CallExpr.html#a418ccad258f60d66ea6676ddb565ec38">children</a>() {</div>
+<div class="line"><a name="l02267"></a><span class="lineno"> 2267</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubExprs[0],</div>
+<div class="line"><a name="l02268"></a><span class="lineno"> 2268</span>                        &SubExprs[0]+NumArgs+<a class="code" href="classclang_1_1CallExpr.html#aacdd6b45bc2987ef308e1241e3a343bf">getNumPreArgs</a>()+PREARGS_START);</div>
+<div class="line"><a name="l02269"></a><span class="lineno"> 2269</span>   }</div>
+<div class="line"><a name="l02270"></a><span class="lineno"> 2270</span> };</div>
+<div class="line"><a name="l02271"></a><span class="lineno"> 2271</span> <span class="comment"></span></div>
+<div class="line"><a name="l02272"></a><span class="lineno"> 2272</span> <span class="comment">/// MemberExpr - [C99 6.5.2.3] Structure and Union Members.  X->F and X.F.</span></div>
+<div class="line"><a name="l02273"></a><span class="lineno"> 2273</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02274"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html"> 2274</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {<span class="comment"></span></div>
+<div class="line"><a name="l02275"></a><span class="lineno"> 2275</span> <span class="comment">  /// Extra data stored in some member expressions.</span></div>
+<div class="line"><a name="l02276"></a><span class="lineno"> 2276</span> <span class="comment"></span>  <span class="keyword">struct </span>MemberNameQualifier {<span class="comment"></span></div>
+<div class="line"><a name="l02277"></a><span class="lineno"> 2277</span> <span class="comment">    /// \brief The nested-name-specifier that qualifies the name, including</span></div>
+<div class="line"><a name="l02278"></a><span class="lineno"> 2278</span> <span class="comment">    /// source-location information.</span></div>
+<div class="line"><a name="l02279"></a><span class="lineno"> 2279</span> <span class="comment"></span>    <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc;</div>
+<div class="line"><a name="l02280"></a><span class="lineno"> 2280</span> <span class="comment"></span></div>
+<div class="line"><a name="l02281"></a><span class="lineno"> 2281</span> <span class="comment">    /// \brief The DeclAccessPair through which the MemberDecl was found due to</span></div>
+<div class="line"><a name="l02282"></a><span class="lineno"> 2282</span> <span class="comment">    /// name qualifiers.</span></div>
+<div class="line"><a name="l02283"></a><span class="lineno"> 2283</span> <span class="comment"></span>    <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> FoundDecl;</div>
+<div class="line"><a name="l02284"></a><span class="lineno"> 2284</span>   };</div>
+<div class="line"><a name="l02285"></a><span class="lineno"> 2285</span> <span class="comment"></span></div>
+<div class="line"><a name="l02286"></a><span class="lineno"> 2286</span> <span class="comment">  /// Base - the expression for the base pointer or structure references.  In</span></div>
+<div class="line"><a name="l02287"></a><span class="lineno"> 2287</span> <span class="comment">  /// X.F, this is "X".</span></div>
+<div class="line"><a name="l02288"></a><span class="lineno"> 2288</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1Base.html">Base</a>;</div>
+<div class="line"><a name="l02289"></a><span class="lineno"> 2289</span> <span class="comment"></span></div>
+<div class="line"><a name="l02290"></a><span class="lineno"> 2290</span> <span class="comment">  /// MemberDecl - This is the decl being referenced by the field/member name.</span></div>
+<div class="line"><a name="l02291"></a><span class="lineno"> 2291</span> <span class="comment">  /// In X.F, this is the decl referenced by F.</span></div>
+<div class="line"><a name="l02292"></a><span class="lineno"> 2292</span> <span class="comment"></span>  <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *MemberDecl;</div>
+<div class="line"><a name="l02293"></a><span class="lineno"> 2293</span> <span class="comment"></span></div>
+<div class="line"><a name="l02294"></a><span class="lineno"> 2294</span> <span class="comment">  /// MemberDNLoc - Provides source/type location info for the</span></div>
+<div class="line"><a name="l02295"></a><span class="lineno"> 2295</span> <span class="comment">  /// declaration name embedded in MemberDecl.</span></div>
+<div class="line"><a name="l02296"></a><span class="lineno"> 2296</span> <span class="comment"></span>  <a class="code" href="structclang_1_1DeclarationNameLoc.html">DeclarationNameLoc</a> MemberDNLoc;</div>
+<div class="line"><a name="l02297"></a><span class="lineno"> 2297</span> <span class="comment"></span></div>
+<div class="line"><a name="l02298"></a><span class="lineno"> 2298</span> <span class="comment">  /// MemberLoc - This is the location of the member name.</span></div>
+<div class="line"><a name="l02299"></a><span class="lineno"> 2299</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> MemberLoc;</div>
+<div class="line"><a name="l02300"></a><span class="lineno"> 2300</span> <span class="comment"></span></div>
+<div class="line"><a name="l02301"></a><span class="lineno"> 2301</span> <span class="comment">  /// IsArrow - True if this is "X->F", false if this is "X.F".</span></div>
+<div class="line"><a name="l02302"></a><span class="lineno"> 2302</span> <span class="comment"></span>  <span class="keywordtype">bool</span> IsArrow : 1;</div>
+<div class="line"><a name="l02303"></a><span class="lineno"> 2303</span> <span class="comment"></span></div>
+<div class="line"><a name="l02304"></a><span class="lineno"> 2304</span> <span class="comment">  /// \brief True if this member expression used a nested-name-specifier to</span></div>
+<div class="line"><a name="l02305"></a><span class="lineno"> 2305</span> <span class="comment">  /// refer to the member, e.g., "x->Base::f", or found its member via a using</span></div>
+<div class="line"><a name="l02306"></a><span class="lineno"> 2306</span> <span class="comment">  /// declaration.  When true, a MemberNameQualifier</span></div>
+<div class="line"><a name="l02307"></a><span class="lineno"> 2307</span> <span class="comment">  /// structure is allocated immediately after the MemberExpr.</span></div>
+<div class="line"><a name="l02308"></a><span class="lineno"> 2308</span> <span class="comment"></span>  <span class="keywordtype">bool</span> HasQualifierOrFoundDecl : 1;</div>
+<div class="line"><a name="l02309"></a><span class="lineno"> 2309</span> <span class="comment"></span></div>
+<div class="line"><a name="l02310"></a><span class="lineno"> 2310</span> <span class="comment">  /// \brief True if this member expression specified a template keyword</span></div>
+<div class="line"><a name="l02311"></a><span class="lineno"> 2311</span> <span class="comment">  /// and/or a template argument list explicitly, e.g., x->f<int>,</span></div>
+<div class="line"><a name="l02312"></a><span class="lineno"> 2312</span> <span class="comment">  /// x->template f, x->template f<int>.</span></div>
+<div class="line"><a name="l02313"></a><span class="lineno"> 2313</span> <span class="comment">  /// When true, an ASTTemplateKWAndArgsInfo structure and its</span></div>
+<div class="line"><a name="l02314"></a><span class="lineno"> 2314</span> <span class="comment">  /// TemplateArguments (if any) are allocated immediately after</span></div>
+<div class="line"><a name="l02315"></a><span class="lineno"> 2315</span> <span class="comment">  /// the MemberExpr or, if the member expression also has a qualifier,</span></div>
+<div class="line"><a name="l02316"></a><span class="lineno"> 2316</span> <span class="comment">  /// after the MemberNameQualifier structure.</span></div>
+<div class="line"><a name="l02317"></a><span class="lineno"> 2317</span> <span class="comment"></span>  <span class="keywordtype">bool</span> HasTemplateKWAndArgsInfo : 1;</div>
+<div class="line"><a name="l02318"></a><span class="lineno"> 2318</span> <span class="comment"></span></div>
+<div class="line"><a name="l02319"></a><span class="lineno"> 2319</span> <span class="comment">  /// \brief True if this member expression refers to a method that</span></div>
+<div class="line"><a name="l02320"></a><span class="lineno"> 2320</span> <span class="comment">  /// was resolved from an overloaded set having size greater than 1.</span></div>
+<div class="line"><a name="l02321"></a><span class="lineno"> 2321</span> <span class="comment"></span>  <span class="keywordtype">bool</span> HadMultipleCandidates : 1;</div>
+<div class="line"><a name="l02322"></a><span class="lineno"> 2322</span> <span class="comment"></span></div>
+<div class="line"><a name="l02323"></a><span class="lineno"> 2323</span> <span class="comment">  /// \brief Retrieve the qualifier that preceded the member name, if any.</span></div>
+<div class="line"><a name="l02324"></a><span class="lineno"> 2324</span> <span class="comment"></span>  MemberNameQualifier *getMemberQualifier() {</div>
+<div class="line"><a name="l02325"></a><span class="lineno"> 2325</span>     assert(HasQualifierOrFoundDecl);</div>
+<div class="line"><a name="l02326"></a><span class="lineno"> 2326</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>MemberNameQualifier *<span class="keyword">></span> (<span class="keyword">this</span> + 1);</div>
+<div class="line"><a name="l02327"></a><span class="lineno"> 2327</span>   }</div>
+<div class="line"><a name="l02328"></a><span class="lineno"> 2328</span> <span class="comment"></span></div>
+<div class="line"><a name="l02329"></a><span class="lineno"> 2329</span> <span class="comment">  /// \brief Retrieve the qualifier that preceded the member name, if any.</span></div>
+<div class="line"><a name="l02330"></a><span class="lineno"> 2330</span> <span class="comment"></span>  <span class="keyword">const</span> MemberNameQualifier *getMemberQualifier()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02331"></a><span class="lineno"> 2331</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)->getMemberQualifier();</div>
+<div class="line"><a name="l02332"></a><span class="lineno"> 2332</span>   }</div>
+<div class="line"><a name="l02333"></a><span class="lineno"> 2333</span> </div>
+<div class="line"><a name="l02334"></a><span class="lineno"> 2334</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02335"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a161e1924dbeb32489817d7cfb0be210d"> 2335</a></span>   <a class="code" href="classclang_1_1MemberExpr.html#a161e1924dbeb32489817d7cfb0be210d">MemberExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *base, <span class="keywordtype">bool</span> isarrow, <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *memberdecl,</div>
+<div class="line"><a name="l02336"></a><span class="lineno"> 2336</span>              <span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &NameInfo, <a class="code" href="classclang_1_1QualType.html">QualType</a> ty,</div>
+<div class="line"><a name="l02337"></a><span class="lineno"> 2337</span>              <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK)</div>
+<div class="line"><a name="l02338"></a><span class="lineno"> 2338</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(MemberExprClass, ty, VK, OK,</div>
+<div class="line"><a name="l02339"></a><span class="lineno"> 2339</span>            base-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(),</div>
+<div class="line"><a name="l02340"></a><span class="lineno"> 2340</span>            base-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l02341"></a><span class="lineno"> 2341</span>            base-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>(),</div>
+<div class="line"><a name="l02342"></a><span class="lineno"> 2342</span>            base-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l02343"></a><span class="lineno"> 2343</span>       <a class="code" href="classclang_1_1Base.html">Base</a>(base), MemberDecl(memberdecl), MemberDNLoc(NameInfo.<a class="code" href="Types_8cpp.html#a2cc737cac8cce2fb6fe373d827e77b5c">getInfo</a>()),</div>
+<div class="line"><a name="l02344"></a><span class="lineno"> 2344</span>       MemberLoc(NameInfo.getLoc()), IsArrow(isarrow),</div>
+<div class="line"><a name="l02345"></a><span class="lineno"> 2345</span>       HasQualifierOrFoundDecl(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), HasTemplateKWAndArgsInfo(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l02346"></a><span class="lineno"> 2346</span>       HadMultipleCandidates(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) {</div>
+<div class="line"><a name="l02347"></a><span class="lineno"> 2347</span>     assert(memberdecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>() == NameInfo.<a class="code" href="structclang_1_1DeclarationNameInfo.html#a4a662304441c06d60ec1764e515337c4" title="getName - Returns the embedded declaration name.">getName</a>());</div>
+<div class="line"><a name="l02348"></a><span class="lineno"> 2348</span>   }</div>
+<div class="line"><a name="l02349"></a><span class="lineno"> 2349</span> </div>
+<div class="line"><a name="l02350"></a><span class="lineno"> 2350</span>   <span class="comment">// NOTE: this constructor should be used only when it is known that</span></div>
+<div class="line"><a name="l02351"></a><span class="lineno"> 2351</span>   <span class="comment">// the member name can not provide additional syntactic info</span></div>
+<div class="line"><a name="l02352"></a><span class="lineno"> 2352</span>   <span class="comment">// (i.e., source locations for C++ operator names or type source info</span></div>
+<div class="line"><a name="l02353"></a><span class="lineno"> 2353</span>   <span class="comment">// for constructors, destructors and conversion operators).</span></div>
+<div class="line"><a name="l02354"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a856b164746121a28028a46553b7df76c"> 2354</a></span>   <a class="code" href="classclang_1_1MemberExpr.html#a161e1924dbeb32489817d7cfb0be210d">MemberExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *base, <span class="keywordtype">bool</span> isarrow, <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *memberdecl,</div>
+<div class="line"><a name="l02355"></a><span class="lineno"> 2355</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> l, <a class="code" href="classclang_1_1QualType.html">QualType</a> ty,</div>
+<div class="line"><a name="l02356"></a><span class="lineno"> 2356</span>              <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK)</div>
+<div class="line"><a name="l02357"></a><span class="lineno"> 2357</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(MemberExprClass, ty, VK, OK,</div>
+<div class="line"><a name="l02358"></a><span class="lineno"> 2358</span>            base-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(), base-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l02359"></a><span class="lineno"> 2359</span>            base-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>(),</div>
+<div class="line"><a name="l02360"></a><span class="lineno"> 2360</span>            base-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l02361"></a><span class="lineno"> 2361</span>       <a class="code" href="classclang_1_1Base.html">Base</a>(base), MemberDecl(memberdecl), MemberDNLoc(), MemberLoc(l),</div>
+<div class="line"><a name="l02362"></a><span class="lineno"> 2362</span>       IsArrow(isarrow),</div>
+<div class="line"><a name="l02363"></a><span class="lineno"> 2363</span>       HasQualifierOrFoundDecl(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), HasTemplateKWAndArgsInfo(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l02364"></a><span class="lineno"> 2364</span>       HadMultipleCandidates(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) {}</div>
+<div class="line"><a name="l02365"></a><span class="lineno"> 2365</span> </div>
+<div class="line"><a name="l02366"></a><span class="lineno"> 2366</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *<a class="code" href="classclang_1_1MemberExpr.html#a12623f4cf10f73976348ee71d29f44bb">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="classclang_1_1Expr.html">Expr</a> *base, <span class="keywordtype">bool</span> isarrow,</div>
+<div class="line"><a name="l02367"></a><span class="lineno"> 2367</span>                             <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> QualifierLoc,</div>
+<div class="line"><a name="l02368"></a><span class="lineno"> 2368</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> TemplateKWLoc,</div>
+<div class="line"><a name="l02369"></a><span class="lineno"> 2369</span>                             <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *memberdecl, <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> founddecl,</div>
+<div class="line"><a name="l02370"></a><span class="lineno"> 2370</span>                             <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> MemberNameInfo,</div>
+<div class="line"><a name="l02371"></a><span class="lineno"> 2371</span>                             <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> *targs,</div>
+<div class="line"><a name="l02372"></a><span class="lineno"> 2372</span>                             <a class="code" href="classclang_1_1QualType.html">QualType</a> ty, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK);</div>
+<div class="line"><a name="l02373"></a><span class="lineno"> 2373</span> </div>
+<div class="line"><a name="l02374"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#ab5714d369aac8d97f2368d58fd92bb24"> 2374</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MemberExpr.html#ab5714d369aac8d97f2368d58fd92bb24">setBase</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { <a class="code" href="classclang_1_1Base.html">Base</a> = E; }</div>
+<div class="line"><a name="l02375"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083"> 2375</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(<a class="code" href="classclang_1_1Base.html">Base</a>); }</div>
+<div class="line"><a name="l02376"></a><span class="lineno"> 2376</span> <span class="comment"></span></div>
+<div class="line"><a name="l02377"></a><span class="lineno"> 2377</span> <span class="comment">  /// \brief Retrieve the member declaration to which this expression refers.</span></div>
+<div class="line"><a name="l02378"></a><span class="lineno"> 2378</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l02379"></a><span class="lineno"> 2379</span> <span class="comment">  /// The returned declaration will either be a FieldDecl or (in C++)</span></div>
+<div class="line"><a name="l02380"></a><span class="lineno"> 2380</span> <span class="comment">  /// a CXXMethodDecl.</span></div>
+<div class="line"><a name="l02381"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1"> 2381</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *<a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> MemberDecl; }</div>
+<div class="line"><a name="l02382"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a40baf7dfef40b3d9007d19d1e4aec57d"> 2382</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MemberExpr.html#a40baf7dfef40b3d9007d19d1e4aec57d">setMemberDecl</a>(<a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *D) { MemberDecl = D; }</div>
+<div class="line"><a name="l02383"></a><span class="lineno"> 2383</span> <span class="comment"></span></div>
+<div class="line"><a name="l02384"></a><span class="lineno"> 2384</span> <span class="comment">  /// \brief Retrieves the declaration found by lookup.</span></div>
+<div class="line"><a name="l02385"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a2431e0757ca087b73173d515ff4aed56"> 2385</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1DeclAccessPair.html">DeclAccessPair</a> <a class="code" href="classclang_1_1MemberExpr.html#a2431e0757ca087b73173d515ff4aed56" title="Retrieves the declaration found by lookup.">getFoundDecl</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02386"></a><span class="lineno"> 2386</span>     <span class="keywordflow">if</span> (!HasQualifierOrFoundDecl)</div>
+<div class="line"><a name="l02387"></a><span class="lineno"> 2387</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1DeclAccessPair.html#a40bf16940069615f789f599664048241">DeclAccessPair::make</a>(<a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>(),</div>
+<div class="line"><a name="l02388"></a><span class="lineno"> 2388</span>                                   <a class="code" href="classclang_1_1MemberExpr.html#a36cc50d42ad5ca5a4e52b493aa24e6f1" title="Retrieve the member declaration to which this expression refers.">getMemberDecl</a>()->getAccess());</div>
+<div class="line"><a name="l02389"></a><span class="lineno"> 2389</span>     <span class="keywordflow">return</span> getMemberQualifier()->FoundDecl;</div>
+<div class="line"><a name="l02390"></a><span class="lineno"> 2390</span>   }</div>
+<div class="line"><a name="l02391"></a><span class="lineno"> 2391</span> <span class="comment"></span></div>
+<div class="line"><a name="l02392"></a><span class="lineno"> 2392</span> <span class="comment">  /// \brief Determines whether this member expression actually had</span></div>
+<div class="line"><a name="l02393"></a><span class="lineno"> 2393</span> <span class="comment">  /// a C++ nested-name-specifier prior to the name of the member, e.g.,</span></div>
+<div class="line"><a name="l02394"></a><span class="lineno"> 2394</span> <span class="comment">  /// x->Base::foo.</span></div>
+<div class="line"><a name="l02395"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#ac04d90748497032435cb66dd06c76b47"> 2395</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#ac04d90748497032435cb66dd06c76b47" title="Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...">hasQualifier</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#a13671e2075971d5f20a160e15cdd13ab" title="If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...">getQualifier</a>() != 0; }</div>
+<div class="line"><a name="l02396"></a><span class="lineno"> 2396</span> <span class="comment"></span></div>
+<div class="line"><a name="l02397"></a><span class="lineno"> 2397</span> <span class="comment">  /// \brief If the member name was qualified, retrieves the</span></div>
+<div class="line"><a name="l02398"></a><span class="lineno"> 2398</span> <span class="comment">  /// nested-name-specifier that precedes the member name. Otherwise, returns</span></div>
+<div class="line"><a name="l02399"></a><span class="lineno"> 2399</span> <span class="comment">  /// NULL.</span></div>
+<div class="line"><a name="l02400"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a13671e2075971d5f20a160e15cdd13ab"> 2400</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1NestedNameSpecifier.html" title="Represents a C++ nested name specifier, such as "\::std::vector<int>::".">NestedNameSpecifier</a> *<a class="code" href="classclang_1_1MemberExpr.html#a13671e2075971d5f20a160e15cdd13ab" title="If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...">getQualifier</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02401"></a><span class="lineno"> 2401</span>     <span class="keywordflow">if</span> (!HasQualifierOrFoundDecl)</div>
+<div class="line"><a name="l02402"></a><span class="lineno"> 2402</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02403"></a><span class="lineno"> 2403</span> </div>
+<div class="line"><a name="l02404"></a><span class="lineno"> 2404</span>     <span class="keywordflow">return</span> getMemberQualifier()->QualifierLoc.getNestedNameSpecifier();</div>
+<div class="line"><a name="l02405"></a><span class="lineno"> 2405</span>   }</div>
+<div class="line"><a name="l02406"></a><span class="lineno"> 2406</span> <span class="comment"></span></div>
+<div class="line"><a name="l02407"></a><span class="lineno"> 2407</span> <span class="comment">  /// \brief If the member name was qualified, retrieves the</span></div>
+<div class="line"><a name="l02408"></a><span class="lineno"> 2408</span> <span class="comment">  /// nested-name-specifier that precedes the member name, with source-location</span></div>
+<div class="line"><a name="l02409"></a><span class="lineno"> 2409</span> <span class="comment">  /// information.</span></div>
+<div class="line"><a name="l02410"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a03e994077e7d4b6fac0330d899f1f24d"> 2410</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a> <a class="code" href="classclang_1_1MemberExpr.html#a03e994077e7d4b6fac0330d899f1f24d" title="If the member name was qualified, retrieves the nested-name-specifier that precedes the member name...">getQualifierLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02411"></a><span class="lineno"> 2411</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1MemberExpr.html#ac04d90748497032435cb66dd06c76b47" title="Determines whether this member expression actually had a C++ nested-name-specifier prior to the name ...">hasQualifier</a>())</div>
+<div class="line"><a name="l02412"></a><span class="lineno"> 2412</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1NestedNameSpecifierLoc.html" title="A C++ nested-name-specifier augmented with source location information.">NestedNameSpecifierLoc</a>();</div>
+<div class="line"><a name="l02413"></a><span class="lineno"> 2413</span> </div>
+<div class="line"><a name="l02414"></a><span class="lineno"> 2414</span>     <span class="keywordflow">return</span> getMemberQualifier()->QualifierLoc;</div>
+<div class="line"><a name="l02415"></a><span class="lineno"> 2415</span>   }</div>
+<div class="line"><a name="l02416"></a><span class="lineno"> 2416</span> <span class="comment"></span></div>
+<div class="line"><a name="l02417"></a><span class="lineno"> 2417</span> <span class="comment">  /// \brief Return the optional template keyword and arguments info.</span></div>
+<div class="line"><a name="l02418"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b"> 2418</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>() {</div>
+<div class="line"><a name="l02419"></a><span class="lineno"> 2419</span>     <span class="keywordflow">if</span> (!HasTemplateKWAndArgsInfo)</div>
+<div class="line"><a name="l02420"></a><span class="lineno"> 2420</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02421"></a><span class="lineno"> 2421</span> </div>
+<div class="line"><a name="l02422"></a><span class="lineno"> 2422</span>     <span class="keywordflow">if</span> (!HasQualifierOrFoundDecl)</div>
+<div class="line"><a name="l02423"></a><span class="lineno"> 2423</span>       <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<span class="keyword">></span>(<span class="keyword">this</span> + 1);</div>
+<div class="line"><a name="l02424"></a><span class="lineno"> 2424</span> </div>
+<div class="line"><a name="l02425"></a><span class="lineno"> 2425</span>     <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<span class="keyword">></span>(</div>
+<div class="line"><a name="l02426"></a><span class="lineno"> 2426</span>                                                       getMemberQualifier() + 1);</div>
+<div class="line"><a name="l02427"></a><span class="lineno"> 2427</span>   }</div>
+<div class="line"><a name="l02428"></a><span class="lineno"> 2428</span> <span class="comment"></span></div>
+<div class="line"><a name="l02429"></a><span class="lineno"> 2429</span> <span class="comment">  /// \brief Return the optional template keyword and arguments info.</span></div>
+<div class="line"><a name="l02430"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a0326a0fffd61fe14fcb2d5028319ac9c"> 2430</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html" title="Extends ASTTemplateArgumentListInfo with the source location information for the template keyword; th...">ASTTemplateKWAndArgsInfo</a> *<a class="code" href="classclang_1_1MemberExpr.html#a0326a0fffd61fe14fcb2d5028319ac9c" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02431"></a><span class="lineno"> 2431</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>();</div>
+<div class="line"><a name="l02432"></a><span class="lineno"> 2432</span>   }</div>
+<div class="line"><a name="l02433"></a><span class="lineno"> 2433</span> <span class="comment"></span></div>
+<div class="line"><a name="l02434"></a><span class="lineno"> 2434</span> <span class="comment">  /// \brief Retrieve the location of the template keyword preceding</span></div>
+<div class="line"><a name="l02435"></a><span class="lineno"> 2435</span> <span class="comment">  /// the member name, if any.</span></div>
+<div class="line"><a name="l02436"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#ae44de0dbdcee3bb9968f2aad1e07c6f4"> 2436</a></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_1MemberExpr.html#ae44de0dbdcee3bb9968f2aad1e07c6f4" title="Retrieve the location of the template keyword preceding the member name, if any.">getTemplateKeywordLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02437"></a><span class="lineno"> 2437</span>     <span class="keywordflow">if</span> (!HasTemplateKWAndArgsInfo) <span class="keywordflow">return</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="l02438"></a><span class="lineno"> 2438</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateKWAndArgsInfo.html#a2265210ea5d26c1d5207f6d88bad56ae" title="Get the source location of the template keyword.">getTemplateKeywordLoc</a>();</div>
+<div class="line"><a name="l02439"></a><span class="lineno"> 2439</span>   }</div>
+<div class="line"><a name="l02440"></a><span class="lineno"> 2440</span> <span class="comment"></span></div>
+<div class="line"><a name="l02441"></a><span class="lineno"> 2441</span> <span class="comment">  /// \brief Retrieve the location of the left angle bracket starting the</span></div>
+<div class="line"><a name="l02442"></a><span class="lineno"> 2442</span> <span class="comment">  /// explicit template argument list following the member name, if any.</span></div>
+<div class="line"><a name="l02443"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a9db14083716a430430ef36060d80c024"> 2443</a></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_1MemberExpr.html#a9db14083716a430430ef36060d80c024" title="Retrieve the location of the left angle bracket starting the explicit template argument list followin...">getLAngleLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02444"></a><span class="lineno"> 2444</span>     <span class="keywordflow">if</span> (!HasTemplateKWAndArgsInfo) <span class="keywordflow">return</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="l02445"></a><span class="lineno"> 2445</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#a0b671f58dd0ae3f03bc373c1f10a21db" title="The source location of the left angle bracket ('<').">LAngleLoc</a>;</div>
+<div class="line"><a name="l02446"></a><span class="lineno"> 2446</span>   }</div>
+<div class="line"><a name="l02447"></a><span class="lineno"> 2447</span> <span class="comment"></span></div>
+<div class="line"><a name="l02448"></a><span class="lineno"> 2448</span> <span class="comment">  /// \brief Retrieve the location of the right angle bracket ending the</span></div>
+<div class="line"><a name="l02449"></a><span class="lineno"> 2449</span> <span class="comment">  /// explicit template argument list following the member name, if any.</span></div>
+<div class="line"><a name="l02450"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a37cc916c9e7f77e523d138233fd81dbd"> 2450</a></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_1MemberExpr.html#a37cc916c9e7f77e523d138233fd81dbd" title="Retrieve the location of the right angle bracket ending the explicit template argument list following...">getRAngleLoc</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02451"></a><span class="lineno"> 2451</span>     <span class="keywordflow">if</span> (!HasTemplateKWAndArgsInfo) <span class="keywordflow">return</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="l02452"></a><span class="lineno"> 2452</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>()-><a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#a01f497faea4892b83792b19f5bc841b8" title="The source location of the right angle bracket ('>').">RAngleLoc</a>;</div>
+<div class="line"><a name="l02453"></a><span class="lineno"> 2453</span>   }</div>
+<div class="line"><a name="l02454"></a><span class="lineno"> 2454</span> <span class="comment"></span></div>
+<div class="line"><a name="l02455"></a><span class="lineno"> 2455</span> <span class="comment">  /// Determines whether the member name was preceded by the template keyword.</span></div>
+<div class="line"><a name="l02456"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a447e6b539c3b5f38b7908a136fc0c146"> 2456</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#a447e6b539c3b5f38b7908a136fc0c146" title="Determines whether the member name was preceded by the template keyword.">hasTemplateKeyword</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#ae44de0dbdcee3bb9968f2aad1e07c6f4" title="Retrieve the location of the template keyword preceding the member name, if any.">getTemplateKeywordLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>(); }</div>
+<div class="line"><a name="l02457"></a><span class="lineno"> 2457</span> <span class="comment"></span></div>
+<div class="line"><a name="l02458"></a><span class="lineno"> 2458</span> <span class="comment">  /// \brief Determines whether the member name was followed by an</span></div>
+<div class="line"><a name="l02459"></a><span class="lineno"> 2459</span> <span class="comment">  /// explicit template argument list.</span></div>
+<div class="line"><a name="l02460"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3"> 2460</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3" title="Determines whether the member name was followed by an explicit template argument list.">hasExplicitTemplateArgs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#a9db14083716a430430ef36060d80c024" title="Retrieve the location of the left angle bracket starting the explicit template argument list followin...">getLAngleLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>(); }</div>
+<div class="line"><a name="l02461"></a><span class="lineno"> 2461</span> <span class="comment"></span></div>
+<div class="line"><a name="l02462"></a><span class="lineno"> 2462</span> <span class="comment">  /// \brief Copies the template arguments (if present) into the given</span></div>
+<div class="line"><a name="l02463"></a><span class="lineno"> 2463</span> <span class="comment">  /// structure.</span></div>
+<div class="line"><a name="l02464"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#aaeb3504ef1bb1ee2886d8a61835390d9"> 2464</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MemberExpr.html#aaeb3504ef1bb1ee2886d8a61835390d9" title="Copies the template arguments (if present) into the given structure.">copyTemplateArgumentsInto</a>(<a class="code" href="classclang_1_1TemplateArgumentListInfo.html">TemplateArgumentListInfo</a> &List)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02465"></a><span class="lineno"> 2465</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3" title="Determines whether the member name was followed by an explicit template argument list.">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l02466"></a><span class="lineno"> 2466</span>       <a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d" title="Retrieve the explicit template argument list that follow the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>().<a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#a89b109fea3643eb3f2e81f1727dabd4e">copyInto</a>(List);</div>
+<div class="line"><a name="l02467"></a><span class="lineno"> 2467</span>   }</div>
+<div class="line"><a name="l02468"></a><span class="lineno"> 2468</span> <span class="comment"></span></div>
+<div class="line"><a name="l02469"></a><span class="lineno"> 2469</span> <span class="comment">  /// \brief Retrieve the explicit template argument list that</span></div>
+<div class="line"><a name="l02470"></a><span class="lineno"> 2470</span> <span class="comment">  /// follow the member template name.  This must only be called on an</span></div>
+<div class="line"><a name="l02471"></a><span class="lineno"> 2471</span> <span class="comment">  /// expression with explicit template arguments.</span></div>
+<div class="line"><a name="l02472"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d"> 2472</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html" title="Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.">ASTTemplateArgumentListInfo</a> &<a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d" title="Retrieve the explicit template argument list that follow the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>() {</div>
+<div class="line"><a name="l02473"></a><span class="lineno"> 2473</span>     assert(<a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3" title="Determines whether the member name was followed by an explicit template argument list.">hasExplicitTemplateArgs</a>());</div>
+<div class="line"><a name="l02474"></a><span class="lineno"> 2474</span>     <span class="keywordflow">return</span> *<a class="code" href="classclang_1_1MemberExpr.html#aa144dbf063c47297e9ca4cd641ec567b" title="Return the optional template keyword and arguments info.">getTemplateKWAndArgsInfo</a>();</div>
+<div class="line"><a name="l02475"></a><span class="lineno"> 2475</span>   }</div>
+<div class="line"><a name="l02476"></a><span class="lineno"> 2476</span> <span class="comment"></span></div>
+<div class="line"><a name="l02477"></a><span class="lineno"> 2477</span> <span class="comment">  /// \brief Retrieve the explicit template argument list that</span></div>
+<div class="line"><a name="l02478"></a><span class="lineno"> 2478</span> <span class="comment">  /// followed the member template name.  This must only be called on</span></div>
+<div class="line"><a name="l02479"></a><span class="lineno"> 2479</span> <span class="comment">  /// an expression with explicit template arguments.</span></div>
+<div class="line"><a name="l02480"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a43a0fcc74b8705aa866a40d8e00685ca"> 2480</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html" title="Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.">ASTTemplateArgumentListInfo</a> &<a class="code" href="classclang_1_1MemberExpr.html#a43a0fcc74b8705aa866a40d8e00685ca" title="Retrieve the explicit template argument list that followed the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02481"></a><span class="lineno"> 2481</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1MemberExpr.html">MemberExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d" title="Retrieve the explicit template argument list that follow the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>();</div>
+<div class="line"><a name="l02482"></a><span class="lineno"> 2482</span>   }</div>
+<div class="line"><a name="l02483"></a><span class="lineno"> 2483</span> <span class="comment"></span></div>
+<div class="line"><a name="l02484"></a><span class="lineno"> 2484</span> <span class="comment">  /// \brief Retrieves the optional explicit template arguments.</span></div>
+<div class="line"><a name="l02485"></a><span class="lineno"> 2485</span> <span class="comment">  /// This points to the same data as getExplicitTemplateArgs(), but</span></div>
+<div class="line"><a name="l02486"></a><span class="lineno"> 2486</span> <span class="comment">  /// returns null if there are no explicit template arguments.</span></div>
+<div class="line"><a name="l02487"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a2a997840a7d1c16ee93d2f3acc3ab63b"> 2487</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html" title="Represents an explicit template argument list in C++, e.g., the "<int>" in "sort<int>". This is safe to be used inside an AST node, in contrast with TemplateArgumentListInfo.">ASTTemplateArgumentListInfo</a> *<a class="code" href="classclang_1_1MemberExpr.html#a2a997840a7d1c16ee93d2f3acc3ab63b" title="Retrieves the optional explicit template arguments. This points to the same data as getExplicitTempla...">getOptionalExplicitTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02488"></a><span class="lineno"> 2488</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3" title="Determines whether the member name was followed by an explicit template argument list.">hasExplicitTemplateArgs</a>()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02489"></a><span class="lineno"> 2489</span>     <span class="keywordflow">return</span> &<a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d" title="Retrieve the explicit template argument list that follow the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>();</div>
+<div class="line"><a name="l02490"></a><span class="lineno"> 2490</span>   }</div>
+<div class="line"><a name="l02491"></a><span class="lineno"> 2491</span> <span class="comment"></span></div>
+<div class="line"><a name="l02492"></a><span class="lineno"> 2492</span> <span class="comment">  /// \brief Retrieve the template arguments provided as part of this</span></div>
+<div class="line"><a name="l02493"></a><span class="lineno"> 2493</span> <span class="comment">  /// template-id.</span></div>
+<div class="line"><a name="l02494"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a70303d8f062d9d6fbf272994e98f762d"> 2494</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1TemplateArgumentLoc.html">TemplateArgumentLoc</a> *<a class="code" href="classclang_1_1MemberExpr.html#a70303d8f062d9d6fbf272994e98f762d" title="Retrieve the template arguments provided as part of this template-id.">getTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02495"></a><span class="lineno"> 2495</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3" title="Determines whether the member name was followed by an explicit template argument list.">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l02496"></a><span class="lineno"> 2496</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02497"></a><span class="lineno"> 2497</span> </div>
+<div class="line"><a name="l02498"></a><span class="lineno"> 2498</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d" title="Retrieve the explicit template argument list that follow the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>().<a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#af40d5d31948b9f43765e31c4f192f951" title="Retrieve the template arguments.">getTemplateArgs</a>();</div>
+<div class="line"><a name="l02499"></a><span class="lineno"> 2499</span>   }</div>
+<div class="line"><a name="l02500"></a><span class="lineno"> 2500</span> <span class="comment"></span></div>
+<div class="line"><a name="l02501"></a><span class="lineno"> 2501</span> <span class="comment">  /// \brief Retrieve the number of template arguments provided as part of this</span></div>
+<div class="line"><a name="l02502"></a><span class="lineno"> 2502</span> <span class="comment">  /// template-id.</span></div>
+<div class="line"><a name="l02503"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#aa9b2fad69f54ac466018d78825de5e3e"> 2503</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1MemberExpr.html#aa9b2fad69f54ac466018d78825de5e3e" title="Retrieve the number of template arguments provided as part of this template-id.">getNumTemplateArgs</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02504"></a><span class="lineno"> 2504</span>     <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1MemberExpr.html#a27176bcd24acc7a86b7397c5414d6ab3" title="Determines whether the member name was followed by an explicit template argument list.">hasExplicitTemplateArgs</a>())</div>
+<div class="line"><a name="l02505"></a><span class="lineno"> 2505</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02506"></a><span class="lineno"> 2506</span> </div>
+<div class="line"><a name="l02507"></a><span class="lineno"> 2507</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#a6935f5b116ce4b10822c828e22ae981d" title="Retrieve the explicit template argument list that follow the member template name. This must only be called on an expression with explicit template arguments.">getExplicitTemplateArgs</a>().<a class="code" href="structclang_1_1ASTTemplateArgumentListInfo.html#ae908711a8955cf8298257a35342fafe2" title="The number of template arguments in TemplateArgs. The actual template arguments (if any) are stored a...">NumTemplateArgs</a>;</div>
+<div class="line"><a name="l02508"></a><span class="lineno"> 2508</span>   }</div>
+<div class="line"><a name="l02509"></a><span class="lineno"> 2509</span> <span class="comment"></span></div>
+<div class="line"><a name="l02510"></a><span class="lineno"> 2510</span> <span class="comment">  /// \brief Retrieve the member declaration name info.</span></div>
+<div class="line"><a name="l02511"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a14a5796f432e44ab71027b146bfef317"> 2511</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> <a class="code" href="classclang_1_1MemberExpr.html#a14a5796f432e44ab71027b146bfef317" title="Retrieve the member declaration name info.">getMemberNameInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02512"></a><span class="lineno"> 2512</span>     <span class="keywordflow">return</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a>(MemberDecl-><a class="code" href="classclang_1_1NamedDecl.html#a1e3e90455be89bb5c7c23640cbbd7153">getDeclName</a>(),</div>
+<div class="line"><a name="l02513"></a><span class="lineno"> 2513</span>                                MemberLoc, MemberDNLoc);</div>
+<div class="line"><a name="l02514"></a><span class="lineno"> 2514</span>   }</div>
+<div class="line"><a name="l02515"></a><span class="lineno"> 2515</span> </div>
+<div class="line"><a name="l02516"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a22d0072d3f57ed584f03e37d9dd0dc34"> 2516</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#a22d0072d3f57ed584f03e37d9dd0dc34">isArrow</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsArrow; }</div>
+<div class="line"><a name="l02517"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a2c0b52a5f9daa5b1bcdaca125e14e7be"> 2517</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MemberExpr.html#a2c0b52a5f9daa5b1bcdaca125e14e7be">setArrow</a>(<span class="keywordtype">bool</span> A) { IsArrow = A; }</div>
+<div class="line"><a name="l02518"></a><span class="lineno"> 2518</span> <span class="comment"></span></div>
+<div class="line"><a name="l02519"></a><span class="lineno"> 2519</span> <span class="comment">  /// getMemberLoc - Return the location of the "member", in X->F, it is the</span></div>
+<div class="line"><a name="l02520"></a><span class="lineno"> 2520</span> <span class="comment">  /// location of 'F'.</span></div>
+<div class="line"><a name="l02521"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#aa36adfcbd88fdd6f805cce480b3af3a1"> 2521</a></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_1MemberExpr.html#aa36adfcbd88fdd6f805cce480b3af3a1">getMemberLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> MemberLoc; }</div>
+<div class="line"><a name="l02522"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a1ff360e0139c777836a2264f51802dd4"> 2522</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MemberExpr.html#a1ff360e0139c777836a2264f51802dd4">setMemberLoc</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) { MemberLoc = L; }</div>
+<div class="line"><a name="l02523"></a><span class="lineno"> 2523</span> </div>
+<div class="line"><a name="l02524"></a><span class="lineno"> 2524</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_1MemberExpr.html#a953274ed8890ef4f77ea5ab572f035dd">getLocStart</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l02525"></a><span class="lineno"> 2525</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_1MemberExpr.html#aff51aa5057fbf1d7121ff208cc46371f">getLocEnd</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l02526"></a><span class="lineno"> 2526</span> </div>
+<div class="line"><a name="l02527"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#afdd9a426ed2957fa1756812fd96d3b20"> 2527</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_1MemberExpr.html#afdd9a426ed2957fa1756812fd96d3b20">getExprLoc</a>() const LLVM_READONLY { <span class="keywordflow">return</span> MemberLoc; }</div>
+<div class="line"><a name="l02528"></a><span class="lineno"> 2528</span> <span class="comment"></span></div>
+<div class="line"><a name="l02529"></a><span class="lineno"> 2529</span> <span class="comment">  /// \brief Determine whether the base of this explicit is implicit.</span></div>
+<div class="line"><a name="l02530"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a82a3157b2b5d7b430701ba99fc3e529d"> 2530</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#a82a3157b2b5d7b430701ba99fc3e529d" title="Determine whether the base of this explicit is implicit.">isImplicitAccess</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02531"></a><span class="lineno"> 2531</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>() && <a class="code" href="classclang_1_1MemberExpr.html#ade0c09aefce7fca4cfd671cd96a87083">getBase</a>()-><a class="code" href="classclang_1_1Expr.html#a708f4067778bd15a94cbca96d179989c" title="Whether this expression is an implicit reference to 'this' in C++.">isImplicitCXXThis</a>();</div>
+<div class="line"><a name="l02532"></a><span class="lineno"> 2532</span>   }</div>
+<div class="line"><a name="l02533"></a><span class="lineno"> 2533</span> <span class="comment"></span></div>
+<div class="line"><a name="l02534"></a><span class="lineno"> 2534</span> <span class="comment">  /// \brief Returns true if this member expression refers to a method that</span></div>
+<div class="line"><a name="l02535"></a><span class="lineno"> 2535</span> <span class="comment">  /// was resolved from an overloaded set having size greater than 1.</span></div>
+<div class="line"><a name="l02536"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a6d61616810b079450e75a00cbfffafc8"> 2536</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#a6d61616810b079450e75a00cbfffafc8" title="Returns true if this member expression refers to a method that was resolved from an overloaded set ha...">hadMultipleCandidates</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02537"></a><span class="lineno"> 2537</span>     <span class="keywordflow">return</span> HadMultipleCandidates;</div>
+<div class="line"><a name="l02538"></a><span class="lineno"> 2538</span>   }<span class="comment"></span></div>
+<div class="line"><a name="l02539"></a><span class="lineno"> 2539</span> <span class="comment">  /// \brief Sets the flag telling whether this expression refers to</span></div>
+<div class="line"><a name="l02540"></a><span class="lineno"> 2540</span> <span class="comment">  /// a method that was resolved from an overloaded set having size</span></div>
+<div class="line"><a name="l02541"></a><span class="lineno"> 2541</span> <span class="comment">  /// greater than 1.</span></div>
+<div class="line"><a name="l02542"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a2a4f85832b726a2317a0eff4406ad479"> 2542</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MemberExpr.html#a2a4f85832b726a2317a0eff4406ad479" title="Sets the flag telling whether this expression refers to a method that was resolved from an overloaded...">setHadMultipleCandidates</a>(<span class="keywordtype">bool</span> V = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l02543"></a><span class="lineno"> 2543</span>     HadMultipleCandidates = V;</div>
+<div class="line"><a name="l02544"></a><span class="lineno"> 2544</span>   }</div>
+<div class="line"><a name="l02545"></a><span class="lineno"> 2545</span> </div>
+<div class="line"><a name="l02546"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a369fa42e8d897db990482dfbf5e5dfeb"> 2546</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MemberExpr.html#a369fa42e8d897db990482dfbf5e5dfeb">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02547"></a><span class="lineno"> 2547</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == MemberExprClass;</div>
+<div class="line"><a name="l02548"></a><span class="lineno"> 2548</span>   }</div>
+<div class="line"><a name="l02549"></a><span class="lineno"> 2549</span> </div>
+<div class="line"><a name="l02550"></a><span class="lineno"> 2550</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l02551"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a2e4c95f96d3c0844c93870d57455d299"> 2551</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1MemberExpr.html#a2e4c95f96d3c0844c93870d57455d299">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&<a class="code" href="classclang_1_1Base.html">Base</a>, &<a class="code" href="classclang_1_1Base.html">Base</a>+1); }</div>
+<div class="line"><a name="l02552"></a><span class="lineno"> 2552</span> </div>
+<div class="line"><a name="l02553"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#a5d8560551ea81515968dd468e2e4082e"> 2553</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="l02554"></a><span class="lineno"><a class="code" href="classclang_1_1MemberExpr.html#ab6b1376d59ae2643970df578c721ae74"> 2554</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtWriter.html">ASTStmtWriter</a>;</div>
+<div class="line"><a name="l02555"></a><span class="lineno"> 2555</span> };</div>
+<div class="line"><a name="l02556"></a><span class="lineno"> 2556</span> <span class="comment"></span></div>
+<div class="line"><a name="l02557"></a><span class="lineno"> 2557</span> <span class="comment">/// CompoundLiteralExpr - [C99 6.5.2.5]</span></div>
+<div class="line"><a name="l02558"></a><span class="lineno"> 2558</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02559"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html"> 2559</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CompoundLiteralExpr.html">CompoundLiteralExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {<span class="comment"></span></div>
+<div class="line"><a name="l02560"></a><span class="lineno"> 2560</span> <span class="comment">  /// LParenLoc - If non-null, this is the location of the left paren in a</span></div>
+<div class="line"><a name="l02561"></a><span class="lineno"> 2561</span> <span class="comment">  /// compound literal like "(int){4}".  This can be null if this is a</span></div>
+<div class="line"><a name="l02562"></a><span class="lineno"> 2562</span> <span class="comment">  /// synthesized compound expression.</span></div>
+<div class="line"><a name="l02563"></a><span class="lineno"> 2563</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> LParenLoc;</div>
+<div class="line"><a name="l02564"></a><span class="lineno"> 2564</span> <span class="comment"></span></div>
+<div class="line"><a name="l02565"></a><span class="lineno"> 2565</span> <span class="comment">  /// The type as written.  This can be an incomplete array type, in</span></div>
+<div class="line"><a name="l02566"></a><span class="lineno"> 2566</span> <span class="comment">  /// which case the actual expression type will be different.</span></div>
+<div class="line"><a name="l02567"></a><span class="lineno"> 2567</span> <span class="comment">  /// The int part of the pair stores whether this expr is file scope.</span></div>
+<div class="line"><a name="l02568"></a><span class="lineno"> 2568</span> <span class="comment"></span>  llvm::PointerIntPair<TypeSourceInfo *, 1, bool> TInfoAndScope;</div>
+<div class="line"><a name="l02569"></a><span class="lineno"> 2569</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Init;</div>
+<div class="line"><a name="l02570"></a><span class="lineno"> 2570</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02571"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#ad13692f2d2238eca2b89db5c52df9941"> 2571</a></span>   <a class="code" href="classclang_1_1CompoundLiteralExpr.html#ad13692f2d2238eca2b89db5c52df9941">CompoundLiteralExpr</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> lparenloc, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *tinfo,</div>
+<div class="line"><a name="l02572"></a><span class="lineno"> 2572</span>                       <a class="code" href="classclang_1_1QualType.html">QualType</a> T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="classclang_1_1Expr.html">Expr</a> *init, <span class="keywordtype">bool</span> fileScope)</div>
+<div class="line"><a name="l02573"></a><span class="lineno"> 2573</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(CompoundLiteralExprClass, T, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l02574"></a><span class="lineno"> 2574</span>            tinfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isDependentType(),</div>
+<div class="line"><a name="l02575"></a><span class="lineno"> 2575</span>            init-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l02576"></a><span class="lineno"> 2576</span>            (init-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l02577"></a><span class="lineno"> 2577</span>             tinfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isInstantiationDependentType()),</div>
+<div class="line"><a name="l02578"></a><span class="lineno"> 2578</span>            init-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l02579"></a><span class="lineno"> 2579</span>       LParenLoc(lparenloc), TInfoAndScope(tinfo, fileScope), Init(init) {}</div>
+<div class="line"><a name="l02580"></a><span class="lineno"> 2580</span> <span class="comment"></span></div>
+<div class="line"><a name="l02581"></a><span class="lineno"> 2581</span> <span class="comment">  /// \brief Construct an empty compound literal.</span></div>
+<div class="line"><a name="l02582"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a7c22e66aeb4e87167c10c13e4c487a09"> 2582</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#ad13692f2d2238eca2b89db5c52df9941">CompoundLiteralExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l02583"></a><span class="lineno"> 2583</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(CompoundLiteralExprClass, Empty) { }</div>
+<div class="line"><a name="l02584"></a><span class="lineno"> 2584</span> </div>
+<div class="line"><a name="l02585"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a58a7892a6b8a634633af52490dc33879"> 2585</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CompoundLiteralExpr.html#a58a7892a6b8a634633af52490dc33879">getInitializer</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(Init); }</div>
+<div class="line"><a name="l02586"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a4818e68ab3921fcead539a56217b568f"> 2586</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CompoundLiteralExpr.html#a4818e68ab3921fcead539a56217b568f">getInitializer</a>() { <span class="keywordflow">return</span> cast<Expr>(Init); }</div>
+<div class="line"><a name="l02587"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#acfd4bd3dc560e45c24a760a46481e0b1"> 2587</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#acfd4bd3dc560e45c24a760a46481e0b1">setInitializer</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { Init = E; }</div>
+<div class="line"><a name="l02588"></a><span class="lineno"> 2588</span> </div>
+<div class="line"><a name="l02589"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#ad57cda2056b141f75cc33da9ae7db769"> 2589</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#ad57cda2056b141f75cc33da9ae7db769">isFileScope</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TInfoAndScope.getInt(); }</div>
+<div class="line"><a name="l02590"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a053029ca370f0a75473e0419b9a2ae0c"> 2590</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#a053029ca370f0a75473e0419b9a2ae0c">setFileScope</a>(<span class="keywordtype">bool</span> FS) { TInfoAndScope.setInt(FS); }</div>
+<div class="line"><a name="l02591"></a><span class="lineno"> 2591</span> </div>
+<div class="line"><a name="l02592"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a85cc811a5980fc0ea98115f6d6fcf353"> 2592</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_1CompoundLiteralExpr.html#a85cc811a5980fc0ea98115f6d6fcf353">getLParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> LParenLoc; }</div>
+<div class="line"><a name="l02593"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a8d6645dd8724da1fa3361a76c31c1346"> 2593</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#a8d6645dd8724da1fa3361a76c31c1346">setLParenLoc</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) { LParenLoc = L; }</div>
+<div class="line"><a name="l02594"></a><span class="lineno"> 2594</span> </div>
+<div class="line"><a name="l02595"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#aba4b2d5ab1e8a8a20c117cf104241e96"> 2595</a></span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1CompoundLiteralExpr.html#aba4b2d5ab1e8a8a20c117cf104241e96">getTypeSourceInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02596"></a><span class="lineno"> 2596</span>     <span class="keywordflow">return</span> TInfoAndScope.getPointer();</div>
+<div class="line"><a name="l02597"></a><span class="lineno"> 2597</span>   }</div>
+<div class="line"><a name="l02598"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a0d53893d951d92435d74169c04243639"> 2598</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#a0d53893d951d92435d74169c04243639">setTypeSourceInfo</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *tinfo) {</div>
+<div class="line"><a name="l02599"></a><span class="lineno"> 2599</span>     TInfoAndScope.setPointer(tinfo);</div>
+<div class="line"><a name="l02600"></a><span class="lineno"> 2600</span>   }</div>
+<div class="line"><a name="l02601"></a><span class="lineno"> 2601</span> </div>
+<div class="line"><a name="l02602"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#ae63e3dfa7da92153d486353618696b03"> 2602</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_1CompoundLiteralExpr.html#ae63e3dfa7da92153d486353618696b03">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02603"></a><span class="lineno"> 2603</span>     <span class="comment">// FIXME: Init should never be null.</span></div>
+<div class="line"><a name="l02604"></a><span class="lineno"> 2604</span>     <span class="keywordflow">if</span> (!Init)</div>
+<div class="line"><a name="l02605"></a><span class="lineno"> 2605</span>       <span class="keywordflow">return</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="l02606"></a><span class="lineno"> 2606</span>     <span class="keywordflow">if</span> (LParenLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l02607"></a><span class="lineno"> 2607</span>       <span class="keywordflow">return</span> Init-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02608"></a><span class="lineno"> 2608</span>     <span class="keywordflow">return</span> LParenLoc;</div>
+<div class="line"><a name="l02609"></a><span class="lineno"> 2609</span>   }</div>
+<div class="line"><a name="l02610"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#aa0e6cbfd373b3fff68dc3e8e002cae23"> 2610</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_1CompoundLiteralExpr.html#aa0e6cbfd373b3fff68dc3e8e002cae23">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02611"></a><span class="lineno"> 2611</span>     <span class="comment">// FIXME: Init should never be null.</span></div>
+<div class="line"><a name="l02612"></a><span class="lineno"> 2612</span>     <span class="keywordflow">if</span> (!Init)</div>
+<div class="line"><a name="l02613"></a><span class="lineno"> 2613</span>       <span class="keywordflow">return</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="l02614"></a><span class="lineno"> 2614</span>     <span class="keywordflow">return</span> Init-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l02615"></a><span class="lineno"> 2615</span>   }</div>
+<div class="line"><a name="l02616"></a><span class="lineno"> 2616</span> </div>
+<div class="line"><a name="l02617"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#ab40154b52f2014ea6b674b788ef5d224"> 2617</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#ab40154b52f2014ea6b674b788ef5d224">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02618"></a><span class="lineno"> 2618</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == CompoundLiteralExprClass;</div>
+<div class="line"><a name="l02619"></a><span class="lineno"> 2619</span>   }</div>
+<div class="line"><a name="l02620"></a><span class="lineno"> 2620</span> </div>
+<div class="line"><a name="l02621"></a><span class="lineno"> 2621</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l02622"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundLiteralExpr.html#a3cad0790f2a8a7b3b3ec9debf3a90ad0"> 2622</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1CompoundLiteralExpr.html#a3cad0790f2a8a7b3b3ec9debf3a90ad0">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&Init, &Init+1); }</div>
+<div class="line"><a name="l02623"></a><span class="lineno"> 2623</span> };</div>
+<div class="line"><a name="l02624"></a><span class="lineno"> 2624</span> <span class="comment"></span></div>
+<div class="line"><a name="l02625"></a><span class="lineno"> 2625</span> <span class="comment">/// CastExpr - Base class for type casts, including both implicit</span></div>
+<div class="line"><a name="l02626"></a><span class="lineno"> 2626</span> <span class="comment">/// casts (ImplicitCastExpr) and explicit casts that have some</span></div>
+<div class="line"><a name="l02627"></a><span class="lineno"> 2627</span> <span class="comment">/// representation in the source code (ExplicitCastExpr's derived</span></div>
+<div class="line"><a name="l02628"></a><span class="lineno"> 2628</span> <span class="comment">/// classes).</span></div>
+<div class="line"><a name="l02629"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html"> 2629</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l02630"></a><span class="lineno"> 2630</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02631"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a4c3079bbad3e5a57d6c309d15030e1a4"> 2631</a></span>   <span class="keyword">typedef</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">clang::CastKind</a> <a class="code" href="classclang_1_1CastExpr.html#a4c3079bbad3e5a57d6c309d15030e1a4">CastKind</a>;</div>
+<div class="line"><a name="l02632"></a><span class="lineno"> 2632</span> </div>
+<div class="line"><a name="l02633"></a><span class="lineno"> 2633</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l02634"></a><span class="lineno"> 2634</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Op;</div>
+<div class="line"><a name="l02635"></a><span class="lineno"> 2635</span> </div>
+<div class="line"><a name="l02636"></a><span class="lineno"> 2636</span>   <span class="keywordtype">void</span> CheckCastConsistency() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l02637"></a><span class="lineno"> 2637</span> </div>
+<div class="line"><a name="l02638"></a><span class="lineno"> 2638</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> * <span class="keyword">const</span> *path_buffer()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02639"></a><span class="lineno"> 2639</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1CastExpr.html">CastExpr</a>*<span class="keyword">></span>(<span class="keyword">this</span>)->path_buffer();</div>
+<div class="line"><a name="l02640"></a><span class="lineno"> 2640</span>   }</div>
+<div class="line"><a name="l02641"></a><span class="lineno"> 2641</span>   <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> **path_buffer();</div>
+<div class="line"><a name="l02642"></a><span class="lineno"> 2642</span> </div>
+<div class="line"><a name="l02643"></a><span class="lineno"> 2643</span>   <span class="keywordtype">void</span> setBasePathSize(<span class="keywordtype">unsigned</span> basePathSize) {</div>
+<div class="line"><a name="l02644"></a><span class="lineno"> 2644</span>     <a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.BasePathSize = basePathSize;</div>
+<div class="line"><a name="l02645"></a><span class="lineno"> 2645</span>     assert(<a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.BasePathSize == basePathSize &&</div>
+<div class="line"><a name="l02646"></a><span class="lineno"> 2646</span>            <span class="stringliteral">"basePathSize doesn't fit in bits of CastExprBits.BasePathSize!"</span>);</div>
+<div class="line"><a name="l02647"></a><span class="lineno"> 2647</span>   }</div>
+<div class="line"><a name="l02648"></a><span class="lineno"> 2648</span> </div>
+<div class="line"><a name="l02649"></a><span class="lineno"> 2649</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l02650"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a6f27a4f360380c704305d01747c6fd22"> 2650</a></span>   <a class="code" href="classclang_1_1CastExpr.html#a6f27a4f360380c704305d01747c6fd22">CastExpr</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="classclang_1_1QualType.html">QualType</a> ty, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK,</div>
+<div class="line"><a name="l02651"></a><span class="lineno"> 2651</span>            <span class="keyword">const</span> <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>, <a class="code" href="classclang_1_1Expr.html">Expr</a> *op, <span class="keywordtype">unsigned</span> BasePathSize) :</div>
+<div class="line"><a name="l02652"></a><span class="lineno"> 2652</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, ty, VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l02653"></a><span class="lineno"> 2653</span>          <span class="comment">// Cast expressions are type-dependent if the type is</span></div>
+<div class="line"><a name="l02654"></a><span class="lineno"> 2654</span>          <span class="comment">// dependent (C++ [temp.dep.expr]p3).</span></div>
+<div class="line"><a name="l02655"></a><span class="lineno"> 2655</span>          ty->isDependentType(),</div>
+<div class="line"><a name="l02656"></a><span class="lineno"> 2656</span>          <span class="comment">// Cast expressions are value-dependent if the type is</span></div>
+<div class="line"><a name="l02657"></a><span class="lineno"> 2657</span>          <span class="comment">// dependent or if the subexpression is value-dependent.</span></div>
+<div class="line"><a name="l02658"></a><span class="lineno"> 2658</span>          ty->isDependentType() || (op && op-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>()),</div>
+<div class="line"><a name="l02659"></a><span class="lineno"> 2659</span>          (ty->isInstantiationDependentType() ||</div>
+<div class="line"><a name="l02660"></a><span class="lineno"> 2660</span>           (op && op-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>())),</div>
+<div class="line"><a name="l02661"></a><span class="lineno"> 2661</span>          (ty-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l02662"></a><span class="lineno"> 2662</span>           (op && op-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()))),</div>
+<div class="line"><a name="l02663"></a><span class="lineno"> 2663</span>     Op(op) {</div>
+<div class="line"><a name="l02664"></a><span class="lineno"> 2664</span>     assert(kind != <a class="code" href="namespaceclang.html#a3e50366a9bb6babc8310cd220f5c1902">CK_Invalid</a> && <span class="stringliteral">"creating cast with invalid cast kind"</span>);</div>
+<div class="line"><a name="l02665"></a><span class="lineno"> 2665</span>     <a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.Kind = <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>;</div>
+<div class="line"><a name="l02666"></a><span class="lineno"> 2666</span>     setBasePathSize(BasePathSize);</div>
+<div class="line"><a name="l02667"></a><span class="lineno"> 2667</span> <span class="preprocessor">#ifndef NDEBUG</span></div>
+<div class="line"><a name="l02668"></a><span class="lineno"> 2668</span> <span class="preprocessor"></span>    CheckCastConsistency();</div>
+<div class="line"><a name="l02669"></a><span class="lineno"> 2669</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l02670"></a><span class="lineno"> 2670</span> <span class="preprocessor"></span>  }</div>
+<div class="line"><a name="l02671"></a><span class="lineno"> 2671</span> <span class="comment"></span></div>
+<div class="line"><a name="l02672"></a><span class="lineno"> 2672</span> <span class="comment">  /// \brief Construct an empty cast.</span></div>
+<div class="line"><a name="l02673"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a9ac65a9b4bab6858655a50d53095a960"> 2673</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1CastExpr.html#a6f27a4f360380c704305d01747c6fd22">CastExpr</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty, <span class="keywordtype">unsigned</span> BasePathSize)</div>
+<div class="line"><a name="l02674"></a><span class="lineno"> 2674</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, Empty) {</div>
+<div class="line"><a name="l02675"></a><span class="lineno"> 2675</span>     setBasePathSize(BasePathSize);</div>
+<div class="line"><a name="l02676"></a><span class="lineno"> 2676</span>   }</div>
+<div class="line"><a name="l02677"></a><span class="lineno"> 2677</span> </div>
+<div class="line"><a name="l02678"></a><span class="lineno"> 2678</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02679"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265"> 2679</a></span>   <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="classclang_1_1CastExpr.html#a9579ef9370fffd8c5e4bee485eac9265">getCastKind</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a>) <a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.Kind; }</div>
+<div class="line"><a name="l02680"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a4b75bd89172234084223e9fb45a4d169"> 2680</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CastExpr.html#a4b75bd89172234084223e9fb45a4d169">setCastKind</a>(<a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> K) { <a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.Kind = K; }</div>
+<div class="line"><a name="l02681"></a><span class="lineno"> 2681</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1CastExpr.html#a9fd23c353ac60bb1657c21b0ee632614">getCastKindName</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l02682"></a><span class="lineno"> 2682</span> </div>
+<div class="line"><a name="l02683"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b"> 2683</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>() { <span class="keywordflow">return</span> cast<Expr>(Op); }</div>
+<div class="line"><a name="l02684"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#aea1c1bfc1fd04ecade70dd6a052c2b87"> 2684</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CastExpr.html#aea1c1bfc1fd04ecade70dd6a052c2b87">getSubExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(Op); }</div>
+<div class="line"><a name="l02685"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#adbfc67b12066afe1355fb0907fc52cc8"> 2685</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CastExpr.html#adbfc67b12066afe1355fb0907fc52cc8">setSubExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { Op = E; }</div>
+<div class="line"><a name="l02686"></a><span class="lineno"> 2686</span> <span class="comment"></span></div>
+<div class="line"><a name="l02687"></a><span class="lineno"> 2687</span> <span class="comment">  /// \brief Retrieve the cast subexpression as it was written in the source</span></div>
+<div class="line"><a name="l02688"></a><span class="lineno"> 2688</span> <span class="comment">  /// code, looking through any implicit casts or other intermediate nodes</span></div>
+<div class="line"><a name="l02689"></a><span class="lineno"> 2689</span> <span class="comment">  /// introduced by semantic analysis.</span></div>
+<div class="line"><a name="l02690"></a><span class="lineno"> 2690</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CastExpr.html#a2453b23afa2f820b2d0c113a290f2dd5" title="Retrieve the cast subexpression as it was written in the source code, looking through any implicit ca...">getSubExprAsWritten</a>();</div>
+<div class="line"><a name="l02691"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a432fba8e3c5eb8149849694ec586b3e5"> 2691</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1CastExpr.html#a432fba8e3c5eb8149849694ec586b3e5">getSubExprAsWritten</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02692"></a><span class="lineno"> 2692</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1CastExpr.html#a2453b23afa2f820b2d0c113a290f2dd5" title="Retrieve the cast subexpression as it was written in the source code, looking through any implicit ca...">getSubExprAsWritten</a>();</div>
+<div class="line"><a name="l02693"></a><span class="lineno"> 2693</span>   }</div>
+<div class="line"><a name="l02694"></a><span class="lineno"> 2694</span> </div>
+<div class="line"><a name="l02695"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#ab9dfa44048820eed28387c8133a600bf"> 2695</a></span>   <span class="keyword">typedef</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_1CastExpr.html#ab9dfa44048820eed28387c8133a600bf">path_iterator</a>;</div>
+<div class="line"><a name="l02696"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d"> 2696</a></span>   <span class="keyword">typedef</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> * <span class="keyword">const</span> *<a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">path_const_iterator</a>;</div>
+<div class="line"><a name="l02697"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#afcb0a75fae43c37a131d3a3a63f83407"> 2697</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CastExpr.html#afcb0a75fae43c37a131d3a3a63f83407">path_empty</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.BasePathSize == 0; }</div>
+<div class="line"><a name="l02698"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a344ef64f8d83d6473d0ce5661531c4b3"> 2698</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1CastExpr.html#a344ef64f8d83d6473d0ce5661531c4b3">path_size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a9f9eba96a0441fd25330cdd6fa0358c8">CastExprBits</a>.BasePathSize; }</div>
+<div class="line"><a name="l02699"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a0b21e5af1691cff3b580f3c5f35fe459"> 2699</a></span>   <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">path_iterator</a> <a class="code" href="classclang_1_1CastExpr.html#a0b21e5af1691cff3b580f3c5f35fe459">path_begin</a>() { <span class="keywordflow">return</span> path_buffer(); }</div>
+<div class="line"><a name="l02700"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a8faa0fba2075e167943ea782e86296d4"> 2700</a></span>   <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">path_iterator</a> <a class="code" href="classclang_1_1CastExpr.html#a8faa0fba2075e167943ea782e86296d4">path_end</a>() { <span class="keywordflow">return</span> path_buffer() + <a class="code" href="classclang_1_1CastExpr.html#a344ef64f8d83d6473d0ce5661531c4b3">path_size</a>(); }</div>
+<div class="line"><a name="l02701"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#af8394f553a85c1359ed0486d28ae2951"> 2701</a></span>   <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">path_const_iterator</a> <a class="code" href="classclang_1_1CastExpr.html#af8394f553a85c1359ed0486d28ae2951">path_begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> path_buffer(); }</div>
+<div class="line"><a name="l02702"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#aa171ad18657c31cf995ebbb064dd81fe"> 2702</a></span>   <a class="code" href="classclang_1_1CastExpr.html#ae5f3bd03b52184ff80e487ecbf3aba4d">path_const_iterator</a> <a class="code" href="classclang_1_1CastExpr.html#aa171ad18657c31cf995ebbb064dd81fe">path_end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> path_buffer() + <a class="code" href="classclang_1_1CastExpr.html#a344ef64f8d83d6473d0ce5661531c4b3">path_size</a>(); }</div>
+<div class="line"><a name="l02703"></a><span class="lineno"> 2703</span> </div>
+<div class="line"><a name="l02704"></a><span class="lineno"> 2704</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CastExpr.html#aa267ead18e32d75579fb8181b5379947">setCastPath</a>(<span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">CXXCastPath</a> &Path);</div>
+<div class="line"><a name="l02705"></a><span class="lineno"> 2705</span> </div>
+<div class="line"><a name="l02706"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#a6785e5090e34b192167696fc8a8202ba"> 2706</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CastExpr.html#a6785e5090e34b192167696fc8a8202ba">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02707"></a><span class="lineno"> 2707</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() >= firstCastExprConstant &&</div>
+<div class="line"><a name="l02708"></a><span class="lineno"> 2708</span>            T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() <= lastCastExprConstant;</div>
+<div class="line"><a name="l02709"></a><span class="lineno"> 2709</span>   }</div>
+<div class="line"><a name="l02710"></a><span class="lineno"> 2710</span> </div>
+<div class="line"><a name="l02711"></a><span class="lineno"> 2711</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l02712"></a><span class="lineno"><a class="code" href="classclang_1_1CastExpr.html#ad5ba3e7bd41404589c143d1649f5858a"> 2712</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1CastExpr.html#ad5ba3e7bd41404589c143d1649f5858a">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&Op, &Op+1); }</div>
+<div class="line"><a name="l02713"></a><span class="lineno"> 2713</span> };</div>
+<div class="line"><a name="l02714"></a><span class="lineno"> 2714</span> <span class="comment"></span></div>
+<div class="line"><a name="l02715"></a><span class="lineno"> 2715</span> <span class="comment">/// ImplicitCastExpr - Allows us to explicitly represent implicit type</span></div>
+<div class="line"><a name="l02716"></a><span class="lineno"> 2716</span> <span class="comment">/// conversions, which have no direct representation in the original</span></div>
+<div class="line"><a name="l02717"></a><span class="lineno"> 2717</span> <span class="comment">/// source code. For example: converting T[]->T*, void f()->void</span></div>
+<div class="line"><a name="l02718"></a><span class="lineno"> 2718</span> <span class="comment">/// (*f)(), float->double, short->int, etc.</span></div>
+<div class="line"><a name="l02719"></a><span class="lineno"> 2719</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02720"></a><span class="lineno"> 2720</span> <span class="comment">/// In C, implicit casts always produce rvalues. However, in C++, an</span></div>
+<div class="line"><a name="l02721"></a><span class="lineno"> 2721</span> <span class="comment">/// implicit cast whose result is being bound to a reference will be</span></div>
+<div class="line"><a name="l02722"></a><span class="lineno"> 2722</span> <span class="comment">/// an lvalue or xvalue. For example:</span></div>
+<div class="line"><a name="l02723"></a><span class="lineno"> 2723</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02724"></a><span class="lineno"> 2724</span> <span class="comment">/// @code</span></div>
+<div class="line"><a name="l02725"></a><span class="lineno"> 2725</span> <span class="comment">/// class Base { };</span></div>
+<div class="line"><a name="l02726"></a><span class="lineno"> 2726</span> <span class="comment">/// class Derived : public Base { };</span></div>
+<div class="line"><a name="l02727"></a><span class="lineno"> 2727</span> <span class="comment">/// Derived &&ref();</span></div>
+<div class="line"><a name="l02728"></a><span class="lineno"> 2728</span> <span class="comment">/// void f(Derived d) {</span></div>
+<div class="line"><a name="l02729"></a><span class="lineno"> 2729</span> <span class="comment">///   Base& b = d; // initializer is an ImplicitCastExpr</span></div>
+<div class="line"><a name="l02730"></a><span class="lineno"> 2730</span> <span class="comment">///                // to an lvalue of type Base</span></div>
+<div class="line"><a name="l02731"></a><span class="lineno"> 2731</span> <span class="comment">///   Base&& r = ref(); // initializer is an ImplicitCastExpr</span></div>
+<div class="line"><a name="l02732"></a><span class="lineno"> 2732</span> <span class="comment">///                     // to an xvalue of type Base</span></div>
+<div class="line"><a name="l02733"></a><span class="lineno"> 2733</span> <span class="comment">/// }</span></div>
+<div class="line"><a name="l02734"></a><span class="lineno"> 2734</span> <span class="comment">/// @endcode</span></div>
+<div class="line"><a name="l02735"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html"> 2735</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> {</div>
+<div class="line"><a name="l02736"></a><span class="lineno"> 2736</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l02737"></a><span class="lineno"> 2737</span>   <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> ty, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>, <a class="code" href="classclang_1_1Expr.html">Expr</a> *op,</div>
+<div class="line"><a name="l02738"></a><span class="lineno"> 2738</span>                    <span class="keywordtype">unsigned</span> BasePathLength, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK)</div>
+<div class="line"><a name="l02739"></a><span class="lineno"> 2739</span>     : <a class="code" href="classclang_1_1CastExpr.html#a6f27a4f360380c704305d01747c6fd22">CastExpr</a>(ImplicitCastExprClass, ty, VK, kind, op, BasePathLength) {</div>
+<div class="line"><a name="l02740"></a><span class="lineno"> 2740</span>   }</div>
+<div class="line"><a name="l02741"></a><span class="lineno"> 2741</span> <span class="comment"></span></div>
+<div class="line"><a name="l02742"></a><span class="lineno"> 2742</span> <span class="comment">  /// \brief Construct an empty implicit cast.</span></div>
+<div class="line"><a name="l02743"></a><span class="lineno"> 2743</span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Shell, <span class="keywordtype">unsigned</span> PathSize)</div>
+<div class="line"><a name="l02744"></a><span class="lineno"> 2744</span>     : <a class="code" href="classclang_1_1CastExpr.html#a6f27a4f360380c704305d01747c6fd22">CastExpr</a>(ImplicitCastExprClass, Shell, PathSize) { }</div>
+<div class="line"><a name="l02745"></a><span class="lineno"> 2745</span> </div>
+<div class="line"><a name="l02746"></a><span class="lineno"> 2746</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02747"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1f"> 2747</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1f">OnStack_t</a> { <a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1fa0610e8a9e3d21423e2ee90a7cb120ee2">OnStack</a> };</div>
+<div class="line"><a name="l02748"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#a01fb409a11dcab4cb5455cbb2f3f4364"> 2748</a></span>   <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a>(<a class="code" href="classclang_1_1ImplicitCastExpr.html#a717c235d4e3d794bb035b586f5b95e1f">OnStack_t</a> _, <a class="code" href="classclang_1_1QualType.html">QualType</a> ty, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> kind, <a class="code" href="classclang_1_1Expr.html">Expr</a> *op,</div>
+<div class="line"><a name="l02749"></a><span class="lineno"> 2749</span>                    <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK)</div>
+<div class="line"><a name="l02750"></a><span class="lineno"> 2750</span>     : <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a>(ImplicitCastExprClass, ty, VK, kind, op, 0) {</div>
+<div class="line"><a name="l02751"></a><span class="lineno"> 2751</span>   }</div>
+<div class="line"><a name="l02752"></a><span class="lineno"> 2752</span> </div>
+<div class="line"><a name="l02753"></a><span class="lineno"> 2753</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *<a class="code" href="classclang_1_1ImplicitCastExpr.html#a08f7e43e99be4593f4e430f88f2fafdf">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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02754"></a><span class="lineno"> 2754</span>                                   <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>, <a class="code" href="classclang_1_1Expr.html">Expr</a> *Operand,</div>
+<div class="line"><a name="l02755"></a><span class="lineno"> 2755</span>                                   <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">CXXCastPath</a> *BasePath,</div>
+<div class="line"><a name="l02756"></a><span class="lineno"> 2756</span>                                   <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> Cat);</div>
+<div class="line"><a name="l02757"></a><span class="lineno"> 2757</span> </div>
+<div class="line"><a name="l02758"></a><span class="lineno"> 2758</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *<a class="code" href="classclang_1_1ImplicitCastExpr.html#aa57bd0b3fede159d2934907650bdd018">CreateEmpty</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="l02759"></a><span class="lineno"> 2759</span>                                        <span class="keywordtype">unsigned</span> PathSize);</div>
+<div class="line"><a name="l02760"></a><span class="lineno"> 2760</span> </div>
+<div class="line"><a name="l02761"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#ae9cfc08b000cc8f65d1ce9a5f77bb657"> 2761</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_1ImplicitCastExpr.html#ae9cfc08b000cc8f65d1ce9a5f77bb657">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02762"></a><span class="lineno"> 2762</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02763"></a><span class="lineno"> 2763</span>   }</div>
+<div class="line"><a name="l02764"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#a82a4d85b3d81082f1b8afd0eb87ed6a8"> 2764</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_1ImplicitCastExpr.html#a82a4d85b3d81082f1b8afd0eb87ed6a8">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02765"></a><span class="lineno"> 2765</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l02766"></a><span class="lineno"> 2766</span>   }</div>
+<div class="line"><a name="l02767"></a><span class="lineno"> 2767</span> </div>
+<div class="line"><a name="l02768"></a><span class="lineno"><a class="code" href="classclang_1_1ImplicitCastExpr.html#abdef90795ff083516c470221638c9070"> 2768</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ImplicitCastExpr.html#abdef90795ff083516c470221638c9070">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02769"></a><span class="lineno"> 2769</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ImplicitCastExprClass;</div>
+<div class="line"><a name="l02770"></a><span class="lineno"> 2770</span>   }</div>
+<div class="line"><a name="l02771"></a><span class="lineno"> 2771</span> };</div>
+<div class="line"><a name="l02772"></a><span class="lineno"> 2772</span> </div>
+<div class="line"><a name="l02773"></a><span class="lineno"><a class="code" href="classclang_1_1Expr.html#a67dcf7e58610da26c755748a2576a8fc"> 2773</a></span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1Expr.html#a67dcf7e58610da26c755748a2576a8fc">Expr::IgnoreImpCasts</a>() {</div>
+<div class="line"><a name="l02774"></a><span class="lineno"> 2774</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *e = <span class="keyword">this</span>;</div>
+<div class="line"><a name="l02775"></a><span class="lineno"> 2775</span>   <span class="keywordflow">while</span> (<a class="code" href="classclang_1_1ImplicitCastExpr.html">ImplicitCastExpr</a> *ice = dyn_cast<ImplicitCastExpr>(e))</div>
+<div class="line"><a name="l02776"></a><span class="lineno"> 2776</span>     e = ice->getSubExpr();</div>
+<div class="line"><a name="l02777"></a><span class="lineno"> 2777</span>   <span class="keywordflow">return</span> e;</div>
+<div class="line"><a name="l02778"></a><span class="lineno"> 2778</span> }</div>
+<div class="line"><a name="l02779"></a><span class="lineno"> 2779</span> <span class="comment"></span></div>
+<div class="line"><a name="l02780"></a><span class="lineno"> 2780</span> <span class="comment">/// ExplicitCastExpr - An explicit cast written in the source</span></div>
+<div class="line"><a name="l02781"></a><span class="lineno"> 2781</span> <span class="comment">/// code.</span></div>
+<div class="line"><a name="l02782"></a><span class="lineno"> 2782</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02783"></a><span class="lineno"> 2783</span> <span class="comment">/// This class is effectively an abstract class, because it provides</span></div>
+<div class="line"><a name="l02784"></a><span class="lineno"> 2784</span> <span class="comment">/// the basic representation of an explicitly-written cast without</span></div>
+<div class="line"><a name="l02785"></a><span class="lineno"> 2785</span> <span class="comment">/// specifying which kind of cast (C cast, functional cast, static</span></div>
+<div class="line"><a name="l02786"></a><span class="lineno"> 2786</span> <span class="comment">/// cast, etc.) was written; specific derived classes represent the</span></div>
+<div class="line"><a name="l02787"></a><span class="lineno"> 2787</span> <span class="comment">/// particular style of cast and its location information.</span></div>
+<div class="line"><a name="l02788"></a><span class="lineno"> 2788</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02789"></a><span class="lineno"> 2789</span> <span class="comment">/// Unlike implicit casts, explicit cast nodes have two different</span></div>
+<div class="line"><a name="l02790"></a><span class="lineno"> 2790</span> <span class="comment">/// types: the type that was written into the source code, and the</span></div>
+<div class="line"><a name="l02791"></a><span class="lineno"> 2791</span> <span class="comment">/// actual type of the expression as determined by semantic</span></div>
+<div class="line"><a name="l02792"></a><span class="lineno"> 2792</span> <span class="comment">/// analysis. These types may differ slightly. For example, in C++ one</span></div>
+<div class="line"><a name="l02793"></a><span class="lineno"> 2793</span> <span class="comment">/// can cast to a reference type, which indicates that the resulting</span></div>
+<div class="line"><a name="l02794"></a><span class="lineno"> 2794</span> <span class="comment">/// expression will be an lvalue or xvalue. The reference type, however,</span></div>
+<div class="line"><a name="l02795"></a><span class="lineno"> 2795</span> <span class="comment">/// will not be used as the type of the expression.</span></div>
+<div class="line"><a name="l02796"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html"> 2796</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ExplicitCastExpr.html">ExplicitCastExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a> {<span class="comment"></span></div>
+<div class="line"><a name="l02797"></a><span class="lineno"> 2797</span> <span class="comment">  /// TInfo - Source type info for the (written) type</span></div>
+<div class="line"><a name="l02798"></a><span class="lineno"> 2798</span> <span class="comment">  /// this expression is casting to.</span></div>
+<div class="line"><a name="l02799"></a><span class="lineno"> 2799</span> <span class="comment"></span>  <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo;</div>
+<div class="line"><a name="l02800"></a><span class="lineno"> 2800</span> </div>
+<div class="line"><a name="l02801"></a><span class="lineno"> 2801</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l02802"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html#aa07790247fa1a8c1d0b5c74609892ff2"> 2802</a></span>   <a class="code" href="classclang_1_1ExplicitCastExpr.html#aa07790247fa1a8c1d0b5c74609892ff2">ExplicitCastExpr</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="classclang_1_1QualType.html">QualType</a> exprTy, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK,</div>
+<div class="line"><a name="l02803"></a><span class="lineno"> 2803</span>                    <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>, <a class="code" href="classclang_1_1Expr.html">Expr</a> *op, <span class="keywordtype">unsigned</span> PathSize,</div>
+<div class="line"><a name="l02804"></a><span class="lineno"> 2804</span>                    <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *writtenTy)</div>
+<div class="line"><a name="l02805"></a><span class="lineno"> 2805</span>     : <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a>(SC, exprTy, VK, kind, op, PathSize), TInfo(writtenTy) {}</div>
+<div class="line"><a name="l02806"></a><span class="lineno"> 2806</span> <span class="comment"></span></div>
+<div class="line"><a name="l02807"></a><span class="lineno"> 2807</span> <span class="comment">  /// \brief Construct an empty explicit cast.</span></div>
+<div class="line"><a name="l02808"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html#a8d925bfa77d6b12a9b654de3e844488f"> 2808</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1ExplicitCastExpr.html#aa07790247fa1a8c1d0b5c74609892ff2">ExplicitCastExpr</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Shell, <span class="keywordtype">unsigned</span> PathSize)</div>
+<div class="line"><a name="l02809"></a><span class="lineno"> 2809</span>     : <a class="code" href="classclang_1_1CastExpr.html">CastExpr</a>(SC, Shell, PathSize) { }</div>
+<div class="line"><a name="l02810"></a><span class="lineno"> 2810</span> </div>
+<div class="line"><a name="l02811"></a><span class="lineno"> 2811</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l02812"></a><span class="lineno"> 2812</span> <span class="comment">  /// getTypeInfoAsWritten - Returns the type source info for the type</span></div>
+<div class="line"><a name="l02813"></a><span class="lineno"> 2813</span> <span class="comment">  /// that this expression is casting to.</span></div>
+<div class="line"><a name="l02814"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html#ab65cd89dc284bd2d46a1fb8b61f267a8"> 2814</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1ExplicitCastExpr.html#ab65cd89dc284bd2d46a1fb8b61f267a8">getTypeInfoAsWritten</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TInfo; }</div>
+<div class="line"><a name="l02815"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html#a79770e9a311df5136639581ac545eddf"> 2815</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExplicitCastExpr.html#a79770e9a311df5136639581ac545eddf">setTypeInfoAsWritten</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *writtenTy) { TInfo = writtenTy; }</div>
+<div class="line"><a name="l02816"></a><span class="lineno"> 2816</span> <span class="comment"></span></div>
+<div class="line"><a name="l02817"></a><span class="lineno"> 2817</span> <span class="comment">  /// getTypeAsWritten - Returns the type that this expression is</span></div>
+<div class="line"><a name="l02818"></a><span class="lineno"> 2818</span> <span class="comment">  /// casting to, as written in the source code.</span></div>
+<div class="line"><a name="l02819"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html#ac788ee017b63929c45cf3883910c1adb"> 2819</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1ExplicitCastExpr.html#ac788ee017b63929c45cf3883910c1adb">getTypeAsWritten</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TInfo-><a class="code" href="classclang_1_1TypeSourceInfo.html#affbab53588a16a2bc948f2493d93a4e2" title="Return the type wrapped by this type source info.">getType</a>(); }</div>
+<div class="line"><a name="l02820"></a><span class="lineno"> 2820</span> </div>
+<div class="line"><a name="l02821"></a><span class="lineno"><a class="code" href="classclang_1_1ExplicitCastExpr.html#aabb0873bd244cc2def5553cab48e65e5"> 2821</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ExplicitCastExpr.html#aabb0873bd244cc2def5553cab48e65e5">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02822"></a><span class="lineno"> 2822</span>      <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() >= firstExplicitCastExprConstant &&</div>
+<div class="line"><a name="l02823"></a><span class="lineno"> 2823</span>             T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() <= lastExplicitCastExprConstant;</div>
+<div class="line"><a name="l02824"></a><span class="lineno"> 2824</span>   }</div>
+<div class="line"><a name="l02825"></a><span class="lineno"> 2825</span> };</div>
+<div class="line"><a name="l02826"></a><span class="lineno"> 2826</span> <span class="comment"></span></div>
+<div class="line"><a name="l02827"></a><span class="lineno"> 2827</span> <span class="comment">/// CStyleCastExpr - An explicit cast in C (C99 6.5.4) or a C-style</span></div>
+<div class="line"><a name="l02828"></a><span class="lineno"> 2828</span> <span class="comment">/// cast in C++ (C++ [expr.cast]), which uses the syntax</span></div>
+<div class="line"><a name="l02829"></a><span class="lineno"> 2829</span> <span class="comment">/// (Type)expr. For example: @c (int)f.</span></div>
+<div class="line"><a name="l02830"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html"> 2830</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1ExplicitCastExpr.html">ExplicitCastExpr</a> {</div>
+<div class="line"><a name="l02831"></a><span class="lineno"> 2831</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> LPLoc; <span class="comment">// the location of the left paren</span></div>
+<div class="line"><a name="l02832"></a><span class="lineno"> 2832</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> RPLoc; <span class="comment">// the location of the right paren</span></div>
+<div class="line"><a name="l02833"></a><span class="lineno"> 2833</span> </div>
+<div class="line"><a name="l02834"></a><span class="lineno"> 2834</span>   <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> exprTy, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> vk, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> <a class="code" href="namespaceclang_1_1diag.html#ab2f7277bc45b970f4b9631e0617ff02c" title="All of the diagnostics that can be emitted by the frontend.">kind</a>, <a class="code" href="classclang_1_1Expr.html">Expr</a> *op,</div>
+<div class="line"><a name="l02835"></a><span class="lineno"> 2835</span>                  <span class="keywordtype">unsigned</span> PathSize, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *writtenTy,</div>
+<div class="line"><a name="l02836"></a><span class="lineno"> 2836</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> l, <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> r)</div>
+<div class="line"><a name="l02837"></a><span class="lineno"> 2837</span>     : <a class="code" href="classclang_1_1ExplicitCastExpr.html#aa07790247fa1a8c1d0b5c74609892ff2">ExplicitCastExpr</a>(CStyleCastExprClass, exprTy, vk, kind, op, PathSize,</div>
+<div class="line"><a name="l02838"></a><span class="lineno"> 2838</span>                        writtenTy), LPLoc(l), RPLoc(r) {}</div>
+<div class="line"><a name="l02839"></a><span class="lineno"> 2839</span> <span class="comment"></span></div>
+<div class="line"><a name="l02840"></a><span class="lineno"> 2840</span> <span class="comment">  /// \brief Construct an empty C-style explicit cast.</span></div>
+<div class="line"><a name="l02841"></a><span class="lineno"> 2841</span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Shell, <span class="keywordtype">unsigned</span> PathSize)</div>
+<div class="line"><a name="l02842"></a><span class="lineno"> 2842</span>     : <a class="code" href="classclang_1_1ExplicitCastExpr.html#aa07790247fa1a8c1d0b5c74609892ff2">ExplicitCastExpr</a>(CStyleCastExprClass, Shell, PathSize) { }</div>
+<div class="line"><a name="l02843"></a><span class="lineno"> 2843</span> </div>
+<div class="line"><a name="l02844"></a><span class="lineno"> 2844</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02845"></a><span class="lineno"> 2845</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> *<a class="code" href="classclang_1_1CStyleCastExpr.html#af9768e1a44c0fd51f808b72ae4c28441">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> &<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l02846"></a><span class="lineno"> 2846</span>                                 <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#aa8bdb68daa57cbb2096f354001e2df8c" title="CastKind - The kind of operation required for a conversion.">CastKind</a> K,</div>
+<div class="line"><a name="l02847"></a><span class="lineno"> 2847</span>                                 <a class="code" href="classclang_1_1Expr.html">Expr</a> *Op, <span class="keyword">const</span> <a class="code" href="classllvm_1_1SmallVector.html">CXXCastPath</a> *BasePath,</div>
+<div class="line"><a name="l02848"></a><span class="lineno"> 2848</span>                                 <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *WrittenTy, <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="l02849"></a><span class="lineno"> 2849</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> R);</div>
+<div class="line"><a name="l02850"></a><span class="lineno"> 2850</span> </div>
+<div class="line"><a name="l02851"></a><span class="lineno"> 2851</span>   <span class="keyword">static</span> <a class="code" href="classclang_1_1CStyleCastExpr.html">CStyleCastExpr</a> *<a class="code" href="classclang_1_1CStyleCastExpr.html#aeceb2c349412113b508d8bf8fb91d8b8">CreateEmpty</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> &Context,</div>
+<div class="line"><a name="l02852"></a><span class="lineno"> 2852</span>                                      <span class="keywordtype">unsigned</span> PathSize);</div>
+<div class="line"><a name="l02853"></a><span class="lineno"> 2853</span> </div>
+<div class="line"><a name="l02854"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#aa76922de631c94abd3edfeaa16adbaca"> 2854</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_1CStyleCastExpr.html#aa76922de631c94abd3edfeaa16adbaca">getLParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> LPLoc; }</div>
+<div class="line"><a name="l02855"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#af4a288d7b05ece9a6614e72f6d4ad62a"> 2855</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CStyleCastExpr.html#af4a288d7b05ece9a6614e72f6d4ad62a">setLParenLoc</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) { LPLoc = L; }</div>
+<div class="line"><a name="l02856"></a><span class="lineno"> 2856</span> </div>
+<div class="line"><a name="l02857"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#a7d9e418fa05e5757da6e9ff2eb7fb5df"> 2857</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_1CStyleCastExpr.html#a7d9e418fa05e5757da6e9ff2eb7fb5df">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RPLoc; }</div>
+<div class="line"><a name="l02858"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#ab811f96066f92335a35d2a5a4d43b656"> 2858</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CStyleCastExpr.html#ab811f96066f92335a35d2a5a4d43b656">setRParenLoc</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) { RPLoc = L; }</div>
+<div class="line"><a name="l02859"></a><span class="lineno"> 2859</span> </div>
+<div class="line"><a name="l02860"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#af26fe7446c0460afff988390d6f794a3"> 2860</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_1CStyleCastExpr.html#af26fe7446c0460afff988390d6f794a3">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> LPLoc; }</div>
+<div class="line"><a name="l02861"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#a449754f2461768f5f45b3dc391603c55"> 2861</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_1CStyleCastExpr.html#a449754f2461768f5f45b3dc391603c55">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02862"></a><span class="lineno"> 2862</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CastExpr.html#a37e3d80c4ca590eadbe49e400c50134b">getSubExpr</a>()-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l02863"></a><span class="lineno"> 2863</span>   }</div>
+<div class="line"><a name="l02864"></a><span class="lineno"> 2864</span> </div>
+<div class="line"><a name="l02865"></a><span class="lineno"><a class="code" href="classclang_1_1CStyleCastExpr.html#ac4c1253951d2bdfbfdcffde21336258c"> 2865</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CStyleCastExpr.html#ac4c1253951d2bdfbfdcffde21336258c">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l02866"></a><span class="lineno"> 2866</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == CStyleCastExprClass;</div>
+<div class="line"><a name="l02867"></a><span class="lineno"> 2867</span>   }</div>
+<div class="line"><a name="l02868"></a><span class="lineno"> 2868</span> };</div>
+<div class="line"><a name="l02869"></a><span class="lineno"> 2869</span> <span class="comment"></span></div>
+<div class="line"><a name="l02870"></a><span class="lineno"> 2870</span> <span class="comment">/// \brief A builtin binary operation expression such as "x + y" or "x <= y".</span></div>
+<div class="line"><a name="l02871"></a><span class="lineno"> 2871</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02872"></a><span class="lineno"> 2872</span> <span class="comment">/// This expression node kind describes a builtin binary operation,</span></div>
+<div class="line"><a name="l02873"></a><span class="lineno"> 2873</span> <span class="comment">/// such as "x + y" for integer values "x" and "y". The operands will</span></div>
+<div class="line"><a name="l02874"></a><span class="lineno"> 2874</span> <span class="comment">/// already have been converted to appropriate types (e.g., by</span></div>
+<div class="line"><a name="l02875"></a><span class="lineno"> 2875</span> <span class="comment">/// performing promotions or conversions).</span></div>
+<div class="line"><a name="l02876"></a><span class="lineno"> 2876</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02877"></a><span class="lineno"> 2877</span> <span class="comment">/// In C++, where operators may be overloaded, a different kind of</span></div>
+<div class="line"><a name="l02878"></a><span class="lineno"> 2878</span> <span class="comment">/// expression node (CXXOperatorCallExpr) is used to express the</span></div>
+<div class="line"><a name="l02879"></a><span class="lineno"> 2879</span> <span class="comment">/// invocation of an overloaded operator with operator syntax. Within</span></div>
+<div class="line"><a name="l02880"></a><span class="lineno"> 2880</span> <span class="comment">/// a C++ template, whether BinaryOperator or CXXOperatorCallExpr is</span></div>
+<div class="line"><a name="l02881"></a><span class="lineno"> 2881</span> <span class="comment">/// used to store an expression "x + y" depends on the subexpressions</span></div>
+<div class="line"><a name="l02882"></a><span class="lineno"> 2882</span> <span class="comment">/// for x and y. If neither x or y is type-dependent, and the "+"</span></div>
+<div class="line"><a name="l02883"></a><span class="lineno"> 2883</span> <span class="comment">/// operator resolves to a built-in operation, BinaryOperator will be</span></div>
+<div class="line"><a name="l02884"></a><span class="lineno"> 2884</span> <span class="comment">/// used to express the computation (x and y may still be</span></div>
+<div class="line"><a name="l02885"></a><span class="lineno"> 2885</span> <span class="comment">/// value-dependent). If either x or y is type-dependent, or if the</span></div>
+<div class="line"><a name="l02886"></a><span class="lineno"> 2886</span> <span class="comment">/// "+" resolves to an overloaded operator, CXXOperatorCallExpr will</span></div>
+<div class="line"><a name="l02887"></a><span class="lineno"> 2887</span> <span class="comment">/// be used to express the computation.</span></div>
+<div class="line"><a name="l02888"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html"> 2888</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l02889"></a><span class="lineno"> 2889</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02890"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720"> 2890</a></span>   <span class="keyword">typedef</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">BinaryOperatorKind</a> <a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720">Opcode</a>;</div>
+<div class="line"><a name="l02891"></a><span class="lineno"> 2891</span> </div>
+<div class="line"><a name="l02892"></a><span class="lineno"> 2892</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l02893"></a><span class="lineno"> 2893</span>   <span class="keywordtype">unsigned</span> Opc : 6;</div>
+<div class="line"><a name="l02894"></a><span class="lineno"> 2894</span> </div>
+<div class="line"><a name="l02895"></a><span class="lineno"> 2895</span>   <span class="comment">// Records the FP_CONTRACT pragma status at the point that this binary</span></div>
+<div class="line"><a name="l02896"></a><span class="lineno"> 2896</span>   <span class="comment">// operator was parsed. This bit is only meaningful for operations on</span></div>
+<div class="line"><a name="l02897"></a><span class="lineno"> 2897</span>   <span class="comment">// floating point types. For all other types it should default to</span></div>
+<div class="line"><a name="l02898"></a><span class="lineno"> 2898</span>   <span class="comment">// false.</span></div>
+<div class="line"><a name="l02899"></a><span class="lineno"> 2899</span>   <span class="keywordtype">unsigned</span> FPContractable : 1;</div>
+<div class="line"><a name="l02900"></a><span class="lineno"> 2900</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> OpLoc;</div>
+<div class="line"><a name="l02901"></a><span class="lineno"> 2901</span> </div>
+<div class="line"><a name="l02902"></a><span class="lineno"> 2902</span>   <span class="keyword">enum</span> { LHS, RHS, END_EXPR };</div>
+<div class="line"><a name="l02903"></a><span class="lineno"> 2903</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a>* SubExprs[END_EXPR];</div>
+<div class="line"><a name="l02904"></a><span class="lineno"> 2904</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l02905"></a><span class="lineno"> 2905</span> </div>
+<div class="line"><a name="l02906"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a90e1ac489bbcf35e7b7d8773ebe95a1d"> 2906</a></span>   <a class="code" href="classclang_1_1BinaryOperator.html#a90e1ac489bbcf35e7b7d8773ebe95a1d">BinaryOperator</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs, <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> opc, <a class="code" href="classclang_1_1QualType.html">QualType</a> ResTy,</div>
+<div class="line"><a name="l02907"></a><span class="lineno"> 2907</span>                  <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l02908"></a><span class="lineno"> 2908</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> opLoc, <span class="keywordtype">bool</span> fpContractable)</div>
+<div class="line"><a name="l02909"></a><span class="lineno"> 2909</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(BinaryOperatorClass, ResTy, VK, OK,</div>
+<div class="line"><a name="l02910"></a><span class="lineno"> 2910</span>            lhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(),</div>
+<div class="line"><a name="l02911"></a><span class="lineno"> 2911</span>            lhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l02912"></a><span class="lineno"> 2912</span>            (lhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l02913"></a><span class="lineno"> 2913</span>             rhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l02914"></a><span class="lineno"> 2914</span>            (lhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l02915"></a><span class="lineno"> 2915</span>             rhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())),</div>
+<div class="line"><a name="l02916"></a><span class="lineno"> 2916</span>       Opc(opc), FPContractable(fpContractable), OpLoc(opLoc) {</div>
+<div class="line"><a name="l02917"></a><span class="lineno"> 2917</span>     SubExprs[LHS] = lhs;</div>
+<div class="line"><a name="l02918"></a><span class="lineno"> 2918</span>     SubExprs[RHS] = rhs;</div>
+<div class="line"><a name="l02919"></a><span class="lineno"> 2919</span>     assert(!<a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078">isCompoundAssignmentOp</a>() &&</div>
+<div class="line"><a name="l02920"></a><span class="lineno"> 2920</span>            <span class="stringliteral">"Use CompoundAssignOperator for compound assignments"</span>);</div>
+<div class="line"><a name="l02921"></a><span class="lineno"> 2921</span>   }</div>
+<div class="line"><a name="l02922"></a><span class="lineno"> 2922</span> <span class="comment"></span></div>
+<div class="line"><a name="l02923"></a><span class="lineno"> 2923</span> <span class="comment">  /// \brief Construct an empty binary operator.</span></div>
+<div class="line"><a name="l02924"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a1168273fe3075a9475851df4be159f6c"> 2924</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1BinaryOperator.html#a90e1ac489bbcf35e7b7d8773ebe95a1d">BinaryOperator</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l02925"></a><span class="lineno"> 2925</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(BinaryOperatorClass, Empty), Opc(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae3c9652c3c01080bd794e8e03988e278">BO_Comma</a>) { }</div>
+<div class="line"><a name="l02926"></a><span class="lineno"> 2926</span> </div>
+<div class="line"><a name="l02927"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a642bb6cf9d51c986a6e7108b40cb3e9f"> 2927</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_1BinaryOperator.html#a642bb6cf9d51c986a6e7108b40cb3e9f">getExprLoc</a>() const LLVM_READONLY { <span class="keywordflow">return</span> OpLoc; }</div>
+<div class="line"><a name="l02928"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a0b017effb7b1d6ca87b78bd28f6be9ad"> 2928</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_1BinaryOperator.html#a0b017effb7b1d6ca87b78bd28f6be9ad">getOperatorLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpLoc; }</div>
+<div class="line"><a name="l02929"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a268caf8ffced335b43303fdd3e9a7d35"> 2929</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1BinaryOperator.html#a268caf8ffced335b43303fdd3e9a7d35">setOperatorLoc</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) { OpLoc = L; }</div>
+<div class="line"><a name="l02930"></a><span class="lineno"> 2930</span> </div>
+<div class="line"><a name="l02931"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165"> 2931</a></span>   <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> <a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a><span class="keyword">></span>(Opc); }</div>
+<div class="line"><a name="l02932"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ab8d07d05aa4ad949b669e22614c98648"> 2932</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1BinaryOperator.html#ab8d07d05aa4ad949b669e22614c98648">setOpcode</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> O) { Opc = O; }</div>
+<div class="line"><a name="l02933"></a><span class="lineno"> 2933</span> </div>
+<div class="line"><a name="l02934"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924"> 2934</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]); }</div>
+<div class="line"><a name="l02935"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a0605648f6061d3b53dc20cf24c3a64d7"> 2935</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1BinaryOperator.html#a0605648f6061d3b53dc20cf24c3a64d7">setLHS</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[LHS] = E; }</div>
+<div class="line"><a name="l02936"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6"> 2936</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]); }</div>
+<div class="line"><a name="l02937"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a5c4cd5925310fc06b4b224382b596da8"> 2937</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1BinaryOperator.html#a5c4cd5925310fc06b4b224382b596da8">setRHS</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[RHS] = E; }</div>
+<div class="line"><a name="l02938"></a><span class="lineno"> 2938</span> </div>
+<div class="line"><a name="l02939"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#abb35f66f51c82502ea0c9f4101f23511"> 2939</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_1BinaryOperator.html#abb35f66f51c82502ea0c9f4101f23511">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02940"></a><span class="lineno"> 2940</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#ad8b108ac1a7795b9f388d8dece6b8924">getLHS</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l02941"></a><span class="lineno"> 2941</span>   }</div>
+<div class="line"><a name="l02942"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a7e8cd1a94f09902602594cde09db4d7f"> 2942</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_1BinaryOperator.html#a7e8cd1a94f09902602594cde09db4d7f">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l02943"></a><span class="lineno"> 2943</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a1ab10aae0ffa01be5d1a979e6da285e6">getRHS</a>()-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l02944"></a><span class="lineno"> 2944</span>   }</div>
+<div class="line"><a name="l02945"></a><span class="lineno"> 2945</span> <span class="comment"></span></div>
+<div class="line"><a name="l02946"></a><span class="lineno"> 2946</span> <span class="comment">  /// getOpcodeStr - Turn an Opcode enum value into the punctuation char it</span></div>
+<div class="line"><a name="l02947"></a><span class="lineno"> 2947</span> <span class="comment">  /// corresponds to, e.g. "<<=".</span></div>
+<div class="line"><a name="l02948"></a><span class="lineno"> 2948</span> <span class="comment"></span>  <span class="keyword">static</span> StringRef <a class="code" href="classclang_1_1BinaryOperator.html#a073b48f58b7b49f43e296caf254e61b0">getOpcodeStr</a>(<a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720">Opcode</a> Op);</div>
+<div class="line"><a name="l02949"></a><span class="lineno"> 2949</span> </div>
+<div class="line"><a name="l02950"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a073b48f58b7b49f43e296caf254e61b0"> 2950</a></span>   StringRef <a class="code" href="classclang_1_1BinaryOperator.html#a073b48f58b7b49f43e296caf254e61b0">getOpcodeStr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a073b48f58b7b49f43e296caf254e61b0">getOpcodeStr</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02951"></a><span class="lineno"> 2951</span> <span class="comment"></span></div>
+<div class="line"><a name="l02952"></a><span class="lineno"> 2952</span> <span class="comment">  /// \brief Retrieve the binary opcode that corresponds to the given</span></div>
+<div class="line"><a name="l02953"></a><span class="lineno"> 2953</span> <span class="comment">  /// overloaded operator.</span></div>
+<div class="line"><a name="l02954"></a><span class="lineno"> 2954</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720">Opcode</a> <a class="code" href="classclang_1_1BinaryOperator.html#ae394f72a1fce1435a47e79f816297329" title="Retrieve the binary opcode that corresponds to the given overloaded operator.">getOverloadedOpcode</a>(<a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> OO);</div>
+<div class="line"><a name="l02955"></a><span class="lineno"> 2955</span> <span class="comment"></span></div>
+<div class="line"><a name="l02956"></a><span class="lineno"> 2956</span> <span class="comment">  /// \brief Retrieve the overloaded operator kind that corresponds to</span></div>
+<div class="line"><a name="l02957"></a><span class="lineno"> 2957</span> <span class="comment">  /// the given binary opcode.</span></div>
+<div class="line"><a name="l02958"></a><span class="lineno"> 2958</span> <span class="comment"></span>  <span class="keyword">static</span> <a class="code" href="namespaceclang.html#ad937c281bb5b868d30a72c9bf137baf6" title="Enumeration specifying the different kinds of C++ overloaded operators.">OverloadedOperatorKind</a> <a class="code" href="classclang_1_1BinaryOperator.html#a15ed7ff7091fec4f6bc86f02fcb3410d" title="Retrieve the overloaded operator kind that corresponds to the given binary opcode.">getOverloadedOperator</a>(<a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720">Opcode</a> Opc);</div>
+<div class="line"><a name="l02959"></a><span class="lineno"> 2959</span> <span class="comment"></span></div>
+<div class="line"><a name="l02960"></a><span class="lineno"> 2960</span> <span class="comment">  /// predicates to categorize the respective opcodes.</span></div>
+<div class="line"><a name="l02961"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a604d6b7aa377b0f24a95e50add1cd635"> 2961</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a604d6b7aa377b0f24a95e50add1cd635" title="predicates to categorize the respective opcodes.">isPtrMemOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a31e63255bd536c2d74a66ac47160ed53">BO_PtrMemD</a> || Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae432d0b89cd5293af333b8854e20fd40">BO_PtrMemI</a>; }</div>
+<div class="line"><a name="l02962"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a0b018250f09b325d19158b9295f60a2c"> 2962</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a0b018250f09b325d19158b9295f60a2c">isMultiplicativeOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Opc >= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a> && Opc <= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a91a7868de509af06d04ef1c6e21383be">BO_Rem</a>; }</div>
+<div class="line"><a name="l02963"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#abd25625809d2fb57c333e2afd60b5195"> 2963</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#abd25625809d2fb57c333e2afd60b5195">isAdditiveOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1abe63fd1a02a7d1191c3b2fd102b983bd">BO_Add</a> || Opc==<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af84c54a9c8a061371180b3e8b25d4c3f">BO_Sub</a>; }</div>
+<div class="line"><a name="l02964"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a385ae7be55fbcc8c66ee2be2969525e7"> 2964</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a385ae7be55fbcc8c66ee2be2969525e7">isAdditiveOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a385ae7be55fbcc8c66ee2be2969525e7">isAdditiveOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02965"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a2d3777a6580b5d91b39900c2335c9752"> 2965</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a2d3777a6580b5d91b39900c2335c9752">isShiftOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a2a7b3ad7ff838b9d313312f2dde50cb0">BO_Shl</a> || Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a05544609a9c447c91873ed3fb1fec26c">BO_Shr</a>; }</div>
+<div class="line"><a name="l02966"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a381f53a5820f86d481f7788d8a70f49a"> 2966</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a381f53a5820f86d481f7788d8a70f49a">isShiftOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a381f53a5820f86d481f7788d8a70f49a">isShiftOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02967"></a><span class="lineno"> 2967</span> </div>
+<div class="line"><a name="l02968"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#af4279fe8f07cedd744fc9d9ce1ce9714"> 2968</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#af4279fe8f07cedd744fc9d9ce1ce9714">isBitwiseOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc >= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1add0a26702b466b3820e0032922751589">BO_And</a> && Opc <= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a0bbf9a36f955dba18422f3c8800443d1">BO_Or</a>; }</div>
+<div class="line"><a name="l02969"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#aa852292ea8d22595c8943257d23449ef"> 2969</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#aa852292ea8d22595c8943257d23449ef">isBitwiseOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#aa852292ea8d22595c8943257d23449ef">isBitwiseOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02970"></a><span class="lineno"> 2970</span> </div>
+<div class="line"><a name="l02971"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a13780e203076ebba30cf8c3647630542"> 2971</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a13780e203076ebba30cf8c3647630542">isRelationalOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc >= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a> && Opc<=<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>; }</div>
+<div class="line"><a name="l02972"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a5f09e58f167f8f81a6e9f99ba9d1bb31"> 2972</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a5f09e58f167f8f81a6e9f99ba9d1bb31">isRelationalOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a5f09e58f167f8f81a6e9f99ba9d1bb31">isRelationalOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02973"></a><span class="lineno"> 2973</span> </div>
+<div class="line"><a name="l02974"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ae6d9d0ca2ebeb07e77cc1b35cb1a83ba"> 2974</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#ae6d9d0ca2ebeb07e77cc1b35cb1a83ba">isEqualityOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a> || Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>; }</div>
+<div class="line"><a name="l02975"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ad453465901acd284fa28197b9eb6018c"> 2975</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#ad453465901acd284fa28197b9eb6018c">isEqualityOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#ad453465901acd284fa28197b9eb6018c">isEqualityOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02976"></a><span class="lineno"> 2976</span> </div>
+<div class="line"><a name="l02977"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a2402e78505156222d6599e96539bf025"> 2977</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a2402e78505156222d6599e96539bf025">isComparisonOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc >= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a> && Opc<=<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>; }</div>
+<div class="line"><a name="l02978"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ade817ce794755798e079a61746733d15"> 2978</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#ade817ce794755798e079a61746733d15">isComparisonOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#ade817ce794755798e079a61746733d15">isComparisonOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l02979"></a><span class="lineno"> 2979</span> </div>
+<div class="line"><a name="l02980"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a6fb3d0cabdc29abc18eca219c1424037"> 2980</a></span>   <span class="keyword">static</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> <a class="code" href="classclang_1_1BinaryOperator.html#a6fb3d0cabdc29abc18eca219c1424037">negateComparisonOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l02981"></a><span class="lineno"> 2981</span>     <span class="keywordflow">switch</span> (Opc) {</div>
+<div class="line"><a name="l02982"></a><span class="lineno"> 2982</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02983"></a><span class="lineno"> 2983</span>       llvm_unreachable(<span class="stringliteral">"Not a comparsion operator."</span>);</div>
+<div class="line"><a name="l02984"></a><span class="lineno"> 2984</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>;</div>
+<div class="line"><a name="l02985"></a><span class="lineno"> 2985</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>;</div>
+<div class="line"><a name="l02986"></a><span class="lineno"> 2986</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>;</div>
+<div class="line"><a name="l02987"></a><span class="lineno"> 2987</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>;</div>
+<div class="line"><a name="l02988"></a><span class="lineno"> 2988</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>;</div>
+<div class="line"><a name="l02989"></a><span class="lineno"> 2989</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>;</div>
+<div class="line"><a name="l02990"></a><span class="lineno"> 2990</span>     }</div>
+<div class="line"><a name="l02991"></a><span class="lineno"> 2991</span>   }</div>
+<div class="line"><a name="l02992"></a><span class="lineno"> 2992</span> </div>
+<div class="line"><a name="l02993"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a7a6035c40e72a4b1d7d49ec91503f7c5"> 2993</a></span>   <span class="keyword">static</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> <a class="code" href="classclang_1_1BinaryOperator.html#a7a6035c40e72a4b1d7d49ec91503f7c5">reverseComparisonOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l02994"></a><span class="lineno"> 2994</span>     <span class="keywordflow">switch</span> (Opc) {</div>
+<div class="line"><a name="l02995"></a><span class="lineno"> 2995</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l02996"></a><span class="lineno"> 2996</span>       llvm_unreachable(<span class="stringliteral">"Not a comparsion operator."</span>);</div>
+<div class="line"><a name="l02997"></a><span class="lineno"> 2997</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>;</div>
+<div class="line"><a name="l02998"></a><span class="lineno"> 2998</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a9ff57a80bfff7f4a29cfc5ea9525ed6f">BO_GT</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a34afd641c1839b1ebdf5b96779becc5e">BO_LT</a>;</div>
+<div class="line"><a name="l02999"></a><span class="lineno"> 2999</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>;</div>
+<div class="line"><a name="l03000"></a><span class="lineno"> 3000</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a49c5777674892e127aeeb0746b18a1e2">BO_GE</a>: <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab1b013f11421020dffa959a6c1ed45af">BO_LE</a>;</div>
+<div class="line"><a name="l03001"></a><span class="lineno"> 3001</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a69f29b9100be3ced416f394df1b8387d">BO_EQ</a>:</div>
+<div class="line"><a name="l03002"></a><span class="lineno"> 3002</span>     <span class="keywordflow">case</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ad1f67b78e6981e7d44e0a1794432d104">BO_NE</a>:</div>
+<div class="line"><a name="l03003"></a><span class="lineno"> 3003</span>       <span class="keywordflow">return</span> Opc;</div>
+<div class="line"><a name="l03004"></a><span class="lineno"> 3004</span>     }</div>
+<div class="line"><a name="l03005"></a><span class="lineno"> 3005</span>   }</div>
+<div class="line"><a name="l03006"></a><span class="lineno"> 3006</span> </div>
+<div class="line"><a name="l03007"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a0149731b48b397fabc77b60bca65c6c6"> 3007</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a0149731b48b397fabc77b60bca65c6c6">isLogicalOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) { <span class="keywordflow">return</span> Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a30e5536f851a7efedefd1ca23a295741">BO_LAnd</a> || Opc==<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7bc0171ddbb52333099a4774326d72c9">BO_LOr</a>; }</div>
+<div class="line"><a name="l03008"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a72585d50644ffdffb8e7ad2f010c66db"> 3008</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a72585d50644ffdffb8e7ad2f010c66db">isLogicalOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a72585d50644ffdffb8e7ad2f010c66db">isLogicalOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l03009"></a><span class="lineno"> 3009</span> </div>
+<div class="line"><a name="l03010"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#abf2f15561ec6d790031ec82974924690"> 3010</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#abf2f15561ec6d790031ec82974924690">isAssignmentOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l03011"></a><span class="lineno"> 3011</span>     <span class="keywordflow">return</span> Opc >= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a> && Opc <= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7dd0c189f68df30c2b390bb99d140cbf">BO_OrAssign</a>;</div>
+<div class="line"><a name="l03012"></a><span class="lineno"> 3012</span>   }</div>
+<div class="line"><a name="l03013"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a1ad39821a19882541e25746b16690515"> 3013</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a1ad39821a19882541e25746b16690515">isAssignmentOp</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a1ad39821a19882541e25746b16690515">isAssignmentOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>()); }</div>
+<div class="line"><a name="l03014"></a><span class="lineno"> 3014</span> </div>
+<div class="line"><a name="l03015"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#abf348bccd0df0dbd086ca89672b6f8f4"> 3015</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#abf348bccd0df0dbd086ca89672b6f8f4">isCompoundAssignmentOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l03016"></a><span class="lineno"> 3016</span>     <span class="keywordflow">return</span> Opc > <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1af0f6693357ca6bc7488c1d4de4cbe303">BO_Assign</a> && Opc <= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a7dd0c189f68df30c2b390bb99d140cbf">BO_OrAssign</a>;</div>
+<div class="line"><a name="l03017"></a><span class="lineno"> 3017</span>   }</div>
+<div class="line"><a name="l03018"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078"> 3018</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078">isCompoundAssignmentOp</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03019"></a><span class="lineno"> 3019</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078">isCompoundAssignmentOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>());</div>
+<div class="line"><a name="l03020"></a><span class="lineno"> 3020</span>   }</div>
+<div class="line"><a name="l03021"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a552d7a7421b4a977315cbb49b93bc38c"> 3021</a></span>   <span class="keyword">static</span> <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> <a class="code" href="classclang_1_1BinaryOperator.html#a552d7a7421b4a977315cbb49b93bc38c">getOpForCompoundAssignment</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l03022"></a><span class="lineno"> 3022</span>     assert(<a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078">isCompoundAssignmentOp</a>(Opc));</div>
+<div class="line"><a name="l03023"></a><span class="lineno"> 3023</span>     <span class="keywordflow">if</span> (Opc >= <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab40fb7aa73ca8472468f2623a6339759">BO_AndAssign</a>)</div>
+<div class="line"><a name="l03024"></a><span class="lineno"> 3024</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720">Opcode</a>(<span class="keywordtype">unsigned</span>(Opc) - <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ab40fb7aa73ca8472468f2623a6339759">BO_AndAssign</a> + <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1add0a26702b466b3820e0032922751589">BO_And</a>);</div>
+<div class="line"><a name="l03025"></a><span class="lineno"> 3025</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l03026"></a><span class="lineno"> 3026</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#afcfcf53cc9ebcec2aa8a8a57870e8720">Opcode</a>(<span class="keywordtype">unsigned</span>(Opc) - <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae54f31f3a3a80606d1570d18fd3e2aa5">BO_MulAssign</a> + <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8e23022cab4ed3bcb24b7acd01f623e9">BO_Mul</a>);</div>
+<div class="line"><a name="l03027"></a><span class="lineno"> 3027</span>   }</div>
+<div class="line"><a name="l03028"></a><span class="lineno"> 3028</span> </div>
+<div class="line"><a name="l03029"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a85f49322cf938f254d536dd74bda403d"> 3029</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#a85f49322cf938f254d536dd74bda403d">isShiftAssignOp</a>(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> Opc) {</div>
+<div class="line"><a name="l03030"></a><span class="lineno"> 3030</span>     <span class="keywordflow">return</span> Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a8039f4b36186fda6134f233fd7f45ce3">BO_ShlAssign</a> || Opc == <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1a604ed36a5eeadd90dc085a248eca4374">BO_ShrAssign</a>;</div>
+<div class="line"><a name="l03031"></a><span class="lineno"> 3031</span>   }</div>
+<div class="line"><a name="l03032"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ab8e8bc65492ebb70a825f5f81abc9d29"> 3032</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#ab8e8bc65492ebb70a825f5f81abc9d29">isShiftAssignOp</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03033"></a><span class="lineno"> 3033</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryOperator.html#ab8e8bc65492ebb70a825f5f81abc9d29">isShiftAssignOp</a>(<a class="code" href="classclang_1_1BinaryOperator.html#a497174c5cc2816aa3a3f29e12dd93165">getOpcode</a>());</div>
+<div class="line"><a name="l03034"></a><span class="lineno"> 3034</span>   }</div>
+<div class="line"><a name="l03035"></a><span class="lineno"> 3035</span> </div>
+<div class="line"><a name="l03036"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#ab6082533d1f0767e4e16f698d814c871"> 3036</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#ab6082533d1f0767e4e16f698d814c871">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l03037"></a><span class="lineno"> 3037</span>     <span class="keywordflow">return</span> S-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() >= firstBinaryOperatorConstant &&</div>
+<div class="line"><a name="l03038"></a><span class="lineno"> 3038</span>            S-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() <= lastBinaryOperatorConstant;</div>
+<div class="line"><a name="l03039"></a><span class="lineno"> 3039</span>   }</div>
+<div class="line"><a name="l03040"></a><span class="lineno"> 3040</span> </div>
+<div class="line"><a name="l03041"></a><span class="lineno"> 3041</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03042"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a0cdb441958188e6a64cd9924f3d31981"> 3042</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1BinaryOperator.html#a0cdb441958188e6a64cd9924f3d31981">children</a>() {</div>
+<div class="line"><a name="l03043"></a><span class="lineno"> 3043</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubExprs[0], &SubExprs[0]+END_EXPR);</div>
+<div class="line"><a name="l03044"></a><span class="lineno"> 3044</span>   }</div>
+<div class="line"><a name="l03045"></a><span class="lineno"> 3045</span> </div>
+<div class="line"><a name="l03046"></a><span class="lineno"> 3046</span>   <span class="comment">// Set the FP contractability status of this operator. Only meaningful for</span></div>
+<div class="line"><a name="l03047"></a><span class="lineno"> 3047</span>   <span class="comment">// operations on floating point types.</span></div>
+<div class="line"><a name="l03048"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#af7b4c9caa437417906b06ff28ce098d6"> 3048</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1BinaryOperator.html#af7b4c9caa437417906b06ff28ce098d6">setFPContractable</a>(<span class="keywordtype">bool</span> FPC) { FPContractable = FPC; }</div>
+<div class="line"><a name="l03049"></a><span class="lineno"> 3049</span> </div>
+<div class="line"><a name="l03050"></a><span class="lineno"> 3050</span>   <span class="comment">// Get the FP contractability status of this operator. Only meaningful for</span></div>
+<div class="line"><a name="l03051"></a><span class="lineno"> 3051</span>   <span class="comment">// operations on floating point types.</span></div>
+<div class="line"><a name="l03052"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#adf908fc7c8cc05db4dbeb97d3895c50f"> 3052</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryOperator.html#adf908fc7c8cc05db4dbeb97d3895c50f">isFPContractable</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FPContractable; }</div>
+<div class="line"><a name="l03053"></a><span class="lineno"> 3053</span> </div>
+<div class="line"><a name="l03054"></a><span class="lineno"> 3054</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l03055"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#aa4965709591e9dc266dac865a194800c"> 3055</a></span>   <a class="code" href="classclang_1_1BinaryOperator.html#a90e1ac489bbcf35e7b7d8773ebe95a1d">BinaryOperator</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs, <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> opc, <a class="code" href="classclang_1_1QualType.html">QualType</a> ResTy,</div>
+<div class="line"><a name="l03056"></a><span class="lineno"> 3056</span>                  <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l03057"></a><span class="lineno"> 3057</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> opLoc, <span class="keywordtype">bool</span> fpContractable, <span class="keywordtype">bool</span> dead2)</div>
+<div class="line"><a name="l03058"></a><span class="lineno"> 3058</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(CompoundAssignOperatorClass, ResTy, VK, OK,</div>
+<div class="line"><a name="l03059"></a><span class="lineno"> 3059</span>            lhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>(),</div>
+<div class="line"><a name="l03060"></a><span class="lineno"> 3060</span>            lhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l03061"></a><span class="lineno"> 3061</span>            (lhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l03062"></a><span class="lineno"> 3062</span>             rhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l03063"></a><span class="lineno"> 3063</span>            (lhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03064"></a><span class="lineno"> 3064</span>             rhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())),</div>
+<div class="line"><a name="l03065"></a><span class="lineno"> 3065</span>       Opc(opc), FPContractable(fpContractable), OpLoc(opLoc) {</div>
+<div class="line"><a name="l03066"></a><span class="lineno"> 3066</span>     SubExprs[LHS] = lhs;</div>
+<div class="line"><a name="l03067"></a><span class="lineno"> 3067</span>     SubExprs[RHS] = rhs;</div>
+<div class="line"><a name="l03068"></a><span class="lineno"> 3068</span>   }</div>
+<div class="line"><a name="l03069"></a><span class="lineno"> 3069</span> </div>
+<div class="line"><a name="l03070"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryOperator.html#a99e761d756ef9ceab5bfaef603766474"> 3070</a></span>   <a class="code" href="classclang_1_1BinaryOperator.html#a90e1ac489bbcf35e7b7d8773ebe95a1d">BinaryOperator</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03071"></a><span class="lineno"> 3071</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, Empty), Opc(<a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1ae54f31f3a3a80606d1570d18fd3e2aa5">BO_MulAssign</a>) { }</div>
+<div class="line"><a name="l03072"></a><span class="lineno"> 3072</span> };</div>
+<div class="line"><a name="l03073"></a><span class="lineno"> 3073</span> <span class="comment"></span></div>
+<div class="line"><a name="l03074"></a><span class="lineno"> 3074</span> <span class="comment">/// CompoundAssignOperator - For compound assignments (e.g. +=), we keep</span></div>
+<div class="line"><a name="l03075"></a><span class="lineno"> 3075</span> <span class="comment">/// track of the type the operation is performed in.  Due to the semantics of</span></div>
+<div class="line"><a name="l03076"></a><span class="lineno"> 3076</span> <span class="comment">/// these operators, the operands are promoted, the arithmetic performed, an</span></div>
+<div class="line"><a name="l03077"></a><span class="lineno"> 3077</span> <span class="comment">/// implicit conversion back to the result type done, then the assignment takes</span></div>
+<div class="line"><a name="l03078"></a><span class="lineno"> 3078</span> <span class="comment">/// place.  This captures the intermediate type which the computation is done</span></div>
+<div class="line"><a name="l03079"></a><span class="lineno"> 3079</span> <span class="comment">/// in.</span></div>
+<div class="line"><a name="l03080"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html"> 3080</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CompoundAssignOperator.html">CompoundAssignOperator</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a> {</div>
+<div class="line"><a name="l03081"></a><span class="lineno"> 3081</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ComputationLHSType;</div>
+<div class="line"><a name="l03082"></a><span class="lineno"> 3082</span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> ComputationResultType;</div>
+<div class="line"><a name="l03083"></a><span class="lineno"> 3083</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03084"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#a0c6874d5bf2d8377c7480d5cabc840d4"> 3084</a></span>   <a class="code" href="classclang_1_1CompoundAssignOperator.html#a0c6874d5bf2d8377c7480d5cabc840d4">CompoundAssignOperator</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs, <a class="code" href="namespaceclang.html#a443b552ee80020cfeb2b86c99e7f85e1">Opcode</a> opc, <a class="code" href="classclang_1_1QualType.html">QualType</a> ResType,</div>
+<div class="line"><a name="l03085"></a><span class="lineno"> 3085</span>                          <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l03086"></a><span class="lineno"> 3086</span>                          <a class="code" href="classclang_1_1QualType.html">QualType</a> CompLHSType, <a class="code" href="classclang_1_1QualType.html">QualType</a> CompResultType,</div>
+<div class="line"><a name="l03087"></a><span class="lineno"> 3087</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> OpLoc, <span class="keywordtype">bool</span> fpContractable)</div>
+<div class="line"><a name="l03088"></a><span class="lineno"> 3088</span>     : <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a>(lhs, rhs, opc, ResType, VK, OK, OpLoc, fpContractable,</div>
+<div class="line"><a name="l03089"></a><span class="lineno"> 3089</span>                      <a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l03090"></a><span class="lineno"> 3090</span>       ComputationLHSType(CompLHSType),</div>
+<div class="line"><a name="l03091"></a><span class="lineno"> 3091</span>       ComputationResultType(CompResultType) {</div>
+<div class="line"><a name="l03092"></a><span class="lineno"> 3092</span>     assert(<a class="code" href="classclang_1_1BinaryOperator.html#a170ee6f712733d64889024e229c87078">isCompoundAssignmentOp</a>() &&</div>
+<div class="line"><a name="l03093"></a><span class="lineno"> 3093</span>            <span class="stringliteral">"Only should be used for compound assignments"</span>);</div>
+<div class="line"><a name="l03094"></a><span class="lineno"> 3094</span>   }</div>
+<div class="line"><a name="l03095"></a><span class="lineno"> 3095</span> <span class="comment"></span></div>
+<div class="line"><a name="l03096"></a><span class="lineno"> 3096</span> <span class="comment">  /// \brief Build an empty compound assignment operator expression.</span></div>
+<div class="line"><a name="l03097"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#a7b66387404806b27a77a0c3fbcf02973"> 3097</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html#a0c6874d5bf2d8377c7480d5cabc840d4">CompoundAssignOperator</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03098"></a><span class="lineno"> 3098</span>     : <a class="code" href="classclang_1_1BinaryOperator.html" title="A builtin binary operation expression such as "x + y" or "x <= y".">BinaryOperator</a>(CompoundAssignOperatorClass, Empty) { }</div>
+<div class="line"><a name="l03099"></a><span class="lineno"> 3099</span> </div>
+<div class="line"><a name="l03100"></a><span class="lineno"> 3100</span>   <span class="comment">// The two computation types are the type the LHS is converted</span></div>
+<div class="line"><a name="l03101"></a><span class="lineno"> 3101</span>   <span class="comment">// to for the computation and the type of the result; the two are</span></div>
+<div class="line"><a name="l03102"></a><span class="lineno"> 3102</span>   <span class="comment">// distinct in a few cases (specifically, int+=ptr and ptr-=ptr).</span></div>
+<div class="line"><a name="l03103"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#ac4a88a84a8db7503dad4efb509da3061"> 3103</a></span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1CompoundAssignOperator.html#ac4a88a84a8db7503dad4efb509da3061">getComputationLHSType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ComputationLHSType; }</div>
+<div class="line"><a name="l03104"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#a99cb0d607fb854f8f114d1654927c3b1"> 3104</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html#a99cb0d607fb854f8f114d1654927c3b1">setComputationLHSType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) { ComputationLHSType = T; }</div>
+<div class="line"><a name="l03105"></a><span class="lineno"> 3105</span> </div>
+<div class="line"><a name="l03106"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#a84a27832d28d023ca96f73e4220bdc63"> 3106</a></span>   <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1CompoundAssignOperator.html#a84a27832d28d023ca96f73e4220bdc63">getComputationResultType</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ComputationResultType; }</div>
+<div class="line"><a name="l03107"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#a351f9cc961a620d2c1a78b183e060676"> 3107</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html#a351f9cc961a620d2c1a78b183e060676">setComputationResultType</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> T) { ComputationResultType = T; }</div>
+<div class="line"><a name="l03108"></a><span class="lineno"> 3108</span> </div>
+<div class="line"><a name="l03109"></a><span class="lineno"><a class="code" href="classclang_1_1CompoundAssignOperator.html#addf4d32ca692580a3a2c881cc8405a0d"> 3109</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CompoundAssignOperator.html#addf4d32ca692580a3a2c881cc8405a0d">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l03110"></a><span class="lineno"> 3110</span>     <span class="keywordflow">return</span> S-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == CompoundAssignOperatorClass;</div>
+<div class="line"><a name="l03111"></a><span class="lineno"> 3111</span>   }</div>
+<div class="line"><a name="l03112"></a><span class="lineno"> 3112</span> };</div>
+<div class="line"><a name="l03113"></a><span class="lineno"> 3113</span> <span class="comment"></span></div>
+<div class="line"><a name="l03114"></a><span class="lineno"> 3114</span> <span class="comment">/// AbstractConditionalOperator - An abstract base class for</span></div>
+<div class="line"><a name="l03115"></a><span class="lineno"> 3115</span> <span class="comment">/// ConditionalOperator and BinaryConditionalOperator.</span></div>
+<div class="line"><a name="l03116"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html"> 3116</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03117"></a><span class="lineno"> 3117</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> QuestionLoc, ColonLoc;</div>
+<div class="line"><a name="l03118"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#ad6427d648931017bffcb2f90b8930f9d"> 3118</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l03119"></a><span class="lineno"> 3119</span> </div>
+<div class="line"><a name="l03120"></a><span class="lineno"> 3120</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l03121"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#af59617a79984f74e06e9e8c5c7d63c26"> 3121</a></span>   <a class="code" href="classclang_1_1AbstractConditionalOperator.html#af59617a79984f74e06e9e8c5c7d63c26">AbstractConditionalOperator</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l03122"></a><span class="lineno"> 3122</span>                               <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l03123"></a><span class="lineno"> 3123</span>                               <span class="keywordtype">bool</span> TD, <span class="keywordtype">bool</span> VD, <span class="keywordtype">bool</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="l03124"></a><span class="lineno"> 3124</span>                               <span class="keywordtype">bool</span> ContainsUnexpandedParameterPack,</div>
+<div class="line"><a name="l03125"></a><span class="lineno"> 3125</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> qloc,</div>
+<div class="line"><a name="l03126"></a><span class="lineno"> 3126</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> cloc)</div>
+<div class="line"><a name="l03127"></a><span class="lineno"> 3127</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, T, VK, OK, TD, VD, ID, ContainsUnexpandedParameterPack),</div>
+<div class="line"><a name="l03128"></a><span class="lineno"> 3128</span>       QuestionLoc(qloc), ColonLoc(cloc) {}</div>
+<div class="line"><a name="l03129"></a><span class="lineno"> 3129</span> </div>
+<div class="line"><a name="l03130"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a0ed8a6270bb6c337f301510b4a3ddaf9"> 3130</a></span>   <a class="code" href="classclang_1_1AbstractConditionalOperator.html#af59617a79984f74e06e9e8c5c7d63c26">AbstractConditionalOperator</a>(<a class="code" href="classclang_1_1Stmt.html#a0799dd590e47c83dec66713a22af20cd">StmtClass</a> SC, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03131"></a><span class="lineno"> 3131</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(SC, Empty) { }</div>
+<div class="line"><a name="l03132"></a><span class="lineno"> 3132</span> </div>
+<div class="line"><a name="l03133"></a><span class="lineno"> 3133</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03134"></a><span class="lineno"> 3134</span>   <span class="comment">// getCond - Return the expression representing the condition for</span></div>
+<div class="line"><a name="l03135"></a><span class="lineno"> 3135</span>   <span class="comment">//   the ?: operator.</span></div>
+<div class="line"><a name="l03136"></a><span class="lineno"> 3136</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1AbstractConditionalOperator.html#aeffaff2841ac6c51481c62dbaa6da068">getCond</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l03137"></a><span class="lineno"> 3137</span> </div>
+<div class="line"><a name="l03138"></a><span class="lineno"> 3138</span>   <span class="comment">// getTrueExpr - Return the subexpression representing the value of</span></div>
+<div class="line"><a name="l03139"></a><span class="lineno"> 3139</span>   <span class="comment">//   the expression if the condition evaluates to true.</span></div>
+<div class="line"><a name="l03140"></a><span class="lineno"> 3140</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1AbstractConditionalOperator.html#aefd0046134a76b3b5d4b517d5ad3b7c8">getTrueExpr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l03141"></a><span class="lineno"> 3141</span> </div>
+<div class="line"><a name="l03142"></a><span class="lineno"> 3142</span>   <span class="comment">// getFalseExpr - Return the subexpression representing the value of</span></div>
+<div class="line"><a name="l03143"></a><span class="lineno"> 3143</span>   <span class="comment">//   the expression if the condition evaluates to false.  This is</span></div>
+<div class="line"><a name="l03144"></a><span class="lineno"> 3144</span>   <span class="comment">//   the same as getRHS.</span></div>
+<div class="line"><a name="l03145"></a><span class="lineno"> 3145</span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1AbstractConditionalOperator.html#a1b8c4e1f971e272272a329653153e8c1">getFalseExpr</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l03146"></a><span class="lineno"> 3146</span> </div>
+<div class="line"><a name="l03147"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aa7a9e2ad18ddd72b525cdb2dd1cb5db1"> 3147</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_1AbstractConditionalOperator.html#aa7a9e2ad18ddd72b525cdb2dd1cb5db1">getQuestionLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> QuestionLoc; }</div>
+<div class="line"><a name="l03148"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a0d005b0c0e990ed06d352bda5f33d64c"> 3148</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_1AbstractConditionalOperator.html#a0d005b0c0e990ed06d352bda5f33d64c">getColonLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ColonLoc; }</div>
+<div class="line"><a name="l03149"></a><span class="lineno"> 3149</span> </div>
+<div class="line"><a name="l03150"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a4355f27f2e69671bef207ef7dab368c7"> 3150</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html#a4355f27f2e69671bef207ef7dab368c7">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03151"></a><span class="lineno"> 3151</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ConditionalOperatorClass ||</div>
+<div class="line"><a name="l03152"></a><span class="lineno"> 3152</span>            T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == BinaryConditionalOperatorClass;</div>
+<div class="line"><a name="l03153"></a><span class="lineno"> 3153</span>   }</div>
+<div class="line"><a name="l03154"></a><span class="lineno"> 3154</span> };</div>
+<div class="line"><a name="l03155"></a><span class="lineno"> 3155</span> <span class="comment"></span></div>
+<div class="line"><a name="l03156"></a><span class="lineno"> 3156</span> <span class="comment">/// ConditionalOperator - The ?: ternary operator.  The GNU "missing</span></div>
+<div class="line"><a name="l03157"></a><span class="lineno"> 3157</span> <span class="comment">/// middle" extension is a BinaryConditionalOperator.</span></div>
+<div class="line"><a name="l03158"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html"> 3158</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> {</div>
+<div class="line"><a name="l03159"></a><span class="lineno"> 3159</span>   <span class="keyword">enum</span> { COND, LHS, RHS, END_EXPR };</div>
+<div class="line"><a name="l03160"></a><span class="lineno"> 3160</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a>* SubExprs[END_EXPR]; <span class="comment">// Left/Middle/Right hand sides.</span></div>
+<div class="line"><a name="l03161"></a><span class="lineno"> 3161</span> </div>
+<div class="line"><a name="l03162"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#ad6427d648931017bffcb2f90b8930f9d"> 3162</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l03163"></a><span class="lineno"> 3163</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03164"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#a6d6807e24e9a656146a279234c5c554f"> 3164</a></span>   <a class="code" href="classclang_1_1ConditionalOperator.html#a6d6807e24e9a656146a279234c5c554f">ConditionalOperator</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *cond, <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> QLoc, <a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs,</div>
+<div class="line"><a name="l03165"></a><span class="lineno"> 3165</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> CLoc, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs,</div>
+<div class="line"><a name="l03166"></a><span class="lineno"> 3166</span>                       <a class="code" href="classclang_1_1QualType.html">QualType</a> t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK)</div>
+<div class="line"><a name="l03167"></a><span class="lineno"> 3167</span>     : <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a>(ConditionalOperatorClass, t, VK, OK,</div>
+<div class="line"><a name="l03168"></a><span class="lineno"> 3168</span>            <span class="comment">// FIXME: the type of the conditional operator doesn't</span></div>
+<div class="line"><a name="l03169"></a><span class="lineno"> 3169</span>            <span class="comment">// depend on the type of the conditional, but the standard</span></div>
+<div class="line"><a name="l03170"></a><span class="lineno"> 3170</span>            <span class="comment">// seems to imply that it could. File a bug!</span></div>
+<div class="line"><a name="l03171"></a><span class="lineno"> 3171</span>            (lhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>()),</div>
+<div class="line"><a name="l03172"></a><span class="lineno"> 3172</span>            (cond-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() || lhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() ||</div>
+<div class="line"><a name="l03173"></a><span class="lineno"> 3173</span>             rhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>()),</div>
+<div class="line"><a name="l03174"></a><span class="lineno"> 3174</span>            (cond-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l03175"></a><span class="lineno"> 3175</span>             lhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l03176"></a><span class="lineno"> 3176</span>             rhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l03177"></a><span class="lineno"> 3177</span>            (cond-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03178"></a><span class="lineno"> 3178</span>             lhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03179"></a><span class="lineno"> 3179</span>             rhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l03180"></a><span class="lineno"> 3180</span>                                   QLoc, CLoc) {</div>
+<div class="line"><a name="l03181"></a><span class="lineno"> 3181</span>     SubExprs[COND] = cond;</div>
+<div class="line"><a name="l03182"></a><span class="lineno"> 3182</span>     SubExprs[LHS] = lhs;</div>
+<div class="line"><a name="l03183"></a><span class="lineno"> 3183</span>     SubExprs[RHS] = rhs;</div>
+<div class="line"><a name="l03184"></a><span class="lineno"> 3184</span>   }</div>
+<div class="line"><a name="l03185"></a><span class="lineno"> 3185</span> <span class="comment"></span></div>
+<div class="line"><a name="l03186"></a><span class="lineno"> 3186</span> <span class="comment">  /// \brief Build an empty conditional operator.</span></div>
+<div class="line"><a name="l03187"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#af67183bbcd0c08c7874e130b9d92bc81"> 3187</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ConditionalOperator.html#a6d6807e24e9a656146a279234c5c554f">ConditionalOperator</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03188"></a><span class="lineno"> 3188</span>     : <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a>(ConditionalOperatorClass, Empty) { }</div>
+<div class="line"><a name="l03189"></a><span class="lineno"> 3189</span> </div>
+<div class="line"><a name="l03190"></a><span class="lineno"> 3190</span>   <span class="comment">// getCond - Return the expression representing the condition for</span></div>
+<div class="line"><a name="l03191"></a><span class="lineno"> 3191</span>   <span class="comment">//   the ?: operator.</span></div>
+<div class="line"><a name="l03192"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#adde4b8e0f728e60640fe4401e3eac1d3"> 3192</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ConditionalOperator.html#adde4b8e0f728e60640fe4401e3eac1d3">getCond</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[COND]); }</div>
+<div class="line"><a name="l03193"></a><span class="lineno"> 3193</span> </div>
+<div class="line"><a name="l03194"></a><span class="lineno"> 3194</span>   <span class="comment">// getTrueExpr - Return the subexpression representing the value of</span></div>
+<div class="line"><a name="l03195"></a><span class="lineno"> 3195</span>   <span class="comment">//   the expression if the condition evaluates to true.</span></div>
+<div class="line"><a name="l03196"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#ae3c023a9354513f08eca2810fad50fb5"> 3196</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ConditionalOperator.html#ae3c023a9354513f08eca2810fad50fb5">getTrueExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]); }</div>
+<div class="line"><a name="l03197"></a><span class="lineno"> 3197</span> </div>
+<div class="line"><a name="l03198"></a><span class="lineno"> 3198</span>   <span class="comment">// getFalseExpr - Return the subexpression representing the value of</span></div>
+<div class="line"><a name="l03199"></a><span class="lineno"> 3199</span>   <span class="comment">//   the expression if the condition evaluates to false.  This is</span></div>
+<div class="line"><a name="l03200"></a><span class="lineno"> 3200</span>   <span class="comment">//   the same as getRHS.</span></div>
+<div class="line"><a name="l03201"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#a496da4ba98b85ef8076e6bf675ffc6e9"> 3201</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ConditionalOperator.html#a496da4ba98b85ef8076e6bf675ffc6e9">getFalseExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]); }</div>
+<div class="line"><a name="l03202"></a><span class="lineno"> 3202</span> </div>
+<div class="line"><a name="l03203"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#a15ef8acd411290e7d553e858528524f5"> 3203</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ConditionalOperator.html#a15ef8acd411290e7d553e858528524f5">getLHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]); }</div>
+<div class="line"><a name="l03204"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#a10ae382d760beec138b94003f277ae75"> 3204</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ConditionalOperator.html#a10ae382d760beec138b94003f277ae75">getRHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]); }</div>
+<div class="line"><a name="l03205"></a><span class="lineno"> 3205</span> </div>
+<div class="line"><a name="l03206"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#ab75b94b866bd295558bc7c5acf5e2267"> 3206</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_1ConditionalOperator.html#ab75b94b866bd295558bc7c5acf5e2267">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l03207"></a><span class="lineno"> 3207</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ConditionalOperator.html#adde4b8e0f728e60640fe4401e3eac1d3">getCond</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l03208"></a><span class="lineno"> 3208</span>   }</div>
+<div class="line"><a name="l03209"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#a058fdbfbdb0825a8108dd644b4679a9f"> 3209</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_1ConditionalOperator.html#a058fdbfbdb0825a8108dd644b4679a9f">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l03210"></a><span class="lineno"> 3210</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ConditionalOperator.html#a10ae382d760beec138b94003f277ae75">getRHS</a>()-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l03211"></a><span class="lineno"> 3211</span>   }</div>
+<div class="line"><a name="l03212"></a><span class="lineno"> 3212</span> </div>
+<div class="line"><a name="l03213"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#a52ac6469eafd4ad2bb5fd016c3bbdbd8"> 3213</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ConditionalOperator.html#a52ac6469eafd4ad2bb5fd016c3bbdbd8">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03214"></a><span class="lineno"> 3214</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ConditionalOperatorClass;</div>
+<div class="line"><a name="l03215"></a><span class="lineno"> 3215</span>   }</div>
+<div class="line"><a name="l03216"></a><span class="lineno"> 3216</span> </div>
+<div class="line"><a name="l03217"></a><span class="lineno"> 3217</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03218"></a><span class="lineno"><a class="code" href="classclang_1_1ConditionalOperator.html#ab61d28582168895f3d4945076e8767b7"> 3218</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ConditionalOperator.html#ab61d28582168895f3d4945076e8767b7">children</a>() {</div>
+<div class="line"><a name="l03219"></a><span class="lineno"> 3219</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubExprs[0], &SubExprs[0]+END_EXPR);</div>
+<div class="line"><a name="l03220"></a><span class="lineno"> 3220</span>   }</div>
+<div class="line"><a name="l03221"></a><span class="lineno"> 3221</span> };</div>
+<div class="line"><a name="l03222"></a><span class="lineno"> 3222</span> <span class="comment"></span></div>
+<div class="line"><a name="l03223"></a><span class="lineno"> 3223</span> <span class="comment">/// BinaryConditionalOperator - The GNU extension to the conditional</span></div>
+<div class="line"><a name="l03224"></a><span class="lineno"> 3224</span> <span class="comment">/// operator which allows the middle operand to be omitted.</span></div>
+<div class="line"><a name="l03225"></a><span class="lineno"> 3225</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03226"></a><span class="lineno"> 3226</span> <span class="comment">/// This is a different expression kind on the assumption that almost</span></div>
+<div class="line"><a name="l03227"></a><span class="lineno"> 3227</span> <span class="comment">/// every client ends up needing to know that these are different.</span></div>
+<div class="line"><a name="l03228"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html"> 3228</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1BinaryConditionalOperator.html">BinaryConditionalOperator</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a> {</div>
+<div class="line"><a name="l03229"></a><span class="lineno"> 3229</span>   <span class="keyword">enum</span> { COMMON, COND, LHS, RHS, NUM_SUBEXPRS };</div>
+<div class="line"><a name="l03230"></a><span class="lineno"> 3230</span> <span class="comment"></span></div>
+<div class="line"><a name="l03231"></a><span class="lineno"> 3231</span> <span class="comment">  /// - the common condition/left-hand-side expression, which will be</span></div>
+<div class="line"><a name="l03232"></a><span class="lineno"> 3232</span> <span class="comment">  ///   evaluated as the opaque value</span></div>
+<div class="line"><a name="l03233"></a><span class="lineno"> 3233</span> <span class="comment">  /// - the condition, expressed in terms of the opaque value</span></div>
+<div class="line"><a name="l03234"></a><span class="lineno"> 3234</span> <span class="comment">  /// - the left-hand-side, expressed in terms of the opaque value</span></div>
+<div class="line"><a name="l03235"></a><span class="lineno"> 3235</span> <span class="comment">  /// - the right-hand-side</span></div>
+<div class="line"><a name="l03236"></a><span class="lineno"> 3236</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *SubExprs[NUM_SUBEXPRS];</div>
+<div class="line"><a name="l03237"></a><span class="lineno"> 3237</span>   <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *OpaqueValue;</div>
+<div class="line"><a name="l03238"></a><span class="lineno"> 3238</span> </div>
+<div class="line"><a name="l03239"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#ad6427d648931017bffcb2f90b8930f9d"> 3239</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l03240"></a><span class="lineno"> 3240</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03241"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a426acd1c378a35085780201ecedce9cf"> 3241</a></span>   <a class="code" href="classclang_1_1BinaryConditionalOperator.html#a426acd1c378a35085780201ecedce9cf">BinaryConditionalOperator</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *common, <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *opaqueValue,</div>
+<div class="line"><a name="l03242"></a><span class="lineno"> 3242</span>                             <a class="code" href="classclang_1_1Expr.html">Expr</a> *cond, <a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs,</div>
+<div class="line"><a name="l03243"></a><span class="lineno"> 3243</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> qloc, <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> cloc,</div>
+<div class="line"><a name="l03244"></a><span class="lineno"> 3244</span>                             <a class="code" href="classclang_1_1QualType.html">QualType</a> t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK)</div>
+<div class="line"><a name="l03245"></a><span class="lineno"> 3245</span>     : <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a>(BinaryConditionalOperatorClass, t, VK, OK,</div>
+<div class="line"><a name="l03246"></a><span class="lineno"> 3246</span>            (common-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>()),</div>
+<div class="line"><a name="l03247"></a><span class="lineno"> 3247</span>            (common-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>() || rhs-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>()),</div>
+<div class="line"><a name="l03248"></a><span class="lineno"> 3248</span>            (common-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l03249"></a><span class="lineno"> 3249</span>             rhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l03250"></a><span class="lineno"> 3250</span>            (common-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03251"></a><span class="lineno"> 3251</span>             rhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>()),</div>
+<div class="line"><a name="l03252"></a><span class="lineno"> 3252</span>                                   qloc, cloc),</div>
+<div class="line"><a name="l03253"></a><span class="lineno"> 3253</span>       OpaqueValue(opaqueValue) {</div>
+<div class="line"><a name="l03254"></a><span class="lineno"> 3254</span>     SubExprs[COMMON] = common;</div>
+<div class="line"><a name="l03255"></a><span class="lineno"> 3255</span>     SubExprs[COND] = cond;</div>
+<div class="line"><a name="l03256"></a><span class="lineno"> 3256</span>     SubExprs[LHS] = lhs;</div>
+<div class="line"><a name="l03257"></a><span class="lineno"> 3257</span>     SubExprs[RHS] = rhs;</div>
+<div class="line"><a name="l03258"></a><span class="lineno"> 3258</span>     assert(OpaqueValue-><a class="code" href="classclang_1_1OpaqueValueExpr.html#ab105e60e67105a6ea713896d632e9670">getSourceExpr</a>() == common && <span class="stringliteral">"Wrong opaque value"</span>);</div>
+<div class="line"><a name="l03259"></a><span class="lineno"> 3259</span>   }</div>
+<div class="line"><a name="l03260"></a><span class="lineno"> 3260</span> <span class="comment"></span></div>
+<div class="line"><a name="l03261"></a><span class="lineno"> 3261</span> <span class="comment">  /// \brief Build an empty conditional operator.</span></div>
+<div class="line"><a name="l03262"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#acbbf2a1bcca3677f9f6ee08278b22b82"> 3262</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1BinaryConditionalOperator.html#a426acd1c378a35085780201ecedce9cf">BinaryConditionalOperator</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03263"></a><span class="lineno"> 3263</span>     : <a class="code" href="classclang_1_1AbstractConditionalOperator.html">AbstractConditionalOperator</a>(BinaryConditionalOperatorClass, Empty) { }</div>
+<div class="line"><a name="l03264"></a><span class="lineno"> 3264</span> <span class="comment"></span></div>
+<div class="line"><a name="l03265"></a><span class="lineno"> 3265</span> <span class="comment">  /// \brief getCommon - Return the common expression, written to the</span></div>
+<div class="line"><a name="l03266"></a><span class="lineno"> 3266</span> <span class="comment">  ///   left of the condition.  The opaque value will be bound to the</span></div>
+<div class="line"><a name="l03267"></a><span class="lineno"> 3267</span> <span class="comment">  ///   result of this expression.</span></div>
+<div class="line"><a name="l03268"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a95f4d6dc559c9c19c86fade8b3114393"> 3268</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1BinaryConditionalOperator.html#a95f4d6dc559c9c19c86fade8b3114393" title="getCommon - Return the common expression, written to the left of the condition. The opaque value will...">getCommon</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[COMMON]); }</div>
+<div class="line"><a name="l03269"></a><span class="lineno"> 3269</span> <span class="comment"></span></div>
+<div class="line"><a name="l03270"></a><span class="lineno"> 3270</span> <span class="comment">  /// \brief getOpaqueValue - Return the opaque value placeholder.</span></div>
+<div class="line"><a name="l03271"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a4bc96fbd822603ed2d3de2a02d2313b6"> 3271</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1OpaqueValueExpr.html">OpaqueValueExpr</a> *<a class="code" href="classclang_1_1BinaryConditionalOperator.html#a4bc96fbd822603ed2d3de2a02d2313b6" title="getOpaqueValue - Return the opaque value placeholder.">getOpaqueValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> OpaqueValue; }</div>
+<div class="line"><a name="l03272"></a><span class="lineno"> 3272</span> <span class="comment"></span></div>
+<div class="line"><a name="l03273"></a><span class="lineno"> 3273</span> <span class="comment">  /// \brief getCond - Return the condition expression; this is defined</span></div>
+<div class="line"><a name="l03274"></a><span class="lineno"> 3274</span> <span class="comment">  ///   in terms of the opaque value.</span></div>
+<div class="line"><a name="l03275"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a785117b61df5ccee47aceeb9b635e180"> 3275</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1BinaryConditionalOperator.html#a785117b61df5ccee47aceeb9b635e180" title="getCond - Return the condition expression; this is defined in terms of the opaque value...">getCond</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[COND]); }</div>
+<div class="line"><a name="l03276"></a><span class="lineno"> 3276</span> <span class="comment"></span></div>
+<div class="line"><a name="l03277"></a><span class="lineno"> 3277</span> <span class="comment">  /// \brief getTrueExpr - Return the subexpression which will be</span></div>
+<div class="line"><a name="l03278"></a><span class="lineno"> 3278</span> <span class="comment">  ///   evaluated if the condition evaluates to true;  this is defined</span></div>
+<div class="line"><a name="l03279"></a><span class="lineno"> 3279</span> <span class="comment">  ///   in terms of the opaque value.</span></div>
+<div class="line"><a name="l03280"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a543910b34c7190934a83251ba6ad7a0f"> 3280</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1BinaryConditionalOperator.html#a543910b34c7190934a83251ba6ad7a0f" title="getTrueExpr - Return the subexpression which will be evaluated if the condition evaluates to true; th...">getTrueExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03281"></a><span class="lineno"> 3281</span>     <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]);</div>
+<div class="line"><a name="l03282"></a><span class="lineno"> 3282</span>   }</div>
+<div class="line"><a name="l03283"></a><span class="lineno"> 3283</span> <span class="comment"></span></div>
+<div class="line"><a name="l03284"></a><span class="lineno"> 3284</span> <span class="comment">  /// \brief getFalseExpr - Return the subexpression which will be</span></div>
+<div class="line"><a name="l03285"></a><span class="lineno"> 3285</span> <span class="comment">  ///   evaluated if the condnition evaluates to false; this is</span></div>
+<div class="line"><a name="l03286"></a><span class="lineno"> 3286</span> <span class="comment">  ///   defined in terms of the opaque value.</span></div>
+<div class="line"><a name="l03287"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a6fed6d9bdd5ce0b16c014d82b708099c"> 3287</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1BinaryConditionalOperator.html#a6fed6d9bdd5ce0b16c014d82b708099c" title="getFalseExpr - Return the subexpression which will be evaluated if the condnition evaluates to false;...">getFalseExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03288"></a><span class="lineno"> 3288</span>     <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]);</div>
+<div class="line"><a name="l03289"></a><span class="lineno"> 3289</span>   }</div>
+<div class="line"><a name="l03290"></a><span class="lineno"> 3290</span> </div>
+<div class="line"><a name="l03291"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a34e431d066dfaa29fe3b362939afb1b9"> 3291</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_1BinaryConditionalOperator.html#a34e431d066dfaa29fe3b362939afb1b9">getLocStart</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l03292"></a><span class="lineno"> 3292</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryConditionalOperator.html#a95f4d6dc559c9c19c86fade8b3114393" title="getCommon - Return the common expression, written to the left of the condition. The opaque value will...">getCommon</a>()-><a class="code" href="classclang_1_1Stmt.html#a0270d9cff7ed2b38acb39690b96586d2">getLocStart</a>();</div>
+<div class="line"><a name="l03293"></a><span class="lineno"> 3293</span>   }</div>
+<div class="line"><a name="l03294"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a05994afae7a6d41b08978ce3984ca74b"> 3294</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_1BinaryConditionalOperator.html#a05994afae7a6d41b08978ce3984ca74b">getLocEnd</a>() const LLVM_READONLY {</div>
+<div class="line"><a name="l03295"></a><span class="lineno"> 3295</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1BinaryConditionalOperator.html#a6fed6d9bdd5ce0b16c014d82b708099c" title="getFalseExpr - Return the subexpression which will be evaluated if the condnition evaluates to false;...">getFalseExpr</a>()-><a class="code" href="classclang_1_1Stmt.html#acdd36e45abff718e8134873f9b7448ef">getLocEnd</a>();</div>
+<div class="line"><a name="l03296"></a><span class="lineno"> 3296</span>   }</div>
+<div class="line"><a name="l03297"></a><span class="lineno"> 3297</span> </div>
+<div class="line"><a name="l03298"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a30c7b2c30134786361f9cc1afe40fdc8"> 3298</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1BinaryConditionalOperator.html#a30c7b2c30134786361f9cc1afe40fdc8">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03299"></a><span class="lineno"> 3299</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == BinaryConditionalOperatorClass;</div>
+<div class="line"><a name="l03300"></a><span class="lineno"> 3300</span>   }</div>
+<div class="line"><a name="l03301"></a><span class="lineno"> 3301</span> </div>
+<div class="line"><a name="l03302"></a><span class="lineno"> 3302</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03303"></a><span class="lineno"><a class="code" href="classclang_1_1BinaryConditionalOperator.html#a814277da716834b8c398be0be0817d1b"> 3303</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1BinaryConditionalOperator.html#a814277da716834b8c398be0be0817d1b">children</a>() {</div>
+<div class="line"><a name="l03304"></a><span class="lineno"> 3304</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(SubExprs, SubExprs + NUM_SUBEXPRS);</div>
+<div class="line"><a name="l03305"></a><span class="lineno"> 3305</span>   }</div>
+<div class="line"><a name="l03306"></a><span class="lineno"> 3306</span> };</div>
+<div class="line"><a name="l03307"></a><span class="lineno"> 3307</span> </div>
+<div class="line"><a name="l03308"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aeffaff2841ac6c51481c62dbaa6da068"> 3308</a></span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1AbstractConditionalOperator.html#aeffaff2841ac6c51481c62dbaa6da068">AbstractConditionalOperator::getCond</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03309"></a><span class="lineno"> 3309</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> *co = dyn_cast<ConditionalOperator>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l03310"></a><span class="lineno"> 3310</span>     <span class="keywordflow">return</span> co->getCond();</div>
+<div class="line"><a name="l03311"></a><span class="lineno"> 3311</span>   <span class="keywordflow">return</span> cast<BinaryConditionalOperator>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aeffaff2841ac6c51481c62dbaa6da068">getCond</a>();</div>
+<div class="line"><a name="l03312"></a><span class="lineno"> 3312</span> }</div>
+<div class="line"><a name="l03313"></a><span class="lineno"> 3313</span> </div>
+<div class="line"><a name="l03314"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aefd0046134a76b3b5d4b517d5ad3b7c8"> 3314</a></span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1AbstractConditionalOperator.html#aefd0046134a76b3b5d4b517d5ad3b7c8">AbstractConditionalOperator::getTrueExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03315"></a><span class="lineno"> 3315</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> *co = dyn_cast<ConditionalOperator>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l03316"></a><span class="lineno"> 3316</span>     <span class="keywordflow">return</span> co->getTrueExpr();</div>
+<div class="line"><a name="l03317"></a><span class="lineno"> 3317</span>   <span class="keywordflow">return</span> cast<BinaryConditionalOperator>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#aefd0046134a76b3b5d4b517d5ad3b7c8">getTrueExpr</a>();</div>
+<div class="line"><a name="l03318"></a><span class="lineno"> 3318</span> }</div>
+<div class="line"><a name="l03319"></a><span class="lineno"> 3319</span> </div>
+<div class="line"><a name="l03320"></a><span class="lineno"><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a1b8c4e1f971e272272a329653153e8c1"> 3320</a></span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1AbstractConditionalOperator.html#a1b8c4e1f971e272272a329653153e8c1">AbstractConditionalOperator::getFalseExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03321"></a><span class="lineno"> 3321</span>   <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="classclang_1_1ConditionalOperator.html">ConditionalOperator</a> *co = dyn_cast<ConditionalOperator>(<span class="keyword">this</span>))</div>
+<div class="line"><a name="l03322"></a><span class="lineno"> 3322</span>     <span class="keywordflow">return</span> co->getFalseExpr();</div>
+<div class="line"><a name="l03323"></a><span class="lineno"> 3323</span>   <span class="keywordflow">return</span> cast<BinaryConditionalOperator>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1AbstractConditionalOperator.html#a1b8c4e1f971e272272a329653153e8c1">getFalseExpr</a>();</div>
+<div class="line"><a name="l03324"></a><span class="lineno"> 3324</span> }</div>
+<div class="line"><a name="l03325"></a><span class="lineno"> 3325</span> <span class="comment"></span></div>
+<div class="line"><a name="l03326"></a><span class="lineno"> 3326</span> <span class="comment">/// AddrLabelExpr - The GNU address of label extension, representing &&label.</span></div>
+<div class="line"><a name="l03327"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html"> 3327</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1AddrLabelExpr.html" title="AddrLabelExpr - The GNU address of label extension, representing &&label.">AddrLabelExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03328"></a><span class="lineno"> 3328</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> AmpAmpLoc, LabelLoc;</div>
+<div class="line"><a name="l03329"></a><span class="lineno"> 3329</span>   <a class="code" href="classclang_1_1LabelDecl.html">LabelDecl</a> *Label;</div>
+<div class="line"><a name="l03330"></a><span class="lineno"> 3330</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03331"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a33b3091fdde64baeff47648e9242ea48"> 3331</a></span>   <a class="code" href="classclang_1_1AddrLabelExpr.html#a33b3091fdde64baeff47648e9242ea48">AddrLabelExpr</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> AALoc, <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> LLoc, <a class="code" href="classclang_1_1LabelDecl.html">LabelDecl</a> *L,</div>
+<div class="line"><a name="l03332"></a><span class="lineno"> 3332</span>                 <a class="code" href="classclang_1_1QualType.html">QualType</a> t)</div>
+<div class="line"><a name="l03333"></a><span class="lineno"> 3333</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(AddrLabelExprClass, t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l03334"></a><span class="lineno"> 3334</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l03335"></a><span class="lineno"> 3335</span>       AmpAmpLoc(AALoc), LabelLoc(LLoc), Label(L) {}</div>
+<div class="line"><a name="l03336"></a><span class="lineno"> 3336</span> <span class="comment"></span></div>
+<div class="line"><a name="l03337"></a><span class="lineno"> 3337</span> <span class="comment">  /// \brief Build an empty address of a label expression.</span></div>
+<div class="line"><a name="l03338"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a72d16397a221b18fff039cf4a9699b2f"> 3338</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1AddrLabelExpr.html#a33b3091fdde64baeff47648e9242ea48">AddrLabelExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03339"></a><span class="lineno"> 3339</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(AddrLabelExprClass, Empty) { }</div>
+<div class="line"><a name="l03340"></a><span class="lineno"> 3340</span> </div>
+<div class="line"><a name="l03341"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a4b5e6ba0faead47cd29f334bf8b06d42"> 3341</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_1AddrLabelExpr.html#a4b5e6ba0faead47cd29f334bf8b06d42">getAmpAmpLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> AmpAmpLoc; }</div>
+<div class="line"><a name="l03342"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a5a7816704874324369aafacc9a74db6e"> 3342</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1AddrLabelExpr.html#a5a7816704874324369aafacc9a74db6e">setAmpAmpLoc</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) { AmpAmpLoc = L; }</div>
+<div class="line"><a name="l03343"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a50c23cccc363a2b6c8a9f72d1f5de03c"> 3343</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_1AddrLabelExpr.html#a50c23cccc363a2b6c8a9f72d1f5de03c">getLabelLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> LabelLoc; }</div>
+<div class="line"><a name="l03344"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a28f2afe9ce6476e4c88a86fb66a644b0"> 3344</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1AddrLabelExpr.html#a28f2afe9ce6476e4c88a86fb66a644b0">setLabelLoc</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) { LabelLoc = L; }</div>
+<div class="line"><a name="l03345"></a><span class="lineno"> 3345</span> </div>
+<div class="line"><a name="l03346"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#ae8c344aac293b167716099451dc32a88"> 3346</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_1AddrLabelExpr.html#ae8c344aac293b167716099451dc32a88">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> AmpAmpLoc; }</div>
+<div class="line"><a name="l03347"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#ad9abd15769c4d78078a7b4e5e36a4678"> 3347</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_1AddrLabelExpr.html#ad9abd15769c4d78078a7b4e5e36a4678">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> LabelLoc; }</div>
+<div class="line"><a name="l03348"></a><span class="lineno"> 3348</span> </div>
+<div class="line"><a name="l03349"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#af2951d7c16a37c24ed72ae58c509d9b1"> 3349</a></span>   <a class="code" href="classclang_1_1LabelDecl.html">LabelDecl</a> *<a class="code" href="classclang_1_1AddrLabelExpr.html#af2951d7c16a37c24ed72ae58c509d9b1">getLabel</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Label; }</div>
+<div class="line"><a name="l03350"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a24e78d2a029c7982137364d08b0cd10a"> 3350</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1AddrLabelExpr.html#a24e78d2a029c7982137364d08b0cd10a">setLabel</a>(<a class="code" href="classclang_1_1LabelDecl.html">LabelDecl</a> *L) { Label = L; }</div>
+<div class="line"><a name="l03351"></a><span class="lineno"> 3351</span> </div>
+<div class="line"><a name="l03352"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a03dce8cd766be6235317a4e8e5530b06"> 3352</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1AddrLabelExpr.html#a03dce8cd766be6235317a4e8e5530b06">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03353"></a><span class="lineno"> 3353</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == AddrLabelExprClass;</div>
+<div class="line"><a name="l03354"></a><span class="lineno"> 3354</span>   }</div>
+<div class="line"><a name="l03355"></a><span class="lineno"> 3355</span> </div>
+<div class="line"><a name="l03356"></a><span class="lineno"> 3356</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03357"></a><span class="lineno"><a class="code" href="classclang_1_1AddrLabelExpr.html#a2582565fc2d80f105f41b6fece6ffbd8"> 3357</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1AddrLabelExpr.html#a2582565fc2d80f105f41b6fece6ffbd8">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l03358"></a><span class="lineno"> 3358</span> };</div>
+<div class="line"><a name="l03359"></a><span class="lineno"> 3359</span> <span class="comment"></span></div>
+<div class="line"><a name="l03360"></a><span class="lineno"> 3360</span> <span class="comment">/// StmtExpr - This is the GNU Statement Expression extension: ({int X=4; X;}).</span></div>
+<div class="line"><a name="l03361"></a><span class="lineno"> 3361</span> <span class="comment">/// The StmtExpr contains a single CompoundStmt node, which it evaluates and</span></div>
+<div class="line"><a name="l03362"></a><span class="lineno"> 3362</span> <span class="comment">/// takes the value of the last subexpression.</span></div>
+<div class="line"><a name="l03363"></a><span class="lineno"> 3363</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03364"></a><span class="lineno"> 3364</span> <span class="comment">/// A StmtExpr is always an r-value; values "returned" out of a</span></div>
+<div class="line"><a name="l03365"></a><span class="lineno"> 3365</span> <span class="comment">/// StmtExpr will be copied.</span></div>
+<div class="line"><a name="l03366"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html"> 3366</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1StmtExpr.html">StmtExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03367"></a><span class="lineno"> 3367</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *SubStmt;</div>
+<div class="line"><a name="l03368"></a><span class="lineno"> 3368</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> LParenLoc, RParenLoc;</div>
+<div class="line"><a name="l03369"></a><span class="lineno"> 3369</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03370"></a><span class="lineno"> 3370</span>   <span class="comment">// FIXME: Does type-dependence need to be computed differently?</span></div>
+<div class="line"><a name="l03371"></a><span class="lineno"> 3371</span>   <span class="comment">// FIXME: Do we need to compute instantiation instantiation-dependence for</span></div>
+<div class="line"><a name="l03372"></a><span class="lineno"> 3372</span>   <span class="comment">// statements? (ugh!)</span></div>
+<div class="line"><a name="l03373"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a188db737f71fb5e0eec4cd12b4ba14f6"> 3373</a></span>   <a class="code" href="classclang_1_1StmtExpr.html#a188db737f71fb5e0eec4cd12b4ba14f6">StmtExpr</a>(<a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *substmt, <a class="code" href="classclang_1_1QualType.html">QualType</a> T,</div>
+<div class="line"><a name="l03374"></a><span class="lineno"> 3374</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> lp, <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> rp) :</div>
+<div class="line"><a name="l03375"></a><span class="lineno"> 3375</span>     <a class="code" href="classclang_1_1Expr.html">Expr</a>(StmtExprClass, T, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l03376"></a><span class="lineno"> 3376</span>          T->isDependentType(), <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l03377"></a><span class="lineno"> 3377</span>     SubStmt(substmt), LParenLoc(lp), RParenLoc(rp) { }</div>
+<div class="line"><a name="l03378"></a><span class="lineno"> 3378</span> <span class="comment"></span></div>
+<div class="line"><a name="l03379"></a><span class="lineno"> 3379</span> <span class="comment">  /// \brief Build an empty statement expression.</span></div>
+<div class="line"><a name="l03380"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a58b14cc7579c8375997994f18b48528e"> 3380</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1StmtExpr.html#a58b14cc7579c8375997994f18b48528e" title="Build an empty statement expression.">StmtExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) : <a class="code" href="classclang_1_1Expr.html">Expr</a>(StmtExprClass, Empty) { }</div>
+<div class="line"><a name="l03381"></a><span class="lineno"> 3381</span> </div>
+<div class="line"><a name="l03382"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a0f25641e4a28c9c33580fb2703999958"> 3382</a></span>   <a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *<a class="code" href="classclang_1_1StmtExpr.html#a0f25641e4a28c9c33580fb2703999958">getSubStmt</a>() { <span class="keywordflow">return</span> cast<CompoundStmt>(SubStmt); }</div>
+<div class="line"><a name="l03383"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#acfe4cb2074b7727adbc5f3eafd39032b"> 3383</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *<a class="code" href="classclang_1_1StmtExpr.html#acfe4cb2074b7727adbc5f3eafd39032b">getSubStmt</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<CompoundStmt>(SubStmt); }</div>
+<div class="line"><a name="l03384"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#ae6b49ee32a045cf45939ac29ebab2ee3"> 3384</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StmtExpr.html#ae6b49ee32a045cf45939ac29ebab2ee3">setSubStmt</a>(<a class="code" href="classclang_1_1CompoundStmt.html">CompoundStmt</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) { SubStmt = <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>; }</div>
+<div class="line"><a name="l03385"></a><span class="lineno"> 3385</span> </div>
+<div class="line"><a name="l03386"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a4eb9ee1c97b82123de527c1133db06ee"> 3386</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_1StmtExpr.html#a4eb9ee1c97b82123de527c1133db06ee">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> LParenLoc; }</div>
+<div class="line"><a name="l03387"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a9da58dbc7041a9f748dc931452e39759"> 3387</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_1StmtExpr.html#a9da58dbc7041a9f748dc931452e39759">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03388"></a><span class="lineno"> 3388</span> </div>
+<div class="line"><a name="l03389"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a999c5eefaeb1fb57d0d902b0bfe7bdf7"> 3389</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_1StmtExpr.html#a999c5eefaeb1fb57d0d902b0bfe7bdf7">getLParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> LParenLoc; }</div>
+<div class="line"><a name="l03390"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a6d4686761a2319c3003dec2921abc56c"> 3390</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StmtExpr.html#a6d4686761a2319c3003dec2921abc56c">setLParenLoc</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) { LParenLoc = L; }</div>
+<div class="line"><a name="l03391"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a1d6b9f72c9bc47206992cf4cdfceef3a"> 3391</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_1StmtExpr.html#a1d6b9f72c9bc47206992cf4cdfceef3a">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03392"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a0574297472d9b257618eea82d8d71fb6"> 3392</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1StmtExpr.html#a0574297472d9b257618eea82d8d71fb6">setRParenLoc</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) { RParenLoc = L; }</div>
+<div class="line"><a name="l03393"></a><span class="lineno"> 3393</span> </div>
+<div class="line"><a name="l03394"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a51bd4e783b73be20f20bf2a2727f2ec5"> 3394</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1StmtExpr.html#a51bd4e783b73be20f20bf2a2727f2ec5">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03395"></a><span class="lineno"> 3395</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == StmtExprClass;</div>
+<div class="line"><a name="l03396"></a><span class="lineno"> 3396</span>   }</div>
+<div class="line"><a name="l03397"></a><span class="lineno"> 3397</span> </div>
+<div class="line"><a name="l03398"></a><span class="lineno"> 3398</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03399"></a><span class="lineno"><a class="code" href="classclang_1_1StmtExpr.html#a32333db598cf545fd1feed535fe80292"> 3399</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1StmtExpr.html#a32333db598cf545fd1feed535fe80292">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubStmt, &SubStmt+1); }</div>
+<div class="line"><a name="l03400"></a><span class="lineno"> 3400</span> };</div>
+<div class="line"><a name="l03401"></a><span class="lineno"> 3401</span> </div>
+<div class="line"><a name="l03402"></a><span class="lineno"> 3402</span> <span class="comment"></span></div>
+<div class="line"><a name="l03403"></a><span class="lineno"> 3403</span> <span class="comment">/// ShuffleVectorExpr - clang-specific builtin-in function</span></div>
+<div class="line"><a name="l03404"></a><span class="lineno"> 3404</span> <span class="comment">/// __builtin_shufflevector.</span></div>
+<div class="line"><a name="l03405"></a><span class="lineno"> 3405</span> <span class="comment">/// This AST node represents a operator that does a constant</span></div>
+<div class="line"><a name="l03406"></a><span class="lineno"> 3406</span> <span class="comment">/// shuffle, similar to LLVM's shufflevector instruction. It takes</span></div>
+<div class="line"><a name="l03407"></a><span class="lineno"> 3407</span> <span class="comment">/// two vectors and a variable number of constant indices,</span></div>
+<div class="line"><a name="l03408"></a><span class="lineno"> 3408</span> <span class="comment">/// and returns the appropriately shuffled vector.</span></div>
+<div class="line"><a name="l03409"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html"> 3409</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ShuffleVectorExpr.html">ShuffleVectorExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03410"></a><span class="lineno"> 3410</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> BuiltinLoc, RParenLoc;</div>
+<div class="line"><a name="l03411"></a><span class="lineno"> 3411</span> </div>
+<div class="line"><a name="l03412"></a><span class="lineno"> 3412</span>   <span class="comment">// SubExprs - the list of values passed to the __builtin_shufflevector</span></div>
+<div class="line"><a name="l03413"></a><span class="lineno"> 3413</span>   <span class="comment">// function. The first two are vectors, and the rest are constant</span></div>
+<div class="line"><a name="l03414"></a><span class="lineno"> 3414</span>   <span class="comment">// indices.  The number of values in this list is always</span></div>
+<div class="line"><a name="l03415"></a><span class="lineno"> 3415</span>   <span class="comment">// 2+the number of indices in the vector type.</span></div>
+<div class="line"><a name="l03416"></a><span class="lineno"> 3416</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> **SubExprs;</div>
+<div class="line"><a name="l03417"></a><span class="lineno"> 3417</span>   <span class="keywordtype">unsigned</span> NumExprs;</div>
+<div class="line"><a name="l03418"></a><span class="lineno"> 3418</span> </div>
+<div class="line"><a name="l03419"></a><span class="lineno"> 3419</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03420"></a><span class="lineno"> 3420</span>   <a class="code" href="classclang_1_1ShuffleVectorExpr.html#a4879efba6cf9f2d597f5d17686fd4131">ShuffleVectorExpr</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="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> args, <a class="code" href="classclang_1_1QualType.html">QualType</a> <a class="code" href="classclang_1_1Type.html">Type</a>,</div>
+<div class="line"><a name="l03421"></a><span class="lineno"> 3421</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> BLoc, <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> RP);</div>
+<div class="line"><a name="l03422"></a><span class="lineno"> 3422</span> <span class="comment"></span></div>
+<div class="line"><a name="l03423"></a><span class="lineno"> 3423</span> <span class="comment">  /// \brief Build an empty vector-shuffle expression.</span></div>
+<div class="line"><a name="l03424"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a09bacc0bdb1822e746640b39455e764a"> 3424</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#a4879efba6cf9f2d597f5d17686fd4131">ShuffleVectorExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03425"></a><span class="lineno"> 3425</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ShuffleVectorExprClass, Empty), SubExprs(0) { }</div>
+<div class="line"><a name="l03426"></a><span class="lineno"> 3426</span> </div>
+<div class="line"><a name="l03427"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#aee70f74fc931dc9cac6b90c79db7a2f3"> 3427</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_1ShuffleVectorExpr.html#aee70f74fc931dc9cac6b90c79db7a2f3">getBuiltinLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03428"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#aff87f08827a77f80341ee48716a8d3de"> 3428</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#aff87f08827a77f80341ee48716a8d3de">setBuiltinLoc</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) { BuiltinLoc = L; }</div>
+<div class="line"><a name="l03429"></a><span class="lineno"> 3429</span> </div>
+<div class="line"><a name="l03430"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ae4c51e92fd809b005673277db559a09b"> 3430</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_1ShuffleVectorExpr.html#ae4c51e92fd809b005673277db559a09b">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03431"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a686da65ec43b36f4f7ce0d7248075fbd"> 3431</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#a686da65ec43b36f4f7ce0d7248075fbd">setRParenLoc</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) { RParenLoc = L; }</div>
+<div class="line"><a name="l03432"></a><span class="lineno"> 3432</span> </div>
+<div class="line"><a name="l03433"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#aca6e45212254d1190cfe059edf112145"> 3433</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_1ShuffleVectorExpr.html#aca6e45212254d1190cfe059edf112145">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03434"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a33cd1e1034336bbc5d66ab99253aee4e"> 3434</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_1ShuffleVectorExpr.html#a33cd1e1034336bbc5d66ab99253aee4e">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03435"></a><span class="lineno"> 3435</span> </div>
+<div class="line"><a name="l03436"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ac1e2bb954516c76fdea54aa15a6de98e"> 3436</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#ac1e2bb954516c76fdea54aa15a6de98e">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03437"></a><span class="lineno"> 3437</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ShuffleVectorExprClass;</div>
+<div class="line"><a name="l03438"></a><span class="lineno"> 3438</span>   }</div>
+<div class="line"><a name="l03439"></a><span class="lineno"> 3439</span> <span class="comment"></span></div>
+<div class="line"><a name="l03440"></a><span class="lineno"> 3440</span> <span class="comment">  /// getNumSubExprs - Return the size of the SubExprs array.  This includes the</span></div>
+<div class="line"><a name="l03441"></a><span class="lineno"> 3441</span> <span class="comment">  /// constant expression, the actual arguments passed in, and the function</span></div>
+<div class="line"><a name="l03442"></a><span class="lineno"> 3442</span> <span class="comment">  /// pointers.</span></div>
+<div class="line"><a name="l03443"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#ad2eac086d9a5b0a4ce131f56b20bbb8a"> 3443</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#ad2eac086d9a5b0a4ce131f56b20bbb8a">getNumSubExprs</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> NumExprs; }</div>
+<div class="line"><a name="l03444"></a><span class="lineno"> 3444</span> <span class="comment"></span></div>
+<div class="line"><a name="l03445"></a><span class="lineno"> 3445</span> <span class="comment">  /// \brief Retrieve the array of expressions.</span></div>
+<div class="line"><a name="l03446"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a14f00f27638bb5e4f670ef51ab8b107d"> 3446</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> **<a class="code" href="classclang_1_1ShuffleVectorExpr.html#a14f00f27638bb5e4f670ef51ab8b107d" title="Retrieve the array of expressions.">getSubExprs</a>() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> **<span class="keyword">></span>(SubExprs); }</div>
+<div class="line"><a name="l03447"></a><span class="lineno"> 3447</span> <span class="comment"></span></div>
+<div class="line"><a name="l03448"></a><span class="lineno"> 3448</span> <span class="comment">  /// getExpr - Return the Expr at the specified index.</span></div>
+<div class="line"><a name="l03449"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6"> 3449</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(<span class="keywordtype">unsigned</span> Index) {</div>
+<div class="line"><a name="l03450"></a><span class="lineno"> 3450</span>     assert((Index < NumExprs) && <span class="stringliteral">"Arg access out of range!"</span>);</div>
+<div class="line"><a name="l03451"></a><span class="lineno"> 3451</span>     <span class="keywordflow">return</span> cast<Expr>(SubExprs[Index]);</div>
+<div class="line"><a name="l03452"></a><span class="lineno"> 3452</span>   }</div>
+<div class="line"><a name="l03453"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a18c42a570b1f95503492209888f06f24"> 3453</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ShuffleVectorExpr.html#a18c42a570b1f95503492209888f06f24">getExpr</a>(<span class="keywordtype">unsigned</span> Index)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03454"></a><span class="lineno"> 3454</span>     assert((Index < NumExprs) && <span class="stringliteral">"Arg access out of range!"</span>);</div>
+<div class="line"><a name="l03455"></a><span class="lineno"> 3455</span>     <span class="keywordflow">return</span> cast<Expr>(SubExprs[Index]);</div>
+<div class="line"><a name="l03456"></a><span class="lineno"> 3456</span>   }</div>
+<div class="line"><a name="l03457"></a><span class="lineno"> 3457</span> </div>
+<div class="line"><a name="l03458"></a><span class="lineno"> 3458</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#a265833f924b5b66078d2e2fa10d871fa">setExprs</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="classllvm_1_1ArrayRef.html">ArrayRef<Expr *></a> Exprs);</div>
+<div class="line"><a name="l03459"></a><span class="lineno"> 3459</span> </div>
+<div class="line"><a name="l03460"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a376ba294198926e6970ba74dcfd12944"> 3460</a></span>   llvm::APSInt <a class="code" href="classclang_1_1ShuffleVectorExpr.html#a376ba294198926e6970ba74dcfd12944">getShuffleMaskIdx</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> &Ctx, <span class="keywordtype">unsigned</span> N)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03461"></a><span class="lineno"> 3461</span>     assert((N < NumExprs - 2) && <span class="stringliteral">"Shuffle idx out of range!"</span>);</div>
+<div class="line"><a name="l03462"></a><span class="lineno"> 3462</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#af7d74eeef9d30e879b7e34077879b7a6" title="getExpr - Return the Expr at the specified index.">getExpr</a>(N+2)-><a class="code" href="classclang_1_1Expr.html#a9a303252fadd3163f7349daa10955aa4">EvaluateKnownConstInt</a>(Ctx);</div>
+<div class="line"><a name="l03463"></a><span class="lineno"> 3463</span>   }</div>
+<div class="line"><a name="l03464"></a><span class="lineno"> 3464</span> </div>
+<div class="line"><a name="l03465"></a><span class="lineno"> 3465</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03466"></a><span class="lineno"><a class="code" href="classclang_1_1ShuffleVectorExpr.html#a43fbcd10bf7284767988385016a56101"> 3466</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ShuffleVectorExpr.html#a43fbcd10bf7284767988385016a56101">children</a>() {</div>
+<div class="line"><a name="l03467"></a><span class="lineno"> 3467</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubExprs[0], &SubExprs[0]+NumExprs);</div>
+<div class="line"><a name="l03468"></a><span class="lineno"> 3468</span>   }</div>
+<div class="line"><a name="l03469"></a><span class="lineno"> 3469</span> };</div>
+<div class="line"><a name="l03470"></a><span class="lineno"> 3470</span> <span class="comment"></span></div>
+<div class="line"><a name="l03471"></a><span class="lineno"> 3471</span> <span class="comment">/// ConvertVectorExpr - Clang builtin function __builtin_convertvector</span></div>
+<div class="line"><a name="l03472"></a><span class="lineno"> 3472</span> <span class="comment">/// This AST node provides support for converting a vector type to another</span></div>
+<div class="line"><a name="l03473"></a><span class="lineno"> 3473</span> <span class="comment">/// vector type of the same arity.</span></div>
+<div class="line"><a name="l03474"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html"> 3474</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ConvertVectorExpr.html">ConvertVectorExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03475"></a><span class="lineno"> 3475</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l03476"></a><span class="lineno"> 3476</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *SrcExpr;</div>
+<div class="line"><a name="l03477"></a><span class="lineno"> 3477</span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo;</div>
+<div class="line"><a name="l03478"></a><span class="lineno"> 3478</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> BuiltinLoc, RParenLoc;</div>
+<div class="line"><a name="l03479"></a><span class="lineno"> 3479</span> </div>
+<div class="line"><a name="l03480"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a5d8560551ea81515968dd468e2e4082e"> 3480</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="l03481"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#ad6427d648931017bffcb2f90b8930f9d"> 3481</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l03482"></a><span class="lineno"> 3482</span>   <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ConvertVectorExpr.html">ConvertVectorExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ConvertVectorExprClass, Empty) {}</div>
+<div class="line"><a name="l03483"></a><span class="lineno"> 3483</span> </div>
+<div class="line"><a name="l03484"></a><span class="lineno"> 3484</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03485"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a4a11b1dd98360470e9a44aeef9e9f07e"> 3485</a></span>   <a class="code" href="classclang_1_1ConvertVectorExpr.html">ConvertVectorExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a>* SrcExpr, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TI, <a class="code" href="classclang_1_1QualType.html">QualType</a> DstType,</div>
+<div class="line"><a name="l03486"></a><span class="lineno"> 3486</span>              <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l03487"></a><span class="lineno"> 3487</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> BuiltinLoc, <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> RParenLoc)</div>
+<div class="line"><a name="l03488"></a><span class="lineno"> 3488</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ConvertVectorExprClass, DstType, VK, OK,</div>
+<div class="line"><a name="l03489"></a><span class="lineno"> 3489</span>            DstType->isDependentType(),</div>
+<div class="line"><a name="l03490"></a><span class="lineno"> 3490</span>            DstType->isDependentType() || SrcExpr-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>(),</div>
+<div class="line"><a name="l03491"></a><span class="lineno"> 3491</span>            (DstType->isInstantiationDependentType() ||</div>
+<div class="line"><a name="l03492"></a><span class="lineno"> 3492</span>             SrcExpr-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l03493"></a><span class="lineno"> 3493</span>            (DstType-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03494"></a><span class="lineno"> 3494</span>             SrcExpr-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())),</div>
+<div class="line"><a name="l03495"></a><span class="lineno"> 3495</span>   SrcExpr(SrcExpr), TInfo(TI), BuiltinLoc(BuiltinLoc), RParenLoc(RParenLoc) {}</div>
+<div class="line"><a name="l03496"></a><span class="lineno"> 3496</span> <span class="comment"></span></div>
+<div class="line"><a name="l03497"></a><span class="lineno"> 3497</span> <span class="comment">  /// getSrcExpr - Return the Expr to be converted.</span></div>
+<div class="line"><a name="l03498"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a1cd613a03a7137639665b50a279a5e04"> 3498</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ConvertVectorExpr.html#a1cd613a03a7137639665b50a279a5e04" title="getSrcExpr - Return the Expr to be converted.">getSrcExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SrcExpr); }</div>
+<div class="line"><a name="l03499"></a><span class="lineno"> 3499</span> <span class="comment"></span></div>
+<div class="line"><a name="l03500"></a><span class="lineno"> 3500</span> <span class="comment">  /// getTypeSourceInfo - Return the destination type.</span></div>
+<div class="line"><a name="l03501"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a4e312592013bc116bf877b18fb7eb506"> 3501</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1ConvertVectorExpr.html#a4e312592013bc116bf877b18fb7eb506" title="getTypeSourceInfo - Return the destination type.">getTypeSourceInfo</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03502"></a><span class="lineno"> 3502</span>     <span class="keywordflow">return</span> TInfo;</div>
+<div class="line"><a name="l03503"></a><span class="lineno"> 3503</span>   }</div>
+<div class="line"><a name="l03504"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#ae18f954c386689d35ecc6810d49037ef"> 3504</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ConvertVectorExpr.html#ae18f954c386689d35ecc6810d49037ef">setTypeSourceInfo</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *ti) {</div>
+<div class="line"><a name="l03505"></a><span class="lineno"> 3505</span>     TInfo = ti;</div>
+<div class="line"><a name="l03506"></a><span class="lineno"> 3506</span>   }</div>
+<div class="line"><a name="l03507"></a><span class="lineno"> 3507</span> <span class="comment"></span></div>
+<div class="line"><a name="l03508"></a><span class="lineno"> 3508</span> <span class="comment">  /// getBuiltinLoc - Return the location of the __builtin_convertvector token.</span></div>
+<div class="line"><a name="l03509"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#ad735675493deb1c25b74ac48f0ce5a60"> 3509</a></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_1ConvertVectorExpr.html#ad735675493deb1c25b74ac48f0ce5a60" title="getBuiltinLoc - Return the location of the __builtin_convertvector token.">getBuiltinLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03510"></a><span class="lineno"> 3510</span> <span class="comment"></span></div>
+<div class="line"><a name="l03511"></a><span class="lineno"> 3511</span> <span class="comment">  /// getRParenLoc - Return the location of final right parenthesis.</span></div>
+<div class="line"><a name="l03512"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a1b9c4e647d38437d933a12bab0db6545"> 3512</a></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_1ConvertVectorExpr.html#a1b9c4e647d38437d933a12bab0db6545" title="getRParenLoc - Return the location of final right parenthesis.">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03513"></a><span class="lineno"> 3513</span> </div>
+<div class="line"><a name="l03514"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a0d222a88d85f92c2ac4c09f49400993c"> 3514</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_1ConvertVectorExpr.html#a0d222a88d85f92c2ac4c09f49400993c">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03515"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a4d93c4fa62665addbfb76f7787ba388c"> 3515</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_1ConvertVectorExpr.html#a4d93c4fa62665addbfb76f7787ba388c">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03516"></a><span class="lineno"> 3516</span> </div>
+<div class="line"><a name="l03517"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#a87effaf37329ee3ea68fd5fe06d51681"> 3517</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ConvertVectorExpr.html#a87effaf37329ee3ea68fd5fe06d51681">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03518"></a><span class="lineno"> 3518</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ConvertVectorExprClass;</div>
+<div class="line"><a name="l03519"></a><span class="lineno"> 3519</span>   }</div>
+<div class="line"><a name="l03520"></a><span class="lineno"> 3520</span> </div>
+<div class="line"><a name="l03521"></a><span class="lineno"> 3521</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03522"></a><span class="lineno"><a class="code" href="classclang_1_1ConvertVectorExpr.html#aa3dffd7242a52782ad3e80bfb216c48d"> 3522</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ConvertVectorExpr.html#aa3dffd7242a52782ad3e80bfb216c48d">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SrcExpr, &SrcExpr+1); }</div>
+<div class="line"><a name="l03523"></a><span class="lineno"> 3523</span> };</div>
+<div class="line"><a name="l03524"></a><span class="lineno"> 3524</span> <span class="comment"></span></div>
+<div class="line"><a name="l03525"></a><span class="lineno"> 3525</span> <span class="comment">/// ChooseExpr - GNU builtin-in function __builtin_choose_expr.</span></div>
+<div class="line"><a name="l03526"></a><span class="lineno"> 3526</span> <span class="comment">/// This AST node is similar to the conditional operator (?:) in C, with</span></div>
+<div class="line"><a name="l03527"></a><span class="lineno"> 3527</span> <span class="comment">/// the following exceptions:</span></div>
+<div class="line"><a name="l03528"></a><span class="lineno"> 3528</span> <span class="comment">/// - the test expression must be a integer constant expression.</span></div>
+<div class="line"><a name="l03529"></a><span class="lineno"> 3529</span> <span class="comment">/// - the expression returned acts like the chosen subexpression in every</span></div>
+<div class="line"><a name="l03530"></a><span class="lineno"> 3530</span> <span class="comment">///   visible way: the type is the same as that of the chosen subexpression,</span></div>
+<div class="line"><a name="l03531"></a><span class="lineno"> 3531</span> <span class="comment">///   and all predicates (whether it's an l-value, whether it's an integer</span></div>
+<div class="line"><a name="l03532"></a><span class="lineno"> 3532</span> <span class="comment">///   constant expression, etc.) return the same result as for the chosen</span></div>
+<div class="line"><a name="l03533"></a><span class="lineno"> 3533</span> <span class="comment">///   sub-expression.</span></div>
+<div class="line"><a name="l03534"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html"> 3534</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ChooseExpr.html">ChooseExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03535"></a><span class="lineno"> 3535</span>   <span class="keyword">enum</span> { COND, LHS, RHS, END_EXPR };</div>
+<div class="line"><a name="l03536"></a><span class="lineno"> 3536</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a>* SubExprs[END_EXPR]; <span class="comment">// Left/Middle/Right hand sides.</span></div>
+<div class="line"><a name="l03537"></a><span class="lineno"> 3537</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> BuiltinLoc, RParenLoc;</div>
+<div class="line"><a name="l03538"></a><span class="lineno"> 3538</span>   <span class="keywordtype">bool</span> CondIsTrue;</div>
+<div class="line"><a name="l03539"></a><span class="lineno"> 3539</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03540"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#adad3418c7e5fefb468d338de98690ed8"> 3540</a></span>   <a class="code" href="classclang_1_1ChooseExpr.html#adad3418c7e5fefb468d338de98690ed8">ChooseExpr</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> BLoc, <a class="code" href="classclang_1_1Expr.html">Expr</a> *cond, <a class="code" href="classclang_1_1Expr.html">Expr</a> *lhs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *rhs,</div>
+<div class="line"><a name="l03541"></a><span class="lineno"> 3541</span>              <a class="code" href="classclang_1_1QualType.html">QualType</a> t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340" title="The categorization of expression values, currently following the C++11 scheme.">ExprValueKind</a> VK, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1" title="A further classification of the kind of object referenced by an l-value or x-value.">ExprObjectKind</a> OK,</div>
+<div class="line"><a name="l03542"></a><span class="lineno"> 3542</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> RP, <span class="keywordtype">bool</span> condIsTrue,</div>
+<div class="line"><a name="l03543"></a><span class="lineno"> 3543</span>              <span class="keywordtype">bool</span> TypeDependent, <span class="keywordtype">bool</span> ValueDependent)</div>
+<div class="line"><a name="l03544"></a><span class="lineno"> 3544</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ChooseExprClass, t, VK, OK, TypeDependent, ValueDependent,</div>
+<div class="line"><a name="l03545"></a><span class="lineno"> 3545</span>            (cond-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l03546"></a><span class="lineno"> 3546</span>             lhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>() ||</div>
+<div class="line"><a name="l03547"></a><span class="lineno"> 3547</span>             rhs-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l03548"></a><span class="lineno"> 3548</span>            (cond-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03549"></a><span class="lineno"> 3549</span>             lhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03550"></a><span class="lineno"> 3550</span>             rhs-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())),</div>
+<div class="line"><a name="l03551"></a><span class="lineno"> 3551</span>       BuiltinLoc(BLoc), RParenLoc(RP), CondIsTrue(condIsTrue) {</div>
+<div class="line"><a name="l03552"></a><span class="lineno"> 3552</span>       SubExprs[COND] = cond;</div>
+<div class="line"><a name="l03553"></a><span class="lineno"> 3553</span>       SubExprs[LHS] = lhs;</div>
+<div class="line"><a name="l03554"></a><span class="lineno"> 3554</span>       SubExprs[RHS] = rhs;</div>
+<div class="line"><a name="l03555"></a><span class="lineno"> 3555</span>     }</div>
+<div class="line"><a name="l03556"></a><span class="lineno"> 3556</span> <span class="comment"></span></div>
+<div class="line"><a name="l03557"></a><span class="lineno"> 3557</span> <span class="comment">  /// \brief Build an empty __builtin_choose_expr.</span></div>
+<div class="line"><a name="l03558"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a8d1506b6da4b3d54cb3d3900e2044f31"> 3558</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ChooseExpr.html#a8d1506b6da4b3d54cb3d3900e2044f31" title="Build an empty __builtin_choose_expr.">ChooseExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) : <a class="code" href="classclang_1_1Expr.html">Expr</a>(ChooseExprClass, Empty) { }</div>
+<div class="line"><a name="l03559"></a><span class="lineno"> 3559</span> <span class="comment"></span></div>
+<div class="line"><a name="l03560"></a><span class="lineno"> 3560</span> <span class="comment">  /// isConditionTrue - Return whether the condition is true (i.e. not</span></div>
+<div class="line"><a name="l03561"></a><span class="lineno"> 3561</span> <span class="comment">  /// equal to zero).</span></div>
+<div class="line"><a name="l03562"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a9a53ab976379745e1b67dfb75e219d83"> 3562</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ChooseExpr.html#a9a53ab976379745e1b67dfb75e219d83">isConditionTrue</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03563"></a><span class="lineno"> 3563</span>     assert(!<a class="code" href="classclang_1_1ChooseExpr.html#ac5964beed2456eb5f06f8eb4e6647574">isConditionDependent</a>() &&</div>
+<div class="line"><a name="l03564"></a><span class="lineno"> 3564</span>            <span class="stringliteral">"Dependent condition isn't true or false"</span>);</div>
+<div class="line"><a name="l03565"></a><span class="lineno"> 3565</span>     <span class="keywordflow">return</span> CondIsTrue;</div>
+<div class="line"><a name="l03566"></a><span class="lineno"> 3566</span>   }</div>
+<div class="line"><a name="l03567"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a16ddb72af9d1b19c4636258e65d685bd"> 3567</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ChooseExpr.html#a16ddb72af9d1b19c4636258e65d685bd">setIsConditionTrue</a>(<span class="keywordtype">bool</span> isTrue) { CondIsTrue = isTrue; }</div>
+<div class="line"><a name="l03568"></a><span class="lineno"> 3568</span> </div>
+<div class="line"><a name="l03569"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#ac5964beed2456eb5f06f8eb4e6647574"> 3569</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ChooseExpr.html#ac5964beed2456eb5f06f8eb4e6647574">isConditionDependent</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03570"></a><span class="lineno"> 3570</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ChooseExpr.html#aad35aa022c82dfab40ef8130fb99c7a2">getCond</a>()-><a class="code" href="classclang_1_1Expr.html#a48cd7038510f42d44e314d1b8d294824">isTypeDependent</a>() || <a class="code" href="classclang_1_1ChooseExpr.html#aad35aa022c82dfab40ef8130fb99c7a2">getCond</a>()-><a class="code" href="classclang_1_1Expr.html#a34f1652a9072dfd3c7119d23e1a14fa5">isValueDependent</a>();</div>
+<div class="line"><a name="l03571"></a><span class="lineno"> 3571</span>   }</div>
+<div class="line"><a name="l03572"></a><span class="lineno"> 3572</span> <span class="comment"></span></div>
+<div class="line"><a name="l03573"></a><span class="lineno"> 3573</span> <span class="comment">  /// getChosenSubExpr - Return the subexpression chosen according to the</span></div>
+<div class="line"><a name="l03574"></a><span class="lineno"> 3574</span> <span class="comment">  /// condition.</span></div>
+<div class="line"><a name="l03575"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a7fe9638c5238cf46b7038ef3fe8ee4d5"> 3575</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ChooseExpr.html#a7fe9638c5238cf46b7038ef3fe8ee4d5">getChosenSubExpr</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03576"></a><span class="lineno"> 3576</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ChooseExpr.html#a9a53ab976379745e1b67dfb75e219d83">isConditionTrue</a>() ? <a class="code" href="classclang_1_1ChooseExpr.html#ad41ebaa30fb7f839565e6252b1d23c5e">getLHS</a>() : <a class="code" href="classclang_1_1ChooseExpr.html#a1e747cf710381212b7f767c9adeeff42">getRHS</a>();</div>
+<div class="line"><a name="l03577"></a><span class="lineno"> 3577</span>   }</div>
+<div class="line"><a name="l03578"></a><span class="lineno"> 3578</span> </div>
+<div class="line"><a name="l03579"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#aad35aa022c82dfab40ef8130fb99c7a2"> 3579</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ChooseExpr.html#aad35aa022c82dfab40ef8130fb99c7a2">getCond</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[COND]); }</div>
+<div class="line"><a name="l03580"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#adf8e13ce4a82a6049e6e80b6ce6397fc"> 3580</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ChooseExpr.html#adf8e13ce4a82a6049e6e80b6ce6397fc">setCond</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[COND] = E; }</div>
+<div class="line"><a name="l03581"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#ad41ebaa30fb7f839565e6252b1d23c5e"> 3581</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ChooseExpr.html#ad41ebaa30fb7f839565e6252b1d23c5e">getLHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[LHS]); }</div>
+<div class="line"><a name="l03582"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#aeb6a70135c54d5855c4acf9103d0bf86"> 3582</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ChooseExpr.html#aeb6a70135c54d5855c4acf9103d0bf86">setLHS</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[LHS] = E; }</div>
+<div class="line"><a name="l03583"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a1e747cf710381212b7f767c9adeeff42"> 3583</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1ChooseExpr.html#a1e747cf710381212b7f767c9adeeff42">getRHS</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(SubExprs[RHS]); }</div>
+<div class="line"><a name="l03584"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a6c2c465cdf2fd7b170d0b6673a5ee6d8"> 3584</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ChooseExpr.html#a6c2c465cdf2fd7b170d0b6673a5ee6d8">setRHS</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { SubExprs[RHS] = E; }</div>
+<div class="line"><a name="l03585"></a><span class="lineno"> 3585</span> </div>
+<div class="line"><a name="l03586"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#aa840ead5cacba6b215f4216c65de0871"> 3586</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_1ChooseExpr.html#aa840ead5cacba6b215f4216c65de0871">getBuiltinLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03587"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a47ade841901a613dce6f94e968f14147"> 3587</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ChooseExpr.html#a47ade841901a613dce6f94e968f14147">setBuiltinLoc</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) { BuiltinLoc = L; }</div>
+<div class="line"><a name="l03588"></a><span class="lineno"> 3588</span> </div>
+<div class="line"><a name="l03589"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#ad891b71c3db98cf8b2668622887cb31f"> 3589</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_1ChooseExpr.html#ad891b71c3db98cf8b2668622887cb31f">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03590"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a084b2fecf3d96218da844370bcc0b6d3"> 3590</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ChooseExpr.html#a084b2fecf3d96218da844370bcc0b6d3">setRParenLoc</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) { RParenLoc = L; }</div>
+<div class="line"><a name="l03591"></a><span class="lineno"> 3591</span> </div>
+<div class="line"><a name="l03592"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#aa57b65c5721b63aa79086a5bd45bf118"> 3592</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_1ChooseExpr.html#aa57b65c5721b63aa79086a5bd45bf118">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03593"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a56933c89aaecafeba804360ee692c2e7"> 3593</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_1ChooseExpr.html#a56933c89aaecafeba804360ee692c2e7">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03594"></a><span class="lineno"> 3594</span> </div>
+<div class="line"><a name="l03595"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#afb28a9e0a3c5b95c514ec699bba8d56e"> 3595</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ChooseExpr.html#afb28a9e0a3c5b95c514ec699bba8d56e">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03596"></a><span class="lineno"> 3596</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == ChooseExprClass;</div>
+<div class="line"><a name="l03597"></a><span class="lineno"> 3597</span>   }</div>
+<div class="line"><a name="l03598"></a><span class="lineno"> 3598</span> </div>
+<div class="line"><a name="l03599"></a><span class="lineno"> 3599</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03600"></a><span class="lineno"><a class="code" href="classclang_1_1ChooseExpr.html#a7a90bc2f74671ba1e893f824c97ac98d"> 3600</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1ChooseExpr.html#a7a90bc2f74671ba1e893f824c97ac98d">children</a>() {</div>
+<div class="line"><a name="l03601"></a><span class="lineno"> 3601</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&SubExprs[0], &SubExprs[0]+END_EXPR);</div>
+<div class="line"><a name="l03602"></a><span class="lineno"> 3602</span>   }</div>
+<div class="line"><a name="l03603"></a><span class="lineno"> 3603</span> };</div>
+<div class="line"><a name="l03604"></a><span class="lineno"> 3604</span> <span class="comment"></span></div>
+<div class="line"><a name="l03605"></a><span class="lineno"> 3605</span> <span class="comment">/// GNUNullExpr - Implements the GNU __null extension, which is a name</span></div>
+<div class="line"><a name="l03606"></a><span class="lineno"> 3606</span> <span class="comment">/// for a null pointer constant that has integral type (e.g., int or</span></div>
+<div class="line"><a name="l03607"></a><span class="lineno"> 3607</span> <span class="comment">/// long) and is the same size and alignment as a pointer. The __null</span></div>
+<div class="line"><a name="l03608"></a><span class="lineno"> 3608</span> <span class="comment">/// extension is typically only used by system headers, which define</span></div>
+<div class="line"><a name="l03609"></a><span class="lineno"> 3609</span> <span class="comment">/// NULL as __null in C++ rather than using 0 (which is an integer</span></div>
+<div class="line"><a name="l03610"></a><span class="lineno"> 3610</span> <span class="comment">/// that may not match the size of a pointer).</span></div>
+<div class="line"><a name="l03611"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html"> 3611</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1GNUNullExpr.html">GNUNullExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {<span class="comment"></span></div>
+<div class="line"><a name="l03612"></a><span class="lineno"> 3612</span> <span class="comment">  /// TokenLoc - The location of the __null keyword.</span></div>
+<div class="line"><a name="l03613"></a><span class="lineno"> 3613</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> TokenLoc;</div>
+<div class="line"><a name="l03614"></a><span class="lineno"> 3614</span> </div>
+<div class="line"><a name="l03615"></a><span class="lineno"> 3615</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03616"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#ab726e31c5ebf620818011d3913e14442"> 3616</a></span>   <a class="code" href="classclang_1_1GNUNullExpr.html#ab726e31c5ebf620818011d3913e14442">GNUNullExpr</a>(<a class="code" href="classclang_1_1QualType.html">QualType</a> Ty, <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="l03617"></a><span class="lineno"> 3617</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(GNUNullExprClass, Ty, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>, <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l03618"></a><span class="lineno"> 3618</span>            <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div>
+<div class="line"><a name="l03619"></a><span class="lineno"> 3619</span>       TokenLoc(Loc) { }</div>
+<div class="line"><a name="l03620"></a><span class="lineno"> 3620</span> <span class="comment"></span></div>
+<div class="line"><a name="l03621"></a><span class="lineno"> 3621</span> <span class="comment">  /// \brief Build an empty GNU __null expression.</span></div>
+<div class="line"><a name="l03622"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#accd1c038142126020caa9407b9f83ca8"> 3622</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1GNUNullExpr.html#accd1c038142126020caa9407b9f83ca8" title="Build an empty GNU __null expression.">GNUNullExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) : <a class="code" href="classclang_1_1Expr.html">Expr</a>(GNUNullExprClass, Empty) { }</div>
+<div class="line"><a name="l03623"></a><span class="lineno"> 3623</span> <span class="comment"></span></div>
+<div class="line"><a name="l03624"></a><span class="lineno"> 3624</span> <span class="comment">  /// getTokenLocation - The location of the __null token.</span></div>
+<div class="line"><a name="l03625"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#a8fbc5f0356e54b1b8b64233b25a78429"> 3625</a></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_1GNUNullExpr.html#a8fbc5f0356e54b1b8b64233b25a78429" title="getTokenLocation - The location of the __null token.">getTokenLocation</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TokenLoc; }</div>
+<div class="line"><a name="l03626"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#afb67ca02522929b2e766fdfd787dbd4a"> 3626</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1GNUNullExpr.html#afb67ca02522929b2e766fdfd787dbd4a">setTokenLocation</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) { TokenLoc = L; }</div>
+<div class="line"><a name="l03627"></a><span class="lineno"> 3627</span> </div>
+<div class="line"><a name="l03628"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#a057a1d0eb3a6545f416ebd92d0fa8f25"> 3628</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_1GNUNullExpr.html#a057a1d0eb3a6545f416ebd92d0fa8f25">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> TokenLoc; }</div>
+<div class="line"><a name="l03629"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#ac0bedcbc743d715b8aa89c8ba525b295"> 3629</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_1GNUNullExpr.html#ac0bedcbc743d715b8aa89c8ba525b295">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> TokenLoc; }</div>
+<div class="line"><a name="l03630"></a><span class="lineno"> 3630</span> </div>
+<div class="line"><a name="l03631"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#a76d570c2d070acf54927dba4e09abc61"> 3631</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1GNUNullExpr.html#a76d570c2d070acf54927dba4e09abc61">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03632"></a><span class="lineno"> 3632</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == GNUNullExprClass;</div>
+<div class="line"><a name="l03633"></a><span class="lineno"> 3633</span>   }</div>
+<div class="line"><a name="l03634"></a><span class="lineno"> 3634</span> </div>
+<div class="line"><a name="l03635"></a><span class="lineno"> 3635</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03636"></a><span class="lineno"><a class="code" href="classclang_1_1GNUNullExpr.html#a7a751e28609dfefcc05edef8b4ee34c2"> 3636</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1GNUNullExpr.html#a7a751e28609dfefcc05edef8b4ee34c2">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(); }</div>
+<div class="line"><a name="l03637"></a><span class="lineno"> 3637</span> };</div>
+<div class="line"><a name="l03638"></a><span class="lineno"> 3638</span> <span class="comment"></span></div>
+<div class="line"><a name="l03639"></a><span class="lineno"> 3639</span> <span class="comment">/// VAArgExpr, used for the builtin function __builtin_va_arg.</span></div>
+<div class="line"><a name="l03640"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html"> 3640</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1VAArgExpr.html" title="VAArgExpr, used for the builtin function __builtin_va_arg.">VAArgExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03641"></a><span class="lineno"> 3641</span>   <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *Val;</div>
+<div class="line"><a name="l03642"></a><span class="lineno"> 3642</span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo;</div>
+<div class="line"><a name="l03643"></a><span class="lineno"> 3643</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> BuiltinLoc, RParenLoc;</div>
+<div class="line"><a name="l03644"></a><span class="lineno"> 3644</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03645"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#aea5d50c178eee02c7a6d373ac4a16fa1"> 3645</a></span>   <a class="code" href="classclang_1_1VAArgExpr.html#aea5d50c178eee02c7a6d373ac4a16fa1">VAArgExpr</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> BLoc, <a class="code" href="classclang_1_1Expr.html">Expr</a>* e, <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TInfo,</div>
+<div class="line"><a name="l03646"></a><span class="lineno"> 3646</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> RPLoc, <a class="code" href="classclang_1_1QualType.html">QualType</a> t)</div>
+<div class="line"><a name="l03647"></a><span class="lineno"> 3647</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(VAArgExprClass, t, <a class="code" href="namespaceclang.html#ac7b1e4926b152c0385bc7ec72319a340a7486248bcb086a1f969a9e138208dcd7" title="An r-value expression (a pr-value in the C++11 taxonomy) produces a temporary value.">VK_RValue</a>, <a class="code" href="namespaceclang.html#a3d9d0a7c294c4279add6b726bd3e2bb1a83fc60c978ed1f1be293f1d2fcb6b5c5" title="An ordinary object is located at an address in memory.">OK_Ordinary</a>,</div>
+<div class="line"><a name="l03648"></a><span class="lineno"> 3648</span>            t->isDependentType(), <a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>,</div>
+<div class="line"><a name="l03649"></a><span class="lineno"> 3649</span>            (TInfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()->isInstantiationDependentType() ||</div>
+<div class="line"><a name="l03650"></a><span class="lineno"> 3650</span>             e-><a class="code" href="classclang_1_1Expr.html#ae6915a41dbc08e0c2ce21ab7e4dc6e6c" title="Whether this expression is instantiation-dependent, meaning that it depends in some way on a template...">isInstantiationDependent</a>()),</div>
+<div class="line"><a name="l03651"></a><span class="lineno"> 3651</span>            (TInfo-><a class="code" href="classclang_1_1Expr.html#a3dd8850a4ad8a5b5f595dd9e9446187b">getType</a>()-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>() ||</div>
+<div class="line"><a name="l03652"></a><span class="lineno"> 3652</span>             e-><a class="code" href="classclang_1_1Expr.html#a14a5a1832255ac167153e7389e70ecfd" title="Whether this expression contains an unexpanded parameter pack (for C++11 variadic templates)...">containsUnexpandedParameterPack</a>())),</div>
+<div class="line"><a name="l03653"></a><span class="lineno"> 3653</span>       Val(e), TInfo(TInfo),</div>
+<div class="line"><a name="l03654"></a><span class="lineno"> 3654</span>       BuiltinLoc(BLoc),</div>
+<div class="line"><a name="l03655"></a><span class="lineno"> 3655</span>       RParenLoc(RPLoc) { }</div>
+<div class="line"><a name="l03656"></a><span class="lineno"> 3656</span> <span class="comment"></span></div>
+<div class="line"><a name="l03657"></a><span class="lineno"> 3657</span> <span class="comment">  /// \brief Create an empty __builtin_va_arg expression.</span></div>
+<div class="line"><a name="l03658"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a6477fae9126a929809e81f71be5d4fbc"> 3658</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1VAArgExpr.html#a6477fae9126a929809e81f71be5d4fbc" title="Create an empty __builtin_va_arg expression.">VAArgExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty) : <a class="code" href="classclang_1_1Expr.html">Expr</a>(VAArgExprClass, Empty) { }</div>
+<div class="line"><a name="l03659"></a><span class="lineno"> 3659</span> </div>
+<div class="line"><a name="l03660"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a8718a713d4c2cf595a0fde339a2fd9b6"> 3660</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1VAArgExpr.html#a8718a713d4c2cf595a0fde339a2fd9b6">getSubExpr</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l03661"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#ab1c981bb183c90d30dfed5feede8379c"> 3661</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1VAArgExpr.html#ab1c981bb183c90d30dfed5feede8379c">getSubExpr</a>() { <span class="keywordflow">return</span> cast<Expr>(Val); }</div>
+<div class="line"><a name="l03662"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a8a4409afbb22431106595f682c17eeda"> 3662</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1VAArgExpr.html#a8a4409afbb22431106595f682c17eeda">setSubExpr</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *E) { Val = E; }</div>
+<div class="line"><a name="l03663"></a><span class="lineno"> 3663</span> </div>
+<div class="line"><a name="l03664"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#aa005af932f6c26cba5ad5ca42cbb6612"> 3664</a></span>   <a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *<a class="code" href="classclang_1_1VAArgExpr.html#aa005af932f6c26cba5ad5ca42cbb6612">getWrittenTypeInfo</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> TInfo; }</div>
+<div class="line"><a name="l03665"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#ae9956f2b38437278317b6b4ac5d58970"> 3665</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1VAArgExpr.html#ae9956f2b38437278317b6b4ac5d58970">setWrittenTypeInfo</a>(<a class="code" href="classclang_1_1TypeSourceInfo.html" title="A container of type source information.">TypeSourceInfo</a> *TI) { TInfo = TI; }</div>
+<div class="line"><a name="l03666"></a><span class="lineno"> 3666</span> </div>
+<div class="line"><a name="l03667"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a912c85aecf6c14cce7f7ec689a0e1e39"> 3667</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_1VAArgExpr.html#a912c85aecf6c14cce7f7ec689a0e1e39">getBuiltinLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03668"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#ad97f63b0ea6c805cb208ddcb2871f740"> 3668</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1VAArgExpr.html#ad97f63b0ea6c805cb208ddcb2871f740">setBuiltinLoc</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) { BuiltinLoc = L; }</div>
+<div class="line"><a name="l03669"></a><span class="lineno"> 3669</span> </div>
+<div class="line"><a name="l03670"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a6e9e5a0d4f2ea4acff40b58d99179af2"> 3670</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_1VAArgExpr.html#a6e9e5a0d4f2ea4acff40b58d99179af2">getRParenLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03671"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a16d499b2c95d82b4b04952b5d359300d"> 3671</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1VAArgExpr.html#a16d499b2c95d82b4b04952b5d359300d">setRParenLoc</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) { RParenLoc = L; }</div>
+<div class="line"><a name="l03672"></a><span class="lineno"> 3672</span> </div>
+<div class="line"><a name="l03673"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a64f9b52358f9b4880557a796b23c48fd"> 3673</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_1VAArgExpr.html#a64f9b52358f9b4880557a796b23c48fd">getLocStart</a>() const LLVM_READONLY { <span class="keywordflow">return</span> BuiltinLoc; }</div>
+<div class="line"><a name="l03674"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a807eab76d4e4dfd25b45f1c7daec109f"> 3674</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_1VAArgExpr.html#a807eab76d4e4dfd25b45f1c7daec109f">getLocEnd</a>() const LLVM_READONLY { <span class="keywordflow">return</span> RParenLoc; }</div>
+<div class="line"><a name="l03675"></a><span class="lineno"> 3675</span> </div>
+<div class="line"><a name="l03676"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a9ced7ec4569ad86e0b004452e42d598b"> 3676</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1VAArgExpr.html#a9ced7ec4569ad86e0b004452e42d598b">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03677"></a><span class="lineno"> 3677</span>     <span class="keywordflow">return</span> T-><a class="code" href="classclang_1_1Stmt.html#ac881a5954ff27d475c1bbab6f5d80150">getStmtClass</a>() == VAArgExprClass;</div>
+<div class="line"><a name="l03678"></a><span class="lineno"> 3678</span>   }</div>
+<div class="line"><a name="l03679"></a><span class="lineno"> 3679</span> </div>
+<div class="line"><a name="l03680"></a><span class="lineno"> 3680</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03681"></a><span class="lineno"><a class="code" href="classclang_1_1VAArgExpr.html#a276bce1b6bb8034f0853cb5eb1f0bdc1"> 3681</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1VAArgExpr.html#a276bce1b6bb8034f0853cb5eb1f0bdc1">children</a>() { <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&Val, &Val+1); }</div>
+<div class="line"><a name="l03682"></a><span class="lineno"> 3682</span> };</div>
+<div class="line"><a name="l03683"></a><span class="lineno"> 3683</span> <span class="comment"></span></div>
+<div class="line"><a name="l03684"></a><span class="lineno"> 3684</span> <span class="comment">/// @brief Describes an C or C++ initializer list.</span></div>
+<div class="line"><a name="l03685"></a><span class="lineno"> 3685</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03686"></a><span class="lineno"> 3686</span> <span class="comment">/// InitListExpr describes an initializer list, which can be used to</span></div>
+<div class="line"><a name="l03687"></a><span class="lineno"> 3687</span> <span class="comment">/// initialize objects of different types, including</span></div>
+<div class="line"><a name="l03688"></a><span class="lineno"> 3688</span> <span class="comment">/// struct/class/union types, arrays, and vectors. For example:</span></div>
+<div class="line"><a name="l03689"></a><span class="lineno"> 3689</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03690"></a><span class="lineno"> 3690</span> <span class="comment">/// @code</span></div>
+<div class="line"><a name="l03691"></a><span class="lineno"> 3691</span> <span class="comment">/// struct foo x = { 1, { 2, 3 } };</span></div>
+<div class="line"><a name="l03692"></a><span class="lineno"> 3692</span> <span class="comment">/// @endcode</span></div>
+<div class="line"><a name="l03693"></a><span class="lineno"> 3693</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03694"></a><span class="lineno"> 3694</span> <span class="comment">/// Prior to semantic analysis, an initializer list will represent the</span></div>
+<div class="line"><a name="l03695"></a><span class="lineno"> 3695</span> <span class="comment">/// initializer list as written by the user, but will have the</span></div>
+<div class="line"><a name="l03696"></a><span class="lineno"> 3696</span> <span class="comment">/// placeholder type "void". This initializer list is called the</span></div>
+<div class="line"><a name="l03697"></a><span class="lineno"> 3697</span> <span class="comment">/// syntactic form of the initializer, and may contain C99 designated</span></div>
+<div class="line"><a name="l03698"></a><span class="lineno"> 3698</span> <span class="comment">/// initializers (represented as DesignatedInitExprs), initializations</span></div>
+<div class="line"><a name="l03699"></a><span class="lineno"> 3699</span> <span class="comment">/// of subobject members without explicit braces, and so on. Clients</span></div>
+<div class="line"><a name="l03700"></a><span class="lineno"> 3700</span> <span class="comment">/// interested in the original syntax of the initializer list should</span></div>
+<div class="line"><a name="l03701"></a><span class="lineno"> 3701</span> <span class="comment">/// use the syntactic form of the initializer list.</span></div>
+<div class="line"><a name="l03702"></a><span class="lineno"> 3702</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03703"></a><span class="lineno"> 3703</span> <span class="comment">/// After semantic analysis, the initializer list will represent the</span></div>
+<div class="line"><a name="l03704"></a><span class="lineno"> 3704</span> <span class="comment">/// semantic form of the initializer, where the initializations of all</span></div>
+<div class="line"><a name="l03705"></a><span class="lineno"> 3705</span> <span class="comment">/// subobjects are made explicit with nested InitListExpr nodes and</span></div>
+<div class="line"><a name="l03706"></a><span class="lineno"> 3706</span> <span class="comment">/// C99 designators have been eliminated by placing the designated</span></div>
+<div class="line"><a name="l03707"></a><span class="lineno"> 3707</span> <span class="comment">/// initializations into the subobject they initialize. Additionally,</span></div>
+<div class="line"><a name="l03708"></a><span class="lineno"> 3708</span> <span class="comment">/// any "holes" in the initialization, where no initializer has been</span></div>
+<div class="line"><a name="l03709"></a><span class="lineno"> 3709</span> <span class="comment">/// specified for a particular subobject, will be replaced with</span></div>
+<div class="line"><a name="l03710"></a><span class="lineno"> 3710</span> <span class="comment">/// implicitly-generated ImplicitValueInitExpr expressions that</span></div>
+<div class="line"><a name="l03711"></a><span class="lineno"> 3711</span> <span class="comment">/// value-initialize the subobjects. Note, however, that the</span></div>
+<div class="line"><a name="l03712"></a><span class="lineno"> 3712</span> <span class="comment">/// initializer lists may still have fewer initializers than there are</span></div>
+<div class="line"><a name="l03713"></a><span class="lineno"> 3713</span> <span class="comment">/// elements to initialize within the object.</span></div>
+<div class="line"><a name="l03714"></a><span class="lineno"> 3714</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03715"></a><span class="lineno"> 3715</span> <span class="comment">/// After semantic analysis has completed, given an initializer list,</span></div>
+<div class="line"><a name="l03716"></a><span class="lineno"> 3716</span> <span class="comment">/// method isSemanticForm() returns true if and only if this is the</span></div>
+<div class="line"><a name="l03717"></a><span class="lineno"> 3717</span> <span class="comment">/// semantic form of the initializer list (note: the same AST node</span></div>
+<div class="line"><a name="l03718"></a><span class="lineno"> 3718</span> <span class="comment">/// may at the same time be the syntactic form).</span></div>
+<div class="line"><a name="l03719"></a><span class="lineno"> 3719</span> <span class="comment">/// Given the semantic form of the initializer list, one can retrieve</span></div>
+<div class="line"><a name="l03720"></a><span class="lineno"> 3720</span> <span class="comment">/// the syntactic form of that initializer list (when different)</span></div>
+<div class="line"><a name="l03721"></a><span class="lineno"> 3721</span> <span class="comment">/// using method getSyntacticForm(); the method returns null if applied</span></div>
+<div class="line"><a name="l03722"></a><span class="lineno"> 3722</span> <span class="comment">/// to a initializer list which is already in syntactic form.</span></div>
+<div class="line"><a name="l03723"></a><span class="lineno"> 3723</span> <span class="comment">/// Similarly, given the syntactic form (i.e., an initializer list such</span></div>
+<div class="line"><a name="l03724"></a><span class="lineno"> 3724</span> <span class="comment">/// that isSemanticForm() returns false), one can retrieve the semantic</span></div>
+<div class="line"><a name="l03725"></a><span class="lineno"> 3725</span> <span class="comment">/// form using method getSemanticForm().</span></div>
+<div class="line"><a name="l03726"></a><span class="lineno"> 3726</span> <span class="comment">/// Since many initializer lists have the same syntactic and semantic forms,</span></div>
+<div class="line"><a name="l03727"></a><span class="lineno"> 3727</span> <span class="comment">/// getSyntacticForm() may return NULL, indicating that the current</span></div>
+<div class="line"><a name="l03728"></a><span class="lineno"> 3728</span> <span class="comment">/// semantic initializer list also serves as its syntactic form.</span></div>
+<div class="line"><a name="l03729"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html"> 3729</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03730"></a><span class="lineno"> 3730</span>   <span class="comment">// FIXME: Eliminate this vector in favor of ASTContext allocation</span></div>
+<div class="line"><a name="l03731"></a><span class="lineno"> 3731</span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1ASTVector.html">ASTVector<Stmt *></a> <a class="code" href="classclang_1_1ASTVector.html">InitExprsTy</a>;</div>
+<div class="line"><a name="l03732"></a><span class="lineno"> 3732</span>   <a class="code" href="classclang_1_1ASTVector.html">InitExprsTy</a> InitExprs;</div>
+<div class="line"><a name="l03733"></a><span class="lineno"> 3733</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> LBraceLoc, RBraceLoc;</div>
+<div class="line"><a name="l03734"></a><span class="lineno"> 3734</span> <span class="comment"></span></div>
+<div class="line"><a name="l03735"></a><span class="lineno"> 3735</span> <span class="comment">  /// The alternative form of the initializer list (if it exists).</span></div>
+<div class="line"><a name="l03736"></a><span class="lineno"> 3736</span> <span class="comment">  /// The int part of the pair stores whether this initializer list is</span></div>
+<div class="line"><a name="l03737"></a><span class="lineno"> 3737</span> <span class="comment">  /// in semantic form. If not null, the pointer points to:</span></div>
+<div class="line"><a name="l03738"></a><span class="lineno"> 3738</span> <span class="comment">  ///   - the syntactic form, if this is in semantic form;</span></div>
+<div class="line"><a name="l03739"></a><span class="lineno"> 3739</span> <span class="comment">  ///   - the semantic form, if this is in syntactic form.</span></div>
+<div class="line"><a name="l03740"></a><span class="lineno"> 3740</span> <span class="comment"></span>  llvm::PointerIntPair<InitListExpr *, 1, bool> AltForm;</div>
+<div class="line"><a name="l03741"></a><span class="lineno"> 3741</span> <span class="comment"></span></div>
+<div class="line"><a name="l03742"></a><span class="lineno"> 3742</span> <span class="comment">  /// \brief Either:</span></div>
+<div class="line"><a name="l03743"></a><span class="lineno"> 3743</span> <span class="comment">  ///  If this initializer list initializes an array with more elements than</span></div>
+<div class="line"><a name="l03744"></a><span class="lineno"> 3744</span> <span class="comment">  ///  there are initializers in the list, specifies an expression to be used</span></div>
+<div class="line"><a name="l03745"></a><span class="lineno"> 3745</span> <span class="comment">  ///  for value initialization of the rest of the elements.</span></div>
+<div class="line"><a name="l03746"></a><span class="lineno"> 3746</span> <span class="comment">  /// Or</span></div>
+<div class="line"><a name="l03747"></a><span class="lineno"> 3747</span> <span class="comment">  ///  If this initializer list initializes a union, specifies which</span></div>
+<div class="line"><a name="l03748"></a><span class="lineno"> 3748</span> <span class="comment">  ///  field within the union will be initialized.</span></div>
+<div class="line"><a name="l03749"></a><span class="lineno"> 3749</span> <span class="comment"></span>  llvm::PointerUnion<Expr *, FieldDecl *> ArrayFillerOrUnionFieldInit;</div>
+<div class="line"><a name="l03750"></a><span class="lineno"> 3750</span> </div>
+<div class="line"><a name="l03751"></a><span class="lineno"> 3751</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l03752"></a><span class="lineno"> 3752</span>   <a class="code" href="classclang_1_1InitListExpr.html#a172dccccf043225f6f3fecc4b9e68af5">InitListExpr</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_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> lbraceloc,</div>
+<div class="line"><a name="l03753"></a><span class="lineno"> 3753</span>                <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> initExprs, <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> rbraceloc);</div>
+<div class="line"><a name="l03754"></a><span class="lineno"> 3754</span> <span class="comment"></span></div>
+<div class="line"><a name="l03755"></a><span class="lineno"> 3755</span> <span class="comment">  /// \brief Build an empty initializer list.</span></div>
+<div class="line"><a name="l03756"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ac0216d286c0172027272423eef927063"> 3756</a></span> <span class="comment"></span>  <span class="keyword">explicit</span> <a class="code" href="classclang_1_1InitListExpr.html#a172dccccf043225f6f3fecc4b9e68af5">InitListExpr</a>(<a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a> Empty)</div>
+<div class="line"><a name="l03757"></a><span class="lineno"> 3757</span>     : <a class="code" href="classclang_1_1Expr.html">Expr</a>(InitListExprClass, Empty) { }</div>
+<div class="line"><a name="l03758"></a><span class="lineno"> 3758</span> </div>
+<div class="line"><a name="l03759"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4"> 3759</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a91c5d64d94979c7d6cf707c8ab167545">size</a>(); }</div>
+<div class="line"><a name="l03760"></a><span class="lineno"> 3760</span> <span class="comment"></span></div>
+<div class="line"><a name="l03761"></a><span class="lineno"> 3761</span> <span class="comment">  /// \brief Retrieve the set of initializers.</span></div>
+<div class="line"><a name="l03762"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a9c8e3b94a698c856190bffa2127fe46a"> 3762</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> **<a class="code" href="classclang_1_1InitListExpr.html#a9c8e3b94a698c856190bffa2127fe46a" title="Retrieve the set of initializers.">getInits</a>() { <span class="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span><a class="code" href="classclang_1_1Expr.html">Expr</a> **<span class="keyword">></span>(InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a9371441971f3239747c450976533a499" title="data - Return a pointer to the vector's buffer, even if empty().">data</a>()); }</div>
+<div class="line"><a name="l03763"></a><span class="lineno"> 3763</span> </div>
+<div class="line"><a name="l03764"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2"> 3764</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1InitListExpr.html#a64bef27da665f05c662d2842ad683fd2">getInit</a>(<span class="keywordtype">unsigned</span> Init)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03765"></a><span class="lineno"> 3765</span>     assert(Init < <a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() && <span class="stringliteral">"Initializer access out of range!"</span>);</div>
+<div class="line"><a name="l03766"></a><span class="lineno"> 3766</span>     <span class="keywordflow">return</span> cast_or_null<Expr>(InitExprs[Init]);</div>
+<div class="line"><a name="l03767"></a><span class="lineno"> 3767</span>   }</div>
+<div class="line"><a name="l03768"></a><span class="lineno"> 3768</span> </div>
+<div class="line"><a name="l03769"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a235e103ceecd5213c1b3ea6a0f44c942"> 3769</a></span>   <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1InitListExpr.html#a235e103ceecd5213c1b3ea6a0f44c942">getInit</a>(<span class="keywordtype">unsigned</span> Init) {</div>
+<div class="line"><a name="l03770"></a><span class="lineno"> 3770</span>     assert(Init < <a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() && <span class="stringliteral">"Initializer access out of range!"</span>);</div>
+<div class="line"><a name="l03771"></a><span class="lineno"> 3771</span>     <span class="keywordflow">return</span> cast_or_null<Expr>(InitExprs[Init]);</div>
+<div class="line"><a name="l03772"></a><span class="lineno"> 3772</span>   }</div>
+<div class="line"><a name="l03773"></a><span class="lineno"> 3773</span> </div>
+<div class="line"><a name="l03774"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611"> 3774</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#a6858a240f6329b5c5106e38b96bfb611">setInit</a>(<span class="keywordtype">unsigned</span> Init, <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>) {</div>
+<div class="line"><a name="l03775"></a><span class="lineno"> 3775</span>     assert(Init < <a class="code" href="classclang_1_1InitListExpr.html#ab1b7d5327a3ddd189cd8ef37f346aba4">getNumInits</a>() && <span class="stringliteral">"Initializer access out of range!"</span>);</div>
+<div class="line"><a name="l03776"></a><span class="lineno"> 3776</span>     InitExprs[Init] = <a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>;</div>
+<div class="line"><a name="l03777"></a><span class="lineno"> 3777</span>   }</div>
+<div class="line"><a name="l03778"></a><span class="lineno"> 3778</span> <span class="comment"></span></div>
+<div class="line"><a name="l03779"></a><span class="lineno"> 3779</span> <span class="comment">  /// \brief Reserve space for some number of initializers.</span></div>
+<div class="line"><a name="l03780"></a><span class="lineno"> 3780</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#afe2e0226dfe11b843b3ee311dfefeaa1" title="Reserve space for some number of initializers.">reserveInits</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> NumInits);</div>
+<div class="line"><a name="l03781"></a><span class="lineno"> 3781</span> <span class="comment"></span></div>
+<div class="line"><a name="l03782"></a><span class="lineno"> 3782</span> <span class="comment">  /// @brief Specify the number of initializers</span></div>
+<div class="line"><a name="l03783"></a><span class="lineno"> 3783</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l03784"></a><span class="lineno"> 3784</span> <span class="comment">  /// If there are more than @p NumInits initializers, the remaining</span></div>
+<div class="line"><a name="l03785"></a><span class="lineno"> 3785</span> <span class="comment">  /// initializers will be destroyed. If there are fewer than @p</span></div>
+<div class="line"><a name="l03786"></a><span class="lineno"> 3786</span> <span class="comment">  /// NumInits initializers, NULL expressions will be added for the</span></div>
+<div class="line"><a name="l03787"></a><span class="lineno"> 3787</span> <span class="comment">  /// unknown initializers.</span></div>
+<div class="line"><a name="l03788"></a><span class="lineno"> 3788</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#a53e837eb4723c032fe96aa58bb7e8931" title="Specify the number of initializers.">resizeInits</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>, <span class="keywordtype">unsigned</span> NumInits);</div>
+<div class="line"><a name="l03789"></a><span class="lineno"> 3789</span> <span class="comment"></span></div>
+<div class="line"><a name="l03790"></a><span class="lineno"> 3790</span> <span class="comment">  /// @brief Updates the initializer at index @p Init with the new</span></div>
+<div class="line"><a name="l03791"></a><span class="lineno"> 3791</span> <span class="comment">  /// expression @p expr, and returns the old expression at that</span></div>
+<div class="line"><a name="l03792"></a><span class="lineno"> 3792</span> <span class="comment">  /// location.</span></div>
+<div class="line"><a name="l03793"></a><span class="lineno"> 3793</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l03794"></a><span class="lineno"> 3794</span> <span class="comment">  /// When @p Init is out of range for this initializer list, the</span></div>
+<div class="line"><a name="l03795"></a><span class="lineno"> 3795</span> <span class="comment">  /// initializer list will be extended with NULL expressions to</span></div>
+<div class="line"><a name="l03796"></a><span class="lineno"> 3796</span> <span class="comment">  /// accommodate the new entry.</span></div>
+<div class="line"><a name="l03797"></a><span class="lineno"> 3797</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1InitListExpr.html#a8736c08fc15eded5b30c34b997fd2d8f" title="Updates the initializer at index Init with the new expression expr, and returns the old expression at...">updateInit</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> Init, <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="namespaceclang_1_1ast__matchers.html#a62d0b4c2a483d355a4d740ded606188f" title="Matches expressions.">expr</a>);</div>
+<div class="line"><a name="l03798"></a><span class="lineno"> 3798</span> <span class="comment"></span></div>
+<div class="line"><a name="l03799"></a><span class="lineno"> 3799</span> <span class="comment">  /// \brief If this initializer list initializes an array with more elements</span></div>
+<div class="line"><a name="l03800"></a><span class="lineno"> 3800</span> <span class="comment">  /// than there are initializers in the list, specifies an expression to be</span></div>
+<div class="line"><a name="l03801"></a><span class="lineno"> 3801</span> <span class="comment">  /// used for value initialization of the rest of the elements.</span></div>
+<div class="line"><a name="l03802"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#aedc37ba20a990d2bc3e54a8dae290ea5"> 3802</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1InitListExpr.html#aedc37ba20a990d2bc3e54a8dae290ea5" title="If this initializer list initializes an array with more elements than there are initializers in the l...">getArrayFiller</a>() {</div>
+<div class="line"><a name="l03803"></a><span class="lineno"> 3803</span>     <span class="keywordflow">return</span> ArrayFillerOrUnionFieldInit.dyn_cast<<a class="code" href="classclang_1_1Expr.html">Expr</a> *>();</div>
+<div class="line"><a name="l03804"></a><span class="lineno"> 3804</span>   }</div>
+<div class="line"><a name="l03805"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a3a210b8b74cd5b2119121ce728e0f89e"> 3805</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> *<a class="code" href="classclang_1_1InitListExpr.html#a3a210b8b74cd5b2119121ce728e0f89e">getArrayFiller</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03806"></a><span class="lineno"> 3806</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1InitListExpr.html#aedc37ba20a990d2bc3e54a8dae290ea5" title="If this initializer list initializes an array with more elements than there are initializers in the l...">getArrayFiller</a>();</div>
+<div class="line"><a name="l03807"></a><span class="lineno"> 3807</span>   }</div>
+<div class="line"><a name="l03808"></a><span class="lineno"> 3808</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#a927c5587d39f8871c42c174515a45420">setArrayFiller</a>(<a class="code" href="classclang_1_1Expr.html">Expr</a> *filler);</div>
+<div class="line"><a name="l03809"></a><span class="lineno"> 3809</span> <span class="comment"></span></div>
+<div class="line"><a name="l03810"></a><span class="lineno"> 3810</span> <span class="comment">  /// \brief Return true if this is an array initializer and its array "filler"</span></div>
+<div class="line"><a name="l03811"></a><span class="lineno"> 3811</span> <span class="comment">  /// has been set.</span></div>
+<div class="line"><a name="l03812"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a707cde0d050f6ab1ddd2d263fae0920b"> 3812</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a707cde0d050f6ab1ddd2d263fae0920b" title="Return true if this is an array initializer and its array "filler" has been set.">hasArrayFiller</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="classclang_1_1InitListExpr.html#aedc37ba20a990d2bc3e54a8dae290ea5" title="If this initializer list initializes an array with more elements than there are initializers in the l...">getArrayFiller</a>(); }</div>
+<div class="line"><a name="l03813"></a><span class="lineno"> 3813</span> <span class="comment"></span></div>
+<div class="line"><a name="l03814"></a><span class="lineno"> 3814</span> <span class="comment">  /// \brief If this initializes a union, specifies which field in the</span></div>
+<div class="line"><a name="l03815"></a><span class="lineno"> 3815</span> <span class="comment">  /// union to initialize.</span></div>
+<div class="line"><a name="l03816"></a><span class="lineno"> 3816</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l03817"></a><span class="lineno"> 3817</span> <span class="comment">  /// Typically, this field is the first named field within the</span></div>
+<div class="line"><a name="l03818"></a><span class="lineno"> 3818</span> <span class="comment">  /// union. However, a designated initializer can specify the</span></div>
+<div class="line"><a name="l03819"></a><span class="lineno"> 3819</span> <span class="comment">  /// initialization of a different field within the union.</span></div>
+<div class="line"><a name="l03820"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a"> 3820</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>() {</div>
+<div class="line"><a name="l03821"></a><span class="lineno"> 3821</span>     <span class="keywordflow">return</span> ArrayFillerOrUnionFieldInit.dyn_cast<<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *>();</div>
+<div class="line"><a name="l03822"></a><span class="lineno"> 3822</span>   }</div>
+<div class="line"><a name="l03823"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#addc3eccdf646c74be43181214229108e"> 3823</a></span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *<a class="code" href="classclang_1_1InitListExpr.html#addc3eccdf646c74be43181214229108e">getInitializedFieldInUnion</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03824"></a><span class="lineno"> 3824</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *<span class="keyword">></span>(<span class="keyword">this</span>)-><a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>();</div>
+<div class="line"><a name="l03825"></a><span class="lineno"> 3825</span>   }</div>
+<div class="line"><a name="l03826"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ada2c5d60a22de37a99a744a1db5988fe"> 3826</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#ada2c5d60a22de37a99a744a1db5988fe">setInitializedFieldInUnion</a>(<a class="code" href="classclang_1_1FieldDecl.html">FieldDecl</a> *FD) {</div>
+<div class="line"><a name="l03827"></a><span class="lineno"> 3827</span>     assert((FD == 0</div>
+<div class="line"><a name="l03828"></a><span class="lineno"> 3828</span>             || <a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>() == 0</div>
+<div class="line"><a name="l03829"></a><span class="lineno"> 3829</span>             || <a class="code" href="classclang_1_1InitListExpr.html#a00be38ec80f991a7554541800dc9e48a" title="If this initializes a union, specifies which field in the union to initialize.">getInitializedFieldInUnion</a>() == FD)</div>
+<div class="line"><a name="l03830"></a><span class="lineno"> 3830</span>            && <span class="stringliteral">"Only one field of a union may be initialized at a time!"</span>);</div>
+<div class="line"><a name="l03831"></a><span class="lineno"> 3831</span>     ArrayFillerOrUnionFieldInit = FD;</div>
+<div class="line"><a name="l03832"></a><span class="lineno"> 3832</span>   }</div>
+<div class="line"><a name="l03833"></a><span class="lineno"> 3833</span> </div>
+<div class="line"><a name="l03834"></a><span class="lineno"> 3834</span>   <span class="comment">// Explicit InitListExpr's originate from source code (and have valid source</span></div>
+<div class="line"><a name="l03835"></a><span class="lineno"> 3835</span>   <span class="comment">// locations). Implicit InitListExpr's are created by the semantic analyzer.</span></div>
+<div class="line"><a name="l03836"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a15b6e428fc2e17568f424224bf3329bb"> 3836</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a15b6e428fc2e17568f424224bf3329bb">isExplicit</a>() {</div>
+<div class="line"><a name="l03837"></a><span class="lineno"> 3837</span>     <span class="keywordflow">return</span> LBraceLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && RBraceLoc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>();</div>
+<div class="line"><a name="l03838"></a><span class="lineno"> 3838</span>   }</div>
+<div class="line"><a name="l03839"></a><span class="lineno"> 3839</span> </div>
+<div class="line"><a name="l03840"></a><span class="lineno"> 3840</span>   <span class="comment">// Is this an initializer for an array of characters, initialized by a string</span></div>
+<div class="line"><a name="l03841"></a><span class="lineno"> 3841</span>   <span class="comment">// literal or an @encode?</span></div>
+<div class="line"><a name="l03842"></a><span class="lineno"> 3842</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a5b5af73a0bd066a4d484ad409e3ebefc">isStringLiteralInit</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l03843"></a><span class="lineno"> 3843</span> </div>
+<div class="line"><a name="l03844"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#add9c724b4aeefd087f4e01f1212cf922"> 3844</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_1InitListExpr.html#add9c724b4aeefd087f4e01f1212cf922">getLBraceLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> LBraceLoc; }</div>
+<div class="line"><a name="l03845"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ac5347b5091f43743086e6c78f6a1a198"> 3845</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#ac5347b5091f43743086e6c78f6a1a198">setLBraceLoc</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> Loc) { LBraceLoc = Loc; }</div>
+<div class="line"><a name="l03846"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a4c8fe557e9b57b9dd9d7675a555a5513"> 3846</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_1InitListExpr.html#a4c8fe557e9b57b9dd9d7675a555a5513">getRBraceLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RBraceLoc; }</div>
+<div class="line"><a name="l03847"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ae240b72469808f9f0e1283cabd7fa8ac"> 3847</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#ae240b72469808f9f0e1283cabd7fa8ac">setRBraceLoc</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> Loc) { RBraceLoc = Loc; }</div>
+<div class="line"><a name="l03848"></a><span class="lineno"> 3848</span> </div>
+<div class="line"><a name="l03849"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a78a3bdd8cf77633def4b67b774366030"> 3849</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a78a3bdd8cf77633def4b67b774366030">isSemanticForm</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> AltForm.getInt(); }</div>
+<div class="line"><a name="l03850"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ae7130b369d146b335ae63318f12fa73b"> 3850</a></span>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *<a class="code" href="classclang_1_1InitListExpr.html#ae7130b369d146b335ae63318f12fa73b">getSemanticForm</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03851"></a><span class="lineno"> 3851</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1InitListExpr.html#a78a3bdd8cf77633def4b67b774366030">isSemanticForm</a>() ? 0 : AltForm.getPointer();</div>
+<div class="line"><a name="l03852"></a><span class="lineno"> 3852</span>   }</div>
+<div class="line"><a name="l03853"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8"> 3853</a></span>   <a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *<a class="code" href="classclang_1_1InitListExpr.html#a802842fde8e9d55098e4d6c5dba68ff8">getSyntacticForm</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03854"></a><span class="lineno"> 3854</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1InitListExpr.html#a78a3bdd8cf77633def4b67b774366030">isSemanticForm</a>() ? AltForm.getPointer() : 0;</div>
+<div class="line"><a name="l03855"></a><span class="lineno"> 3855</span>   }</div>
+<div class="line"><a name="l03856"></a><span class="lineno"> 3856</span> </div>
+<div class="line"><a name="l03857"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a1bb0c775f7d3b946209de4b47f82532c"> 3857</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#a1bb0c775f7d3b946209de4b47f82532c">setSyntacticForm</a>(<a class="code" href="classclang_1_1InitListExpr.html" title="Describes an C or C++ initializer list.">InitListExpr</a> *Init) {</div>
+<div class="line"><a name="l03858"></a><span class="lineno"> 3858</span>     AltForm.setPointer(Init);</div>
+<div class="line"><a name="l03859"></a><span class="lineno"> 3859</span>     AltForm.setInt(<span class="keyword">true</span>);</div>
+<div class="line"><a name="l03860"></a><span class="lineno"> 3860</span>     Init->AltForm.setPointer(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l03861"></a><span class="lineno"> 3861</span>     Init->AltForm.setInt(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l03862"></a><span class="lineno"> 3862</span>   }</div>
+<div class="line"><a name="l03863"></a><span class="lineno"> 3863</span> </div>
+<div class="line"><a name="l03864"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a5deb0e3be271ac96bd9080cf51cd5c27"> 3864</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a5deb0e3be271ac96bd9080cf51cd5c27">hadArrayRangeDesignator</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l03865"></a><span class="lineno"> 3865</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a1809e57e2837d50331259cc6cecd9007">InitListExprBits</a>.HadArrayRangeDesignator != 0;</div>
+<div class="line"><a name="l03866"></a><span class="lineno"> 3866</span>   }</div>
+<div class="line"><a name="l03867"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#aee458af383f333d3a251e8af5d6aaddd"> 3867</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1InitListExpr.html#aee458af383f333d3a251e8af5d6aaddd">sawArrayRangeDesignator</a>(<span class="keywordtype">bool</span> ARD = <span class="keyword">true</span>) {</div>
+<div class="line"><a name="l03868"></a><span class="lineno"> 3868</span>     <a class="code" href="classclang_1_1Stmt.html#a1809e57e2837d50331259cc6cecd9007">InitListExprBits</a>.HadArrayRangeDesignator = ARD;</div>
+<div class="line"><a name="l03869"></a><span class="lineno"> 3869</span>   }</div>
+<div class="line"><a name="l03870"></a><span class="lineno"> 3870</span> </div>
+<div class="line"><a name="l03871"></a><span class="lineno"> 3871</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_1InitListExpr.html#af5333c1a2df480f60b225c3279f281dd">getLocStart</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l03872"></a><span class="lineno"> 3872</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_1InitListExpr.html#af6f6f4be77b3490277f43b11d7e2797c">getLocEnd</a>() const LLVM_READONLY;</div>
+<div class="line"><a name="l03873"></a><span class="lineno"> 3873</span> </div>
+<div class="line"><a name="l03874"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a94058ff6a6fd230053e17cbc80a009b9"> 3874</a></span>   static <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1InitListExpr.html#a94058ff6a6fd230053e17cbc80a009b9">classof</a>(const <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *T) {</div>
+<div class="line"><a name="l03875"></a><span class="lineno"> 3875</span>     <span class="keywordflow">return</span> T->getStmtClass() == InitListExprClass;</div>
+<div class="line"><a name="l03876"></a><span class="lineno"> 3876</span>   }</div>
+<div class="line"><a name="l03877"></a><span class="lineno"> 3877</span> </div>
+<div class="line"><a name="l03878"></a><span class="lineno"> 3878</span>   <span class="comment">// Iterators</span></div>
+<div class="line"><a name="l03879"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#afb5c36501f8687f15286c32703ae4827"> 3879</a></span>   <a class="code" href="structclang_1_1StmtRange.html">child_range</a> <a class="code" href="classclang_1_1InitListExpr.html#afb5c36501f8687f15286c32703ae4827">children</a>() {</div>
+<div class="line"><a name="l03880"></a><span class="lineno"> 3880</span>     <span class="keywordflow">if</span> (InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a470156fe3cfd95392d7d5a77104af218">empty</a>()) <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>();</div>
+<div class="line"><a name="l03881"></a><span class="lineno"> 3881</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Stmt.html#a0e31184b9bde2f0d9bed2d81b4252555">child_range</a>(&InitExprs[0], &InitExprs[0] + InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a91c5d64d94979c7d6cf707c8ab167545">size</a>());</div>
+<div class="line"><a name="l03882"></a><span class="lineno"> 3882</span>   }</div>
+<div class="line"><a name="l03883"></a><span class="lineno"> 3883</span> </div>
+<div class="line"><a name="l03884"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ae6d0496d6f48ef6a48fbd4fbc27c8d93"> 3884</a></span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1Stmt.html">InitExprsTy::iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#ae6d0496d6f48ef6a48fbd4fbc27c8d93">iterator</a>;</div>
+<div class="line"><a name="l03885"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a7c18fa9d6eb9ba93cc0d5f6b1f7f6c86"> 3885</a></span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1Stmt.html">InitExprsTy::const_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a7c18fa9d6eb9ba93cc0d5f6b1f7f6c86">const_iterator</a>;</div>
+<div class="line"><a name="l03886"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a27d335faa4b40d11e24a194859244248"> 3886</a></span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1ASTVector.html#a641eadc4fe2a3674c23bf5a17f646129">InitExprsTy::reverse_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a27d335faa4b40d11e24a194859244248">reverse_iterator</a>;</div>
+<div class="line"><a name="l03887"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a304228e8c4c5e3e4aff91ba8658c9468"> 3887</a></span>   <span class="keyword">typedef</span> <a class="code" href="classclang_1_1ASTVector.html#a35886aee911d388c26dca43b8f2e3e01">InitExprsTy::const_reverse_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a304228e8c4c5e3e4aff91ba8658c9468">const_reverse_iterator</a>;</div>
+<div class="line"><a name="l03888"></a><span class="lineno"> 3888</span> </div>
+<div class="line"><a name="l03889"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#aa23cae8543e5d87986d56652a78ebedc"> 3889</a></span>   <a class="code" href="classclang_1_1Stmt.html">iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#aa23cae8543e5d87986d56652a78ebedc">begin</a>() { <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a2a3333e56642da27e62a83be9219ba2f">begin</a>(); }</div>
+<div class="line"><a name="l03890"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ae53b509862ae45765ede2dc3a8cce02a"> 3890</a></span>   <a class="code" href="classclang_1_1Stmt.html">const_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#ae53b509862ae45765ede2dc3a8cce02a">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a2a3333e56642da27e62a83be9219ba2f">begin</a>(); }</div>
+<div class="line"><a name="l03891"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a9ad33b7521b102ec0c86a51e7e21b444"> 3891</a></span>   <a class="code" href="classclang_1_1Stmt.html">iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a9ad33b7521b102ec0c86a51e7e21b444">end</a>() { <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#ab8c57fad9e502348dfe3b7429a8d11de">end</a>(); }</div>
+<div class="line"><a name="l03892"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a0335e4c1ea0f50e6157295ca1e53133c"> 3892</a></span>   <a class="code" href="classclang_1_1Stmt.html">const_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a0335e4c1ea0f50e6157295ca1e53133c">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#ab8c57fad9e502348dfe3b7429a8d11de">end</a>(); }</div>
+<div class="line"><a name="l03893"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a6edaaaf31454a01ba14690bf4e4ec0bb"> 3893</a></span>   <a class="code" href="classclang_1_1InitListExpr.html#a27d335faa4b40d11e24a194859244248">reverse_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a6edaaaf31454a01ba14690bf4e4ec0bb">rbegin</a>() { <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a2c6afe48552563d91d104425cdeeff8a">rbegin</a>(); }</div>
+<div class="line"><a name="l03894"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a27b10740ed971fa9be91b80f235748eb"> 3894</a></span>   <a class="code" href="classclang_1_1InitListExpr.html#a304228e8c4c5e3e4aff91ba8658c9468">const_reverse_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a27b10740ed971fa9be91b80f235748eb">rbegin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a2c6afe48552563d91d104425cdeeff8a">rbegin</a>(); }</div>
+<div class="line"><a name="l03895"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ad5f1ca83d0885898d32e83eec562da5b"> 3895</a></span>   <a class="code" href="classclang_1_1InitListExpr.html#a27d335faa4b40d11e24a194859244248">reverse_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#ad5f1ca83d0885898d32e83eec562da5b">rend</a>() { <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a624ba9eef50bd40c9ba71dd9bd8ee64f">rend</a>(); }</div>
+<div class="line"><a name="l03896"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#a07d868546c39a071432e4f8dce89b77e"> 3896</a></span>   <a class="code" href="classclang_1_1InitListExpr.html#a304228e8c4c5e3e4aff91ba8658c9468">const_reverse_iterator</a> <a class="code" href="classclang_1_1InitListExpr.html#a07d868546c39a071432e4f8dce89b77e">rend</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> InitExprs.<a class="code" href="classclang_1_1ASTVector.html#a624ba9eef50bd40c9ba71dd9bd8ee64f">rend</a>(); }</div>
+<div class="line"><a name="l03897"></a><span class="lineno"> 3897</span> </div>
+<div class="line"><a name="l03898"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ad6427d648931017bffcb2f90b8930f9d"> 3898</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtReader.html">ASTStmtReader</a>;</div>
+<div class="line"><a name="l03899"></a><span class="lineno"><a class="code" href="classclang_1_1InitListExpr.html#ab6b1376d59ae2643970df578c721ae74"> 3899</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTStmtWriter.html">ASTStmtWriter</a>;</div>
+<div class="line"><a name="l03900"></a><span class="lineno"> 3900</span> };</div>
+<div class="line"><a name="l03901"></a><span class="lineno"> 3901</span> <span class="comment"></span></div>
+<div class="line"><a name="l03902"></a><span class="lineno"> 3902</span> <span class="comment">/// @brief Represents a C99 designated initializer expression.</span></div>
+<div class="line"><a name="l03903"></a><span class="lineno"> 3903</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03904"></a><span class="lineno"> 3904</span> <span class="comment">/// A designated initializer expression (C99 6.7.8) contains one or</span></div>
+<div class="line"><a name="l03905"></a><span class="lineno"> 3905</span> <span class="comment">/// more designators (which can be field designators, array</span></div>
+<div class="line"><a name="l03906"></a><span class="lineno"> 3906</span> <span class="comment">/// designators, or GNU array-range designators) followed by an</span></div>
+<div class="line"><a name="l03907"></a><span class="lineno"> 3907</span> <span class="comment">/// expression that initializes the field or element(s) that the</span></div>
+<div class="line"><a name="l03908"></a><span class="lineno"> 3908</span> <span class="comment">/// designators refer to. For example, given:</span></div>
+<div class="line"><a name="l03909"></a><span class="lineno"> 3909</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03910"></a><span class="lineno"> 3910</span> <span class="comment">/// @code</span></div>
+<div class="line"><a name="l03911"></a><span class="lineno"> 3911</span> <span class="comment">/// struct point {</span></div>
+<div class="line"><a name="l03912"></a><span class="lineno"> 3912</span> <span class="comment">///   double x;</span></div>
+<div class="line"><a name="l03913"></a><span class="lineno"> 3913</span> <span class="comment">///   double y;</span></div>
+<div class="line"><a name="l03914"></a><span class="lineno"> 3914</span> <span class="comment">/// };</span></div>
+<div class="line"><a name="l03915"></a><span class="lineno"> 3915</span> <span class="comment">/// struct point ptarray[10] = { [2].y = 1.0, [2].x = 2.0, [0].x = 1.0 };</span></div>
+<div class="line"><a name="l03916"></a><span class="lineno"> 3916</span> <span class="comment">/// @endcode</span></div>
+<div class="line"><a name="l03917"></a><span class="lineno"> 3917</span> <span class="comment">///</span></div>
+<div class="line"><a name="l03918"></a><span class="lineno"> 3918</span> <span class="comment">/// The InitListExpr contains three DesignatedInitExprs, the first of</span></div>
+<div class="line"><a name="l03919"></a><span class="lineno"> 3919</span> <span class="comment">/// which covers @c [2].y=1.0. This DesignatedInitExpr will have two</span></div>
+<div class="line"><a name="l03920"></a><span class="lineno"> 3920</span> <span class="comment">/// designators, one array designator for @c [2] followed by one field</span></div>
+<div class="line"><a name="l03921"></a><span class="lineno"> 3921</span> <span class="comment">/// designator for @c .y. The initialization expression will be 1.0.</span></div>
+<div class="line"><a name="l03922"></a><span class="lineno"><a class="code" href="classclang_1_1DesignatedInitExpr.html"> 3922</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1Expr.html">Expr</a> {</div>
+<div class="line"><a name="l03923"></a><span class="lineno"> 3923</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l03924"></a><span class="lineno"> 3924</span> <span class="comment">  /// \brief Forward declaration of the Designator class.</span></div>
+<div class="line"><a name="l03925"></a><span class="lineno"> 3925</span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">Designator</a>;</div>
+<div class="line"><a name="l03926"></a><span class="lineno"> 3926</span> </div>
+<div class="line"><a name="l03927"></a><span class="lineno"> 3927</span> <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l03928"></a><span class="lineno"> 3928</span> <span class="comment">  /// The location of the '=' or ':' prior to the actual initializer</span></div>
+<div class="line"><a name="l03929"></a><span class="lineno"> 3929</span> <span class="comment">  /// expression.</span></div>
+<div class="line"><a name="l03930"></a><span class="lineno"> 3930</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> EqualOrColonLoc;</div>
+<div class="line"><a name="l03931"></a><span class="lineno"> 3931</span> <span class="comment"></span></div>
+<div class="line"><a name="l03932"></a><span class="lineno"> 3932</span> <span class="comment">  /// Whether this designated initializer used the GNU deprecated</span></div>
+<div class="line"><a name="l03933"></a><span class="lineno"> 3933</span> <span class="comment">  /// syntax rather than the C99 '=' syntax.</span></div>
+<div class="line"><a name="l03934"></a><span class="lineno"> 3934</span> <span class="comment"></span>  <span class="keywordtype">bool</span> GNUSyntax : 1;</div>
+<div class="line"><a name="l03935"></a><span class="lineno"> 3935</span> <span class="comment"></span></div>
+<div class="line"><a name="l03936"></a><span class="lineno"> 3936</span> <span class="comment">  /// The number of designators in this initializer expression.</span></div>
+<div class="line"><a name="l03937"></a><span class="lineno"> 3937</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> NumDesignators : 15;</div>
+<div class="line"><a name="l03938"></a><span class="lineno"> 3938</span> <span class="comment"></span></div>
+<div class="line"><a name="l03939"></a><span class="lineno"> 3939</span> <span class="comment">  /// The number of subexpressions of this initializer expression,</span></div>
+<div class="line"><a name="l03940"></a><span class="lineno"> 3940</span> <span class="comment">  /// which contains both the initializer and any additional</span></div>
+<div class="line"><a name="l03941"></a><span class="lineno"> 3941</span> <span class="comment">  /// expressions used by array and array-range designators.</span></div>
+<div class="line"><a name="l03942"></a><span class="lineno"> 3942</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> NumSubExprs : 16;</div>
+<div class="line"><a name="l03943"></a><span class="lineno"> 3943</span> <span class="comment"></span></div>
+<div class="line"><a name="l03944"></a><span class="lineno"> 3944</span> <span class="comment">  /// \brief The designators in this designated initialization</span></div>
+<div class="line"><a name="l03945"></a><span class="lineno"> 3945</span> <span class="comment">  /// expression.</span></div>
+<div class="line"><a name="l03946"></a><span class="lineno"> 3946</span> <span class="comment"></span>  <a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">Designator</a> *Designators;</div>
+<div class="line"><a name="l03947"></a><span class="lineno"> 3947</span> </div>
+<div class="line"><a name="l03948"></a><span class="lineno"> 3948</span> </div>
+<div class="line"><a name="l03949"></a><span class="lineno"> 3949</span>   <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</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_1QualType.html">QualType</a> Ty, <span class="keywordtype">unsigned</span> NumDesignators,</div>
+<div class="line"><a name="l03950"></a><span class="lineno"> 3950</span>                      <span class="keyword">const</span> <a class="code" href="classclang_1_1DesignatedInitExpr_1_1Designator.html" title="Represents a single C99 designator.">Designator</a> *Designators,</div>
+<div class="line"><a name="l03951"></a><span class="lineno"> 3951</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> EqualOrColonLoc, <span class="keywordtype">bool</span> GNUSyntax,</div>
+<div class="line"><a name="l03952"></a><span class="lineno"> 3952</span>                      <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<Expr*></a> IndexExprs, <a class="code" href="classclang_1_1Expr.html">Expr</a> *Init);</div>
+<div class="line"><a name="l03953"></a><span class="lineno"> 3953</span> </div>
+<div class="line"><a name="l03954"></a><span class="lineno"> 3954</span>   <span class="keyword">explicit</span> <a class="code" href="classclang_1_1DesignatedInitExpr.html" title="Represents a C99 designated initializer expression.">DesignatedInitExpr</a>(<span class="keywordtype">unsigned</span> NumSubExprs)</div>
+<div class="line"><a name="l03955"></a><span class="lineno"> 3955</span>     : <a class="code" href="classclang_1_1Expr.html#a5105d4e41c6667994a61c8af39dbb392">Expr</a>(DesignatedInitExprClass, <a class="code" href="structclang_1_1Stmt_1_1EmptyShell.html" title="A placeholder type used to construct an empty shell of a type, that will be filled in later (e...">EmptyShell</a>()),</div>
+<div class="line"><a name="l03956"></a><span class="lineno"> 3956</span>       NumDesignators(0), NumSubExprs(NumSubExprs), Designators(0) { }</div>
+<div class="line"><a name="l03957"></a><span class="lineno"> 3957</span> </div>
+<div class="line"><a name="l03958"></a><span class="lineno"> 3958</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l03959"></a><span class="lineno"> 3959</span> <span class="comment">  /// A field designator, e.g., ".x".</span></div>

[... 848 lines stripped ...]





More information about the llvm-commits mailing list