[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/SourceLocation_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,224 @@
+<!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: SourceLocation.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="pages.html"><span>Related Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li><a href="globals.html"><span>File Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">SourceLocation.cpp</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceLocation_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//==--- SourceLocation.cpp - Compact identifier for Source Files -*- 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 accessor methods for the FullSourceLoc class.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="SourceLocation_8h.html" title="Defines the clang::SourceLocation class and associated facilities.">clang/Basic/SourceLocation.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "<a class="code" href="PrettyStackTrace_8h.html" title="Defines the PrettyStackTraceEntry class, which is used to make crashes give more contextual informati...">clang/Basic/PrettyStackTrace.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "llvm/Support/MemoryBuffer.h"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <cstdio></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> </div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">// PrettyStackTraceLoc</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="classclang_1_1PrettyStackTraceLoc.html#a8fd259be00cf8eec1fecfce036bcb24e"> 26</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1PrettyStackTraceLoc.html#a8fd259be00cf8eec1fecfce036bcb24e">PrettyStackTraceLoc::print</a>(raw_ostream &OS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keywordflow">if</span> (Loc.<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="l00028"></a><span class="lineno"> 28</span> Loc.<a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(OS, SM);</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> OS << <span class="stringliteral">": "</span>;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> OS << Message << <span class="charliteral">'\n'</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> </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// SourceLocation</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d"> 38</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">SourceLocation::print</a>(raw_ostream &OS, <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>)<span class="keyword">const</span>{</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="keywordflow">if</span> (!<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="l00040"></a><span class="lineno"> 40</span> OS << <span class="stringliteral">"<invalid loc>"</span>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a> PLoc = SM.<a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">getPresumedLoc</a>(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> </div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">if</span> (PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#a1a38ca2e240338cca1b26dc06245f92c" title="Return true if this object is invalid or uninitialized.">isInvalid</a>()) {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> OS << <span class="stringliteral">"<invalid>"</span>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> }</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">// The macro expansion and spelling pos is identical for file locs.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> OS << PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#ad7b3e219f0b8f103d47bdb2516502298" title="Return the presumed filename of this location.">getFilename</a>() << <span class="charliteral">':'</span> << PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30" title="Return the presumed line number of this location.">getLine</a>()</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> << <span class="charliteral">':'</span> << PLoc.<a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f" title="Return the presumed column number of this location.">getColumn</a>();</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> SM.<a class="code" href="classclang_1_1SourceManager.html#ad3c1ffb876357d92e434a633072e8421" title="Given a SourceLocation object Loc, return the expansion location referenced by the ID...">getExpansionLoc</a>(*this).<a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(OS, SM);</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> OS << <span class="stringliteral">" <Spelling="</span>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> SM.<a class="code" href="classclang_1_1SourceManager.html#a989650d5a9a5d7f7bd88f2bbe5e5dc29" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getSpellingLoc</a>(*this).<a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(OS, SM);</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> OS << '><span class="stringliteral">';</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae8878ad26aef040a66762ebb54bf3bed"> 64</a></span> <span class="stringliteral">std::string SourceLocation::printToString(const SourceManager &SM) const {</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="stringliteral"> std::string S;</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="stringliteral"> llvm::raw_string_ostream OS(S);</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="stringliteral"> print(OS, SM);</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="stringliteral"> return OS.str();</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae93fd6807abf849dc2bb276d8e1846b0"> 71</a></span> <span class="stringliteral">void SourceLocation::dump(const SourceManager &SM) const {</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="stringliteral"> print(llvm::errs(), SM);</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="stringliteral">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="stringliteral">// FullSourceLoc</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="stringliteral">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#ae2220ce56fa3fe83cc0d9530ae4e1d56"> 79</a></span> <span class="stringliteral">FileID FullSourceLoc::getFileID() const {</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="stringliteral"> return SrcMgr->getFileID(*this);</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#ae2e4a9834721a370db2f3c76de37f3ae"> 85</a></span> <span class="stringliteral">FullSourceLoc FullSourceLoc::getExpansionLoc() const {</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="stringliteral"> return FullSourceLoc(SrcMgr->getExpansionLoc(*this), *SrcMgr);</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a7fc79886e3b469a10fb885f2fc592a1d"> 90</a></span> <span class="stringliteral">FullSourceLoc FullSourceLoc::getSpellingLoc() const {</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="stringliteral"> return FullSourceLoc(SrcMgr->getSpellingLoc(*this), *SrcMgr);</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a1264de07e1d1d7f97d77256bbc7a47a3"> 95</a></span> <span class="stringliteral">unsigned FullSourceLoc::getExpansionLineNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="stringliteral"> return SrcMgr->getExpansionLineNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a02d3383a8d75d40840cf17de8f5a0b83"> 100</a></span> <span class="stringliteral">unsigned FullSourceLoc::getExpansionColumnNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="stringliteral"> return SrcMgr->getExpansionColumnNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#adcf5bd8d1c4f74936f879e28f721863b"> 105</a></span> <span class="stringliteral">unsigned FullSourceLoc::getSpellingLineNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="stringliteral"> return SrcMgr->getSpellingLineNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a468c34b99347b97f651db48b84bf9c5e"> 110</a></span> <span class="stringliteral">unsigned FullSourceLoc::getSpellingColumnNumber(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="stringliteral"> return SrcMgr->getSpellingColumnNumber(*this, Invalid);</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a38d8ea4f01835db6a5167114cfffbdf0"> 115</a></span> <span class="stringliteral">bool FullSourceLoc::isInSystemHeader() const {</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="stringliteral"> return SrcMgr->isInSystemHeader(*this);</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd"> 120</a></span> <span class="stringliteral">bool FullSourceLoc::isBeforeInTranslationUnitThan(SourceLocation Loc) const {</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="stringliteral"> return SrcMgr->isBeforeInTranslationUnit(*this, Loc);</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a632f9accccc88dea307fb1831ae3348c"> 125</a></span> <span class="stringliteral">void FullSourceLoc::dump() const {</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="stringliteral"> SourceLocation::dump(*SrcMgr);</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a1e7ec7efdf604dbc96ea1a444759c830"> 129</a></span> <span class="stringliteral">const char *FullSourceLoc::getCharacterData(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="stringliteral"> return SrcMgr->getCharacterData(*this, Invalid);</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a7904e132c5dff788656455f3968b1c36"> 134</a></span> <span class="stringliteral">const llvm::MemoryBuffer* FullSourceLoc::getBuffer(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="stringliteral"> assert(isValid());</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="stringliteral"> return SrcMgr->getBuffer(SrcMgr->getFileID(*this), Invalid);</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#add7deab92b4231d88a6ad92303820d2f"> 139</a></span> <span class="stringliteral">StringRef FullSourceLoc::getBufferData(bool *Invalid) const {</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="stringliteral"> return getBuffer(Invalid)->getBuffer();</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="stringliteral">}</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="stringliteral"></span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a7bee4c4ce58788c5157570e2dfc93e3e"> 143</a></span> <span class="stringliteral">std::pair<FileID, unsigned> FullSourceLoc::getDecomposedLoc() const {</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="stringliteral"> return SrcMgr->getDecomposedLoc(*this);</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="stringliteral">}</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more
+information.</p>
+</body>
+</html>
Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,199 @@
+<!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: SourceLocation.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="pages.html"><span>Related Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li><a href="globals.html"><span>File Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li><li class="navelem"><a class="el" href="dir_d56b91025ffac0ac634c9045c122e791.html">Release+Asserts</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">SourceLocation.d</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceLocation_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/SourceLocation.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/SourceLocation.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> SourceLocation.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> </div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> </div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> </div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> </div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> </div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> </div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</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> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</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> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> </div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</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> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> </div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more
+information.</p>
+</body>
+</html>
Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceLocation_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,517 @@
+<!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: SourceLocation.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_84b4cac0f3db7adb733be733ea7bc48e.html">Basic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">SourceLocation.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceLocation_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">//===--- SourceLocation.h - Compact identifier for Source Files -*- 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><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">/// \file</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">/// \brief Defines the clang::SourceLocation class and associated facilities.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"></span><span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#ifndef LLVM_CLANG_SOURCELOCATION_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_SOURCELOCATION_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="LLVM_8h.html" title="Forward declares and imports various common LLVM datatypes that clang wants to use unqualified...">clang/Basic/LLVM.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "llvm/Support/Compiler.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "llvm/Support/PointerLikeTypeTraits.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <cassert></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <functional></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include <utility></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span>MemoryBuffer;</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keyword">struct </span>DenseMapInfo;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">template</span> <<span class="keyword">typename</span> T> <span class="keyword">struct </span>isPodLike;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> }</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> </div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> </div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">class </span>SourceManager;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">/// \brief An opaque identifier used by SourceManager which refers to a</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">/// source file (MemoryBuffer) along with its \#include path and \#line data.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html"> 39</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> /// \brief A mostly-opaque identifier, where 0 is "invalid", >0 is </span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> /// this module, and <-1 is something loaded from another module.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"></span> <span class="keywordtype">int</span> ID;</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#ab975b9cec42834e4d89e323c21c45b73"> 44</a></span> <a class="code" href="classclang_1_1FileID.html#ab975b9cec42834e4d89e323c21c45b73">FileID</a>() : ID(0) {}</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863"> 46</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID == 0; }</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#af9e0b16383b0260e96cfcbb2515c1f47"> 48</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#af9e0b16383b0260e96cfcbb2515c1f47">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID == RHS.ID; }</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a8480c554a27e0864c4a15b7bd63201a3"> 49</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a8480c554a27e0864c4a15b7bd63201a3">operator<</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID < RHS.ID; }</div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a63c4b2d6149e600ab19cac7d58bfafb4"> 50</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a63c4b2d6149e600ab19cac7d58bfafb4">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ID <= RHS.ID; }</div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#ae76a5a4620df119e5e8d8e7fb9903148"> 51</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#ae76a5a4620df119e5e8d8e7fb9903148">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == RHS); }</div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a8c9582c716d8302f6f2fe34c722a9543"> 52</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a8c9582c716d8302f6f2fe34c722a9543">operator></a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RHS < *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a296a3f5290e82ac76683957ae0f4bad5"> 53</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileID.html#a296a3f5290e82ac76683957ae0f4bad5">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> RHS <= *<span class="keyword">this</span>; }</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#afdbd751b1c24199d6be2a18942fdba18"> 55</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="classclang_1_1FileID.html#afdbd751b1c24199d6be2a18942fdba18">getSentinel</a>() { <span class="keywordflow">return</span> <span class="keyword">get</span>(-1); }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a799ef986e3e1203d8108df62b08c7c07"> 56</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FileID.html#a799ef986e3e1203d8108df62b08c7c07">getHashValue</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">static_cast<</span><span class="keywordtype">unsigned</span><span class="keyword">></span>(ID); }</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#aa2732a8586b0c018d6e610cefa09e7a4"> 59</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a05a0d9d61e00c31d180a2a8f1d6f7903"> 60</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTWriter.html" title="Writes an AST file containing the contents of a translation unit.">ASTWriter</a>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1FileID.html#a5d8560551ea81515968dd468e2e4082e"> 61</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="l00062"></a><span class="lineno"> 62</span> </div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="keyword">static</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <span class="keyword">get</span>(<span class="keywordtype">int</span> V) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> F;</div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> F.ID = V;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="keywordflow">return</span> F;</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> <span class="keywordtype">int</span> getOpaqueValue()<span class="keyword"> const </span>{ <span class="keywordflow">return</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="l00069"></a><span class="lineno"> 69</span> };</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment">/// \brief Encodes a location in the source. The SourceManager can decode this</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment">/// to get at the full include stack, line and column information.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment">/// Technically, a source location is simply an offset into the manager's view</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">/// of the input source, which is all input buffers (including macro</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">/// expansions) concatenated in an effectively arbitrary order. The manager</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment">/// actually maintains two blocks of input buffers. One, starting at offset</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment">/// 0 and growing upwards, contains all buffers from this module. The other,</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment">/// starting at the highest possible offset and growing downwards, contains</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">/// buffers of loaded modules.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment">/// In addition, one bit of SourceLocation is used for quick access to the</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment">/// information whether the location is in a file or a macro expansion.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment">/// It is important that this type remains small. It is currently 32 bits wide.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html"> 87</a></span> <span class="comment"></span><span class="keyword">class </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="l00088"></a><span class="lineno"> 88</span> <span class="keywordtype">unsigned</span> ID;</div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#aa2732a8586b0c018d6e610cefa09e7a4"> 89</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a>;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a5d8560551ea81515968dd468e2e4082e"> 90</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="l00091"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a05a0d9d61e00c31d180a2a8f1d6f7903"> 91</a></span> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ASTWriter.html" title="Writes an AST file containing the contents of a translation unit.">ASTWriter</a>;</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keyword">enum</span> LLVM_ENUM_INT_TYPE(<span class="keywordtype">unsigned</span>) {</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> MacroIDBit = 1U << 31</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> };</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb"> 97</a></span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a>() : <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>(0) {}</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc"> 99</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> & MacroIDBit) == 0; }</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d"> 100</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> (<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> & MacroIDBit) != 0; }</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"></span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> /// \brief Return true if this is a valid SourceLocation object.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment"> /// Invalid SourceLocations are often used when events have no corresponding</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment"> /// location in the source (e.g. a diagnostic is required for a command line</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment"> /// option).</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9"> 107</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> != 0; }</div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f"> 108</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> == 0; }</div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment"> /// \brief Return the offset into the manager's global input view.</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment"></span> <span class="keywordtype">unsigned</span> getOffset()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> & ~MacroIDBit;</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> }</div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> </div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">static</span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> getFileLoc(<span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>) {</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> assert((ID & MacroIDBit) == 0 && <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> L;</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> L.ID = <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="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">return</span> L;</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> }</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">static</span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> getMacroLoc(<span class="keywordtype">unsigned</span> ID) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> assert((ID & MacroIDBit) == 0 && <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <a class="code" href="classclang_1_1SourceLocation.html#a416d88f9555c180cf03a9031416457cb">SourceLocation</a> L;</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> L.ID = MacroIDBit | <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>;</div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="keywordflow">return</span> L;</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> }</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="comment"></span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="comment"> /// \brief Return a source location with the specified offset from this</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment"> /// SourceLocation.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa"> 133</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_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(<span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> assert(((getOffset()+Offset) & MacroIDBit) == 0 && <span class="stringliteral">"offset overflow"</span>);</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</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="l00136"></a><span class="lineno"> 136</span> L.ID = ID+<a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="keywordflow">return</span> L;</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> }</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment"></span></div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment"> /// \brief When a SourceLocation itself cannot be used, this returns</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment"> /// an (opaque) 32-bit integer encoding for it.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment"> /// This should only be passed to SourceLocation::getFromRawEncoding, it</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="comment"> /// should not be inspected directly.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a"> 145</a></span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</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="l00146"></a><span class="lineno"> 146</span> <span class="comment"></span></div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="comment"> /// \brief Turn a raw encoding of a SourceLocation object into</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment"> /// a real SourceLocation.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment"> /// \see getRawEncoding.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494"> 151</a></span> <span class="comment"></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">getFromRawEncoding</a>(<span class="keywordtype">unsigned</span> <a class="code" href="Format_8cpp.html#a432f0ba7405248d8ed58e1ef357eb5cc">Encoding</a>) {</div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</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="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> X.ID = <a class="code" href="Format_8cpp.html#a432f0ba7405248d8ed58e1ef357eb5cc">Encoding</a>;</div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> }</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="comment"></span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="comment"> /// \brief When a SourceLocation itself cannot be used, this returns</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="comment"> /// an (opaque) pointer encoding for it.</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="comment"> /// This should only be passed to SourceLocation::getFromPtrEncoding, it</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> <span class="comment"> /// should not be inspected directly.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#a410660a31095189cffafdcca33c81426"> 162</a></span> <span class="comment"></span> <span class="keywordtype">void</span>* <a class="code" href="classclang_1_1SourceLocation.html#a410660a31095189cffafdcca33c81426" title="When a SourceLocation itself cannot be used, this returns an (opaque) pointer encoding for it...">getPtrEncoding</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="comment">// Double cast to avoid a warning "cast to pointer from integer of different</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// size".</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="keywordflow">return</span> (<span class="keywordtype">void</span>*)(uintptr_t)<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> }</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="comment"></span></div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="comment"> /// \brief Turn a pointer encoding of a SourceLocation object back</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="comment"> /// into a real SourceLocation.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1SourceLocation.html#ae523912c613e94b328e339908aa7792a"> 170</a></span> <span class="comment"></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1SourceLocation.html#ae523912c613e94b328e339908aa7792a" title="Turn a pointer encoding of a SourceLocation object back into a real SourceLocation.">getFromPtrEncoding</a>(<span class="keyword">const</span> <span class="keywordtype">void</span> *<a class="code" href="Format_8cpp.html#a432f0ba7405248d8ed58e1ef357eb5cc">Encoding</a>) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">getFromRawEncoding</a>((<span class="keywordtype">unsigned</span>)(uintptr_t)Encoding);</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceLocation.html#ae4ea241af69a871313e928909db6633d">print</a>(raw_ostream &OS, <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>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> LLVM_ATTRIBUTE_USED std::string <a class="code" href="classclang_1_1SourceLocation.html#ae8878ad26aef040a66762ebb54bf3bed">printToString</a>(<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>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceLocation.html#ae93fd6807abf849dc2bb276d8e1846b0">dump</a>(<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>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> };</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="code" href="namespaceclang.html#af69e8561fc620afde23763728d8f8551"> 179</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a291d36360b70f878533d50fde94b1465">operator==</a>(<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> &LHS, <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> &RHS) {</div>
+<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() == RHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> }</div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno"><a class="code" href="namespaceclang.html#ac46dbf187e89fce84ba9cfc4431c0f31"> 183</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#aafe7017f6d734340af27ef4e92b19b77">operator!=</a>(<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> &LHS, <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> &RHS) {</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="keywordflow">return</span> !(LHS == RHS);</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> }</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="namespaceclang.html#a257a73888f07ffc86da7e6fd16a62c8a"> 187</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<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> &LHS, <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> &RHS) {</div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() < RHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> }</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment"></span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="comment">/// \brief A trival tuple used to represent a source range.</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html"> 192</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> {</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</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> B;</div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</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> E;</div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a431e265f62d4d4ea0070595f7f2f5611"> 196</a></span> <a class="code" href="classclang_1_1SourceRange.html#a431e265f62d4d4ea0070595f7f2f5611">SourceRange</a>(): B(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>()), E(<a class="code" href="classclang_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="l00197"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a0d350817923d0558b9bd5a4e4f886721"> 197</a></span> <a class="code" href="classclang_1_1SourceRange.html#a0d350817923d0558b9bd5a4e4f886721">SourceRange</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> <a class="code" href="namespaceclang_1_1ast__matchers.html#af2a0068a0d7c4962e52a7a70967fa5df" title="Matches TypeLocs for which the given inner QualType-matcher matches.">loc</a>) : B(loc), E(loc) {}</div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#afd932d51c42bf85bb7717296937464a3"> 198</a></span> <a class="code" href="classclang_1_1SourceRange.html#afd932d51c42bf85bb7717296937464a3">SourceRange</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> begin, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> end) : B(begin), E(end) {}</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> </div>
+<div class="line"><a name="l00200"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208"> 200</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_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> B; }</div>
+<div class="line"><a name="l00201"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0"> 201</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_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> E; }</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd"> 203</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd">setBegin</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> b) { B = b; }</div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#af322eeeb77d6c139e13026445159e795"> 204</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceRange.html#af322eeeb77d6c139e13026445159e795">setEnd</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> e) { E = e; }</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6"> 206</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> B.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && E.<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="l00207"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#ad4b210c1ce478d3e76c9e8e27bad7745"> 207</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#ad4b210c1ce478d3e76c9e8e27bad7745">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>(); }</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a77f9ec3201fc3b59d2d19415cf9be01c"> 209</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#a77f9ec3201fc3b59d2d19415cf9be01c">operator==</a>(<span class="keyword">const</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="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">return</span> B == X.B && E == X.E;</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> }</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="classclang_1_1SourceRange.html#a64ad669027651618a1de5db759907f33"> 213</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceRange.html#a64ad669027651618a1de5db759907f33">operator!=</a>(<span class="keyword">const</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="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="keywordflow">return</span> B != X.B || E != X.E;</div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> }</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> };</div>
+<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment"></span></div>
+<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> <span class="comment">/// \brief Represents a character-granular source range.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> <span class="comment">/// The underlying SourceRange can either specify the starting/ending character</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> <span class="comment">/// of the range, or it can specify the start of the range and the start of the</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment">/// last token of the range (a "token range"). In the token range case, the</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">/// size of the last token must be measured to determine the actual end of the</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment">/// range.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html"> 225</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> { </div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</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="l00227"></a><span class="lineno"> 227</span> <span class="keywordtype">bool</span> IsTokenRange;</div>
+<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd"> 229</a></span> <a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">CharSourceRange</a>() : IsTokenRange(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) {}</div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#aac858384059ce4b757133b8207b59210"> 230</a></span> <a class="code" href="classclang_1_1CharSourceRange.html#aac858384059ce4b757133b8207b59210">CharSourceRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R, <span class="keywordtype">bool</span> ITR) : Range(R), IsTokenRange(ITR) {}</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> </div>
+<div class="line"><a name="l00232"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d"> 232</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">getTokenRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R) {</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">CharSourceRange</a>(R, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> }</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e"> 236</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e">getCharRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a> R) {</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#af07f1ec855808cd279d961dfae53dfbd">CharSourceRange</a>(R, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> }</div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a6ab577e4c75d0929e5cac2844f93cb9b"> 240</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a6ab577e4c75d0929e5cac2844f93cb9b">getTokenRange</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> B, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> E) {</div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#a5763cf308a9499dde63046fab463a61d">getTokenRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(B, E));</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> }</div>
+<div class="line"><a name="l00243"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a25c35441ee19a63cc96303e2328f0f94"> 243</a></span> <span class="keyword">static</span> <a class="code" href="classclang_1_1CharSourceRange.html" title="Represents a character-granular source range.">CharSourceRange</a> <a class="code" href="classclang_1_1CharSourceRange.html#a25c35441ee19a63cc96303e2328f0f94">getCharRange</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> B, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> E) {</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1CharSourceRange.html#a3a85bd6fe56a23b41680fb7893ce8e2e">getCharRange</a>(<a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(B, E));</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> }</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="comment"></span></div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="comment"> /// \brief Return true if the end of this range specifies the start of</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment"> /// the last token. Return false if the end of this range specifies the last</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment"> /// character in the range.</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a9bc337ba1c6e4e47e0f997196525d12f"> 250</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#a9bc337ba1c6e4e47e0f997196525d12f" title="Return true if the end of this range specifies the start of the last token. Return false if the end o...">isTokenRange</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsTokenRange; }</div>
+<div class="line"><a name="l00251"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#aea5e195bc938e58aebd1700dc68b026a"> 251</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#aea5e195bc938e58aebd1700dc68b026a">isCharRange</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !IsTokenRange; }</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div>
+<div class="line"><a name="l00253"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a93f9ab18a904f1c089698b99dace2e82"> 253</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_1CharSourceRange.html#a93f9ab18a904f1c089698b99dace2e82">getBegin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#a890dff14560eb9aceb08be18dfe74208">getBegin</a>(); }</div>
+<div class="line"><a name="l00254"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a2a3d04e2491bd5b564a1bf4c975ff3f0"> 254</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_1CharSourceRange.html#a2a3d04e2491bd5b564a1bf4c975ff3f0">getEnd</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#a982d28235ad96ce81b3e8144b7b245c0">getEnd</a>(); }</div>
+<div class="line"><a name="l00255"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a6fb958e9fcaefeabaaa1218deaac6964"> 255</a></span> <span class="keyword">const</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_1CharSourceRange.html#a6fb958e9fcaefeabaaa1218deaac6964">getAsRange</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range; }</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> </div>
+<div class="line"><a name="l00257"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a4ba3b241ea39bea4376261afa070ffb2"> 257</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharSourceRange.html#a4ba3b241ea39bea4376261afa070ffb2">setBegin</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> b) { Range.<a class="code" href="classclang_1_1SourceRange.html#a11fd265391224233491b6a0d351b8acd">setBegin</a>(b); }</div>
+<div class="line"><a name="l00258"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a05b87fb9e32aa0feba10d190abaedf8f"> 258</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1CharSourceRange.html#a05b87fb9e32aa0feba10d190abaedf8f">setEnd</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> e) { Range.<a class="code" href="classclang_1_1SourceRange.html#af322eeeb77d6c139e13026445159e795">setEnd</a>(e); }</div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> </div>
+<div class="line"><a name="l00260"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a955059fb73be57a32a33a4115783e519"> 260</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#a955059fb73be57a32a33a4115783e519">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Range.<a class="code" href="classclang_1_1SourceRange.html#acdaac0809b0eec9ce9ec88e1a9da7fb6">isValid</a>(); }</div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="code" href="classclang_1_1CharSourceRange.html#a1e4858d56ba9cff184a5280dbacfe786"> 261</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1CharSourceRange.html#a1e4858d56ba9cff184a5280dbacfe786">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> !<a class="code" href="classclang_1_1CharSourceRange.html#a955059fb73be57a32a33a4115783e519">isValid</a>(); }</div>
+<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> };</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="comment"></span></div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="comment">/// \brief A SourceLocation and its associated SourceManager.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="comment">/// This is useful for argument passing to functions that expect both objects.</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html"> 267</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> : <span class="keyword">public</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="l00268"></a><span class="lineno"> 268</span> <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> *SrcMgr;</div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="comment"> /// \brief Creates a FullSourceLoc where isValid() returns \c false.</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a38c206216b3bf354bfd2a675bec5716c"> 271</a></span> <span class="comment"></span> <span class="keyword">explicit</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a38c206216b3bf354bfd2a675bec5716c" title="Creates a FullSourceLoc where isValid() returns false.">FullSourceLoc</a>() : SrcMgr(0) {}</div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> </div>
+<div class="line"><a name="l00273"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a275ab529eb804ed420f77e35accd892a"> 273</a></span> <span class="keyword">explicit</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a38c206216b3bf354bfd2a675bec5716c" title="Creates a FullSourceLoc where isValid() returns false.">FullSourceLoc</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, <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="l00274"></a><span class="lineno"> 274</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), SrcMgr(&SM) {}</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="comment"></span></div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="comment"> /// \pre This FullSourceLoc has an associated SourceManager.</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a90ff11b13596b28b7b4a89f6c6c22a91"> 277</a></span> <span class="comment"></span> <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="classclang_1_1FullSourceLoc.html#a90ff11b13596b28b7b4a89f6c6c22a91">getManager</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> assert(SrcMgr && <span class="stringliteral">"SourceManager is NULL."</span>);</div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="keywordflow">return</span> *SrcMgr;</div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> }</div>
+<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> </div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="classclang_1_1FullSourceLoc.html#ae2220ce56fa3fe83cc0d9530ae4e1d56">getFileID</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> </div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> <a class="code" href="classclang_1_1FullSourceLoc.html#ae2e4a9834721a370db2f3c76de37f3ae">getExpansionLoc</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> <a class="code" href="classclang_1_1FullSourceLoc.html#a7fc79886e3b469a10fb885f2fc592a1d">getSpellingLoc</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a1264de07e1d1d7f97d77256bbc7a47a3">getExpansionLineNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a02d3383a8d75d40840cf17de8f5a0b83">getExpansionColumnNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> </div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#adcf5bd8d1c4f74936f879e28f721863b">getSpellingLineNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a468c34b99347b97f651db48b84bf9c5e">getSpellingColumnNumber</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> </div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1FullSourceLoc.html#a1e7ec7efdf604dbc96ea1a444759c830">getCharacterData</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="keyword">const</span> llvm::MemoryBuffer* <a class="code" href="classclang_1_1FullSourceLoc.html#a7904e132c5dff788656455f3968b1c36">getBuffer</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="comment"></span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="comment"> /// \brief Return a StringRef to the source buffer data for the</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> <span class="comment"> /// specified FileID.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment"></span> StringRef <a class="code" href="classclang_1_1FullSourceLoc.html#add7deab92b4231d88a6ad92303820d2f" title="Return a StringRef to the source buffer data for the specified FileID.">getBufferData</a>(<span class="keywordtype">bool</span> *Invalid = 0) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> <span class="comment"></span></div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> <span class="comment"> /// \brief Decompose the specified location into a raw FileID + Offset pair.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment"> /// The first element is the FileID, the second is the offset from the</span></div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="comment"> /// start of the buffer of the location.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment"></span> std::pair<FileID, unsigned> <a class="code" href="classclang_1_1FullSourceLoc.html#a7bee4c4ce58788c5157570e2dfc93e3e" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a38d8ea4f01835db6a5167114cfffbdf0">isInSystemHeader</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> <span class="comment"></span></div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment"> /// \brief Determines the order of 2 source locations in the translation unit.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> <span class="comment"> /// \returns true if this source location comes before 'Loc', false otherwise.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</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) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> <span class="comment"></span></div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> <span class="comment"> /// \brief Determines the order of 2 source locations in the translation unit.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="comment"> /// \returns true if this source location comes before 'Loc', false otherwise.</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#ab1510920cd58824b163431d0fb8f2903"> 317</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FullSourceLoc.html#ab1510920cd58824b163431d0fb8f2903" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</a>(<a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> Loc)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> assert(Loc.<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="l00319"></a><span class="lineno"> 319</span> assert(SrcMgr == Loc.SrcMgr && <span class="stringliteral">"Loc comes from another SourceManager!"</span>);</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</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);</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> }</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="comment"></span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="comment"> /// \brief Comparison function class, useful for sorting FullSourceLocs.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"><a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html"> 324</a></span> <span class="comment"></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html" title="Comparison function class, useful for sorting FullSourceLocs.">BeforeThanCompare</a> : <span class="keyword">public</span> std::binary_function<FullSourceLoc,</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> FullSourceLoc, bool> {</div>
+<div class="line"><a name="l00326"></a><span class="lineno"><a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html#aab4ef2efce81872a281f25e37d191b6b"> 326</a></span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1FullSourceLoc_1_1BeforeThanCompare.html#aab4ef2efce81872a281f25e37d191b6b">operator()</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a>& lhs, <span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a>& rhs)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">return</span> lhs.<a class="code" href="classclang_1_1FullSourceLoc.html#a097886812169883f64c5701fb0e87bfd" title="Determines the order of 2 source locations in the translation unit.">isBeforeInTranslationUnitThan</a>(rhs);</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</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> <span class="comment"></span></div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="comment"> /// \brief Prints information about this FullSourceLoc to stderr.</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="comment"> /// This is useful for debugging.</span></div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="comment"></span> LLVM_ATTRIBUTE_USED <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FullSourceLoc.html#a632f9accccc88dea307fb1831ae3348c" title="Prints information about this FullSourceLoc to stderr.">dump</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> </div>
+<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a8bc12cabd8565d0c8e0a536d8e906144"> 337</a></span> <a class="code" href="classclang_1_1FullSourceLoc.html#a8bc12cabd8565d0c8e0a536d8e906144">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &LHS, <span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &RHS) {</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> <span class="keywordflow">return</span> LHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() == RHS.<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>() &&</div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> LHS.SrcMgr == RHS.SrcMgr;</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> </div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keyword">friend</span> <span class="keyword">inline</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno"><a class="code" href="classclang_1_1FullSourceLoc.html#a6e91e73e080448d9b8d6971a89ff634b"> 343</a></span> <a class="code" href="classclang_1_1FullSourceLoc.html#a6e91e73e080448d9b8d6971a89ff634b">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &LHS, <span class="keyword">const</span> <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> &RHS) {</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> <span class="keywordflow">return</span> !(LHS == RHS);</div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> }</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> </div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> };</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="comment"></span></div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> <span class="comment">/// \brief Represents an unpacked "presumed" location which can be presented</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="comment">/// to the user.</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> <span class="comment">/// A 'presumed' location can be modified by \#line and GNU line marker</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="comment">/// directives and is always the expansion point of a normal location.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> <span class="comment">/// You can get a PresumedLoc from a SourceLocation with SourceManager.</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html"> 356</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a> {</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Filename;</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> <span class="keywordtype">unsigned</span> Line, Col;</div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</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> IncludeLoc;</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00361"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a940d4a57030454e8198fa73ce842e593"> 361</a></span> <a class="code" href="classclang_1_1PresumedLoc.html#a940d4a57030454e8198fa73ce842e593">PresumedLoc</a>() : Filename(0) {}</div>
+<div class="line"><a name="l00362"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a26149d6092eb78efa9e852a360440f04"> 362</a></span> <a class="code" href="classclang_1_1PresumedLoc.html#a940d4a57030454e8198fa73ce842e593">PresumedLoc</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *FN, <span class="keywordtype">unsigned</span> Ln, <span class="keywordtype">unsigned</span> Co, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IL)</div>
+<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> : Filename(FN), Line(Ln), Col(Co), IncludeLoc(IL) {</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> }</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="comment"></span></div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="comment"> /// \brief Return true if this object is invalid or uninitialized.</span></div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="comment"> /// This occurs when created with invalid source locations or when walking</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="comment"> /// off the top of a \#include stack.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a1a38ca2e240338cca1b26dc06245f92c"> 370</a></span> <span class="comment"></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PresumedLoc.html#a1a38ca2e240338cca1b26dc06245f92c" title="Return true if this object is invalid or uninitialized.">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Filename == 0; }</div>
+<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a507bb1ade126b405a32b69d19c5cc4fa"> 371</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1PresumedLoc.html#a507bb1ade126b405a32b69d19c5cc4fa">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Filename != 0; }</div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> <span class="comment"></span></div>
+<div class="line"><a name="l00373"></a><span class="lineno"> 373</span> <span class="comment"> /// \brief Return the presumed filename of this location.</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> <span class="comment"> /// This can be affected by \#line etc.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#ad7b3e219f0b8f103d47bdb2516502298"> 376</a></span> <span class="comment"></span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1PresumedLoc.html#ad7b3e219f0b8f103d47bdb2516502298" title="Return the presumed filename of this location.">getFilename</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Filename; }</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 Return the presumed line number of this location.</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <span class="comment"> /// This can be affected by \#line etc.</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30"> 381</a></span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30" title="Return the presumed line number of this location.">getLine</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Line; }</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> <span class="comment"></span></div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> <span class="comment"> /// \brief Return the presumed column number of this location.</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="comment"> /// This cannot be affected by \#line, but is packaged here for convenience.</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f"> 386</a></span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f" title="Return the presumed column number of this location.">getColumn</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Col; }</div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment"></span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment"> /// \brief Return the presumed include location of this location.</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"> /// This can be affected by GNU linemarker directives.</span></div>
+<div class="line"><a name="l00391"></a><span class="lineno"><a class="code" href="classclang_1_1PresumedLoc.html#a49a829eb782c4ad756c4131fd138b914"> 391</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_1PresumedLoc.html#a49a829eb782c4ad756c4131fd138b914" title="Return the presumed include location of this location.">getIncludeLoc</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IncludeLoc; }</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> };</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> </div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> </div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> </div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> <span class="keyword">namespace </span>llvm {<span class="comment"></span></div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="comment"> /// Define DenseMapInfo so that FileID's can be used as keys in DenseMap and</span></div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> <span class="comment"> /// DenseSets.</span></div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> <span class="comment"></span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00401"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html"> 401</a></span> <span class="keyword">struct </span><a class="code" href="structllvm_1_1DenseMapInfo.html">DenseMapInfo</a><clang::FileID> {</div>
+<div class="line"><a name="l00402"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a2f0bad157dac3901f792ddf3eb1886c9"> 402</a></span> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">clang::FileID</a> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a2f0bad157dac3901f792ddf3eb1886c9">getEmptyKey</a>() {</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">clang::FileID</a>();</div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> }</div>
+<div class="line"><a name="l00405"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a05df86c8aa088a1f6ab1e77af8b3f4cb"> 405</a></span> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">clang::FileID</a> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a05df86c8aa088a1f6ab1e77af8b3f4cb">getTombstoneKey</a>() {</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html#afdbd751b1c24199d6be2a18942fdba18">clang::FileID::getSentinel</a>();</div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> }</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> </div>
+<div class="line"><a name="l00409"></a><span class="lineno"><a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#af08b5bbb3491cfd7f7a61f5e04bfd51a"> 409</a></span> <span class="keyword">static</span> <span class="keywordtype">unsigned</span> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#af08b5bbb3491cfd7f7a61f5e04bfd51a">getHashValue</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">clang::FileID</a> <a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> <span class="keywordflow">return</span> S.<a class="code" href="classclang_1_1FileID.html#a799ef986e3e1203d8108df62b08c7c07">getHashValue</a>();</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="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a88fc5e5eb522b3a65c4fc9605ad3c000"> 413</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="structllvm_1_1DenseMapInfo_3_01clang_1_1FileID_01_4.html#a88fc5e5eb522b3a65c4fc9605ad3c000">isEqual</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">clang::FileID</a> LHS, <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">clang::FileID</a> RHS) {</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> <span class="keywordflow">return</span> LHS == RHS;</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> }</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> };</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> </div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00419"></a><span class="lineno"><a class="code" href="structllvm_1_1isPodLike_3_01clang_1_1SourceLocation_01_4.html#a49ee8c5b1ff6e92cf9d5b54b2d38a54d"> 419</a></span> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isPodLike.html">isPodLike</a><clang::SourceLocation> { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>; };</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="keyword">template</span> <></div>
+<div class="line"><a name="l00421"></a><span class="lineno"><a class="code" href="structllvm_1_1isPodLike_3_01clang_1_1FileID_01_4.html#a7e99475b4de9932ae8a086e676f9fa5e"> 421</a></span> <span class="keyword">struct </span><a class="code" href="structllvm_1_1isPodLike.html">isPodLike</a><clang::FileID> { <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">bool</span> value = <span class="keyword">true</span>; };</div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> </div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="comment">// Teach SmallPtrSet how to handle SourceLocation.</span></div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="keyword">template</span><></div>
+<div class="line"><a name="l00425"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html"> 425</a></span> <span class="keyword">class </span><a class="code" href="classllvm_1_1PointerLikeTypeTraits.html">PointerLikeTypeTraits</a><clang::SourceLocation> {</div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00427"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a8c7d92497ad07291cc85c0c1ca7441f8"> 427</a></span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">void</span> *<a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a8c7d92497ad07291cc85c0c1ca7441f8">getAsVoidPointer</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...">clang::SourceLocation</a> L) {</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="keywordflow">return</span> L.<a class="code" href="classclang_1_1SourceLocation.html#a410660a31095189cffafdcca33c81426" title="When a SourceLocation itself cannot be used, this returns an (opaque) pointer encoding for it...">getPtrEncoding</a>();</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> }</div>
+<div class="line"><a name="l00430"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a6c3ed6d24414070a798ab34f8a5052e7"> 430</a></span> <span class="keyword">static</span> <span class="keyword">inline</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...">clang::SourceLocation</a> <a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#a6c3ed6d24414070a798ab34f8a5052e7">getFromVoidPointer</a>(<span class="keywordtype">void</span> *<a class="code" href="TokenAnnotator_8cpp.html#a0bf8bdaf8596b1161b6ce63c4232a1fb">P</a>) {</div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">clang::SourceLocation::getFromRawEncoding</a>((<span class="keywordtype">unsigned</span>)(uintptr_t)P);</div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> }</div>
+<div class="line"><a name="l00433"></a><span class="lineno"><a class="code" href="classllvm_1_1PointerLikeTypeTraits_3_01clang_1_1SourceLocation_01_4.html#ad7cdf5ab52c8dd4432e2c597c267e02dab8d94ff5b7371fc66b72265a5a15b784"> 433</a></span> <span class="keyword">enum</span> { NumLowBitsAvailable = 0 };</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> };</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> } <span class="comment">// end namespace llvm</span></div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more
+information.</p>
+</body>
+</html>
Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManagerInternals_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,212 @@
+<!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: SourceManagerInternals.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_84b4cac0f3db7adb733be733ea7bc48e.html">Basic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">SourceManagerInternals.h</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceManagerInternals_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">//===--- SourceManagerInternals.h - SourceManager Internals -----*- 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><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">/// \file</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">/// \brief Defines implementation details of the clang::SourceManager class.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"></span><span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#ifndef LLVM_CLANG_SOURCEMANAGER_INTERNALS_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_SOURCEMANAGER_INTERNALS_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "<a class="code" href="SourceLocation_8h.html" title="Defines the clang::SourceLocation class and associated facilities.">clang/Basic/SourceLocation.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "llvm/ADT/StringMap.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment">// Line Table Implementation</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html"> 29</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> /// \brief The offset in this file that the line entry occurs at.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c"> 31</a></span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> /// \brief The presumed line number of this line entry: \#line 4.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#acf5b379f52141d4db0e4bf8b7776ec71"> 34</a></span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#acf5b379f52141d4db0e4bf8b7776ec71" title="The presumed line number of this line entry: #line 4.">LineNo</a>;</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> /// \brief The ID of the filename identified by this line entry:</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> /// \#line 4 "foo.c". This is -1 if not specified.</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a23b179c3db67f7efb3b146f7591c8dea"> 38</a></span> <span class="comment"></span> <span class="keywordtype">int</span> <a class="code" href="structclang_1_1LineEntry.html#a23b179c3db67f7efb3b146f7591c8dea" title="The ID of the filename identified by this line entry: #line 4 "foo.c". This is -1 if not specified...">FilenameID</a>;</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"></span></div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> /// \brief Set the 0 if no flags, 1 if a system header,</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e"> 41</a></span> <span class="comment"></span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> <a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"> /// \brief The offset of the virtual include stack location,</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> /// which is manipulated by GNU linemarker directives.</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> /// If this is 0 then there is no virtual \#includer.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9"> 47</a></span> <span class="comment"></span> <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> </div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="structclang_1_1LineEntry.html#ad13f9a48c50609d6bde0229b5350cb38"> 49</a></span> <span class="keyword">static</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> <span class="keyword">get</span>(<span class="keywordtype">unsigned</span> Offs, <span class="keywordtype">unsigned</span> <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>, <span class="keywordtype">int</span> Filename,</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> <a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>,</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a>) {</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> E;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> E.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a> = Offs;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> E.<a class="code" href="structclang_1_1LineEntry.html#acf5b379f52141d4db0e4bf8b7776ec71" title="The presumed line number of this line entry: #line 4.">LineNo</a> = <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> E.<a class="code" href="structclang_1_1LineEntry.html#a23b179c3db67f7efb3b146f7591c8dea" title="The ID of the filename identified by this line entry: #line 4 "foo.c". This is -1 if not specified...">FilenameID</a> = Filename;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> E.<a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a> = <a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> E.<a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a> = <a class="code" href="structclang_1_1LineEntry.html#a7250adfe8a0529ff5f86726ac05899a9" title="The offset of the virtual include stack location, which is manipulated by GNU linemarker directives...">IncludeOffset</a>;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="keywordflow">return</span> E;</div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> }</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> };</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// needed for FindNearestLineEntry (upper_bound of LineEntry)</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="namespaceclang.html#a83177037441e4f1adaa35cf403ed53d9"> 63</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &lhs, <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &rhs) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">// FIXME: should check the other field?</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="keywordflow">return</span> lhs.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a> < rhs.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> }</div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="namespaceclang.html#a600cc93c49d49aada5bef2b80e5ea8fd"> 68</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &E, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="keywordflow">return</span> E.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a> < <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="namespaceclang.html#af5ff179e19f726cca6994afd8e0e51b9"> 72</a></span> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="namespaceclang.html#a51e572049a11fe5cf42e8da840bf69af">operator<</a>(<span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>, <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> &E) {</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keywordflow">return</span> Offset < E.<a class="code" href="structclang_1_1LineEntry.html#a3b80896bc47083c07c6abe62992cf95c" title="The offset in this file that the line entry occurs at.">FileOffset</a>;</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> }</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"></span></div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment">/// \brief Used to hold and unique data used to represent \#line information.</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html"> 77</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> /// \brief Map used to assign unique IDs to filenames in \#line directives. </span></div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> /// This allows us to unique the filenames that</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> /// frequently reoccur and reference them with indices. FilenameIDs holds</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"> /// the mapping from string -> ID, and FilenamesByID holds the mapping of ID</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> /// to string.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"></span> llvm::StringMap<unsigned, llvm::BumpPtrAllocator> FilenameIDs;</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> std::vector<llvm::StringMapEntry<unsigned>*> FilenamesByID;</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="comment"></span></div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment"> /// \brief Map from FileIDs to a list of line entries (sorted by the offset</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment"> /// at which they occur in the file).</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment"></span> std::map<FileID, std::vector<LineEntry> > LineEntries;</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#ac35c913584f1e1e9728f32d4c572b0d7"> 91</a></span> <a class="code" href="classclang_1_1LineTableInfo.html#ac35c913584f1e1e9728f32d4c572b0d7">LineTableInfo</a>() {</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> }</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a80f9f7699989ef43c8623a5cb3ee0154"> 94</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a80f9f7699989ef43c8623a5cb3ee0154">clear</a>() {</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> FilenameIDs.clear();</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> FilenamesByID.clear();</div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> LineEntries.clear();</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> }</div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#aa0cbe648a40142e3348c1afaefb4a2c3"> 100</a></span> <a class="code" href="classclang_1_1LineTableInfo.html#aa0cbe648a40142e3348c1afaefb4a2c3">~LineTableInfo</a>() {}</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> </div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1LineTableInfo.html#a842cdc0e9adf93719e56bbe70902c796">getLineTableFilenameID</a>(StringRef Str);</div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a1a0c8b5b5abd15dda916410e0e2042c7"> 103</a></span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1LineTableInfo.html#a1a0c8b5b5abd15dda916410e0e2042c7">getFilename</a>(<span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> assert(ID < FilenamesByID.size() && <span class="stringliteral">"Invalid FilenameID"</span>);</div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordflow">return</span> FilenamesByID[<a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>]->getKeyData();</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }</div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a7ed1991c24004528dd5b8797a3bad2a7"> 107</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1LineTableInfo.html#a7ed1991c24004528dd5b8797a3bad2a7">getNumFilenames</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FilenamesByID.size(); }</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">AddLineNote</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID);</div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">AddLineNote</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID,</div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">unsigned</span> EntryExit, <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> FileKind);</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment"> /// \brief Find the line entry nearest to FID that is before it.</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> <span class="comment"> ///</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="comment"> /// If there is no line entry before \p Offset in \p FID, returns null.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment"></span> <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *<a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// Low-level access</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa"> 122</a></span> <span class="keyword">typedef</span> std::map<FileID, std::vector<LineEntry> ><a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">::iterator</a> <a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">iterator</a>;</div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#ad0ee093c9f61217b5120fbe4d2dd418d"> 123</a></span> <a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">iterator</a> <a class="code" href="classclang_1_1LineTableInfo.html#ad0ee093c9f61217b5120fbe4d2dd418d">begin</a>() { <span class="keywordflow">return</span> LineEntries.begin(); }</div>
+<div class="line"><a name="l00124"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a8c72ce1444fde0a77494b8d794abb2d8"> 124</a></span> <a class="code" href="classclang_1_1LineTableInfo.html#a65acfe598cf59e9be23211f59f99d3aa">iterator</a> <a class="code" href="classclang_1_1LineTableInfo.html#a8c72ce1444fde0a77494b8d794abb2d8">end</a>() { <span class="keywordflow">return</span> LineEntries.end(); }</div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="comment"></span></div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment"> /// \brief Add a new line entry that has already been encoded into</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment"> /// the internal representation of the line table.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="comment"></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#ac5e09d5950dde43066054321e1900179" title="Add a new line entry that has already been encoded into the internal representation of the line table...">AddEntry</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keyword">const</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a>);</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> };</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more
+information.</p>
+</body>
+</html>
Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2287 @@
+<!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: SourceManager.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="pages.html"><span>Related Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li><a href="globals.html"><span>File Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">SourceManager.cpp</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceManager_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">//===--- SourceManager.cpp - Track and cache source files -----------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// This file implements the SourceManager interface.</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="preprocessor">#include "<a class="code" href="Diagnostic_8h.html" title="Defines the Diagnostic-related interfaces.">clang/Basic/Diagnostic.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="preprocessor">#include "<a class="code" href="FileManager_8h.html" title="Defines the clang::FileManager interface and associated types.">clang/Basic/FileManager.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="preprocessor">#include "<a class="code" href="SourceManagerInternals_8h.html" title="Defines implementation details of the clang::SourceManager class.">clang/Basic/SourceManagerInternals.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="preprocessor">#include "llvm/ADT/Optional.h"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include "llvm/ADT/STLExtras.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include "llvm/ADT/StringSwitch.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include "llvm/Support/Capacity.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include "llvm/Support/Compiler.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include "llvm/Support/MemoryBuffer.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include <algorithm></span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include <cstring></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="preprocessor">#include <sys/stat.h></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">using namespace </span>SrcMgr;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">using</span> llvm::MemoryBuffer;</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// SourceManager Helper Classes</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ad66d7273710f04a69e95df98e7ad0a85"> 39</a></span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ad66d7273710f04a69e95df98e7ad0a85">ContentCache::~ContentCache</a>() {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7158a68c4318f7695816e56016367f0c" title="Determine whether the buffer should be freed.">shouldFreeBuffer</a>())</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">delete</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> }</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"></span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">/// getSizeBytesMapped - Returns the number of bytes actually mapped for this</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">/// ContentCache. This can be 0 if the MemBuffer was not actually expanded.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a52d19f66d40162631c689e728fa4a983"> 46</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a52d19f66d40162631c689e728fa4a983" title="Returns the number of bytes actually mapped for this ContentCache.">ContentCache::getSizeBytesMapped</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="keywordflow">return</span> Buffer.getPointer() ? Buffer.getPointer()->getBufferSize() : 0;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> }</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">/// Returns the kind of memory used to back the memory buffer for</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">/// this content cache. This is used for performance analysis.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ab4207e36c7693e44711b5414968acdc1"> 52</a></span> <span class="comment"></span>llvm::MemoryBuffer::BufferKind <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ab4207e36c7693e44711b5414968acdc1">ContentCache::getMemoryBufferKind</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> assert(Buffer.getPointer());</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">// Should be unreachable, but keep for sanity.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="keywordflow">if</span> (!Buffer.getPointer())</div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="keywordflow">return</span> llvm::MemoryBuffer::MemoryBuffer_Malloc;</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="keyword">const</span> llvm::MemoryBuffer *buf = Buffer.getPointer();</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="keywordflow">return</span> buf->getBufferKind();</div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> }</div>
+<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment"></span></div>
+<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="comment">/// getSize - Returns the size of the content encapsulated by this ContentCache.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">/// This can be the size of the source file or the size of an arbitrary</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment">/// scratch buffer. If the ContentCache encapsulates a source file, that</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment">/// file is not lazily brought in from disk to satisfy this query.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#acc9c428493a60627352975562d8b429e"> 67</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#acc9c428493a60627352975562d8b429e" title="Returns the size of the content encapsulated by this ContentCache.">ContentCache::getSize</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="keywordflow">return</span> Buffer.getPointer() ? (<a class="code" href="classunsigned.html">unsigned</a>) Buffer.getPointer()->getBufferSize()</div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> : (<a class="code" href="classunsigned.html">unsigned</a>) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>();</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> }</div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac362b4113acc35fcb87bf01f440a3251"> 72</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac362b4113acc35fcb87bf01f440a3251" title="Replace the existing buffer (which will be deleted) with the given buffer.">ContentCache::replaceBuffer</a>(<span class="keyword">const</span> llvm::MemoryBuffer *B,</div>
+<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="keywordtype">bool</span> DoNotFree) {</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="keywordflow">if</span> (B && B == Buffer.getPointer()) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> assert(0 && <span class="stringliteral">"Replacing with the same buffer"</span>);</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> Buffer.setInt(DoNotFree? DoNotFreeFlag : 0);</div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> }</div>
+<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7158a68c4318f7695816e56016367f0c" title="Determine whether the buffer should be freed.">shouldFreeBuffer</a>())</div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="keyword">delete</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> Buffer.setPointer(B);</div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> Buffer.setInt(DoNotFree? DoNotFreeFlag : 0);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b"> 86</a></span> <span class="keyword">const</span> llvm::MemoryBuffer *<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">ContentCache::getBuffer</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>,</div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <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="l00088"></a><span class="lineno"> 88</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="l00089"></a><span class="lineno"> 89</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="comment">// Lazily create the Buffer for ContentCaches that wrap files. If we already</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// computed it, just return what we have.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordflow">if</span> (Buffer.getPointer() || <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a> == 0) {</div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> *Invalid = <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a09fcdb944014c3a41eaafbd6b64642c4" title="Determine whether the buffer itself is invalid.">isBufferInvalid</a>();</div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> </div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordflow">return</span> Buffer.getPointer();</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> </div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> std::string ErrorStr;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="keywordtype">bool</span> isVolatile = SM.<a class="code" href="classclang_1_1SourceManager.html#adb1befb02533b06cde5abccc872c4a1b" title="True if non-system source files should be treated as volatile (likely to change while trying to use t...">userFilesAreVolatile</a>() && !<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a6f69c64e25a406440e3ae3f669fb103e" title="True if this content cache was initially created for a source file considered as a system one...">IsSystemFile</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> Buffer.setPointer(SM.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#a4aedd4bd4b3dc2a8df7f3dba692464a8" title="Open the specified file as a MemoryBuffer, returning a new MemoryBuffer if successful, otherwise returning null.">getBufferForFile</a>(<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>,</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> &ErrorStr,</div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> isVolatile));</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// If we were unable to open the file, then we are in an inconsistent</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// situation where the content cache referenced a file which no longer</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// exists. Most likely, we were using a stat cache with an invalid entry but</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// the file could also have been removed during processing. Since we can't</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="comment">// really deal with this situation, just create an empty buffer.</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// FIXME: This is definitely not ideal, but our immediate clients can't</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// currently handle returning a null entry here. Ideally we should detect</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="comment">// that we are in an inconsistent situation and error out as quickly as</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="comment">// possible.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="keywordflow">if</span> (!Buffer.getPointer()) {</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="keyword">const</span> StringRef FillStr(<span class="stringliteral">"<<<MISSING SOURCE FILE>>>\n"</span>);</div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> Buffer.setPointer(MemoryBuffer::getNewMemBuffer(<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>(), </div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="stringliteral">"<invalid>"</span>));</div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="keywordtype">char</span> *Ptr = <span class="keyword">const_cast<</span><span class="keywordtype">char</span>*<span class="keyword">></span>(Buffer.getPointer()->getBufferStart());</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>(); i != e; ++i)</div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> Ptr[i] = FillStr[i % FillStr.size()];</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="keywordflow">if</span> (Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a8a9120983e02c6ecb29237297a9e3de8" title="Determine whethere there is already a diagnostic in flight.">isDiagnosticInFlight</a>())</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a621253f276989c5bb257cdc504a67ee4" title="Set the "delayed" diagnostic that will be emitted once the current diagnostic completes.">SetDelayedDiagnostic</a>(diag::err_cannot_open_file, </div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(), ErrorStr);</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="keywordflow">else</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Loc, diag::err_cannot_open_file)</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> << <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>() << ErrorStr;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> </div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> Buffer.setInt(Buffer.getInt() | InvalidFlag);</div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> </div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="keywordflow">if</span> (Invalid) *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="keywordflow">return</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> }</div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="comment">// Check that the file's size is the same as in the file entry (which may</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="comment">// have come from a stat cache).</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a1bd747e8a29948acb64ab889b21dae84" title="Get the underlying buffer, returning NULL if the buffer is not yet available.">getRawBuffer</a>()->getBufferSize() != (<span class="keywordtype">size_t</span>)<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>()) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="keywordflow">if</span> (Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a8a9120983e02c6ecb29237297a9e3de8" title="Determine whethere there is already a diagnostic in flight.">isDiagnosticInFlight</a>())</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a621253f276989c5bb257cdc504a67ee4" title="Set the "delayed" diagnostic that will be emitted once the current diagnostic completes.">SetDelayedDiagnostic</a>(diag::err_file_modified,</div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Loc, diag::err_file_modified)</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> << <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> </div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> Buffer.setInt(Buffer.getInt() | InvalidFlag);</div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="keywordflow">if</span> (Invalid) *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="keywordflow">return</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> }</div>
+<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">// If the buffer is valid, check to see if it has a UTF Byte Order Mark</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="comment">// (BOM). We only support UTF-8 with and without a BOM right now. See</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="comment">// http://en.wikipedia.org/wiki/Byte_order_mark for more information.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> StringRef BufStr = Buffer.getPointer()->getBuffer();</div>
+<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *InvalidBOM = llvm::StringSwitch<const char *>(BufStr)</div>
+<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> .StartsWith(<span class="stringliteral">"\xFE\xFF"</span>, <span class="stringliteral">"UTF-16 (BE)"</span>)</div>
+<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> .StartsWith(<span class="stringliteral">"\xFF\xFE"</span>, <span class="stringliteral">"UTF-16 (LE)"</span>)</div>
+<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> .StartsWith(<span class="stringliteral">"\x00\x00\xFE\xFF"</span>, <span class="stringliteral">"UTF-32 (BE)"</span>)</div>
+<div class="line"><a name="l00159"></a><span class="lineno"> 159</span> .StartsWith(<span class="stringliteral">"\xFF\xFE\x00\x00"</span>, <span class="stringliteral">"UTF-32 (LE)"</span>)</div>
+<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> .StartsWith(<span class="stringliteral">"\x2B\x2F\x76"</span>, <span class="stringliteral">"UTF-7"</span>)</div>
+<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> .StartsWith(<span class="stringliteral">"\xF7\x64\x4C"</span>, <span class="stringliteral">"UTF-1"</span>)</div>
+<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> .StartsWith(<span class="stringliteral">"\xDD\x73\x66\x73"</span>, <span class="stringliteral">"UTF-EBCDIC"</span>)</div>
+<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> .StartsWith(<span class="stringliteral">"\x0E\xFE\xFF"</span>, <span class="stringliteral">"SDSU"</span>)</div>
+<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> .StartsWith(<span class="stringliteral">"\xFB\xEE\x28"</span>, <span class="stringliteral">"BOCU-1"</span>)</div>
+<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> .StartsWith(<span class="stringliteral">"\x84\x31\x95\x33"</span>, <span class="stringliteral">"GB-18030"</span>)</div>
+<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> .Default(0);</div>
+<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> </div>
+<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="keywordflow">if</span> (InvalidBOM) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Loc, diag::err_unsupported_bom)</div>
+<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> << InvalidBOM << <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a72749d7b00871e22159ff842f1ddc2b7" title="References the file which the contents were actually loaded from.">ContentsEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> Buffer.setInt(Buffer.getInt() | InvalidFlag);</div>
+<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> }</div>
+<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno"> 174</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> *Invalid = <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a09fcdb944014c3a41eaafbd6b64642c4" title="Determine whether the buffer itself is invalid.">isBufferInvalid</a>();</div>
+<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> </div>
+<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="keywordflow">return</span> Buffer.getPointer();</div>
+<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> }</div>
+<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> </div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a842cdc0e9adf93719e56bbe70902c796"> 180</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1LineTableInfo.html#a842cdc0e9adf93719e56bbe70902c796">LineTableInfo::getLineTableFilenameID</a>(StringRef Name) {</div>
+<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// Look up the filename in the string table, returning the pre-existing value</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// if it exists.</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> llvm::StringMapEntry<unsigned> &Entry =</div>
+<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> FilenameIDs.GetOrCreateValue(Name, ~0U);</div>
+<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="keywordflow">if</span> (Entry.getValue() != ~0U)</div>
+<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="keywordflow">return</span> Entry.getValue();</div>
+<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> </div>
+<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="comment">// Otherwise, assign this the next available ID.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> Entry.setValue(FilenamesByID.size());</div>
+<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> FilenamesByID.push_back(&Entry);</div>
+<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> <span class="keywordflow">return</span> FilenamesByID.size()-1;</div>
+<div class="line"><a name="l00192"></a><span class="lineno"> 192</span> }</div>
+<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> <span class="comment"></span></div>
+<div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="comment">/// AddLineNote - Add a line note to the line table that indicates that there</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> <span class="comment">/// is a \#line at the specified FID/Offset location which changes the presumed</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno"> 196</span> <span class="comment">/// location to LineNo/FilenameID.</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7"> 197</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">LineTableInfo::AddLineNote</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID) {</div>
+<div class="line"><a name="l00199"></a><span class="lineno"> 199</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a> = LineEntries[FID];</div>
+<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> assert((Entries.empty() || Entries.back().FileOffset < <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) &&</div>
+<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="stringliteral">"Adding line entries out of order!"</span>);</div>
+<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> </div>
+<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">unsigned</span> IncludeOffset = 0;</div>
+<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> <span class="keywordflow">if</span> (!Entries.empty()) {</div>
+<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> <span class="comment">// If this is a '#line 4' after '#line 42 "foo.h"', make sure to remember</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="comment">// that we are still in "foo.h".</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="keywordflow">if</span> (FilenameID == -1)</div>
+<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> FilenameID = Entries.back().FilenameID;</div>
+<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="comment">// If we are after a line marker that switched us to system header mode, or</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno"> 214</span> <span class="comment">// that set #include information, preserve it.</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> Kind = Entries.back().FileKind;</div>
+<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> IncludeOffset = Entries.back().IncludeOffset;</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> </div>
+<div class="line"><a name="l00219"></a><span class="lineno"> 219</span> Entries.push_back(<a class="code" href="structclang_1_1LineEntry.html#ad13f9a48c50609d6bde0229b5350cb38">LineEntry::get</a>(Offset, LineNo, FilenameID, Kind,</div>
+<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> IncludeOffset));</div>
+<div class="line"><a name="l00221"></a><span class="lineno"> 221</span> }</div>
+<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="comment"></span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment">/// AddLineNote This is the same as the previous version of AddLineNote, but is</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment">/// used for GNU line markers. If EntryExit is 0, then this doesn't change the</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment">/// presumed \#include stack. If it is 1, this is a file entry, if it is 2 then</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment">/// this is a file exit. FileKind specifies whether this is a system header or</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment">/// extern C system header.</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#acd9412e2332492b3d703fcaabf2c8f1b"> 228</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#a33f51bc512d1388dc197aed4fbec6ee7">LineTableInfo::AddLineNote</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,</div>
+<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="keywordtype">unsigned</span> LineNo, <span class="keywordtype">int</span> FilenameID,</div>
+<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="keywordtype">unsigned</span> EntryExit,</div>
+<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> FileKind) {</div>
+<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> assert(FilenameID != -1 && <span class="stringliteral">"Unspecified filename should use other accessor"</span>);</div>
+<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div>
+<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a> = LineEntries[FID];</div>
+<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div>
+<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> assert((Entries.empty() || Entries.back().FileOffset < <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) &&</div>
+<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="stringliteral">"Adding line entries out of order!"</span>);</div>
+<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> </div>
+<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="keywordtype">unsigned</span> IncludeOffset = 0;</div>
+<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="keywordflow">if</span> (EntryExit == 0) { <span class="comment">// No #include stack change.</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> IncludeOffset = Entries.empty() ? 0 : Entries.back().IncludeOffset;</div>
+<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EntryExit == 1) {</div>
+<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> IncludeOffset = Offset-1;</div>
+<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (EntryExit == 2) {</div>
+<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> assert(!Entries.empty() && Entries.back().IncludeOffset &&</div>
+<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="stringliteral">"PPDirectives should have caught case when popping empty include stack"</span>);</div>
+<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment">// Get the include loc of the last entries' include loc as our include loc.</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> IncludeOffset = 0;</div>
+<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *PrevEntry =</div>
+<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> FindNearestLineEntry(FID, Entries.back().IncludeOffset))</div>
+<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> IncludeOffset = PrevEntry->IncludeOffset;</div>
+<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> }</div>
+<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> </div>
+<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> Entries.push_back(<a class="code" href="structclang_1_1LineEntry.html#ad13f9a48c50609d6bde0229b5350cb38">LineEntry::get</a>(Offset, LineNo, FilenameID, FileKind,</div>
+<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> IncludeOffset));</div>
+<div class="line"><a name="l00257"></a><span class="lineno"> 257</span> }</div>
+<div class="line"><a name="l00258"></a><span class="lineno"> 258</span> </div>
+<div class="line"><a name="l00259"></a><span class="lineno"> 259</span> <span class="comment"></span></div>
+<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment">/// FindNearestLineEntry - Find the line entry nearest to FID that is before</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="comment">/// it. If there is no line entry before Offset in FID, return null.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b"> 262</a></span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *<a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">LineTableInfo::FindNearestLineEntry</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID,</div>
+<div class="line"><a name="l00263"></a><span class="lineno"> 263</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00264"></a><span class="lineno"> 264</span> <span class="keyword">const</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a> = LineEntries[FID];</div>
+<div class="line"><a name="l00265"></a><span class="lineno"> 265</span> assert(!Entries.empty() && <span class="stringliteral">"No #line entries for this FID after all!"</span>);</div>
+<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> </div>
+<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="comment">// It is very common for the query to be after the last #line, check this</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="comment">// first.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keywordflow">if</span> (Entries.back().FileOffset <= <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>)</div>
+<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> <span class="keywordflow">return</span> &Entries.back();</div>
+<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="comment">// Do a binary search to find the maximal element that is still before Offset.</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> std::vector<LineEntry>::const_iterator I =</div>
+<div class="line"><a name="l00274"></a><span class="lineno"> 274</span> std::upper_bound(Entries.begin(), Entries.end(), <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</div>
+<div class="line"><a name="l00275"></a><span class="lineno"> 275</span> <span class="keywordflow">if</span> (I == Entries.begin()) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> <span class="keywordflow">return</span> &*--I;</div>
+<div class="line"><a name="l00277"></a><span class="lineno"> 277</span> }</div>
+<div class="line"><a name="l00278"></a><span class="lineno"> 278</span> <span class="comment"></span></div>
+<div class="line"><a name="l00279"></a><span class="lineno"> 279</span> <span class="comment">/// \brief Add a new line entry that has already been encoded into</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno"> 280</span> <span class="comment">/// the internal representation of the line table.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="code" href="classclang_1_1LineTableInfo.html#ac5e09d5950dde43066054321e1900179"> 281</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1LineTableInfo.html#ac5e09d5950dde43066054321e1900179" title="Add a new line entry that has already been encoded into the internal representation of the line table...">LineTableInfo::AddEntry</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID,</div>
+<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="keyword">const</span> std::vector<LineEntry> &<a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a>) {</div>
+<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> LineEntries[FID] = <a class="code" href="SemaOverload_8cpp.html#aada9fb11fc2f7b0dec4ef8195c16885e">Entries</a>;</div>
+<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> }</div>
+<div class="line"><a name="l00285"></a><span class="lineno"> 285</span> <span class="comment"></span></div>
+<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="comment">/// getLineTableFilenameID - Return the uniqued ID for the specified filename.</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aa55166cfda7909fca46877f4c85580ec"> 288</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#aa55166cfda7909fca46877f4c85580ec" title="Return the uniqued ID for the specified filename.">SourceManager::getLineTableFilenameID</a>(StringRef Name) {</div>
+<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="keywordflow">return</span> LineTable->getLineTableFilenameID(Name);</div>
+<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> }</div>
+<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> </div>
+<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment"></span></div>
+<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment">/// AddLineNote - Add a line note to the line table for the FileID and offset</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> <span class="comment">/// specified by Loc. If FilenameID is -1, it is considered to be</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> <span class="comment">/// unspecified.</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a040ac45727775e7bf14d8bfca2c5677e"> 298</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a040ac45727775e7bf14d8bfca2c5677e" title="Add a line note to the line table for the FileID and offset specified by Loc.">SourceManager::AddLineNote</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, <span class="keywordtype">unsigned</span> LineNo,</div>
+<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="keywordtype">int</span> FilenameID) {</div>
+<div class="line"><a name="l00300"></a><span class="lineno"> 300</span> std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);</div>
+<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> </div>
+<div class="line"><a name="l00302"></a><span class="lineno"> 302</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = getSLocEntry(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="keywordflow">if</span> (!Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() || Invalid)</div>
+<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00306"></a><span class="lineno"> 306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">FileInfo</a> = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l00308"></a><span class="lineno"> 308</span> </div>
+<div class="line"><a name="l00309"></a><span class="lineno"> 309</span> <span class="comment">// Remember that this file has #line directives now if it doesn't already.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno"> 310</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a>&<span class="keyword">></span>(FileInfo).setHasLineDirectives();</div>
+<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> </div>
+<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> LineTable->AddLineNote(LocInfo.first, LocInfo.second, LineNo, FilenameID);</div>
+<div class="line"><a name="l00315"></a><span class="lineno"> 315</span> }</div>
+<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> <span class="comment"></span></div>
+<div class="line"><a name="l00317"></a><span class="lineno"> 317</span> <span class="comment">/// AddLineNote - Add a GNU line marker to the line table.</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a191c7e8b9ebebc091590dcf40a1e4661"> 318</a></span> <span class="comment"></span><span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a040ac45727775e7bf14d8bfca2c5677e" title="Add a line note to the line table for the FileID and offset specified by Loc.">SourceManager::AddLineNote</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, <span class="keywordtype">unsigned</span> LineNo,</div>
+<div class="line"><a name="l00319"></a><span class="lineno"> 319</span> <span class="keywordtype">int</span> FilenameID, <span class="keywordtype">bool</span> IsFileEntry,</div>
+<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> <span class="keywordtype">bool</span> IsFileExit, <span class="keywordtype">bool</span> IsSystemHeader,</div>
+<div class="line"><a name="l00321"></a><span class="lineno"> 321</span> <span class="keywordtype">bool</span> IsExternCHeader) {</div>
+<div class="line"><a name="l00322"></a><span class="lineno"> 322</span> <span class="comment">// If there is no filename and no flags, this is treated just like a #line,</span></div>
+<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> <span class="comment">// which does not change the flags of the previous line marker.</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno"> 324</span> <span class="keywordflow">if</span> (FilenameID == -1) {</div>
+<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> assert(!IsFileEntry && !IsFileExit && !IsSystemHeader && !IsExternCHeader &&</div>
+<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> <span class="stringliteral">"Can't set flags without setting the filename!"</span>);</div>
+<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> <span class="keywordflow">return</span> AddLineNote(Loc, LineNo, FilenameID);</div>
+<div class="line"><a name="l00328"></a><span class="lineno"> 328</span> }</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> std::pair<FileID, unsigned> LocInfo = getDecomposedExpansionLoc(Loc);</div>
+<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> </div>
+<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00333"></a><span class="lineno"> 333</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = getSLocEntry(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l00334"></a><span class="lineno"> 334</span> <span class="keywordflow">if</span> (!Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() || Invalid)</div>
+<div class="line"><a name="l00335"></a><span class="lineno"> 335</span> <span class="keywordflow">return</span>;</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">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">FileInfo</a> = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l00338"></a><span class="lineno"> 338</span> </div>
+<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> <span class="comment">// Remember that this file has #line directives now if it doesn't already.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"> 340</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a>&<span class="keyword">></span>(FileInfo).setHasLineDirectives();</div>
+<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> </div>
+<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> </div>
+<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> FileKind;</div>
+<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> <span class="keywordflow">if</span> (IsExternCHeader)</div>
+<div class="line"><a name="l00347"></a><span class="lineno"> 347</span> FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35da9023f6ef1ca01526b946dd690e56d951">SrcMgr::C_ExternCSystem</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsSystemHeader)</div>
+<div class="line"><a name="l00349"></a><span class="lineno"> 349</span> FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dac3b930a303c855d8864c56fcc992074e">SrcMgr::C_System</a>;</div>
+<div class="line"><a name="l00350"></a><span class="lineno"> 350</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> FileKind = <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>;</div>
+<div class="line"><a name="l00352"></a><span class="lineno"> 352</span> </div>
+<div class="line"><a name="l00353"></a><span class="lineno"> 353</span> <span class="keywordtype">unsigned</span> EntryExit = 0;</div>
+<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> <span class="keywordflow">if</span> (IsFileEntry)</div>
+<div class="line"><a name="l00355"></a><span class="lineno"> 355</span> EntryExit = 1;</div>
+<div class="line"><a name="l00356"></a><span class="lineno"> 356</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsFileExit)</div>
+<div class="line"><a name="l00357"></a><span class="lineno"> 357</span> EntryExit = 2;</div>
+<div class="line"><a name="l00358"></a><span class="lineno"> 358</span> </div>
+<div class="line"><a name="l00359"></a><span class="lineno"> 359</span> LineTable->AddLineNote(LocInfo.first, LocInfo.second, LineNo, FilenameID,</div>
+<div class="line"><a name="l00360"></a><span class="lineno"> 360</span> EntryExit, FileKind);</div>
+<div class="line"><a name="l00361"></a><span class="lineno"> 361</span> }</div>
+<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> </div>
+<div class="line"><a name="l00363"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#af8b2eab6301eb653ca3ba47e6b65a910"> 363</a></span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a> &<a class="code" href="classclang_1_1SourceManager.html#af8b2eab6301eb653ca3ba47e6b65a910" title="Retrieve the stored line table.">SourceManager::getLineTable</a>() {</div>
+<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> <span class="keywordflow">if</span> (LineTable == 0)</div>
+<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> LineTable = <span class="keyword">new</span> <a class="code" href="classclang_1_1LineTableInfo.html" title="Used to hold and unique data used to represent #line information.">LineTableInfo</a>();</div>
+<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="keywordflow">return</span> *LineTable;</div>
+<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> }</div>
+<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> </div>
+<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="comment">// Private 'Create' methods.</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"> 372</span> </div>
+<div class="line"><a name="l00373"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a31c7782e103f9c6a515c610740581606"> 373</a></span> SourceManager::SourceManager(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>, <a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a> &FileMgr,</div>
+<div class="line"><a name="l00374"></a><span class="lineno"> 374</span> <span class="keywordtype">bool</span> UserFilesAreVolatile)</div>
+<div class="line"><a name="l00375"></a><span class="lineno"> 375</span> : Diag(Diag), FileMgr(FileMgr), OverridenFilesKeepOriginalName(<a class="code" href="stdbool_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>),</div>
+<div class="line"><a name="l00376"></a><span class="lineno"> 376</span> UserFilesAreVolatile(UserFilesAreVolatile),</div>
+<div class="line"><a name="l00377"></a><span class="lineno"> 377</span> ExternalSLocEntries(0), LineTable(0), NumLinearScans(0),</div>
+<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> NumBinaryProbes(0), FakeBufferForRecovery(0),</div>
+<div class="line"><a name="l00379"></a><span class="lineno"> 379</span> FakeContentCacheForRecovery(0) {</div>
+<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> <a class="code" href="classclang_1_1SourceManager.html#a68af6d1635e6105adaa25a4205af33a6">clearIDTables</a>();</div>
+<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a3a93afbd57877105bb54c19a0c58e8f5">setSourceManager</a>(<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00382"></a><span class="lineno"> 382</span> }</div>
+<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div>
+<div class="line"><a name="l00384"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1aaf363af19e27658a8d45d1b66a6c60"> 384</a></span> <a class="code" href="classclang_1_1SourceManager.html#a1aaf363af19e27658a8d45d1b66a6c60">SourceManager::~SourceManager</a>() {</div>
+<div class="line"><a name="l00385"></a><span class="lineno"> 385</span> <span class="keyword">delete</span> LineTable;</div>
+<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> </div>
+<div class="line"><a name="l00387"></a><span class="lineno"> 387</span> <span class="comment">// Delete FileEntry objects corresponding to content caches. Since the actual</span></div>
+<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> <span class="comment">// content cache objects are bump pointer allocated, we just have to run the</span></div>
+<div class="line"><a name="l00389"></a><span class="lineno"> 389</span> <span class="comment">// dtors, but we call the deallocate method for completeness.</span></div>
+<div class="line"><a name="l00390"></a><span class="lineno"> 390</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MemBufferInfos.size(); i != e; ++i) {</div>
+<div class="line"><a name="l00391"></a><span class="lineno"> 391</span> <span class="keywordflow">if</span> (MemBufferInfos[i]) {</div>
+<div class="line"><a name="l00392"></a><span class="lineno"> 392</span> MemBufferInfos[i]->~ContentCache();</div>
+<div class="line"><a name="l00393"></a><span class="lineno"> 393</span> ContentCacheAlloc.Deallocate(MemBufferInfos[i]);</div>
+<div class="line"><a name="l00394"></a><span class="lineno"> 394</span> }</div>
+<div class="line"><a name="l00395"></a><span class="lineno"> 395</span> }</div>
+<div class="line"><a name="l00396"></a><span class="lineno"> 396</span> <span class="keywordflow">for</span> (llvm::DenseMap<const FileEntry*, SrcMgr::ContentCache*>::iterator</div>
+<div class="line"><a name="l00397"></a><span class="lineno"> 397</span> I = FileInfos.begin(), E = FileInfos.end(); I != E; ++I) {</div>
+<div class="line"><a name="l00398"></a><span class="lineno"> 398</span> <span class="keywordflow">if</span> (I->second) {</div>
+<div class="line"><a name="l00399"></a><span class="lineno"> 399</span> I->second->~ContentCache();</div>
+<div class="line"><a name="l00400"></a><span class="lineno"> 400</span> ContentCacheAlloc.Deallocate(I->second);</div>
+<div class="line"><a name="l00401"></a><span class="lineno"> 401</span> }</div>
+<div class="line"><a name="l00402"></a><span class="lineno"> 402</span> }</div>
+<div class="line"><a name="l00403"></a><span class="lineno"> 403</span> </div>
+<div class="line"><a name="l00404"></a><span class="lineno"> 404</span> <span class="keyword">delete</span> FakeBufferForRecovery;</div>
+<div class="line"><a name="l00405"></a><span class="lineno"> 405</span> <span class="keyword">delete</span> FakeContentCacheForRecovery;</div>
+<div class="line"><a name="l00406"></a><span class="lineno"> 406</span> </div>
+<div class="line"><a name="l00407"></a><span class="lineno"> 407</span> <span class="keywordflow">for</span> (llvm::DenseMap<FileID, MacroArgsMap *>::iterator</div>
+<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> I = MacroArgsCacheMap.begin(),E = MacroArgsCacheMap.end(); I!=E; ++I) {</div>
+<div class="line"><a name="l00409"></a><span class="lineno"> 409</span> <span class="keyword">delete</span> I->second;</div>
+<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> }</div>
+<div class="line"><a name="l00411"></a><span class="lineno"> 411</span> }</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_1SourceManager.html#a68af6d1635e6105adaa25a4205af33a6"> 413</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a68af6d1635e6105adaa25a4205af33a6">SourceManager::clearIDTables</a>() {</div>
+<div class="line"><a name="l00414"></a><span class="lineno"> 414</span> MainFileID = <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00415"></a><span class="lineno"> 415</span> LocalSLocEntryTable.clear();</div>
+<div class="line"><a name="l00416"></a><span class="lineno"> 416</span> LoadedSLocEntryTable.clear();</div>
+<div class="line"><a name="l00417"></a><span class="lineno"> 417</span> SLocEntryLoaded.clear();</div>
+<div class="line"><a name="l00418"></a><span class="lineno"> 418</span> LastLineNoFileIDQuery = <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00419"></a><span class="lineno"> 419</span> LastLineNoContentCache = 0;</div>
+<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> LastFileIDLookup = <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> </div>
+<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="keywordflow">if</span> (LineTable)</div>
+<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a80f9f7699989ef43c8623a5cb3ee0154">clear</a>();</div>
+<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> </div>
+<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="comment">// Use up FileID #0 as an invalid expansion.</span></div>
+<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> NextLocalOffset = 0;</div>
+<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> CurrentLoadedOffset = MaxLoadedOffset;</div>
+<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <a class="code" href="classclang_1_1SourceManager.html#a2b7a4407834ab69d127968813cb33111" title="Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be re...">createExpansionLoc</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>(),<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(),<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), 1);</div>
+<div class="line"><a name="l00429"></a><span class="lineno"> 429</span> }</div>
+<div class="line"><a name="l00430"></a><span class="lineno"> 430</span> <span class="comment"></span></div>
+<div class="line"><a name="l00431"></a><span class="lineno"> 431</span> <span class="comment">/// getOrCreateContentCache - Create or return a cached ContentCache for the</span></div>
+<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> <span class="comment">/// specified file.</span></div>
+<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *</div>
+<div class="line"><a name="l00434"></a><span class="lineno"> 434</span> SourceManager::getOrCreateContentCache(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *FileEnt,</div>
+<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> <span class="keywordtype">bool</span> isSystemFile) {</div>
+<div class="line"><a name="l00436"></a><span class="lineno"> 436</span> assert(FileEnt && <span class="stringliteral">"Didn't specify a file entry to use?"</span>);</div>
+<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div>
+<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="comment">// Do we already have information about this file?</span></div>
+<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *&Entry = FileInfos[FileEnt];</div>
+<div class="line"><a name="l00440"></a><span class="lineno"> 440</span> <span class="keywordflow">if</span> (Entry) <span class="keywordflow">return</span> Entry;</div>
+<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div>
+<div class="line"><a name="l00442"></a><span class="lineno"> 442</span> <span class="comment">// Nope, create a new Cache entry. Make sure it is at least 8-byte aligned</span></div>
+<div class="line"><a name="l00443"></a><span class="lineno"> 443</span> <span class="comment">// so that FileInfo can use the low 3 bits of the pointer for its own</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno"> 444</span> <span class="comment">// nefarious purposes.</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno"> 445</span> <span class="keywordtype">unsigned</span> EntryAlign = llvm::AlignOf<ContentCache>::Alignment;</div>
+<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> EntryAlign = std::max(8U, EntryAlign);</div>
+<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> Entry = ContentCacheAlloc.Allocate<<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>>(1, EntryAlign);</div>
+<div class="line"><a name="l00448"></a><span class="lineno"> 448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> <span class="keywordflow">if</span> (OverriddenFilesInfo) {</div>
+<div class="line"><a name="l00450"></a><span class="lineno"> 450</span> <span class="comment">// If the file contents are overridden with contents from another file,</span></div>
+<div class="line"><a name="l00451"></a><span class="lineno"> 451</span> <span class="comment">// pass that file to ContentCache.</span></div>
+<div class="line"><a name="l00452"></a><span class="lineno"> 452</span> llvm::DenseMap<const FileEntry *, const FileEntry *>::iterator</div>
+<div class="line"><a name="l00453"></a><span class="lineno"> 453</span> overI = OverriddenFilesInfo->OverriddenFiles.find(FileEnt);</div>
+<div class="line"><a name="l00454"></a><span class="lineno"> 454</span> <span class="keywordflow">if</span> (overI == OverriddenFilesInfo->OverriddenFiles.end())</div>
+<div class="line"><a name="l00455"></a><span class="lineno"> 455</span> <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>(FileEnt);</div>
+<div class="line"><a name="l00456"></a><span class="lineno"> 456</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>(OverridenFilesKeepOriginalName ? FileEnt</div>
+<div class="line"><a name="l00458"></a><span class="lineno"> 458</span> : overI->second,</div>
+<div class="line"><a name="l00459"></a><span class="lineno"> 459</span> overI->second);</div>
+<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>(FileEnt);</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> </div>
+<div class="line"><a name="l00464"></a><span class="lineno"> 464</span> Entry-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a6f69c64e25a406440e3ae3f669fb103e" title="True if this content cache was initially created for a source file considered as a system one...">IsSystemFile</a> = isSystemFile;</div>
+<div class="line"><a name="l00465"></a><span class="lineno"> 465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno"> 466</span> <span class="keywordflow">return</span> Entry;</div>
+<div class="line"><a name="l00467"></a><span class="lineno"> 467</span> }</div>
+<div class="line"><a name="l00468"></a><span class="lineno"> 468</span> </div>
+<div class="line"><a name="l00469"></a><span class="lineno"> 469</span> <span class="comment"></span></div>
+<div class="line"><a name="l00470"></a><span class="lineno"> 470</span> <span class="comment">/// createMemBufferContentCache - Create a new ContentCache for the specified</span></div>
+<div class="line"><a name="l00471"></a><span class="lineno"> 471</span> <span class="comment">/// memory buffer. This does no caching.</span></div>
+<div class="line"><a name="l00472"></a><span class="lineno"> 472</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>*</div>
+<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> SourceManager::createMemBufferContentCache(<span class="keyword">const</span> MemoryBuffer *Buffer) {</div>
+<div class="line"><a name="l00474"></a><span class="lineno"> 474</span> <span class="comment">// Add a new ContentCache to the MemBufferInfos list and return it. Make sure</span></div>
+<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> <span class="comment">// it is at least 8-byte aligned so that FileInfo can use the low 3 bits of</span></div>
+<div class="line"><a name="l00476"></a><span class="lineno"> 476</span> <span class="comment">// the pointer for its own nefarious purposes.</span></div>
+<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> <span class="keywordtype">unsigned</span> EntryAlign = llvm::AlignOf<ContentCache>::Alignment;</div>
+<div class="line"><a name="l00478"></a><span class="lineno"> 478</span> EntryAlign = std::max(8U, EntryAlign);</div>
+<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *Entry = ContentCacheAlloc.Allocate<<a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>>(1, EntryAlign);</div>
+<div class="line"><a name="l00480"></a><span class="lineno"> 480</span> <span class="keyword">new</span> (Entry) <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>();</div>
+<div class="line"><a name="l00481"></a><span class="lineno"> 481</span> MemBufferInfos.push_back(Entry);</div>
+<div class="line"><a name="l00482"></a><span class="lineno"> 482</span> Entry-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac3f95bfeebace8a1e271f5e60e99726a">setBuffer</a>(Buffer);</div>
+<div class="line"><a name="l00483"></a><span class="lineno"> 483</span> <span class="keywordflow">return</span> Entry;</div>
+<div class="line"><a name="l00484"></a><span class="lineno"> 484</span> }</div>
+<div class="line"><a name="l00485"></a><span class="lineno"> 485</span> </div>
+<div class="line"><a name="l00486"></a><span class="lineno"> 486</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &SourceManager::loadSLocEntry(<span class="keywordtype">unsigned</span> Index,</div>
+<div class="line"><a name="l00487"></a><span class="lineno"> 487</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00488"></a><span class="lineno"> 488</span> assert(!SLocEntryLoaded[Index]);</div>
+<div class="line"><a name="l00489"></a><span class="lineno"> 489</span> <span class="keywordflow">if</span> (ExternalSLocEntries-><a class="code" href="classclang_1_1ExternalSLocEntrySource.html#acb444bab492d1cac7eee6d7ea1f52444" title="Read the source location entry with index ID, which will always be less than -1.">ReadSLocEntry</a>(-(static_cast<int>(Index) + 2))) {</div>
+<div class="line"><a name="l00490"></a><span class="lineno"> 490</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00491"></a><span class="lineno"> 491</span> *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00492"></a><span class="lineno"> 492</span> <span class="comment">// If the file of the SLocEntry changed we could still have loaded it.</span></div>
+<div class="line"><a name="l00493"></a><span class="lineno"> 493</span> <span class="keywordflow">if</span> (!SLocEntryLoaded[Index]) {</div>
+<div class="line"><a name="l00494"></a><span class="lineno"> 494</span> <span class="comment">// Try to recover; create a SLocEntry so the rest of clang can handle it.</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> LoadedSLocEntryTable[Index] = SLocEntry::get(0,</div>
+<div class="line"><a name="l00496"></a><span class="lineno"> 496</span> FileInfo::get(<a class="code" href="classclang_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="l00497"></a><span class="lineno"> 497</span> getFakeContentCacheForRecovery(),</div>
+<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>));</div>
+<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> }</div>
+<div class="line"><a name="l00500"></a><span class="lineno"> 500</span> }</div>
+<div class="line"><a name="l00501"></a><span class="lineno"> 501</span> </div>
+<div class="line"><a name="l00502"></a><span class="lineno"> 502</span> <span class="keywordflow">return</span> LoadedSLocEntryTable[Index];</div>
+<div class="line"><a name="l00503"></a><span class="lineno"> 503</span> }</div>
+<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div>
+<div class="line"><a name="l00505"></a><span class="lineno"> 505</span> std::pair<int, unsigned></div>
+<div class="line"><a name="l00506"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aac4833e095c278e8e3e9bcbb7fe5ff77"> 506</a></span> <a class="code" href="classclang_1_1SourceManager.html#aac4833e095c278e8e3e9bcbb7fe5ff77" title="Allocate a number of loaded SLocEntries, which will be actually loaded on demand from the external so...">SourceManager::AllocateLoadedSLocEntries</a>(<span class="keywordtype">unsigned</span> NumSLocEntries,</div>
+<div class="line"><a name="l00507"></a><span class="lineno"> 507</span> <span class="keywordtype">unsigned</span> TotalSize) {</div>
+<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> assert(ExternalSLocEntries && <span class="stringliteral">"Don't have an external sloc source"</span>);</div>
+<div class="line"><a name="l00509"></a><span class="lineno"> 509</span> LoadedSLocEntryTable.resize(LoadedSLocEntryTable.size() + NumSLocEntries);</div>
+<div class="line"><a name="l00510"></a><span class="lineno"> 510</span> SLocEntryLoaded.resize(LoadedSLocEntryTable.size());</div>
+<div class="line"><a name="l00511"></a><span class="lineno"> 511</span> CurrentLoadedOffset -= TotalSize;</div>
+<div class="line"><a name="l00512"></a><span class="lineno"> 512</span> assert(CurrentLoadedOffset >= NextLocalOffset && <span class="stringliteral">"Out of source locations"</span>);</div>
+<div class="line"><a name="l00513"></a><span class="lineno"> 513</span> <span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = LoadedSLocEntryTable.size();</div>
+<div class="line"><a name="l00514"></a><span class="lineno"> 514</span> <span class="keywordflow">return</span> std::make_pair(-ID - 1, CurrentLoadedOffset);</div>
+<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> }</div>
+<div class="line"><a name="l00516"></a><span class="lineno"> 516</span> <span class="comment"></span></div>
+<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> <span class="comment">/// \brief As part of recovering from missing or changed content, produce a</span></div>
+<div class="line"><a name="l00518"></a><span class="lineno"> 518</span> <span class="comment">/// fake, non-empty buffer.</span></div>
+<div class="line"><a name="l00519"></a><span class="lineno"> 519</span> <span class="comment"></span><span class="keyword">const</span> llvm::MemoryBuffer *SourceManager::getFakeBufferForRecovery()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00520"></a><span class="lineno"> 520</span> <span class="keywordflow">if</span> (!FakeBufferForRecovery)</div>
+<div class="line"><a name="l00521"></a><span class="lineno"> 521</span> FakeBufferForRecovery</div>
+<div class="line"><a name="l00522"></a><span class="lineno"> 522</span> = llvm::MemoryBuffer::getMemBuffer(<span class="stringliteral">"<<<INVALID BUFFER>>"</span>);</div>
+<div class="line"><a name="l00523"></a><span class="lineno"> 523</span> </div>
+<div class="line"><a name="l00524"></a><span class="lineno"> 524</span> <span class="keywordflow">return</span> FakeBufferForRecovery;</div>
+<div class="line"><a name="l00525"></a><span class="lineno"> 525</span> }</div>
+<div class="line"><a name="l00526"></a><span class="lineno"> 526</span> <span class="comment"></span></div>
+<div class="line"><a name="l00527"></a><span class="lineno"> 527</span> <span class="comment">/// \brief As part of recovering from missing or changed content, produce a</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno"> 528</span> <span class="comment">/// fake content cache.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno"> 529</span> <span class="comment"></span><span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *</div>
+<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> SourceManager::getFakeContentCacheForRecovery()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> <span class="keywordflow">if</span> (!FakeContentCacheForRecovery) {</div>
+<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> FakeContentCacheForRecovery = <span class="keyword">new</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>();</div>
+<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> FakeContentCacheForRecovery-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#ac362b4113acc35fcb87bf01f440a3251" title="Replace the existing buffer (which will be deleted) with the given buffer.">replaceBuffer</a>(getFakeBufferForRecovery(),</div>
+<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> <span class="comment">/*DoNotFree=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> }</div>
+<div class="line"><a name="l00536"></a><span class="lineno"> 536</span> <span class="keywordflow">return</span> FakeContentCacheForRecovery;</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">/// \brief Returns the previous in-order FileID or an invalid FileID if there</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno"> 540</span> <span class="comment">/// is no previous one.</span></div>
+<div class="line"><a name="l00541"></a><span class="lineno"> 541</span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> SourceManager::getPreviousFileID(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00542"></a><span class="lineno"> 542</span> <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l00543"></a><span class="lineno"> 543</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00544"></a><span class="lineno"> 544</span> </div>
+<div class="line"><a name="l00545"></a><span class="lineno"> 545</span> <span class="keywordtype">int</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = FID.ID;</div>
+<div class="line"><a name="l00546"></a><span class="lineno"> 546</span> <span class="keywordflow">if</span> (ID == -1)</div>
+<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> </div>
+<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="keywordflow">if</span> (ID > 0) {</div>
+<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="keywordflow">if</span> (ID-1 == 0)</div>
+<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span>(-(ID-1) - 2) >= LoadedSLocEntryTable.size()) {</div>
+<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> }</div>
+<div class="line"><a name="l00555"></a><span class="lineno"> 555</span> </div>
+<div class="line"><a name="l00556"></a><span class="lineno"> 556</span> <span class="keywordflow">return</span> FileID::get(ID-1);</div>
+<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> }</div>
+<div class="line"><a name="l00558"></a><span class="lineno"> 558</span> <span class="comment"></span></div>
+<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> <span class="comment">/// \brief Returns the next in-order FileID or an invalid FileID if there is</span></div>
+<div class="line"><a name="l00560"></a><span class="lineno"> 560</span> <span class="comment">/// no next one.</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno"> 561</span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> SourceManager::getNextFileID(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00562"></a><span class="lineno"> 562</span> <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l00563"></a><span class="lineno"> 563</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div>
+<div class="line"><a name="l00565"></a><span class="lineno"> 565</span> <span class="keywordtype">int</span> ID = FID.ID;</div>
+<div class="line"><a name="l00566"></a><span class="lineno"> 566</span> <span class="keywordflow">if</span> (ID > 0) {</div>
+<div class="line"><a name="l00567"></a><span class="lineno"> 567</span> <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span>(ID+1) >= <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>())</div>
+<div class="line"><a name="l00568"></a><span class="lineno"> 568</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00569"></a><span class="lineno"> 569</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ID+1 >= -1) {</div>
+<div class="line"><a name="l00570"></a><span class="lineno"> 570</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00571"></a><span class="lineno"> 571</span> }</div>
+<div class="line"><a name="l00572"></a><span class="lineno"> 572</span> </div>
+<div class="line"><a name="l00573"></a><span class="lineno"> 573</span> <span class="keywordflow">return</span> FileID::get(ID+1);</div>
+<div class="line"><a name="l00574"></a><span class="lineno"> 574</span> }</div>
+<div class="line"><a name="l00575"></a><span class="lineno"> 575</span> </div>
+<div class="line"><a name="l00576"></a><span class="lineno"> 576</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00577"></a><span class="lineno"> 577</span> <span class="comment">// Methods to create new FileID's and macro expansions.</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"></span></div>
+<div class="line"><a name="l00580"></a><span class="lineno"> 580</span> <span class="comment">/// createFileID - Create a new FileID for the specified ContentCache and</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno"> 581</span> <span class="comment">/// include position. This works regardless of whether the ContentCache</span></div>
+<div class="line"><a name="l00582"></a><span class="lineno"> 582</span> <span class="comment">/// corresponds to a file or some other input source.</span></div>
+<div class="line"><a name="l00583"></a><span class="lineno"> 583</span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="classclang_1_1SourceManager.html#acefb5d310242160b1910104bbf4d8b2d" title="Create a new FileID that represents the specified file being #included from the specified IncludePosi...">SourceManager::createFileID</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *File,</div>
+<div class="line"><a name="l00584"></a><span class="lineno"> 584</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> IncludePos,</div>
+<div class="line"><a name="l00585"></a><span class="lineno"> 585</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a> FileCharacter,</div>
+<div class="line"><a name="l00586"></a><span class="lineno"> 586</span> <span class="keywordtype">int</span> LoadedID, <span class="keywordtype">unsigned</span> LoadedOffset) {</div>
+<div class="line"><a name="l00587"></a><span class="lineno"> 587</span> <span class="keywordflow">if</span> (LoadedID < 0) {</div>
+<div class="line"><a name="l00588"></a><span class="lineno"> 588</span> assert(LoadedID != -1 && <span class="stringliteral">"Loading sentinel FileID"</span>);</div>
+<div class="line"><a name="l00589"></a><span class="lineno"> 589</span> <span class="keywordtype">unsigned</span> Index = <a class="code" href="classunsigned.html">unsigned</a>(-LoadedID) - 2;</div>
+<div class="line"><a name="l00590"></a><span class="lineno"> 590</span> assert(Index < LoadedSLocEntryTable.size() && <span class="stringliteral">"FileID out of range"</span>);</div>
+<div class="line"><a name="l00591"></a><span class="lineno"> 591</span> assert(!SLocEntryLoaded[Index] && <span class="stringliteral">"FileID already loaded"</span>);</div>
+<div class="line"><a name="l00592"></a><span class="lineno"> 592</span> LoadedSLocEntryTable[Index] = SLocEntry::get(LoadedOffset,</div>
+<div class="line"><a name="l00593"></a><span class="lineno"> 593</span> FileInfo::get(IncludePos, File, FileCharacter));</div>
+<div class="line"><a name="l00594"></a><span class="lineno"> 594</span> SLocEntryLoaded[Index] = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00595"></a><span class="lineno"> 595</span> <span class="keywordflow">return</span> FileID::get(LoadedID);</div>
+<div class="line"><a name="l00596"></a><span class="lineno"> 596</span> }</div>
+<div class="line"><a name="l00597"></a><span class="lineno"> 597</span> LocalSLocEntryTable.push_back(SLocEntry::get(NextLocalOffset,</div>
+<div class="line"><a name="l00598"></a><span class="lineno"> 598</span> FileInfo::get(IncludePos, File,</div>
+<div class="line"><a name="l00599"></a><span class="lineno"> 599</span> FileCharacter)));</div>
+<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="keywordtype">unsigned</span> FileSize = File-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#acc9c428493a60627352975562d8b429e" title="Returns the size of the content encapsulated by this ContentCache.">getSize</a>();</div>
+<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> assert(NextLocalOffset + FileSize + 1 > NextLocalOffset &&</div>
+<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> NextLocalOffset + FileSize + 1 <= CurrentLoadedOffset &&</div>
+<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="comment">// We do a +1 here because we want a SourceLocation that means "the end of the</span></div>
+<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="comment">// file", e.g. for the "no newline at the end of the file" diagnostic.</span></div>
+<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> NextLocalOffset += FileSize + 1;</div>
+<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> </div>
+<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="comment">// Set LastFileIDLookup to the newly created file. The next getFileID call is</span></div>
+<div class="line"><a name="l00609"></a><span class="lineno"> 609</span> <span class="comment">// almost guaranteed to be from that file.</span></div>
+<div class="line"><a name="l00610"></a><span class="lineno"> 610</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID = FileID::get(LocalSLocEntryTable.size()-1);</div>
+<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> <span class="keywordflow">return</span> LastFileIDLookup = FID;</div>
+<div class="line"><a name="l00612"></a><span class="lineno"> 612</span> }</div>
+<div class="line"><a name="l00613"></a><span class="lineno"> 613</span> </div>
+<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> <a class="code" href="classclang_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="l00615"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a06c95caa63ece5301e14273ae5b6e411"> 615</a></span> <a class="code" href="classclang_1_1SourceManager.html#a06c95caa63ece5301e14273ae5b6e411" title="Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be re...">SourceManager::createMacroArgExpansionLoc</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> SpellingLoc,</div>
+<div class="line"><a name="l00616"></a><span class="lineno"> 616</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> ExpansionLoc,</div>
+<div class="line"><a name="l00617"></a><span class="lineno"> 617</span> <span class="keywordtype">unsigned</span> TokLength) {</div>
+<div class="line"><a name="l00618"></a><span class="lineno"> 618</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> Info = ExpansionInfo::createForMacroArg(SpellingLoc,</div>
+<div class="line"><a name="l00619"></a><span class="lineno"> 619</span> ExpansionLoc);</div>
+<div class="line"><a name="l00620"></a><span class="lineno"> 620</span> <span class="keywordflow">return</span> createExpansionLocImpl(Info, TokLength);</div>
+<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> }</div>
+<div class="line"><a name="l00622"></a><span class="lineno"> 622</span> </div>
+<div class="line"><a name="l00623"></a><span class="lineno"> 623</span> <a class="code" href="classclang_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="l00624"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a2b7a4407834ab69d127968813cb33111"> 624</a></span> <a class="code" href="classclang_1_1SourceManager.html#a2b7a4407834ab69d127968813cb33111" title="Return a new SourceLocation that encodes the fact that a token from SpellingLoc should actually be re...">SourceManager::createExpansionLoc</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> SpellingLoc,</div>
+<div class="line"><a name="l00625"></a><span class="lineno"> 625</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> ExpansionLocStart,</div>
+<div class="line"><a name="l00626"></a><span class="lineno"> 626</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> ExpansionLocEnd,</div>
+<div class="line"><a name="l00627"></a><span class="lineno"> 627</span> <span class="keywordtype">unsigned</span> TokLength,</div>
+<div class="line"><a name="l00628"></a><span class="lineno"> 628</span> <span class="keywordtype">int</span> LoadedID,</div>
+<div class="line"><a name="l00629"></a><span class="lineno"> 629</span> <span class="keywordtype">unsigned</span> LoadedOffset) {</div>
+<div class="line"><a name="l00630"></a><span class="lineno"> 630</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> Info = <a class="code" href="namespaceclang_1_1serialized__diags.html#a36bc44b1b04b3c0c421e02761c2d0282" title="Returns a DiagnosticConsumer that serializes diagnostics to a bitcode file.">ExpansionInfo::create</a>(SpellingLoc, ExpansionLocStart,</div>
+<div class="line"><a name="l00631"></a><span class="lineno"> 631</span> ExpansionLocEnd);</div>
+<div class="line"><a name="l00632"></a><span class="lineno"> 632</span> <span class="keywordflow">return</span> createExpansionLocImpl(Info, TokLength, LoadedID, LoadedOffset);</div>
+<div class="line"><a name="l00633"></a><span class="lineno"> 633</span> }</div>
+<div class="line"><a name="l00634"></a><span class="lineno"> 634</span> </div>
+<div class="line"><a name="l00635"></a><span class="lineno"> 635</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="l00636"></a><span class="lineno"> 636</span> SourceManager::createExpansionLocImpl(<span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &Info,</div>
+<div class="line"><a name="l00637"></a><span class="lineno"> 637</span> <span class="keywordtype">unsigned</span> TokLength,</div>
+<div class="line"><a name="l00638"></a><span class="lineno"> 638</span> <span class="keywordtype">int</span> LoadedID,</div>
+<div class="line"><a name="l00639"></a><span class="lineno"> 639</span> <span class="keywordtype">unsigned</span> LoadedOffset) {</div>
+<div class="line"><a name="l00640"></a><span class="lineno"> 640</span> <span class="keywordflow">if</span> (LoadedID < 0) {</div>
+<div class="line"><a name="l00641"></a><span class="lineno"> 641</span> assert(LoadedID != -1 && <span class="stringliteral">"Loading sentinel FileID"</span>);</div>
+<div class="line"><a name="l00642"></a><span class="lineno"> 642</span> <span class="keywordtype">unsigned</span> Index = <a class="code" href="classunsigned.html">unsigned</a>(-LoadedID) - 2;</div>
+<div class="line"><a name="l00643"></a><span class="lineno"> 643</span> assert(Index < LoadedSLocEntryTable.size() && <span class="stringliteral">"FileID out of range"</span>);</div>
+<div class="line"><a name="l00644"></a><span class="lineno"> 644</span> assert(!SLocEntryLoaded[Index] && <span class="stringliteral">"FileID already loaded"</span>);</div>
+<div class="line"><a name="l00645"></a><span class="lineno"> 645</span> LoadedSLocEntryTable[Index] = SLocEntry::get(LoadedOffset, Info);</div>
+<div class="line"><a name="l00646"></a><span class="lineno"> 646</span> SLocEntryLoaded[Index] = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00647"></a><span class="lineno"> 647</span> <span class="keywordflow">return</span> SourceLocation::getMacroLoc(LoadedOffset);</div>
+<div class="line"><a name="l00648"></a><span class="lineno"> 648</span> }</div>
+<div class="line"><a name="l00649"></a><span class="lineno"> 649</span> LocalSLocEntryTable.push_back(SLocEntry::get(NextLocalOffset, Info));</div>
+<div class="line"><a name="l00650"></a><span class="lineno"> 650</span> assert(NextLocalOffset + TokLength + 1 > NextLocalOffset &&</div>
+<div class="line"><a name="l00651"></a><span class="lineno"> 651</span> NextLocalOffset + TokLength + 1 <= CurrentLoadedOffset &&</div>
+<div class="line"><a name="l00652"></a><span class="lineno"> 652</span> <span class="stringliteral">"Ran out of source locations!"</span>);</div>
+<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> <span class="comment">// See createFileID for that +1.</span></div>
+<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> NextLocalOffset += TokLength + 1;</div>
+<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="keywordflow">return</span> SourceLocation::getMacroLoc(NextLocalOffset - (TokLength + 1));</div>
+<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> }</div>
+<div class="line"><a name="l00657"></a><span class="lineno"> 657</span> </div>
+<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> <span class="keyword">const</span> llvm::MemoryBuffer *</div>
+<div class="line"><a name="l00659"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1e4ef3487a9b54b2d733e0dd38cffeb6"> 659</a></span> <a class="code" href="classclang_1_1SourceManager.html#a1e4ef3487a9b54b2d733e0dd38cffeb6" title="Retrieve the memory buffer associated with the given file.">SourceManager::getMemoryBufferForFile</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File,</div>
+<div class="line"><a name="l00660"></a><span class="lineno"> 660</span> <span class="keywordtype">bool</span> *Invalid) {</div>
+<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *IR = getOrCreateContentCache(File);</div>
+<div class="line"><a name="l00662"></a><span class="lineno"> 662</span> assert(IR && <span class="stringliteral">"getOrCreateContentCache() cannot return NULL"</span>);</div>
+<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> <span class="keywordflow">return</span> IR-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</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>(), Invalid);</div>
+<div class="line"><a name="l00664"></a><span class="lineno"> 664</span> }</div>
+<div class="line"><a name="l00665"></a><span class="lineno"> 665</span> </div>
+<div class="line"><a name="l00666"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753"> 666</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753" title="Override the contents of the given source file by providing an already-allocated buffer.">SourceManager::overrideFileContents</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *SourceFile,</div>
+<div class="line"><a name="l00667"></a><span class="lineno"> 667</span> <span class="keyword">const</span> llvm::MemoryBuffer *Buffer,</div>
+<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> <span class="keywordtype">bool</span> DoNotFree) {</div>
+<div class="line"><a name="l00669"></a><span class="lineno"> 669</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *IR = getOrCreateContentCache(SourceFile);</div>
+<div class="line"><a name="l00670"></a><span class="lineno"> 670</span> assert(IR && <span class="stringliteral">"getOrCreateContentCache() cannot return NULL"</span>);</div>
+<div class="line"><a name="l00671"></a><span class="lineno"> 671</span> </div>
+<div class="line"><a name="l00672"></a><span class="lineno"> 672</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->replaceBuffer(Buffer, DoNotFree);</div>
+<div class="line"><a name="l00673"></a><span class="lineno"> 673</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->BufferOverridden = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00674"></a><span class="lineno"> 674</span> </div>
+<div class="line"><a name="l00675"></a><span class="lineno"> 675</span> getOverriddenFilesInfo().OverriddenFilesWithBuffer.insert(SourceFile);</div>
+<div class="line"><a name="l00676"></a><span class="lineno"> 676</span> }</div>
+<div class="line"><a name="l00677"></a><span class="lineno"> 677</span> </div>
+<div class="line"><a name="l00678"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a887e7fbd73d1836716cf03443ba6c431"> 678</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a0eb85320100e00c98e4bc3305e6e8753" title="Override the contents of the given source file by providing an already-allocated buffer.">SourceManager::overrideFileContents</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *SourceFile,</div>
+<div class="line"><a name="l00679"></a><span class="lineno"> 679</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *NewFile) {</div>
+<div class="line"><a name="l00680"></a><span class="lineno"> 680</span> assert(SourceFile-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>() == NewFile-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>() &&</div>
+<div class="line"><a name="l00681"></a><span class="lineno"> 681</span> <span class="stringliteral">"Different sizes, use the FileManager to create a virtual file with "</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno"> 682</span> <span class="stringliteral">"the correct size"</span>);</div>
+<div class="line"><a name="l00683"></a><span class="lineno"> 683</span> assert(FileInfos.count(SourceFile) == 0 &&</div>
+<div class="line"><a name="l00684"></a><span class="lineno"> 684</span> <span class="stringliteral">"This function should be called at the initialization stage, before "</span></div>
+<div class="line"><a name="l00685"></a><span class="lineno"> 685</span> <span class="stringliteral">"any parsing occurs."</span>);</div>
+<div class="line"><a name="l00686"></a><span class="lineno"> 686</span> getOverriddenFilesInfo().OverriddenFiles[SourceFile] = NewFile;</div>
+<div class="line"><a name="l00687"></a><span class="lineno"> 687</span> }</div>
+<div class="line"><a name="l00688"></a><span class="lineno"> 688</span> </div>
+<div class="line"><a name="l00689"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a11ed5cf983a0dabc74cb8defba573ddd"> 689</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a11ed5cf983a0dabc74cb8defba573ddd" title="Disable overridding the contents of a file, previously enabled with overrideFileContents.">SourceManager::disableFileContentsOverride</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File) {</div>
+<div class="line"><a name="l00690"></a><span class="lineno"> 690</span> <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#acd8be94be8664d7d60b03b4f136d4f8f" title="Returns true if the file contents have been overridden.">isFileOverridden</a>(File))</div>
+<div class="line"><a name="l00691"></a><span class="lineno"> 691</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00692"></a><span class="lineno"> 692</span> </div>
+<div class="line"><a name="l00693"></a><span class="lineno"> 693</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *IR = getOrCreateContentCache(File);</div>
+<div class="line"><a name="l00694"></a><span class="lineno"> 694</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->replaceBuffer(0);</div>
+<div class="line"><a name="l00695"></a><span class="lineno"> 695</span> <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *<span class="keyword">></span>(IR)->ContentsEntry = IR-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>;</div>
+<div class="line"><a name="l00696"></a><span class="lineno"> 696</span> </div>
+<div class="line"><a name="l00697"></a><span class="lineno"> 697</span> assert(OverriddenFilesInfo);</div>
+<div class="line"><a name="l00698"></a><span class="lineno"> 698</span> OverriddenFilesInfo->OverriddenFiles.erase(File);</div>
+<div class="line"><a name="l00699"></a><span class="lineno"> 699</span> OverriddenFilesInfo->OverriddenFilesWithBuffer.erase(File);</div>
+<div class="line"><a name="l00700"></a><span class="lineno"> 700</span> }</div>
+<div class="line"><a name="l00701"></a><span class="lineno"> 701</span> </div>
+<div class="line"><a name="l00702"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a57e483ae7710c8b23eeb4f119026d662"> 702</a></span> StringRef <a class="code" href="classclang_1_1SourceManager.html#a57e483ae7710c8b23eeb4f119026d662" title="Return a StringRef to the source buffer data for the specified FileID.">SourceManager::getBufferData</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00703"></a><span class="lineno"> 703</span> <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00704"></a><span class="lineno"> 704</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &MyInvalid);</div>
+<div class="line"><a name="l00705"></a><span class="lineno"> 705</span> <span class="keywordflow">if</span> (!SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() || MyInvalid) {</div>
+<div class="line"><a name="l00706"></a><span class="lineno"> 706</span> <span class="keywordflow">if</span> (Invalid) </div>
+<div class="line"><a name="l00707"></a><span class="lineno"> 707</span> *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00708"></a><span class="lineno"> 708</span> <span class="keywordflow">return</span> <span class="stringliteral">"<<<<<INVALID SOURCE LOCATION>>>>>"</span>;</div>
+<div class="line"><a name="l00709"></a><span class="lineno"> 709</span> }</div>
+<div class="line"><a name="l00710"></a><span class="lineno"> 710</span> </div>
+<div class="line"><a name="l00711"></a><span class="lineno"> 711</span> <span class="keyword">const</span> llvm::MemoryBuffer *Buf</div>
+<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> = SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</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="l00713"></a><span class="lineno"> 713</span> &MyInvalid);</div>
+<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> *Invalid = MyInvalid;</div>
+<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> </div>
+<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="keywordflow">return</span> <span class="stringliteral">"<<<<<INVALID SOURCE LOCATION>>>>>"</span>;</div>
+<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div>
+<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> <span class="keywordflow">return</span> Buf->getBuffer();</div>
+<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> }</div>
+<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> </div>
+<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> <span class="comment">// SourceLocation manipulation methods.</span></div>
+<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="comment"></span></div>
+<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="comment">/// \brief Return the FileID for a SourceLocation.</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">/// This is the cache-miss path of getFileID. Not as hot as that function, but</span></div>
+<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="comment">/// still very important. It is responsible for finding the entry in the</span></div>
+<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="comment">/// SLocEntry tables that contains the specified location.</span></div>
+<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> SourceManager::getFileIDSlow(<span class="keywordtype">unsigned</span> SLocOffset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00733"></a><span class="lineno"> 733</span> <span class="keywordflow">if</span> (!SLocOffset)</div>
+<div class="line"><a name="l00734"></a><span class="lineno"> 734</span> <span class="keywordflow">return</span> FileID::get(0);</div>
+<div class="line"><a name="l00735"></a><span class="lineno"> 735</span> </div>
+<div class="line"><a name="l00736"></a><span class="lineno"> 736</span> <span class="comment">// Now it is time to search for the correct file. See where the SLocOffset</span></div>
+<div class="line"><a name="l00737"></a><span class="lineno"> 737</span> <span class="comment">// sits in the global view and consult local or loaded buffers for it.</span></div>
+<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> <span class="keywordflow">if</span> (SLocOffset < NextLocalOffset)</div>
+<div class="line"><a name="l00739"></a><span class="lineno"> 739</span> <span class="keywordflow">return</span> getFileIDLocal(SLocOffset);</div>
+<div class="line"><a name="l00740"></a><span class="lineno"> 740</span> <span class="keywordflow">return</span> getFileIDLoaded(SLocOffset);</div>
+<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> }</div>
+<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="comment"></span></div>
+<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="comment">/// \brief Return the FileID for a SourceLocation with a low offset.</span></div>
+<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="comment">/// This function knows that the SourceLocation is in a local buffer, not a</span></div>
+<div class="line"><a name="l00746"></a><span class="lineno"> 746</span> <span class="comment">/// loaded one.</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno"> 747</span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> SourceManager::getFileIDLocal(<span class="keywordtype">unsigned</span> SLocOffset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00748"></a><span class="lineno"> 748</span> assert(SLocOffset < NextLocalOffset && <span class="stringliteral">"Bad function choice"</span>);</div>
+<div class="line"><a name="l00749"></a><span class="lineno"> 749</span> </div>
+<div class="line"><a name="l00750"></a><span class="lineno"> 750</span> <span class="comment">// After the first and second level caches, I see two common sorts of</span></div>
+<div class="line"><a name="l00751"></a><span class="lineno"> 751</span> <span class="comment">// behavior: 1) a lot of searched FileID's are "near" the cached file</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno"> 752</span> <span class="comment">// location or are "near" the cached expansion location. 2) others are just</span></div>
+<div class="line"><a name="l00753"></a><span class="lineno"> 753</span> <span class="comment">// completely random and may be a very long way away.</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno"> 754</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno"> 755</span> <span class="comment">// To handle this, we do a linear search for up to 8 steps to catch #1 quickly</span></div>
+<div class="line"><a name="l00756"></a><span class="lineno"> 756</span> <span class="comment">// then we fall back to a less cache efficient, but more scalable, binary</span></div>
+<div class="line"><a name="l00757"></a><span class="lineno"> 757</span> <span class="comment">// search to find the location.</span></div>
+<div class="line"><a name="l00758"></a><span class="lineno"> 758</span> </div>
+<div class="line"><a name="l00759"></a><span class="lineno"> 759</span> <span class="comment">// See if this is near the file point - worst case we start scanning from the</span></div>
+<div class="line"><a name="l00760"></a><span class="lineno"> 760</span> <span class="comment">// most newly created FileID.</span></div>
+<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> *I;</div>
+<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> </div>
+<div class="line"><a name="l00763"></a><span class="lineno"> 763</span> <span class="keywordflow">if</span> (LastFileIDLookup.ID < 0 ||</div>
+<div class="line"><a name="l00764"></a><span class="lineno"> 764</span> LocalSLocEntryTable[LastFileIDLookup.ID].getOffset() < SLocOffset) {</div>
+<div class="line"><a name="l00765"></a><span class="lineno"> 765</span> <span class="comment">// Neither loc prunes our search.</span></div>
+<div class="line"><a name="l00766"></a><span class="lineno"> 766</span> I = LocalSLocEntryTable.end();</div>
+<div class="line"><a name="l00767"></a><span class="lineno"> 767</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00768"></a><span class="lineno"> 768</span> <span class="comment">// Perhaps it is near the file point.</span></div>
+<div class="line"><a name="l00769"></a><span class="lineno"> 769</span> I = LocalSLocEntryTable.begin()+LastFileIDLookup.ID;</div>
+<div class="line"><a name="l00770"></a><span class="lineno"> 770</span> }</div>
+<div class="line"><a name="l00771"></a><span class="lineno"> 771</span> </div>
+<div class="line"><a name="l00772"></a><span class="lineno"> 772</span> <span class="comment">// Find the FileID that contains this. "I" is an iterator that points to a</span></div>
+<div class="line"><a name="l00773"></a><span class="lineno"> 773</span> <span class="comment">// FileID whose offset is known to be larger than SLocOffset.</span></div>
+<div class="line"><a name="l00774"></a><span class="lineno"> 774</span> <span class="keywordtype">unsigned</span> NumProbes = 0;</div>
+<div class="line"><a name="l00775"></a><span class="lineno"> 775</span> <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00776"></a><span class="lineno"> 776</span> --I;</div>
+<div class="line"><a name="l00777"></a><span class="lineno"> 777</span> <span class="keywordflow">if</span> (I-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() <= SLocOffset) {</div>
+<div class="line"><a name="l00778"></a><span class="lineno"> 778</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> Res = FileID::get(<span class="keywordtype">int</span>(I - LocalSLocEntryTable.begin()));</div>
+<div class="line"><a name="l00779"></a><span class="lineno"> 779</span> </div>
+<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="comment">// If this isn't an expansion, remember it. We have good locality across</span></div>
+<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="comment">// FileID lookups.</span></div>
+<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="keywordflow">if</span> (!I-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> NumLinearScans += NumProbes+1;</div>
+<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00786"></a><span class="lineno"> 786</span> }</div>
+<div class="line"><a name="l00787"></a><span class="lineno"> 787</span> <span class="keywordflow">if</span> (++NumProbes == 8)</div>
+<div class="line"><a name="l00788"></a><span class="lineno"> 788</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00789"></a><span class="lineno"> 789</span> }</div>
+<div class="line"><a name="l00790"></a><span class="lineno"> 790</span> </div>
+<div class="line"><a name="l00791"></a><span class="lineno"> 791</span> <span class="comment">// Convert "I" back into an index. We know that it is an entry whose index is</span></div>
+<div class="line"><a name="l00792"></a><span class="lineno"> 792</span> <span class="comment">// larger than the offset we are looking for.</span></div>
+<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> <span class="keywordtype">unsigned</span> GreaterIndex = I - LocalSLocEntryTable.begin();</div>
+<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> <span class="comment">// LessIndex - This is the lower bound of the range that we're searching.</span></div>
+<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> <span class="comment">// We know that the offset corresponding to the FileID is is less than</span></div>
+<div class="line"><a name="l00796"></a><span class="lineno"> 796</span> <span class="comment">// SLocOffset.</span></div>
+<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> <span class="keywordtype">unsigned</span> LessIndex = 0;</div>
+<div class="line"><a name="l00798"></a><span class="lineno"> 798</span> NumProbes = 0;</div>
+<div class="line"><a name="l00799"></a><span class="lineno"> 799</span> <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00800"></a><span class="lineno"> 800</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00801"></a><span class="lineno"> 801</span> <span class="keywordtype">unsigned</span> MiddleIndex = (GreaterIndex-LessIndex)/2+LessIndex;</div>
+<div class="line"><a name="l00802"></a><span class="lineno"> 802</span> <span class="keywordtype">unsigned</span> MidOffset = <a class="code" href="classclang_1_1SourceManager.html#a06bd6d8f9ae3d855d407c226b5ddb8bb" title="Get a local SLocEntry. This is exposed for indexing.">getLocalSLocEntry</a>(MiddleIndex, &Invalid).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l00803"></a><span class="lineno"> 803</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l00804"></a><span class="lineno"> 804</span> <span class="keywordflow">return</span> FileID::get(0);</div>
+<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> </div>
+<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> ++NumProbes;</div>
+<div class="line"><a name="l00807"></a><span class="lineno"> 807</span> </div>
+<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> <span class="comment">// If the offset of the midpoint is too large, chop the high side of the</span></div>
+<div class="line"><a name="l00809"></a><span class="lineno"> 809</span> <span class="comment">// range to the midpoint.</span></div>
+<div class="line"><a name="l00810"></a><span class="lineno"> 810</span> <span class="keywordflow">if</span> (MidOffset > SLocOffset) {</div>
+<div class="line"><a name="l00811"></a><span class="lineno"> 811</span> GreaterIndex = MiddleIndex;</div>
+<div class="line"><a name="l00812"></a><span class="lineno"> 812</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00813"></a><span class="lineno"> 813</span> }</div>
+<div class="line"><a name="l00814"></a><span class="lineno"> 814</span> </div>
+<div class="line"><a name="l00815"></a><span class="lineno"> 815</span> <span class="comment">// If the middle index contains the value, succeed and return.</span></div>
+<div class="line"><a name="l00816"></a><span class="lineno"> 816</span> <span class="comment">// FIXME: This could be made faster by using a function that's aware of</span></div>
+<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> <span class="comment">// being in the local area.</span></div>
+<div class="line"><a name="l00818"></a><span class="lineno"> 818</span> <span class="keywordflow">if</span> (isOffsetInFileID(FileID::get(MiddleIndex), SLocOffset)) {</div>
+<div class="line"><a name="l00819"></a><span class="lineno"> 819</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> Res = FileID::get(MiddleIndex);</div>
+<div class="line"><a name="l00820"></a><span class="lineno"> 820</span> </div>
+<div class="line"><a name="l00821"></a><span class="lineno"> 821</span> <span class="comment">// If this isn't a macro expansion, remember it. We have good locality</span></div>
+<div class="line"><a name="l00822"></a><span class="lineno"> 822</span> <span class="comment">// across FileID lookups.</span></div>
+<div class="line"><a name="l00823"></a><span class="lineno"> 823</span> <span class="keywordflow">if</span> (!LocalSLocEntryTable[MiddleIndex].isExpansion())</div>
+<div class="line"><a name="l00824"></a><span class="lineno"> 824</span> LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> NumBinaryProbes += NumProbes;</div>
+<div class="line"><a name="l00826"></a><span class="lineno"> 826</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00827"></a><span class="lineno"> 827</span> }</div>
+<div class="line"><a name="l00828"></a><span class="lineno"> 828</span> </div>
+<div class="line"><a name="l00829"></a><span class="lineno"> 829</span> <span class="comment">// Otherwise, move the low-side up to the middle index.</span></div>
+<div class="line"><a name="l00830"></a><span class="lineno"> 830</span> LessIndex = MiddleIndex;</div>
+<div class="line"><a name="l00831"></a><span class="lineno"> 831</span> }</div>
+<div class="line"><a name="l00832"></a><span class="lineno"> 832</span> }</div>
+<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> <span class="comment"></span></div>
+<div class="line"><a name="l00834"></a><span class="lineno"> 834</span> <span class="comment">/// \brief Return the FileID for a SourceLocation with a high offset.</span></div>
+<div class="line"><a name="l00835"></a><span class="lineno"> 835</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> <span class="comment">/// This function knows that the SourceLocation is in a loaded buffer, not a</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno"> 837</span> <span class="comment">/// local one.</span></div>
+<div class="line"><a name="l00838"></a><span class="lineno"> 838</span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> SourceManager::getFileIDLoaded(<span class="keywordtype">unsigned</span> SLocOffset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00839"></a><span class="lineno"> 839</span> <span class="comment">// Sanity checking, otherwise a bug may lead to hanging in release build.</span></div>
+<div class="line"><a name="l00840"></a><span class="lineno"> 840</span> <span class="keywordflow">if</span> (SLocOffset < CurrentLoadedOffset) {</div>
+<div class="line"><a name="l00841"></a><span class="lineno"> 841</span> assert(0 && <span class="stringliteral">"Invalid SLocOffset or bad function choice"</span>);</div>
+<div class="line"><a name="l00842"></a><span class="lineno"> 842</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</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> </div>
+<div class="line"><a name="l00845"></a><span class="lineno"> 845</span> <span class="comment">// Essentially the same as the local case, but the loaded array is sorted</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno"> 846</span> <span class="comment">// in the other direction.</span></div>
+<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> </div>
+<div class="line"><a name="l00848"></a><span class="lineno"> 848</span> <span class="comment">// First do a linear scan from the last lookup position, if possible.</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno"> 849</span> <span class="keywordtype">unsigned</span> I;</div>
+<div class="line"><a name="l00850"></a><span class="lineno"> 850</span> <span class="keywordtype">int</span> LastID = LastFileIDLookup.ID;</div>
+<div class="line"><a name="l00851"></a><span class="lineno"> 851</span> <span class="keywordflow">if</span> (LastID >= 0 || getLoadedSLocEntryByID(LastID).getOffset() < SLocOffset)</div>
+<div class="line"><a name="l00852"></a><span class="lineno"> 852</span> I = 0;</div>
+<div class="line"><a name="l00853"></a><span class="lineno"> 853</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00854"></a><span class="lineno"> 854</span> I = (-LastID - 2) + 1;</div>
+<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> </div>
+<div class="line"><a name="l00856"></a><span class="lineno"> 856</span> <span class="keywordtype">unsigned</span> NumProbes;</div>
+<div class="line"><a name="l00857"></a><span class="lineno"> 857</span> <span class="keywordflow">for</span> (NumProbes = 0; NumProbes < 8; ++NumProbes, ++I) {</div>
+<div class="line"><a name="l00858"></a><span class="lineno"> 858</span> <span class="comment">// Make sure the entry is loaded!</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno"> 859</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &E = <a class="code" href="classclang_1_1SourceManager.html#ae2c7f11f93fdf974382ff478a89e757b" title="Get a loaded SLocEntry. This is exposed for indexing.">getLoadedSLocEntry</a>(I);</div>
+<div class="line"><a name="l00860"></a><span class="lineno"> 860</span> <span class="keywordflow">if</span> (E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() <= SLocOffset) {</div>
+<div class="line"><a name="l00861"></a><span class="lineno"> 861</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> Res = FileID::get(-<span class="keywordtype">int</span>(I) - 2);</div>
+<div class="line"><a name="l00862"></a><span class="lineno"> 862</span> </div>
+<div class="line"><a name="l00863"></a><span class="lineno"> 863</span> <span class="keywordflow">if</span> (!E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> NumLinearScans += NumProbes + 1;</div>
+<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00867"></a><span class="lineno"> 867</span> }</div>
+<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> }</div>
+<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> </div>
+<div class="line"><a name="l00870"></a><span class="lineno"> 870</span> <span class="comment">// Linear scan failed. Do the binary search. Note the reverse sorting of the</span></div>
+<div class="line"><a name="l00871"></a><span class="lineno"> 871</span> <span class="comment">// table: GreaterIndex is the one where the offset is greater, which is</span></div>
+<div class="line"><a name="l00872"></a><span class="lineno"> 872</span> <span class="comment">// actually a lower index!</span></div>
+<div class="line"><a name="l00873"></a><span class="lineno"> 873</span> <span class="keywordtype">unsigned</span> GreaterIndex = I;</div>
+<div class="line"><a name="l00874"></a><span class="lineno"> 874</span> <span class="keywordtype">unsigned</span> LessIndex = LoadedSLocEntryTable.size();</div>
+<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> NumProbes = 0;</div>
+<div class="line"><a name="l00876"></a><span class="lineno"> 876</span> <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l00877"></a><span class="lineno"> 877</span> ++NumProbes;</div>
+<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> <span class="keywordtype">unsigned</span> MiddleIndex = (LessIndex - GreaterIndex) / 2 + GreaterIndex;</div>
+<div class="line"><a name="l00879"></a><span class="lineno"> 879</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &E = <a class="code" href="classclang_1_1SourceManager.html#ae2c7f11f93fdf974382ff478a89e757b" title="Get a loaded SLocEntry. This is exposed for indexing.">getLoadedSLocEntry</a>(MiddleIndex);</div>
+<div class="line"><a name="l00880"></a><span class="lineno"> 880</span> <span class="keywordflow">if</span> (E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() == 0)</div>
+<div class="line"><a name="l00881"></a><span class="lineno"> 881</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>(); <span class="comment">// invalid entry.</span></div>
+<div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div>
+<div class="line"><a name="l00883"></a><span class="lineno"> 883</span> ++NumProbes;</div>
+<div class="line"><a name="l00884"></a><span class="lineno"> 884</span> </div>
+<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> <span class="keywordflow">if</span> (E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() > SLocOffset) {</div>
+<div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="comment">// Sanity checking, otherwise a bug may lead to hanging in release build.</span></div>
+<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="keywordflow">if</span> (GreaterIndex == MiddleIndex) {</div>
+<div class="line"><a name="l00888"></a><span class="lineno"> 888</span> assert(0 && <span class="stringliteral">"binary search missed the entry"</span>);</div>
+<div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l00890"></a><span class="lineno"> 890</span> }</div>
+<div class="line"><a name="l00891"></a><span class="lineno"> 891</span> GreaterIndex = MiddleIndex;</div>
+<div class="line"><a name="l00892"></a><span class="lineno"> 892</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00893"></a><span class="lineno"> 893</span> }</div>
+<div class="line"><a name="l00894"></a><span class="lineno"> 894</span> </div>
+<div class="line"><a name="l00895"></a><span class="lineno"> 895</span> <span class="keywordflow">if</span> (isOffsetInFileID(FileID::get(-<span class="keywordtype">int</span>(MiddleIndex) - 2), SLocOffset)) {</div>
+<div class="line"><a name="l00896"></a><span class="lineno"> 896</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> Res = FileID::get(-<span class="keywordtype">int</span>(MiddleIndex) - 2);</div>
+<div class="line"><a name="l00897"></a><span class="lineno"> 897</span> <span class="keywordflow">if</span> (!E.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l00898"></a><span class="lineno"> 898</span> LastFileIDLookup = Res;</div>
+<div class="line"><a name="l00899"></a><span class="lineno"> 899</span> NumBinaryProbes += NumProbes;</div>
+<div class="line"><a name="l00900"></a><span class="lineno"> 900</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l00901"></a><span class="lineno"> 901</span> }</div>
+<div class="line"><a name="l00902"></a><span class="lineno"> 902</span> </div>
+<div class="line"><a name="l00903"></a><span class="lineno"> 903</span> <span class="comment">// Sanity checking, otherwise a bug may lead to hanging in release build.</span></div>
+<div class="line"><a name="l00904"></a><span class="lineno"> 904</span> <span class="keywordflow">if</span> (LessIndex == MiddleIndex) {</div>
+<div class="line"><a name="l00905"></a><span class="lineno"> 905</span> assert(0 && <span class="stringliteral">"binary search missed the entry"</span>);</div>
+<div class="line"><a name="l00906"></a><span class="lineno"> 906</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</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> LessIndex = MiddleIndex;</div>
+<div class="line"><a name="l00909"></a><span class="lineno"> 909</span> }</div>
+<div class="line"><a name="l00910"></a><span class="lineno"> 910</span> }</div>
+<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> </div>
+<div class="line"><a name="l00912"></a><span class="lineno"> 912</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> SourceManager::</div>
+<div class="line"><a name="l00913"></a><span class="lineno"> 913</span> getExpansionLocSlowCase(<a class="code" href="classclang_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="l00914"></a><span class="lineno"> 914</span> <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00915"></a><span class="lineno"> 915</span> <span class="comment">// Note: If Loc indicates an offset into a token that came from a macro</span></div>
+<div class="line"><a name="l00916"></a><span class="lineno"> 916</span> <span class="comment">// expansion (e.g. the 5th character of the token) we do not want to add</span></div>
+<div class="line"><a name="l00917"></a><span class="lineno"> 917</span> <span class="comment">// this offset when going to the expansion location. The expansion</span></div>
+<div class="line"><a name="l00918"></a><span class="lineno"> 918</span> <span class="comment">// location is the macro invocation, which the offset has nothing to do</span></div>
+<div class="line"><a name="l00919"></a><span class="lineno"> 919</span> <span class="comment">// with. This is unlike when we get the spelling loc, because the offset</span></div>
+<div class="line"><a name="l00920"></a><span class="lineno"> 920</span> <span class="comment">// directly correspond to the token whose spelling we're inspecting.</span></div>
+<div class="line"><a name="l00921"></a><span class="lineno"> 921</span> Loc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc)).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l00922"></a><span class="lineno"> 922</span> } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00923"></a><span class="lineno"> 923</span> </div>
+<div class="line"><a name="l00924"></a><span class="lineno"> 924</span> <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l00925"></a><span class="lineno"> 925</span> }</div>
+<div class="line"><a name="l00926"></a><span class="lineno"> 926</span> </div>
+<div class="line"><a name="l00927"></a><span class="lineno"> 927</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> SourceManager::getSpellingLocSlowCase(<a class="code" href="classclang_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="l00928"></a><span class="lineno"> 928</span> <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00929"></a><span class="lineno"> 929</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l00930"></a><span class="lineno"> 930</span> Loc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>();</div>
+<div class="line"><a name="l00931"></a><span class="lineno"> 931</span> Loc = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(LocInfo.second);</div>
+<div class="line"><a name="l00932"></a><span class="lineno"> 932</span> } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00933"></a><span class="lineno"> 933</span> <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l00934"></a><span class="lineno"> 934</span> }</div>
+<div class="line"><a name="l00935"></a><span class="lineno"> 935</span> </div>
+<div class="line"><a name="l00936"></a><span class="lineno"> 936</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> SourceManager::getFileLocSlowCase(<a class="code" href="classclang_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="l00937"></a><span class="lineno"> 937</span> <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00938"></a><span class="lineno"> 938</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SourceManager.html#a1fc782fe692d7647c32ca861bbf697a7" title="Tests whether the given source location represents a macro argument's expansion into the function-lik...">isMacroArgExpansion</a>(Loc))</div>
+<div class="line"><a name="l00939"></a><span class="lineno"> 939</span> Loc = <a class="code" href="classclang_1_1SourceManager.html#aaa9b1e906f02915b9facd5591e35d985" title="Given a SourceLocation object, return the spelling location referenced by the ID.">getImmediateSpellingLoc</a>(Loc);</div>
+<div class="line"><a name="l00940"></a><span class="lineno"> 940</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00941"></a><span class="lineno"> 941</span> Loc = <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Loc).first;</div>
+<div class="line"><a name="l00942"></a><span class="lineno"> 942</span> } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> }</div>
+<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> </div>
+<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> </div>
+<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> std::pair<FileID, unsigned></div>
+<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> SourceManager::getDecomposedExpansionLocSlowCase(</div>
+<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> *E)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="comment">// If this is an expansion record, walk through all the expansion points.</span></div>
+<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID;</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> Loc;</div>
+<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> Loc = E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l00956"></a><span class="lineno"> 956</span> </div>
+<div class="line"><a name="l00957"></a><span class="lineno"> 957</span> FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l00958"></a><span class="lineno"> 958</span> E = &<a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID);</div>
+<div class="line"><a name="l00959"></a><span class="lineno"> 959</span> Offset = Loc.getOffset()-E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l00960"></a><span class="lineno"> 960</span> } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00961"></a><span class="lineno"> 961</span> </div>
+<div class="line"><a name="l00962"></a><span class="lineno"> 962</span> <span class="keywordflow">return</span> std::make_pair(FID, Offset);</div>
+<div class="line"><a name="l00963"></a><span class="lineno"> 963</span> }</div>
+<div class="line"><a name="l00964"></a><span class="lineno"> 964</span> </div>
+<div class="line"><a name="l00965"></a><span class="lineno"> 965</span> std::pair<FileID, unsigned></div>
+<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> SourceManager::getDecomposedSpellingLocSlowCase(<span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> *E,</div>
+<div class="line"><a name="l00967"></a><span class="lineno"> 967</span> <span class="keywordtype">unsigned</span> Offset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00968"></a><span class="lineno"> 968</span> <span class="comment">// If this is an expansion record, walk through all the expansion points.</span></div>
+<div class="line"><a name="l00969"></a><span class="lineno"> 969</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID;</div>
+<div class="line"><a name="l00970"></a><span class="lineno"> 970</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Loc;</div>
+<div class="line"><a name="l00971"></a><span class="lineno"> 971</span> <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00972"></a><span class="lineno"> 972</span> Loc = E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>();</div>
+<div class="line"><a name="l00973"></a><span class="lineno"> 973</span> Loc = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Offset);</div>
+<div class="line"><a name="l00974"></a><span class="lineno"> 974</span> </div>
+<div class="line"><a name="l00975"></a><span class="lineno"> 975</span> FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l00976"></a><span class="lineno"> 976</span> E = &<a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID);</div>
+<div class="line"><a name="l00977"></a><span class="lineno"> 977</span> Offset = Loc.getOffset()-E-><a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l00978"></a><span class="lineno"> 978</span> } <span class="keywordflow">while</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l00979"></a><span class="lineno"> 979</span> </div>
+<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="keywordflow">return</span> std::make_pair(FID, Offset);</div>
+<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> }</div>
+<div class="line"><a name="l00982"></a><span class="lineno"> 982</span> <span class="comment"></span></div>
+<div class="line"><a name="l00983"></a><span class="lineno"> 983</span> <span class="comment">/// getImmediateSpellingLoc - Given a SourceLocation object, return the</span></div>
+<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="comment">/// spelling location referenced by the ID. This is the first level down</span></div>
+<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="comment">/// towards the place where the characters that make up the lexed token can be</span></div>
+<div class="line"><a name="l00986"></a><span class="lineno"> 986</span> <span class="comment">/// found. This should not generally be used by clients.</span></div>
+<div class="line"><a name="l00987"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aaa9b1e906f02915b9facd5591e35d985"> 987</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_1SourceManager.html#aaa9b1e906f02915b9facd5591e35d985" title="Given a SourceLocation object, return the spelling location referenced by the ID.">SourceManager::getImmediateSpellingLoc</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)<span class="keyword"> const</span>{</div>
+<div class="line"><a name="l00988"></a><span class="lineno"> 988</span> <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l00989"></a><span class="lineno"> 989</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> Loc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>();</div>
+<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="keywordflow">return</span> Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(LocInfo.second);</div>
+<div class="line"><a name="l00992"></a><span class="lineno"> 992</span> }</div>
+<div class="line"><a name="l00993"></a><span class="lineno"> 993</span> </div>
+<div class="line"><a name="l00994"></a><span class="lineno"> 994</span> <span class="comment"></span></div>
+<div class="line"><a name="l00995"></a><span class="lineno"> 995</span> <span class="comment">/// getImmediateExpansionRange - Loc is required to be an expansion location.</span></div>
+<div class="line"><a name="l00996"></a><span class="lineno"> 996</span> <span class="comment">/// Return the start/end of the expansion information.</span></div>
+<div class="line"><a name="l00997"></a><span class="lineno"> 997</span> <span class="comment"></span>std::pair<SourceLocation,SourceLocation></div>
+<div class="line"><a name="l00998"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b"> 998</a></span> <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">SourceManager::getImmediateExpansionRange</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00999"></a><span class="lineno"> 999</span> assert(Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>() && <span class="stringliteral">"Not a macro expansion loc!"</span>);</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &Expansion = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc)).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span> <span class="keywordflow">return</span> Expansion.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a9d875e610d727fdd75be1a8e28a3fd9d">getExpansionLocRange</a>();</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</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">/// getExpansionRange - Given a SourceLocation object, return the range of</span></div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span> <span class="comment">/// tokens covered by the expansion in the ultimate file.</span></div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span> <span class="comment"></span>std::pair<SourceLocation,SourceLocation></div>
+<div class="line"><a name="l01007"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a532619980c29dd7590f84a8abc8dcfcc"> 1007</a></span> <a class="code" href="classclang_1_1SourceManager.html#a532619980c29dd7590f84a8abc8dcfcc" title="Given a SourceLocation object, return the range of tokens covered by the expansion the ultimate file...">SourceManager::getExpansionRange</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) <span class="keywordflow">return</span> std::make_pair(Loc, Loc);</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> std::pair<SourceLocation,SourceLocation> Res =</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Loc);</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="comment">// Fully resolve the start and end locations to their ultimate expansion</span></div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="comment">// points.</span></div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="keywordflow">while</span> (!Res.first.isFileID())</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> Res.first = <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Res.first).first;</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span> <span class="keywordflow">while</span> (!Res.second.isFileID())</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span> Res.second = <a class="code" href="classclang_1_1SourceManager.html#a1068f3643e436b35db1676296142bb9b" title="Return the start/end of the expansion information for an expansion location.">getImmediateExpansionRange</a>(Res.second).second;</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> <span class="keywordflow">return</span> Res;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> }</div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> </div>
+<div class="line"><a name="l01022"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a1fc782fe692d7647c32ca861bbf697a7"> 1022</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a1fc782fe692d7647c32ca861bbf697a7" title="Tests whether the given source location represents a macro argument's expansion into the function-lik...">SourceManager::isMacroArgExpansion</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="keywordflow">if</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &Expansion = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> <span class="keywordflow">return</span> Expansion.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>();</div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> }</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div>
+<div class="line"><a name="l01030"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a118a110590249d67d2a6a62e793dc74b"> 1030</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a118a110590249d67d2a6a62e793dc74b" title="Tests whether the given source location represents the expansion of a macro body.">SourceManager::isMacroBodyExpansion</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span> <span class="keywordflow">if</span> (!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span> </div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &Expansion = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span> <span class="keywordflow">return</span> Expansion.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#af10d256955253b4c070e600a195e3abe">isMacroBodyExpansion</a>();</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span> }</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span> </div>
+<div class="line"><a name="l01038"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#ac8208f55b7925dcc170f677c759d0b19"> 1038</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#ac8208f55b7925dcc170f677c759d0b19" title="Returns true if the given MacroID location points at the beginning of the immediate macro expansion...">SourceManager::isAtStartOfImmediateMacroExpansion</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,</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</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> *MacroBegin)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> assert(Loc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>() && <span class="stringliteral">"Expected a valid macro loc"</span>);</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> std::pair<FileID, unsigned> DecompLoc = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="keywordflow">if</span> (DecompLoc.second > 0)</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Does not point at the start of expansion range.</span></div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &ExpInfo =</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(DecompLoc.first, &Invalid).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</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> ExpLoc = ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span> </div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span> <span class="keywordflow">if</span> (ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>()) {</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span> <span class="comment">// For macro argument expansions, check if the previous FileID is part of</span></div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span> <span class="comment">// the same argument expansion, in which case this Loc is not at the</span></div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span> <span class="comment">// beginning of the expansion.</span></div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> PrevFID = getPreviousFileID(DecompLoc.first);</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="keywordflow">if</span> (!PrevFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &PrevEntry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(PrevFID, &Invalid);</div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="keywordflow">if</span> (PrevEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>() &&</div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> PrevEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>() == ExpLoc)</div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> }</div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> }</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> </div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> <span class="keywordflow">if</span> (MacroBegin)</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> *MacroBegin = ExpLoc;</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span> }</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span> </div>
+<div class="line"><a name="l01073"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a01512adc1838f85b975564197bb86584"> 1073</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a01512adc1838f85b975564197bb86584" title="Returns true if the given MacroID location points at the character end of the immediate macro expansi...">SourceManager::isAtEndOfImmediateMacroExpansion</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,</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</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> *MacroEnd)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span> assert(Loc.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && Loc.<a class="code" href="classclang_1_1SourceLocation.html#a83c660ad7c57096011c5f40c50b52c7d">isMacroID</a>() && <span class="stringliteral">"Expected a valid macro loc"</span>);</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> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID = <a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc);</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</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> NextLoc = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(1);</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span> <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(NextLoc, FID))</div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; <span class="comment">// Does not point at the end of expansion range.</span></div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span> </div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">SrcMgr::ExpansionInfo</a> &ExpInfo =</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> </div>
+<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span> <span class="keywordflow">if</span> (ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>()) {</div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="comment">// For macro argument expansions, check if the next FileID is part of the</span></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="comment">// same argument expansion, in which case this Loc is not at the end of the</span></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="comment">// expansion.</span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> NextFID = getNextFileID(FID);</div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="keywordflow">if</span> (!NextFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &NextEntry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(NextFID, &Invalid);</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="keywordflow">if</span> (NextEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>() &&</div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> NextEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>() ==</div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>())</div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> }</div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> }</div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> </div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="keywordflow">if</span> (MacroEnd)</div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> *MacroEnd = ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a23a06e3e093cb6f9984a79370a55fe95">getExpansionLocEnd</a>();</div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> }</div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> </div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> </div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="comment">// Queries about the code at a SourceLocation.</span></div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment"></span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="comment">/// getCharacterData - Return a pointer to the start of the specified location</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="comment">/// in the appropriate MemoryBuffer.</span></div>
+<div class="line"><a name="l01116"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a365885c3cd3833c06fde3f5ed0ff60d8"> 1116</a></span> <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1SourceManager.html#a365885c3cd3833c06fde3f5ed0ff60d8" title="Return a pointer to the start of the specified location in the appropriate spelling MemoryBuffer...">SourceManager::getCharacterData</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> SL,</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span> <span class="comment">// Note that this is a hot function in the getSpelling() path, which is</span></div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span> <span class="comment">// heavily used by -E mode.</span></div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a57a3ffe7381bce64198222dabd736545" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedSpellingLoc</a>(SL);</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span> </div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> <span class="comment">// Note that calling 'getBuffer()' may lazily page in a source file.</span></div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span> <span class="keywordtype">bool</span> CharDataInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &CharDataInvalid);</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span> <span class="keywordflow">if</span> (CharDataInvalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span> </div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span> <span class="keywordflow">return</span> <span class="stringliteral">"<<<<INVALID BUFFER>>>>"</span>;</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span> }</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span> <span class="keyword">const</span> llvm::MemoryBuffer *Buffer</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span> = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> -><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</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>(), &CharDataInvalid);</div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span> *Invalid = CharDataInvalid;</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span> <span class="keywordflow">return</span> Buffer->getBufferStart() + (CharDataInvalid? 0 : LocInfo.second);</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"></span></div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span> <span class="comment">/// getColumnNumber - Return the column # for the specified file position.</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span> <span class="comment">/// this is significantly cheaper to compute than the line number.</span></div>
+<div class="line"><a name="l01142"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b"> 1142</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">SourceManager::getColumnNumber</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> FilePos,</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="keyword">const</span> llvm::MemoryBuffer *MemBuf = <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(FID, &MyInvalid);</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> *Invalid = MyInvalid;</div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span> <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span> <span class="comment">// It is okay to request a position just past the end of the buffer.</span></div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span> <span class="keywordflow">if</span> (FilePos > MemBuf->getBufferSize()) {</div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> }</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> <span class="comment">// See if we just calculated the line number for this FilePos and can use</span></div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="comment">// that to lookup the start of the line instead of searching for it.</span></div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> <span class="keywordflow">if</span> (LastLineNoFileIDQuery == FID &&</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> LastLineNoContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> != 0 &&</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> LastLineNoResult < LastLineNoContentCache->NumLines) {</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="keywordtype">unsigned</span> *SourceLineCache = LastLineNoContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>;</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="keywordtype">unsigned</span> LineStart = SourceLineCache[LastLineNoResult - 1];</div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="keywordtype">unsigned</span> LineEnd = SourceLineCache[LastLineNoResult];</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="keywordflow">if</span> (FilePos >= LineStart && FilePos < LineEnd)</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span> <span class="keywordflow">return</span> FilePos - LineStart + 1;</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span> }</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span> </div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Buf = MemBuf->getBufferStart();</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span> <span class="keywordtype">unsigned</span> LineStart = FilePos;</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span> <span class="keywordflow">while</span> (LineStart && Buf[LineStart-1] != <span class="charliteral">'\n'</span> && Buf[LineStart-1] != <span class="charliteral">'\r'</span>)</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span> --LineStart;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span> <span class="keywordflow">return</span> FilePos-LineStart+1;</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span> }</div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span> </div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span> <span class="comment">// isInvalid - Return the result of calling loc.isInvalid(), and</span></div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span> <span class="comment">// if Invalid is not null, set its value to same.</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92"> 1180</a></span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</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, <span class="keywordtype">bool</span> *Invalid) {</div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span> <span class="keywordtype">bool</span> MyInvalid = Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>();</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span> *Invalid = MyInvalid;</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span> <span class="keywordflow">return</span> MyInvalid;</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span> }</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span> </div>
+<div class="line"><a name="l01187"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a87f26d996dbdbb1416dda847d74cb051"> 1187</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a87f26d996dbdbb1416dda847d74cb051">SourceManager::getSpellingColumnNumber</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,</div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a57a3ffe7381bce64198222dabd736545" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedSpellingLoc</a>(Loc);</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">getColumnNumber</a>(LocInfo.first, LocInfo.second, Invalid);</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> }</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> </div>
+<div class="line"><a name="l01194"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a7008294144ca7315e608e18d4a672148"> 1194</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a7008294144ca7315e608e18d4a672148">SourceManager::getExpansionColumnNumber</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,</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">getColumnNumber</a>(LocInfo.first, LocInfo.second, Invalid);</div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span> }</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> </div>
+<div class="line"><a name="l01201"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a91eca6e07bda854a5b2d042e9377b3aa"> 1201</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a91eca6e07bda854a5b2d042e9377b3aa">SourceManager::getPresumedColumnNumber</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,</div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">getPresumedLoc</a>(Loc).<a class="code" href="classclang_1_1PresumedLoc.html#a2cb9e651c8183ff661a6243fa0f6bc1f" title="Return the presumed column number of this location.">getColumn</a>();</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span> }</div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span> </div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span> <span class="preprocessor">#ifdef __SSE2__</span></div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span> <span class="preprocessor"></span><span class="preprocessor">#include <<a class="code" href="emmintrin_8h.html">emmintrin.h</a>></span></div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span> <span class="keyword">static</span> LLVM_ATTRIBUTE_NOINLINE <span class="keywordtype">void</span></div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span> <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>, <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *FI,</div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span> llvm::BumpPtrAllocator &Alloc,</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span> <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>, <span class="keywordtype">bool</span> &Invalid);</div>
+<div class="line"><a name="l01215"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009"> 1215</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &<a class="code" href="LiteralSupport_8cpp.html#a5f4a4a29292c4a1697226abf1d22b9dd" title="Produce a diagnostic highlighting some portion of a literal.">Diag</a>, <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *FI,</div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span> llvm::BumpPtrAllocator &Alloc,</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span> <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>, <span class="keywordtype">bool</span> &Invalid) {</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span> <span class="comment">// Note that calling 'getBuffer()' may lazily page in the file.</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span> <span class="keyword">const</span> MemoryBuffer *Buffer = FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, SM, <a class="code" href="classclang_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="l01220"></a><span class="lineno"> 1220</span> &Invalid);</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span> <span class="keywordflow">return</span>;</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="comment">// Find the file offsets of all of the *physical* source lines. This does</span></div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span> <span class="comment">// not look at trigraphs, escaped newlines, or anything else tricky.</span></div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<unsigned, 256></a> LineOffsets;</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span> </div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span> <span class="comment">// Line #1 starts at char 0.</span></div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span> LineOffsets.push_back(0);</div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span> </div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *Buf = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer->getBufferStart();</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *End = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buffer->getBufferEnd();</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span> <span class="keywordtype">unsigned</span> Offs = 0;</div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span> <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span> <span class="comment">// Skip over the contents of the line.</span></div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *NextBuf = (<span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)Buf;</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span> </div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span> <span class="preprocessor">#ifdef __SSE2__</span></div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span> <span class="preprocessor"></span> <span class="comment">// Try to skip to the next newline using SSE instructions. This is very</span></div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span> <span class="comment">// performance sensitive for programs with lots of diagnostics and in -E</span></div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span> <span class="comment">// mode.</span></div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> __m128i CRs = _mm_set1_epi8(<span class="charliteral">'\r'</span>);</div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span> __m128i LFs = _mm_set1_epi8(<span class="charliteral">'\n'</span>);</div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span> </div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span> <span class="comment">// First fix up the alignment to 16 bytes.</span></div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span> <span class="keywordflow">while</span> (((uintptr_t)NextBuf & 0xF) != 0) {</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span> <span class="keywordflow">if</span> (*NextBuf == <span class="charliteral">'\n'</span> || *NextBuf == <span class="charliteral">'\r'</span> || *NextBuf == <span class="charliteral">'\0'</span>)</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span> <span class="keywordflow">goto</span> FoundSpecialChar;</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span> ++NextBuf;</div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span> }</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span> </div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span> <span class="comment">// Scan 16 byte chunks for '\r' and '\n'. Ignore '\0'.</span></div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span> <span class="keywordflow">while</span> (NextBuf+16 <= End) {</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span> <span class="keyword">const</span> __m128i Chunk = *(<span class="keyword">const</span> __m128i*)NextBuf;</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span> __m128i Cmp = _mm_or_si128(_mm_cmpeq_epi8(Chunk, CRs),</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span> _mm_cmpeq_epi8(Chunk, LFs));</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> <span class="keywordtype">unsigned</span> Mask = _mm_movemask_epi8(Cmp);</div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span> </div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span> <span class="comment">// If we found a newline, adjust the pointer and jump to the handling code.</span></div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span> <span class="keywordflow">if</span> (Mask != 0) {</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> NextBuf += llvm::countTrailingZeros(Mask);</div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span> <span class="keywordflow">goto</span> FoundSpecialChar;</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span> }</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span> NextBuf += 16;</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> }</div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span> <span class="keywordflow">while</span> (*NextBuf != <span class="charliteral">'\n'</span> && *NextBuf != <span class="charliteral">'\r'</span> && *NextBuf != <span class="charliteral">'\0'</span>)</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span> ++NextBuf;</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span> </div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span> <span class="preprocessor">#ifdef __SSE2__</span></div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> <span class="preprocessor"></span>FoundSpecialChar:</div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span> <span class="preprocessor"></span> Offs += NextBuf-Buf;</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span> Buf = NextBuf;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> </div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span> <span class="keywordflow">if</span> (Buf[0] == <span class="charliteral">'\n'</span> || Buf[0] == <span class="charliteral">'\r'</span>) {</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span> <span class="comment">// If this is \n\r or \r\n, skip both characters.</span></div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span> <span class="keywordflow">if</span> ((Buf[1] == <span class="charliteral">'\n'</span> || Buf[1] == <span class="charliteral">'\r'</span>) && Buf[0] != Buf[1])</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span> ++Offs, ++Buf;</div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span> ++Offs, ++Buf;</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span> LineOffsets.push_back(Offs);</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> <span class="comment">// Otherwise, this is a null. If end of file, exit.</span></div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span> <span class="keywordflow">if</span> (Buf == End) <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span> <span class="comment">// Otherwise, skip the null.</span></div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span> ++Offs, ++Buf;</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span> }</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span> }</div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span> </div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span> <span class="comment">// Copy the offsets into the FileInfo structure.</span></div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span> FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a> = LineOffsets.size();</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span> FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> = Alloc.Allocate<<span class="keywordtype">unsigned</span>>(LineOffsets.size());</div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span> std::copy(LineOffsets.begin(), LineOffsets.end(), FI-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>);</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span> }</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span> <span class="comment"></span></div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span> <span class="comment">/// getLineNumber - Given a SourceLocation, return the spelling line number</span></div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span> <span class="comment">/// for the position indicated. This requires building and caching a table of</span></div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span> <span class="comment">/// line offsets for the MemoryBuffer, so this is not cheap: use only when</span></div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span> <span class="comment">/// about to emit a diagnostic.</span></div>
+<div class="line"><a name="l01301"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236"> 1301</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">SourceManager::getLineNumber</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID, <span class="keywordtype">unsigned</span> FilePos, </div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span> <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span> *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span> <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span> }</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span> </div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *Content;</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span> <span class="keywordflow">if</span> (LastLineNoFileIDQuery == FID)</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span> Content = LastLineNoContentCache;</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span> <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span> <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &MyInvalid);</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span> <span class="keywordflow">if</span> (MyInvalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span> *Invalid = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span> <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> }</div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span> </div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span> Content = <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a>*<span class="keyword">></span>(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>());</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span> }</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> </div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span> <span class="comment">// If this is the first use of line information for this buffer, compute the</span><span class="comment"></span></div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span> <span class="comment"> /// SourceLineCache for it on demand.</span></div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span> <span class="comment"></span> <span class="keywordflow">if</span> (Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> == 0) {</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span> <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span> <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(Diag, Content, ContentCacheAlloc, *<span class="keyword">this</span>, MyInvalid);</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> *Invalid = MyInvalid;</div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span> <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span> <span class="keywordflow">return</span> 1;</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span> *Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span> </div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span> <span class="comment">// Okay, we know we have a line number table. Do a binary search to find the</span></div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span> <span class="comment">// line number that this character position lands on.</span></div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> <span class="keywordtype">unsigned</span> *SourceLineCache = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>;</div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span> <span class="keywordtype">unsigned</span> *SourceLineCacheStart = SourceLineCache;</div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span> <span class="keywordtype">unsigned</span> *SourceLineCacheEnd = SourceLineCache + Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>;</div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span> </div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span> <span class="keywordtype">unsigned</span> QueriedFilePos = FilePos+1;</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span> </div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span> <span class="comment">// FIXME: I would like to be convinced that this code is worth being as</span></div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> <span class="comment">// complicated as it is, binary search isn't that slow.</span></div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span> <span class="comment">//</span></div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span> <span class="comment">// If it is worth being optimized, then in my opinion it could be more</span></div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> <span class="comment">// performant, simpler, and more obviously correct by just "galloping" outward</span></div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> <span class="comment">// from the queried file position. In fact, this could be incorporated into a</span></div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> <span class="comment">// generic algorithm such as lower_bound_with_hint.</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">// If someone gives me a test case where this matters, and I will do it! - DWD</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> </div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> <span class="comment">// If the previous query was to the same file, we know both the file pos from</span></div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span> <span class="comment">// that query and the line number returned. This allows us to narrow the</span></div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span> <span class="comment">// search space from the entire file to something near the match.</span></div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> <span class="keywordflow">if</span> (LastLineNoFileIDQuery == FID) {</div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span> <span class="keywordflow">if</span> (QueriedFilePos >= LastLineNoFilePos) {</div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span> <span class="comment">// FIXME: Potential overflow?</span></div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span> SourceLineCache = SourceLineCache+LastLineNoResult-1;</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span> </div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span> <span class="comment">// The query is likely to be nearby the previous one. Here we check to</span></div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span> <span class="comment">// see if it is within 5, 10 or 20 lines. It can be far away in cases</span></div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span> <span class="comment">// where big comment blocks and vertical whitespace eat up lines but</span></div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span> <span class="comment">// contribute no tokens.</span></div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> <span class="keywordflow">if</span> (SourceLineCache+5 < SourceLineCacheEnd) {</div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span> <span class="keywordflow">if</span> (SourceLineCache[5] > QueriedFilePos)</div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span> SourceLineCacheEnd = SourceLineCache+5;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SourceLineCache+10 < SourceLineCacheEnd) {</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span> <span class="keywordflow">if</span> (SourceLineCache[10] > QueriedFilePos)</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span> SourceLineCacheEnd = SourceLineCache+10;</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (SourceLineCache+20 < SourceLineCacheEnd) {</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> <span class="keywordflow">if</span> (SourceLineCache[20] > QueriedFilePos)</div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span> SourceLineCacheEnd = SourceLineCache+20;</div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span> }</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span> }</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span> }</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span> <span class="keywordflow">if</span> (LastLineNoResult < Content->NumLines)</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span> SourceLineCacheEnd = SourceLineCache+LastLineNoResult+1;</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span> }</div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> }</div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span> </div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span> <span class="comment">// If the spread is large, do a "radix" test as our initial guess, based on</span></div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span> <span class="comment">// the assumption that lines average to approximately the same length.</span></div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span> <span class="comment">// NOTE: This is currently disabled, as it does not appear to be profitable in</span></div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span> <span class="comment">// initial measurements.</span></div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span> <span class="keywordflow">if</span> (0 && SourceLineCacheEnd-SourceLineCache > 20) {</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span> <span class="keywordtype">unsigned</span> FileLen = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>[Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>-1];</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">// Take a stab at guessing where it is.</span></div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> <span class="keywordtype">unsigned</span> ApproxPos = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>*QueriedFilePos / FileLen;</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> </div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="comment">// Check for -10 and +10 lines.</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="keywordtype">unsigned</span> LowerBound = std::max(<span class="keywordtype">int</span>(ApproxPos-10), 0);</div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> <span class="keywordtype">unsigned</span> UpperBound = std::min(ApproxPos+10, FileLen);</div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> </div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="comment">// If the computed lower bound is less than the query location, move it in.</span></div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <span class="keywordflow">if</span> (SourceLineCache < SourceLineCacheStart+LowerBound &&</div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> SourceLineCacheStart[LowerBound] < QueriedFilePos)</div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> SourceLineCache = SourceLineCacheStart+LowerBound;</div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> </div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <span class="comment">// If the computed upper bound is greater than the query location, move it.</span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="keywordflow">if</span> (SourceLineCacheEnd > SourceLineCacheStart+UpperBound &&</div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> SourceLineCacheStart[UpperBound] >= QueriedFilePos)</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span> SourceLineCacheEnd = SourceLineCacheStart+UpperBound;</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> }</div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span> </div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span> <span class="keywordtype">unsigned</span> *Pos</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> = std::lower_bound(SourceLineCache, SourceLineCacheEnd, QueriedFilePos);</div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span> <span class="keywordtype">unsigned</span> LineNo = Pos-SourceLineCacheStart;</div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span> </div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span> LastLineNoFileIDQuery = FID;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span> LastLineNoContentCache = Content;</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span> LastLineNoFilePos = QueriedFilePos;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span> LastLineNoResult = LineNo;</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span> <span class="keywordflow">return</span> LineNo;</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> }</div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span> </div>
+<div class="line"><a name="l01420"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a6fba713e87cd0b876af279e853738e74"> 1420</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a6fba713e87cd0b876af279e853738e74">SourceManager::getSpellingLineNumber</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, </div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a57a3ffe7381bce64198222dabd736545" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedSpellingLoc</a>(Loc);</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, LocInfo.second);</div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span> }</div>
+<div class="line"><a name="l01426"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#af71b79d2d27b647e3cb1bb922babd587"> 1426</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#af71b79d2d27b647e3cb1bb922babd587">SourceManager::getExpansionLineNumber</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,</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, LocInfo.second);</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span> }</div>
+<div class="line"><a name="l01432"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#ad547682e609a2190dee633ef0a3bf6f6"> 1432</a></span> <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#ad547682e609a2190dee633ef0a3bf6f6">SourceManager::getPresumedLineNumber</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,</div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">getPresumedLoc</a>(Loc).<a class="code" href="classclang_1_1PresumedLoc.html#acfc1284e86ca48cdfcaf5d118c6abb30" title="Return the presumed line number of this location.">getLine</a>();</div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span> }</div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span> <span class="comment"></span></div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span> <span class="comment">/// getFileCharacteristic - return the file characteristic of the specified</span></div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> <span class="comment">/// source location, indicating whether this is a normal file, a system</span></div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> <span class="comment">/// header, or an "implicit extern C" system header.</span></div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> <span class="comment">/// This state can be modified with flags on GNU linemarker directives like:</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"> 1443</span> <span class="comment">/// # 4 "foo.h" 3</span></div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span> <span class="comment">/// which changes all source locations in the current file after that to be</span></div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span> <span class="comment">/// considered to be from a system header.</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span> <span class="comment"></span><a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35d" title="Indicates whether a file or directory holds normal user code, system code, or system code which is im...">SrcMgr::CharacteristicKind</a></div>
+<div class="line"><a name="l01447"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a0a6faf535b8f3f23e64be0cb4eac99c3"> 1447</a></span> <a class="code" href="classclang_1_1SourceManager.html#a0a6faf535b8f3f23e64be0cb4eac99c3" title="Return the file characteristic of the specified source location, indicating whether this is a normal ...">SourceManager::getFileCharacteristic</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span> assert(!Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() && <span class="stringliteral">"Can't get file characteristic of invalid loc!"</span>);</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SEntry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span> <span class="keywordflow">if</span> (Invalid || !SEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span> <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">C_User</a>;</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span> </div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &FI = SEntry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span> </div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span> <span class="comment">// If there are no #line directives in this file, just return the whole-file</span></div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> <span class="comment">// state.</span></div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="keywordflow">if</span> (!FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a6e3a3ddc593c52f403695164f3af62f2" title="Return true if this FileID has #line directives in it.">hasLineDirectives</a>())</div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="keywordflow">return</span> FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a89208e39e8a93a665ea3358e5b273f49" title="Return whether this is a system header or not.">getFileCharacteristic</a>();</div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> </div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> assert(LineTable && <span class="stringliteral">"Can't have linetable entries without a LineTable!"</span>);</div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">// See if there is a #line directive before the location.</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *Entry =</div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(LocInfo.first, LocInfo.second);</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span> </div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span> <span class="comment">// If this is before the first line marker, use the file characteristic.</span></div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span> <span class="keywordflow">if</span> (!Entry)</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> <span class="keywordflow">return</span> FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a89208e39e8a93a665ea3358e5b273f49" title="Return whether this is a system header or not.">getFileCharacteristic</a>();</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="keywordflow">return</span> Entry-><a class="code" href="structclang_1_1LineEntry.html#a26bb74a0f9ff115ce7a3b442d1833c0e" title="Set the 0 if no flags, 1 if a system header,.">FileKind</a>;</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span> }</div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span> <span class="comment"></span></div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span> <span class="comment">/// Return the filename or buffer identifier of the buffer the location is in.</span></div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span> <span class="comment">/// Note that this name does not respect \#line directives. Use getPresumedLoc</span></div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span> <span class="comment">/// for normal clients.</span></div>
+<div class="line"><a name="l01477"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#abe4f1b848fbaa9d9ce39c5ceab826965"> 1477</a></span> <span class="comment"></span><span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1SourceManager.html#abe4f1b848fbaa9d9ce39c5ceab826965" title="Return the filename or buffer identifier of the buffer the location is in.">SourceManager::getBufferName</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, </div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span> <span class="keywordtype">bool</span> *Invalid)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a6e59ede49e08cae14bbbfa239c1f9b92">isInvalid</a>(Loc, Invalid)) <span class="keywordflow">return</span> <span class="stringliteral">"<invalid loc>"</span>;</div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span> </div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Loc), Invalid)->getBufferIdentifier();</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span> }</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">/// getPresumedLoc - This method returns the "presumed" location of a</span></div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span> <span class="comment">/// SourceLocation specifies. A "presumed location" can be modified by \#line</span></div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> <span class="comment">/// or GNU line marker directives. This provides a view on the data that a</span></div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span> <span class="comment">/// user should see in diagnostics, for example.</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</span> <span class="comment">/// Note that a presumed location is always given as the expansion point of an</span></div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span> <span class="comment">/// expansion location, not at the spelling location.</span></div>
+<div class="line"><a name="l01492"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d"> 1492</a></span> <span class="comment"></span><a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a> <a class="code" href="classclang_1_1SourceManager.html#a28f3fe716f6b9c504beb968f0eb8c17d" title="Returns the "presumed" location of a SourceLocation specifies.">SourceManager::getPresumedLoc</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,</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span> <span class="keywordtype">bool</span> UseLineDirectives)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span> <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span> </div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span> <span class="comment">// Presumed locations are always for expansion points.</span></div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span> </div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span> <span class="keywordflow">if</span> (Invalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span> </div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &FI = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">SrcMgr::ContentCache</a> *C = FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</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> <span class="comment">// To get the source name, first consult the FileEntry (if one exists)</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span> <span class="comment">// before the MemBuffer as this will avoid unnecessarily paging in the</span></div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span> <span class="comment">// MemBuffer.</span></div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Filename;</div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span> <span class="keywordflow">if</span> (C-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>)</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span> Filename = C-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span> Filename = C-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</span>)->getBufferIdentifier();</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span> </div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span> <span class="keywordtype">unsigned</span> LineNo = <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, LocInfo.second, &Invalid);</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span> <span class="keywordtype">unsigned</span> ColNo = <a class="code" href="classclang_1_1SourceManager.html#a367f9b21f8c79d800ddf4a416ab2dd5b" title="Return the column # for the specified file position.">getColumnNumber</a>(LocInfo.first, LocInfo.second, &Invalid);</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>();</div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span> </div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IncludeLoc = FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>();</div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span> </div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span> <span class="comment">// If we have #line directives in this file, update and overwrite the physical</span></div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span> <span class="comment">// location info if appropriate.</span></div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span> <span class="keywordflow">if</span> (UseLineDirectives && FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a6e3a3ddc593c52f403695164f3af62f2" title="Return true if this FileID has #line directives in it.">hasLineDirectives</a>()) {</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span> assert(LineTable && <span class="stringliteral">"Can't have linetable entries without a LineTable!"</span>);</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span> <span class="comment">// See if there is a #line directive before this. If so, get it.</span></div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *Entry =</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span> LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(LocInfo.first, LocInfo.second)) {</div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span> <span class="comment">// If the LineEntry indicates a filename, use it.</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span> <span class="keywordflow">if</span> (Entry->FilenameID != -1)</div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span> Filename = LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a1a0c8b5b5abd15dda916410e0e2042c7">getFilename</a>(Entry->FilenameID);</div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span> </div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span> <span class="comment">// Use the line number specified by the LineEntry. This line number may</span></div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span> <span class="comment">// be multiple lines down from the line entry. Add the difference in</span></div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span> <span class="comment">// physical line numbers from the query point and the line marker to the</span></div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span> <span class="comment">// total.</span></div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span> <span class="keywordtype">unsigned</span> MarkerLineNo = <a class="code" href="classclang_1_1SourceManager.html#a3b4adecb909b0c0fe45afcc279f65236" title="Given a SourceLocation, return the spelling line number for the position indicated.">getLineNumber</a>(LocInfo.first, Entry->FileOffset);</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span> LineNo = Entry->LineNo + (LineNo-MarkerLineNo-1);</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span> </div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span> <span class="comment">// Note that column numbers are not molested by line markers.</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">// Handle virtual #include manipulation.</span></div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span> <span class="keywordflow">if</span> (Entry->IncludeOffset) {</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</span> IncludeLoc = <a class="code" href="classclang_1_1SourceManager.html#ae1f1d6c242c1db7b224a7a6dd35cb82e" title="Return the source location corresponding to the first byte of the specified file.">getLocForStartOfFile</a>(LocInfo.first);</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span> IncludeLoc = IncludeLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Entry->IncludeOffset);</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span> }</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span> }</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span> }</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span> </div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1PresumedLoc.html" title="Represents an unpacked "presumed" location which can be presented to the user.">PresumedLoc</a>(Filename, LineNo, ColNo, IncludeLoc);</div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span> }</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span> <span class="comment"></span></div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span> <span class="comment">/// \brief Returns whether the PresumedLoc for a given SourceLocation is</span></div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span> <span class="comment">/// in the main file.</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">/// This computes the "presumed" location for a SourceLocation, then checks</span></div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span> <span class="comment">/// whether it came from a file other than the main file. This is different</span></div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span> <span class="comment">/// from isWrittenInMainFile() because it takes line marker directives into</span></div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span> <span class="comment">/// account.</span></div>
+<div class="line"><a name="l01563"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a30bc78248de9022150189daa58ca1397"> 1563</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a30bc78248de9022150189daa58ca1397" title="Returns whether the PresumedLoc for a given SourceLocation is in the main file.">SourceManager::isInMainFile</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span> <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>()) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span> </div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span> <span class="comment">// Presumed locations are always for expansion points.</span></div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span> std::pair<FileID, unsigned> LocInfo = <a class="code" href="classclang_1_1SourceManager.html#a842245e962ddcee1eaa42b13727adc81" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedExpansionLoc</a>(Loc);</div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span> </div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(LocInfo.first, &Invalid);</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span> <span class="keywordflow">if</span> (Invalid || !Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span> </div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html" title="Information about a FileID, basically just the logical file that it represents and include stack info...">SrcMgr::FileInfo</a> &FI = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>();</div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span> </div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span> <span class="comment">// Check if there is a line directive for this location.</span></div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span> <span class="keywordflow">if</span> (FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a6e3a3ddc593c52f403695164f3af62f2" title="Return true if this FileID has #line directives in it.">hasLineDirectives</a>())</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span> <span class="keywordflow">if</span> (<span class="keyword">const</span> <a class="code" href="structclang_1_1LineEntry.html">LineEntry</a> *Entry =</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> LineTable-><a class="code" href="classclang_1_1LineTableInfo.html#a3514a020e1b9280f665e6385d16a536b" title="Find the line entry nearest to FID that is before it.">FindNearestLineEntry</a>(LocInfo.first, LocInfo.second))</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> <span class="keywordflow">if</span> (Entry->IncludeOffset)</div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="keywordflow">return</span> <span class="keyword">false</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="keywordflow">return</span> FI.<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>();</div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> }</div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="comment"></span></div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span> <span class="comment">/// \brief The size of the SLocEnty that \arg FID represents.</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db"> 1587</a></span> <span class="comment"></span><span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db" title="The size of the SLocEnty that FID represents.">SourceManager::getFileIDSize</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid);</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span> <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span> </div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> <span class="keywordtype">int</span> ID = FID.ID;</div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span> <span class="keywordtype">unsigned</span> NextOffset;</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span> <span class="keywordflow">if</span> ((ID > 0 && <span class="keywordtype">unsigned</span>(ID+1) == <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>()))</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span> NextOffset = <a class="code" href="classclang_1_1SourceManager.html#a8a50989d1a33eb3f72c9c28d399f1a42">getNextLocalOffset</a>();</div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ID+1 == -1)</div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span> NextOffset = MaxLoadedOffset;</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span> NextOffset = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FileID::get(ID+1)).<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span> </div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span> <span class="keywordflow">return</span> NextOffset - Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>() - 1;</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span> }</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span> </div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</span> <span class="comment">// Other miscellaneous methods.</span></div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span> <span class="comment"></span></div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span> <span class="comment">/// \brief Retrieve the inode for the given file entry, if possible.</span></div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span> <span class="comment">/// This routine involves a system call, and therefore should only be used</span></div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span> <span class="comment">/// in non-performance-critical code.</span></div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span> <span class="comment"></span><span class="keyword">static</span> <a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a></div>
+<div class="line"><a name="l01614"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d"> 1614</a></span> <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File) {</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span> <span class="keywordflow">if</span> (!File)</div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span> <span class="keywordflow">return</span> None;</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span> </div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span> llvm::sys::fs::UniqueID <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="l01619"></a><span class="lineno"> 1619</span> <span class="keywordflow">if</span> (llvm::sys::fs::getUniqueID(File-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(), <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>))</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span> <span class="keywordflow">return</span> None;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span> </div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span> <span class="keywordflow">return</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="l01623"></a><span class="lineno"> 1623</span> }</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span> <span class="comment"></span></div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span> <span class="comment">/// \brief Get the source location for the given file:line:col triplet.</span></div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span> <span class="comment">/// If the source file is included multiple times, the source location will</span></div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span> <span class="comment">/// be based upon an arbitrary inclusion.</span></div>
+<div class="line"><a name="l01629"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a5573aab1578a194e43c7934e6902aeec"> 1629</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_1SourceManager.html#a5573aab1578a194e43c7934e6902aeec" title="Get the source location for the given file:line:col triplet.">SourceManager::translateFileLineCol</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *SourceFile,</div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span> <span class="keywordtype">unsigned</span> <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>,</div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span> <span class="keywordtype">unsigned</span> Col)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> assert(SourceFile && <span class="stringliteral">"Null source file!"</span>);</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> assert(Line && Col && <span class="stringliteral">"Line and column should start from 1!"</span>);</div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> </div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FirstFID = <a class="code" href="classclang_1_1SourceManager.html#aa38ba002ebd85a48ee75eca0b1933028" title="Get the FileID for the given file.">translateFile</a>(SourceFile);</div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceManager.html#a7c3566f61faa445f983b97d30b8577b7" title="Get the source location in FID for the given line:col. Returns null location if FID is not a file SLo...">translateLineCol</a>(FirstFID, Line, Col);</div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> }</div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="comment"></span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> <span class="comment">/// \brief Get the FileID for the given file.</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> <span class="comment">/// If the source file is included multiple times, the FileID will be the</span></div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="comment">/// first inclusion.</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aa38ba002ebd85a48ee75eca0b1933028"> 1643</a></span> <span class="comment"></span><a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="classclang_1_1SourceManager.html#aa38ba002ebd85a48ee75eca0b1933028" title="Get the FileID for the given file.">SourceManager::translateFile</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *SourceFile)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span> assert(SourceFile && <span class="stringliteral">"Null source file!"</span>);</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span> </div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span> <span class="comment">// Find the first file ID that corresponds to the given file.</span></div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FirstFID;</div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span> </div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span> <span class="comment">// First, check the main file ID, since it is common to look for a</span></div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span> <span class="comment">// location in the main file.</span></div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span> <a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a> SourceFileUID;</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span> <a class="code" href="classllvm_1_1Optional.html">Optional<StringRef></a> SourceFileName;</div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span> <span class="keywordflow">if</span> (!MainFileID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &MainSLoc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(MainFileID, &Invalid);</div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span> </div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span> <span class="keywordflow">if</span> (MainSLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *MainContentCache</div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span> = MainSLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>();</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span> <span class="keywordflow">if</span> (!MainContentCache) {</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span> <span class="comment">// Can't do anything</span></div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (MainContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> == SourceFile) {</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span> FirstFID = MainFileID;</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span> } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span> <span class="comment">// Fall back: check whether we have the same base name and inode</span></div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span> <span class="comment">// as the main file.</span></div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *MainFile = MainContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a>;</div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span> SourceFileName = llvm::sys::path::filename(SourceFile-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span> <span class="keywordflow">if</span> (*SourceFileName == llvm::sys::path::filename(MainFile-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>())) {</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span> SourceFileUID = <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(SourceFile);</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span> <span class="keywordflow">if</span> (SourceFileUID) {</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a> MainFileUID =</div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span> <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(MainFile)) {</div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span> <span class="keywordflow">if</span> (*SourceFileUID == *MainFileUID) {</div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span> FirstFID = MainFileID;</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span> SourceFile = MainFile;</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> }</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> }</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"> 1683</span> }</div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> }</div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> }</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span> </div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span> <span class="keywordflow">if</span> (FirstFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span> <span class="comment">// The location we're looking for isn't in the main file; look</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span> <span class="comment">// through all of the local source locations.</span></div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#a06bd6d8f9ae3d855d407c226b5ddb8bb" title="Get a local SLocEntry. This is exposed for indexing.">getLocalSLocEntry</a>(I, &Invalid);</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span> </div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> <span class="keywordflow">if</span> (SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() && </div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span> SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>() &&</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span> SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> == SourceFile) {</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span> FirstFID = FileID::get(I);</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> }</div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span> }</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span> <span class="comment">// If that still didn't help, try the modules.</span></div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> <span class="keywordflow">if</span> (FirstFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>()) {</div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1SourceManager.html#a4e22302f7b387c9c3a887a2fafae236e" title="Get the number of loaded SLocEntries we have.">loaded_sloc_entry_size</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#ae2c7f11f93fdf974382ff478a89e757b" title="Get a loaded SLocEntry. This is exposed for indexing.">getLoadedSLocEntry</a>(I);</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span> <span class="keywordflow">if</span> (SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>() && </div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span> SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>() &&</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span> SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>()-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> == SourceFile) {</div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span> FirstFID = FileID::get(-<span class="keywordtype">int</span>(I) - 2);</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> }</div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> }</div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> }</div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> }</div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> </div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="comment">// If we haven't found what we want yet, try again, but this time stat()</span></div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span> <span class="comment">// each of the files in case the files have changed since we originally </span></div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span> <span class="comment">// parsed the file.</span></div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> <span class="keywordflow">if</span> (FirstFID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>() &&</div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span> (SourceFileName ||</div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span> (SourceFileName = llvm::sys::path::filename(SourceFile-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()))) &&</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span> (SourceFileUID || (SourceFileUID = <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(SourceFile)))) {</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>(); I != N; ++I) {</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> IFileID;</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> IFileID.ID = I;</div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &SLoc = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(IFileID, &Invalid);</div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span> <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>();</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span> </div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span> <span class="keywordflow">if</span> (SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) { </div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *FileContentCache </div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span> = SLoc.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>();</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *Entry =FileContentCache? FileContentCache-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a9c12b5c698444f94948c0c92f32bcc71" title="Reference to the file entry representing this ContentCache.">OrigEntry</a> : 0;</div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span> <span class="keywordflow">if</span> (Entry && </div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span> *SourceFileName == llvm::sys::path::filename(Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>())) {</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span> <span class="keywordflow">if</span> (<a class="code" href="classllvm_1_1Optional.html">Optional<llvm::sys::fs::UniqueID></a> EntryUID =</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span> <a class="code" href="SourceManager_8cpp.html#ade18a4f6ab23af48cd88e3d147a12e6d" title="Retrieve the inode for the given file entry, if possible.">getActualFileUID</a>(Entry)) {</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> <span class="keywordflow">if</span> (*SourceFileUID == *EntryUID) {</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> FirstFID = FileID::get(I);</div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> SourceFile = Entry;</div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> }</div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> }</div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> }</div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> }</div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> } </div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> }</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span> </div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span> (void) SourceFile;</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> <span class="keywordflow">return</span> FirstFID;</div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span> }</div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span> <span class="comment"></span></div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span> <span class="comment">/// \brief Get the source location in \arg FID for the given line:col.</span></div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span> <span class="comment">/// Returns null location if \arg FID is not a file SLocEntry.</span></div>
+<div class="line"><a name="l01757"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a7c3566f61faa445f983b97d30b8577b7"> 1757</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_1SourceManager.html#a7c3566f61faa445f983b97d30b8577b7" title="Get the source location in FID for the given line:col. Returns null location if FID is not a file SLo...">SourceManager::translateLineCol</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID,</div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span> <span class="keywordtype">unsigned</span> <a class="code" href="TokenAnnotator_8cpp.html#a0d95c6acfc477accd6ff1b1ca93c82cc">Line</a>,</div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span> <span class="keywordtype">unsigned</span> Col)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span> <span class="comment">// Lines are used as a one-based index into a zero-based array. This assert</span></div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span> <span class="comment">// checks for possible buffer underruns.</span></div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span> assert(Line != 0 && <span class="stringliteral">"Passed a zero-based line"</span>);</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span> </div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span> <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</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="l01766"></a><span class="lineno"> 1766</span> </div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid);</div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</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="l01771"></a><span class="lineno"> 1771</span> </div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span> <span class="keywordflow">if</span> (!Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>())</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</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="l01774"></a><span class="lineno"> 1774</span> </div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</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> FileLoc = SourceLocation::getFileLoc(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>());</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span> </div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span> <span class="keywordflow">if</span> (Line == 1 && Col == 1)</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span> <span class="keywordflow">return</span> FileLoc;</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span> </div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> <a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *Content</div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span> = <span class="keyword">const_cast<</span><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html" title="One instance of this struct is kept for every file loaded or used.">ContentCache</a> *<span class="keyword">></span>(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a0dfcfbd07292c9ab7f537f2dd38d14c4">getContentCache</a>());</div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span> <span class="keywordflow">if</span> (!Content)</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</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="l01784"></a><span class="lineno"> 1784</span> </div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span> <span class="comment">// If this is the first use of line information for this buffer, compute the</span></div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> <span class="comment">// SourceLineCache for it on demand.</span></div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span> <span class="keywordflow">if</span> (Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a> == 0) {</div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span> <span class="keywordtype">bool</span> MyInvalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span> <a class="code" href="SourceManager_8cpp.html#aec2584d6bbd35854fa1ef6481c516009">ComputeLineNumbers</a>(Diag, Content, ContentCacheAlloc, *<span class="keyword">this</span>, MyInvalid);</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span> <span class="keywordflow">if</span> (MyInvalid)</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</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="l01792"></a><span class="lineno"> 1792</span> }</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> </div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> <span class="keywordflow">if</span> (Line > Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a7547f34e57415ab655a1acb616e24cbd" title="The number of lines in this ContentCache.">NumLines</a>) {</div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> <span class="keywordtype">unsigned</span> Size = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</span>)->getBufferSize();</div>
+<div class="line"><a name="l01796"></a><span class="lineno"> 1796</span> <span class="keywordflow">if</span> (Size > 0)</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span> --Size;</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span> <span class="keywordflow">return</span> FileLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Size);</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span> }</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> </div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span> <span class="keyword">const</span> llvm::MemoryBuffer *Buffer = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#a0829ce6b26e0511684921dcc97c1752b" title="Returns the memory buffer for the associated content.">getBuffer</a>(Diag, *<span class="keyword">this</span>);</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span> <span class="keywordtype">unsigned</span> FilePos = Content-><a class="code" href="classclang_1_1SrcMgr_1_1ContentCache.html#aaf33dce57556ab3c4841a59c63c46be4" title="A bump pointer allocated array of offsets for each source line.">SourceLineCache</a>[Line - 1];</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *Buf = Buffer->getBufferStart() + FilePos;</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span> <span class="keywordtype">unsigned</span> BufLength = Buffer->getBufferSize() - FilePos;</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span> <span class="keywordflow">if</span> (BufLength == 0)</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span> <span class="keywordflow">return</span> FileLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(FilePos);</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span> <span class="keywordtype">unsigned</span> i = 0;</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span> </div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span> <span class="comment">// Check that the given column is valid.</span></div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> <span class="keywordflow">while</span> (i < BufLength-1 && i < Col-1 && Buf[i] != <span class="charliteral">'\n'</span> && Buf[i] != <span class="charliteral">'\r'</span>)</div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span> ++i;</div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span> <span class="keywordflow">return</span> FileLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(FilePos + i);</div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> }</div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> <span class="comment"></span></div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span> <span class="comment">/// \brief Compute a map of macro argument chunks to their expanded source</span></div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span> <span class="comment">/// location. Chunks that are not part of a macro argument will map to an</span></div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span> <span class="comment">/// invalid source location. e.g. if a file contains one macro argument at</span></div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> <span class="comment">/// offset 100 with length 10, this is how the map will be formed:</span></div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span> <span class="comment">/// 0 -> SourceLocation()</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span> <span class="comment">/// 100 -> Expanded macro arg location</span></div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span> <span class="comment">/// 110 -> SourceLocation()</span></div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span> <span class="comment"></span><span class="keywordtype">void</span> SourceManager::computeMacroArgsCache(MacroArgsMap *&CachePtr,</div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span> assert(!FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>());</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span> assert(!CachePtr);</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span> </div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span> CachePtr = <span class="keyword">new</span> MacroArgsMap();</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span> MacroArgsMap &MacroArgsCache = *CachePtr;</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span> <span class="comment">// Initially no macro argument chunk is present.</span></div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> MacroArgsCache.insert(std::make_pair(0, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>()));</div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span> </div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span> <span class="keywordtype">int</span> ID = FID.ID;</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span> <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</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="l01836"></a><span class="lineno"> 1836</span> <span class="comment">// Stop if there are no more FileIDs to check.</span></div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span> <span class="keywordflow">if</span> (ID > 0) {</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span> <span class="keywordflow">if</span> (<span class="keywordtype">unsigned</span>(ID) >= <a class="code" href="classclang_1_1SourceManager.html#a6ce8e7c14e399ddc5efa3d0d19b541f1" title="Get the number of local SLocEntries we have.">local_sloc_entry_size</a>())</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (ID == -1) {</div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span> }</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span> </div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &Entry = getSLocEntryByID(ID, &Invalid);</div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span> <span class="keywordflow">if</span> (Invalid)</div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> <span class="keywordflow">if</span> (Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#aa47bccb623f117f7d7c0ed0582e55ce2">isFile</a>()) {</div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</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> IncludeLoc = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>();</div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> <span class="keywordflow">if</span> (IncludeLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(IncludeLoc, FID))</div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> <span class="keywordflow">return</span>; <span class="comment">// No more files/macros that may be "contained" in this file.</span></div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> </div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span> <span class="comment">// Skip the files/macros of the #include'd file, we only care about macros</span></div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span> <span class="comment">// that lexed macro arguments from our file.</span></div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span> <span class="keywordflow">if</span> (Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().NumCreatedFIDs)</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> ID += Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().NumCreatedFIDs - 1<span class="comment">/*because of next ++ID*/</span>;</div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span> }</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span> </div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &ExpInfo = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span> </div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> <span class="keywordflow">if</span> (ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>().<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) {</div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span> <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>(), FID))</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span> <span class="keywordflow">return</span>; <span class="comment">// No more files/macros that may be "contained" in this file.</span></div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</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="keywordflow">if</span> (!ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>())</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span> <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span> </div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span> associateFileChunkWithMacroArgExp(MacroArgsCache, FID,</div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span> ExpInfo.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>(),</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span> SourceLocation::getMacroLoc(Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>()),</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span> <a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db" title="The size of the SLocEnty that FID represents.">getFileIDSize</a>(FileID::get(ID)));</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span> }</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span> }</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span> </div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span> <span class="keywordtype">void</span> SourceManager::associateFileChunkWithMacroArgExp(</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> MacroArgsMap &MacroArgsCache,</div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID,</div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</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> SpellLoc,</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</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> ExpansionLoc,</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span> <span class="keywordtype">unsigned</span> ExpansionLength)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span> <span class="keywordflow">if</span> (!SpellLoc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>()) {</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span> <span class="keywordtype">unsigned</span> SpellBeginOffs = SpellLoc.getOffset();</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span> <span class="keywordtype">unsigned</span> SpellEndOffs = SpellBeginOffs + ExpansionLength;</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span> </div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span> <span class="comment">// The spelling range for this macro argument expansion can span multiple</span></div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> <span class="comment">// consecutive FileID entries. Go through each entry contained in the</span></div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span> <span class="comment">// spelling range and if one is itself a macro argument expansion, recurse</span></div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span> <span class="comment">// and associate the file chunk that it represents.</span></div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span> </div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> SpellFID; <span class="comment">// Current FileID in the spelling range.</span></div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span> <span class="keywordtype">unsigned</span> SpellRelativeOffs;</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span> llvm::tie(SpellFID, SpellRelativeOffs) = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(SpellLoc);</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span> <span class="keywordflow">while</span> (1) {</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(SpellFID);</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span> <span class="keywordtype">unsigned</span> SpellFIDBeginOffs = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#af792006aa81706c77a4b35924e5d9f1c">getOffset</a>();</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span> <span class="keywordtype">unsigned</span> SpellFIDSize = <a class="code" href="classclang_1_1SourceManager.html#a7b5bb88f511c0f332a8e1275613088db" title="The size of the SLocEnty that FID represents.">getFileIDSize</a>(SpellFID);</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span> <span class="keywordtype">unsigned</span> SpellFIDEndOffs = SpellFIDBeginOffs + SpellFIDSize;</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html" title="Each ExpansionInfo encodes the expansion location - where the token was ultimately expanded...">ExpansionInfo</a> &Info = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>();</div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span> <span class="keywordflow">if</span> (Info.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#aa3253b5ce34eed597ad20c35a5738bb6">isMacroArgExpansion</a>()) {</div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span> <span class="keywordtype">unsigned</span> CurrSpellLength;</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span> <span class="keywordflow">if</span> (SpellFIDEndOffs < SpellEndOffs)</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> CurrSpellLength = SpellFIDSize - SpellRelativeOffs;</div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span> CurrSpellLength = ExpansionLength;</div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span> associateFileChunkWithMacroArgExp(MacroArgsCache, FID,</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span> Info.<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#a14aec0e16875b0f713fdbc942f9aa28e">getSpellingLoc</a>().<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(SpellRelativeOffs),</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span> ExpansionLoc, CurrSpellLength);</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span> }</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span> </div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span> <span class="keywordflow">if</span> (SpellFIDEndOffs >= SpellEndOffs)</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span> <span class="keywordflow">return</span>; <span class="comment">// we covered all FileID entries in the spelling range.</span></div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span> </div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span> <span class="comment">// Move to the next FileID entry in the spelling range.</span></div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span> <span class="keywordtype">unsigned</span> advance = SpellFIDSize - SpellRelativeOffs + 1;</div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span> ExpansionLoc = ExpansionLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(advance);</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span> ExpansionLength -= advance;</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span> ++SpellFID.ID;</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span> SpellRelativeOffs = 0;</div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span> }</div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span> </div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span> }</div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span> </div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span> assert(SpellLoc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>());</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span> </div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span> <span class="keywordtype">unsigned</span> BeginOffs;</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span> <span class="keywordflow">if</span> (!<a class="code" href="classclang_1_1SourceManager.html#ab7ef8050c9bcf7a743dab59f2487382c" title="Given a specific FileID, returns true if Loc is inside that FileID chunk and sets relative offset (of...">isInFileID</a>(SpellLoc, FID, &BeginOffs))</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span> <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span> </div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span> <span class="keywordtype">unsigned</span> EndOffs = BeginOffs + ExpansionLength;</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> </div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span> <span class="comment">// Add a new chunk for this macro argument. A previous macro argument chunk</span></div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span> <span class="comment">// may have been lexed again, so e.g. if the map is</span></div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span> <span class="comment">// 0 -> SourceLocation()</span></div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span> <span class="comment">// 100 -> Expanded loc #1</span></div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span> <span class="comment">// 110 -> SourceLocation()</span></div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span> <span class="comment">// and we found a new macro FileID that lexed from offet 105 with length 3,</span></div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span> <span class="comment">// the new map will be:</span></div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> <span class="comment">// 0 -> SourceLocation()</span></div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span> <span class="comment">// 100 -> Expanded loc #1</span></div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span> <span class="comment">// 105 -> Expanded loc #2</span></div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span> <span class="comment">// 108 -> Expanded loc #1</span></div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span> <span class="comment">// 110 -> SourceLocation()</span></div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span> <span class="comment">//</span></div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span> <span class="comment">// Since re-lexed macro chunks will always be the same size or less of</span></div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span> <span class="comment">// previous chunks, we only need to find where the ending of the new macro</span></div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span> <span class="comment">// chunk is mapped to and update the map with new begin/end mappings.</span></div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span> </div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span> MacroArgsMap::iterator I = MacroArgsCache.upper_bound(EndOffs);</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span> --I;</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> EndOffsMappedLoc = I->second;</div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span> MacroArgsCache[BeginOffs] = ExpansionLoc;</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span> MacroArgsCache[EndOffs] = EndOffsMappedLoc;</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span> }</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span> <span class="comment"></span></div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span> <span class="comment">/// \brief If \arg Loc points inside a function macro argument, the returned</span></div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span> <span class="comment">/// location will be the macro location in which the argument was expanded.</span></div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span> <span class="comment">/// If a macro argument is used multiple times, the expanded location will</span></div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> <span class="comment">/// be at the first expansion of the argument.</span></div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span> <span class="comment">/// e.g.</span></div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span> <span class="comment">/// MY_MACRO(foo);</span></div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span> <span class="comment">/// ^</span></div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span> <span class="comment">/// Passing a file location pointing at 'foo', will yield a macro location</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span> <span class="comment">/// where 'foo' was expanded into.</span></div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</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></div>
+<div class="line"><a name="l01969"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#adbef30eb1b9c876ee96772f16c8e1c50"> 1969</a></span> <a class="code" href="classclang_1_1SourceManager.html#adbef30eb1b9c876ee96772f16c8e1c50" title="If Loc points inside a function macro argument, the returned location will be the macro location in w...">SourceManager::getMacroArgExpandedLocation</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)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span> <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>() || !Loc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>())</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span> </div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID;</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span> <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>;</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span> llvm::tie(FID, Offset) = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(Loc);</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span> <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span> <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span> </div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span> MacroArgsMap *&MacroArgsCache = MacroArgsCacheMap[FID];</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span> <span class="keywordflow">if</span> (!MacroArgsCache)</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span> computeMacroArgsCache(MacroArgsCache, FID);</div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span> </div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span> assert(!MacroArgsCache->empty());</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span> MacroArgsMap::iterator I = MacroArgsCache->upper_bound(Offset);</div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span> --I;</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span> </div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span> <span class="keywordtype">unsigned</span> MacroArgBeginOffs = I->first;</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</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> MacroArgExpandedLoc = I->second;</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span> <span class="keywordflow">if</span> (MacroArgExpandedLoc.<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="l01990"></a><span class="lineno"> 1990</span> <span class="keywordflow">return</span> MacroArgExpandedLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1abf1cac74e512604b1f2c8921a446fa" title="Return a source location with the specified offset from this SourceLocation.">getLocWithOffset</a>(Offset - MacroArgBeginOffs);</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span> </div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> <span class="keywordflow">return</span> Loc;</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> }</div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> </div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> std::pair<FileID, unsigned></div>
+<div class="line"><a name="l01996"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#aadf722b42a44f0693f2a6d008a3b6242"> 1996</a></span> <a class="code" href="classclang_1_1SourceManager.html#aadf722b42a44f0693f2a6d008a3b6242" title="Returns the "included/expanded in" decomposed location of the given FileID.">SourceManager::getDecomposedIncludedLoc</a>(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> FID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span> <span class="keywordflow">if</span> (FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>())</div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span> <span class="keywordflow">return</span> std::make_pair(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a>(), 0);</div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> </div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> <span class="comment">// Uses IncludedLocMap to retrieve/cache the decomposed loc.</span></div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span> </div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span> <span class="keyword">typedef</span> std::pair<FileID, unsigned> DecompTy;</div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span> <span class="keyword">typedef</span> llvm::DenseMap<FileID, DecompTy> <a class="code" href="ParentMap_8cpp.html#a9678f6646317beaaf39f5b01eba500a4">MapTy</a>;</div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span> std::pair<MapTy::iterator, bool></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span> InsertOp = IncludedLocMap.insert(std::make_pair(FID, DecompTy()));</div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> DecompTy &DecompLoc = InsertOp.first->second;</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span> <span class="keywordflow">if</span> (!InsertOp.second)</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span> <span class="keywordflow">return</span> DecompLoc; <span class="comment">// already in map.</span></div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span> </div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</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> UpperLoc;</div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span> <span class="keywordtype">bool</span> Invalid = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html" title="This is a discriminated union of FileInfo and ExpansionInfo.">SrcMgr::SLocEntry</a> &Entry = <a class="code" href="classclang_1_1SourceManager.html#ad1585a31ee5f93aaca7cce35f3f6922c">getSLocEntry</a>(FID, &Invalid);</div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span> <span class="keywordflow">if</span> (!Invalid) {</div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span> <span class="keywordflow">if</span> (Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a98dd9eca83ab43299e7a2e4659968bd6">isExpansion</a>())</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span> UpperLoc = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a70c810882ffb1f90ac48cef5ae359df8">getExpansion</a>().<a class="code" href="classclang_1_1SrcMgr_1_1ExpansionInfo.html#ab8fe7bf9eedf3cfa68847437c6ddab6e">getExpansionLocStart</a>();</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span> <span class="keywordflow">else</span></div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span> UpperLoc = Entry.<a class="code" href="classclang_1_1SrcMgr_1_1SLocEntry.html#a1fb51637aa60930cf8993b7a6dfd0f4d">getFile</a>().<a class="code" href="classclang_1_1SrcMgr_1_1FileInfo.html#a5045eb47939537fcea0b4906edf2fdcb">getIncludeLoc</a>();</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span> }</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span> </div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span> <span class="keywordflow">if</span> (UpperLoc.<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="l02021"></a><span class="lineno"> 2021</span> DecompLoc = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(UpperLoc);</div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span> </div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span> <span class="keywordflow">return</span> DecompLoc;</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span> }</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span> <span class="comment"></span></div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span> <span class="comment">/// Given a decomposed source location, move it up the include/expansion stack</span></div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span> <span class="comment">/// to the parent source location. If this is possible, return the decomposed</span></div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span> <span class="comment">/// version of the parent in Loc and return false. If Loc is the top-level</span></div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span> <span class="comment">/// entry, return true and don't modify it.</span></div>
+<div class="line"><a name="l02030"></a><span class="lineno"><a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5"> 2030</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5">MoveUpIncludeHierarchy</a>(std::pair<FileID, unsigned> &Loc,</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span> <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="l02032"></a><span class="lineno"> 2032</span> std::pair<FileID, unsigned> UpperLoc = SM.<a class="code" href="classclang_1_1SourceManager.html#aadf722b42a44f0693f2a6d008a3b6242" title="Returns the "included/expanded in" decomposed location of the given FileID.">getDecomposedIncludedLoc</a>(Loc.first);</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> <span class="keywordflow">if</span> (UpperLoc.first.isInvalid())</div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span> <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// We reached the top.</span></div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span> </div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span> Loc = UpperLoc;</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> <span class="keywordflow">return</span> <span class="keyword">false</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">/// Return the cache entry for comparing the given file IDs</span></div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span> <span class="comment">/// for isBeforeInTranslationUnit.</span></div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span> <span class="comment"></span><a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html" title="Holds the cache used by isBeforeInTranslationUnit.">InBeforeInTUCacheEntry</a> &SourceManager::getInBeforeInTUCache(<a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> LFID,</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> RFID)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span> <span class="comment">// This is a magic number for limiting the cache size. It was experimentally</span></div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span> <span class="comment">// derived from a small Objective-C project (where the cache filled</span></div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span> <span class="comment">// out to ~250 items). We can make it larger if necessary.</span></div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span> <span class="keyword">enum</span> { MagicCacheSize = 300 };</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span> IsBeforeInTUCacheKey Key(LFID, RFID);</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span> </div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span> <span class="comment">// If the cache size isn't too large, do a lookup and if necessary default</span></div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> <span class="comment">// construct an entry. We can then return it to the caller for direct</span></div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span> <span class="comment">// use. When they update the value, the cache will get automatically</span></div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span> <span class="comment">// updated as well.</span></div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span> <span class="keywordflow">if</span> (IBTUCache.size() < MagicCacheSize)</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span> <span class="keywordflow">return</span> IBTUCache[Key];</div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span> </div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span> <span class="comment">// Otherwise, do a lookup that will not construct a new value.</span></div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> InBeforeInTUCache::iterator I = IBTUCache.find(Key);</div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> <span class="keywordflow">if</span> (I != IBTUCache.end())</div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> <span class="keywordflow">return</span> I->second;</div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</span> </div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span> <span class="comment">// Fall back to the overflow value.</span></div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span> <span class="keywordflow">return</span> IBTUCacheOverflow;</div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span> }</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span> <span class="comment"></span></div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span> <span class="comment">/// \brief Determines the order of 2 source locations in the translation unit.</span></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">/// \returns true if LHS source location comes before RHS, false otherwise.</span></div>
+<div class="line"><a name="l02069"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc"> 2069</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1SourceManager.html#a80e6af876450686c7811c34fc72fcbdc" title="Determines the order of 2 source locations in the translation unit.">SourceManager::isBeforeInTranslationUnit</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> LHS,</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</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> RHS)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span> assert(LHS.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && RHS.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>() && <span class="stringliteral">"Passed invalid source location!"</span>);</div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span> <span class="keywordflow">if</span> (LHS == RHS)</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> </div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> std::pair<FileID, unsigned> LOffs = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(LHS);</div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> std::pair<FileID, unsigned> ROffs = <a class="code" href="classclang_1_1SourceManager.html#a957bbe1ee3d932ad3f82bcbeac422e35" title="Decompose the specified location into a raw FileID + Offset pair.">getDecomposedLoc</a>(RHS);</div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> </div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span> <span class="comment">// getDecomposedLoc may have failed to return a valid FileID because, e.g. it</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"> 2079</span> <span class="comment">// is a serialized one referring to a file that was removed after we loaded</span></div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span> <span class="comment">// the PCH.</span></div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span> <span class="keywordflow">if</span> (LOffs.first.isInvalid() || ROffs.first.isInvalid())</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span> <span class="keywordflow">return</span> LOffs.first.isInvalid() && !ROffs.first.isInvalid();</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span> </div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span> <span class="comment">// If the source locations are in the same file, just compare offsets.</span></div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span> <span class="keywordflow">if</span> (LOffs.first == ROffs.first)</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span> <span class="keywordflow">return</span> LOffs.second < ROffs.second;</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> <span class="comment">// If we are comparing a source location with multiple locations in the same</span></div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span> <span class="comment">// file, we get a big win by caching the result.</span></div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span> <a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html" title="Holds the cache used by isBeforeInTranslationUnit.">InBeforeInTUCacheEntry</a> &IsBeforeInTUCache =</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> getInBeforeInTUCache(LOffs.first, ROffs.first);</div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span> </div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span> <span class="comment">// If we are comparing a source location with multiple locations in the same</span></div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span> <span class="comment">// file, we get a big win by caching the result.</span></div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span> <span class="keywordflow">if</span> (IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#a4e5a760c8f67ee13115afc15f3c33ca2" title="Return true if the currently cached values match up with the specified LHS/RHS query.">isCacheValid</a>(LOffs.first, ROffs.first))</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span> <span class="keywordflow">return</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#abb6639284ed9159d7ebe2f2199cab3a0" title="If the cache is valid, compute the result given the specified offsets in the LHS/RHS FileID's...">getCachedResult</a>(LOffs.second, ROffs.second);</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span> </div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span> <span class="comment">// Okay, we missed in the cache, start updating the cache for this query.</span></div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#a36a96b7c47af4d17a06d0b779eed01f8" title="Set up a new query.">setQueryFIDs</a>(LOffs.first, ROffs.first,</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span> <span class="comment">/*isLFIDBeforeRFID=*/</span>LOffs.first.ID < ROffs.first.ID);</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span> </div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span> <span class="comment">// We need to find the common ancestor. The only way of doing this is to</span></div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span> <span class="comment">// build the complete include chain for one and then walking up the chain</span></div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span> <span class="comment">// of the other looking for a match.</span></div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span> <span class="comment">// We use a map from FileID to Offset to store the chain. Easier than writing</span></div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span> <span class="comment">// a custom set hash info that only depends on the first part of a pair.</span></div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span> <span class="keyword">typedef</span> llvm::SmallDenseMap<FileID, unsigned, 16> LocSet;</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span> LocSet LChain;</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span> <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span> LChain.insert(LOffs);</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span> <span class="comment">// We catch the case where LOffs is in a file included by ROffs and</span></div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span> <span class="comment">// quit early. The other way round unfortunately remains suboptimal.</span></div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span> } <span class="keywordflow">while</span> (LOffs.first != ROffs.first && !<a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5">MoveUpIncludeHierarchy</a>(LOffs, *<span class="keyword">this</span>));</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span> LocSet::iterator I;</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span> <span class="keywordflow">while</span>((I = LChain.find(ROffs.first)) == LChain.end()) {</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span> <span class="keywordflow">if</span> (<a class="code" href="SourceManager_8cpp.html#a7749600a7bc17d66d6a099a6936568e5">MoveUpIncludeHierarchy</a>(ROffs, *<span class="keyword">this</span>))</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span> <span class="keywordflow">break</span>; <span class="comment">// Met at topmost file.</span></div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span> }</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span> <span class="keywordflow">if</span> (I != LChain.end())</div>
+<div class="line"><a name="l02120"></a><span class="lineno"> 2120</span> LOffs = *I;</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> <span class="comment">// If we exited because we found a nearest common ancestor, compare the</span></div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span> <span class="comment">// locations within the common file and cache them.</span></div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span> <span class="keywordflow">if</span> (LOffs.first == ROffs.first) {</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#a6d8ec5e46c8361388d6fb15022852a83">setCommonLoc</a>(LOffs.first, LOffs.second, ROffs.second);</div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span> <span class="keywordflow">return</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#abb6639284ed9159d7ebe2f2199cab3a0" title="If the cache is valid, compute the result given the specified offsets in the LHS/RHS FileID's...">getCachedResult</a>(LOffs.second, ROffs.second);</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span> }</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span> </div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span> <span class="comment">// This can happen if a location is in a built-ins buffer.</span></div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span> <span class="comment">// But see PR5662.</span></div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span> <span class="comment">// Clear the lookup cache, it depends on a common location.</span></div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span> IsBeforeInTUCache.<a class="code" href="classclang_1_1InBeforeInTUCacheEntry.html#abe9883ca0cbfc944dcfbe2791e23e531">clear</a>();</div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span> <span class="keywordtype">bool</span> LIsBuiltins = strcmp(<span class="stringliteral">"<built-in>"</span>,</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span> <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(LOffs.first)->getBufferIdentifier()) == 0;</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span> <span class="keywordtype">bool</span> RIsBuiltins = strcmp(<span class="stringliteral">"<built-in>"</span>,</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span> <a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(ROffs.first)->getBufferIdentifier()) == 0;</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span> <span class="comment">// built-in is before non-built-in</span></div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span> <span class="keywordflow">if</span> (LIsBuiltins != RIsBuiltins)</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span> <span class="keywordflow">return</span> LIsBuiltins;</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span> assert(LIsBuiltins && RIsBuiltins &&</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span> <span class="stringliteral">"Non-built-in locations must be rooted in the main file"</span>);</div>
+<div class="line"><a name="l02142"></a><span class="lineno"> 2142</span> <span class="comment">// Both are in built-in buffers, but from different files. We just claim that</span></div>
+<div class="line"><a name="l02143"></a><span class="lineno"> 2143</span> <span class="comment">// lower IDs come first.</span></div>
+<div class="line"><a name="l02144"></a><span class="lineno"> 2144</span> <span class="keywordflow">return</span> LOffs.first < ROffs.first;</div>
+<div class="line"><a name="l02145"></a><span class="lineno"> 2145</span> }</div>
+<div class="line"><a name="l02146"></a><span class="lineno"> 2146</span> </div>
+<div class="line"><a name="l02147"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a16451f8ed013f0e35301b40950074a56"> 2147</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1SourceManager.html#a16451f8ed013f0e35301b40950074a56" title="Print statistics to stderr.">SourceManager::PrintStats</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02148"></a><span class="lineno"> 2148</span> llvm::errs() << <span class="stringliteral">"\n*** Source Manager Stats:\n"</span>;</div>
+<div class="line"><a name="l02149"></a><span class="lineno"> 2149</span> llvm::errs() << FileInfos.size() << <span class="stringliteral">" files mapped, "</span> << MemBufferInfos.size()</div>
+<div class="line"><a name="l02150"></a><span class="lineno"> 2150</span> << <span class="stringliteral">" mem buffers mapped.\n"</span>;</div>
+<div class="line"><a name="l02151"></a><span class="lineno"> 2151</span> llvm::errs() << LocalSLocEntryTable.size() << <span class="stringliteral">" local SLocEntry's allocated ("</span></div>
+<div class="line"><a name="l02152"></a><span class="lineno"> 2152</span> << llvm::capacity_in_bytes(LocalSLocEntryTable)</div>
+<div class="line"><a name="l02153"></a><span class="lineno"> 2153</span> << <span class="stringliteral">" bytes of capacity), "</span></div>
+<div class="line"><a name="l02154"></a><span class="lineno"> 2154</span> << NextLocalOffset << <span class="stringliteral">"B of Sloc address space used.\n"</span>;</div>
+<div class="line"><a name="l02155"></a><span class="lineno"> 2155</span> llvm::errs() << LoadedSLocEntryTable.size()</div>
+<div class="line"><a name="l02156"></a><span class="lineno"> 2156</span> << <span class="stringliteral">" loaded SLocEntries allocated, "</span></div>
+<div class="line"><a name="l02157"></a><span class="lineno"> 2157</span> << MaxLoadedOffset - CurrentLoadedOffset</div>
+<div class="line"><a name="l02158"></a><span class="lineno"> 2158</span> << <span class="stringliteral">"B of Sloc address space used.\n"</span>;</div>
+<div class="line"><a name="l02159"></a><span class="lineno"> 2159</span> </div>
+<div class="line"><a name="l02160"></a><span class="lineno"> 2160</span> <span class="keywordtype">unsigned</span> NumLineNumsComputed = 0;</div>
+<div class="line"><a name="l02161"></a><span class="lineno"> 2161</span> <span class="keywordtype">unsigned</span> NumFileBytesMapped = 0;</div>
+<div class="line"><a name="l02162"></a><span class="lineno"> 2162</span> <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1SourceManager.html#a332403dd0769544846b0fe7673b3a4c5">fileinfo_iterator</a> I = <a class="code" href="classclang_1_1SourceManager.html#aa8f4e80c390577cd148e99ae22d1d06c">fileinfo_begin</a>(), E = <a class="code" href="classclang_1_1SourceManager.html#aac5161c96defcbd56ee7ca4dd5a2c56f">fileinfo_end</a>(); I != E; ++I){</div>
+<div class="line"><a name="l02163"></a><span class="lineno"> 2163</span> NumLineNumsComputed += I->second->SourceLineCache != 0;</div>
+<div class="line"><a name="l02164"></a><span class="lineno"> 2164</span> NumFileBytesMapped += I->second->getSizeBytesMapped();</div>
+<div class="line"><a name="l02165"></a><span class="lineno"> 2165</span> }</div>
+<div class="line"><a name="l02166"></a><span class="lineno"> 2166</span> <span class="keywordtype">unsigned</span> NumMacroArgsComputed = MacroArgsCacheMap.size();</div>
+<div class="line"><a name="l02167"></a><span class="lineno"> 2167</span> </div>
+<div class="line"><a name="l02168"></a><span class="lineno"> 2168</span> llvm::errs() << NumFileBytesMapped << <span class="stringliteral">" bytes of files mapped, "</span></div>
+<div class="line"><a name="l02169"></a><span class="lineno"> 2169</span> << NumLineNumsComputed << <span class="stringliteral">" files with line #'s computed, "</span></div>
+<div class="line"><a name="l02170"></a><span class="lineno"> 2170</span> << NumMacroArgsComputed << <span class="stringliteral">" files with macro args computed.\n"</span>;</div>
+<div class="line"><a name="l02171"></a><span class="lineno"> 2171</span> llvm::errs() << <span class="stringliteral">"FileID scans: "</span> << NumLinearScans << <span class="stringliteral">" linear, "</span></div>
+<div class="line"><a name="l02172"></a><span class="lineno"> 2172</span> << NumBinaryProbes << <span class="stringliteral">" binary.\n"</span>;</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> </div>
+<div class="line"><a name="l02175"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSLocEntrySource.html#aab51e6e582b1f04347e2b8276ea1e927"> 2175</a></span> <a class="code" href="classclang_1_1ExternalSLocEntrySource.html#aab51e6e582b1f04347e2b8276ea1e927">ExternalSLocEntrySource::~ExternalSLocEntrySource</a>() { }</div>
+<div class="line"><a name="l02176"></a><span class="lineno"> 2176</span> <span class="comment"></span></div>
+<div class="line"><a name="l02177"></a><span class="lineno"> 2177</span> <span class="comment">/// Return the amount of memory used by memory buffers, breaking down</span></div>
+<div class="line"><a name="l02178"></a><span class="lineno"> 2178</span> <span class="comment">/// by heap-backed versus mmap'ed memory.</span></div>
+<div class="line"><a name="l02179"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a4f3f9f3eae850e1f58923ceb708c0c60"> 2179</a></span> <span class="comment"></span><a class="code" href="structclang_1_1SourceManager_1_1MemoryBufferSizes.html">SourceManager::MemoryBufferSizes</a> <a class="code" href="classclang_1_1SourceManager.html#a4f3f9f3eae850e1f58923ceb708c0c60" title="Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memor...">SourceManager::getMemoryBufferSizes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02180"></a><span class="lineno"> 2180</span> <span class="keywordtype">size_t</span> malloc_bytes = 0;</div>
+<div class="line"><a name="l02181"></a><span class="lineno"> 2181</span> <span class="keywordtype">size_t</span> mmap_bytes = 0;</div>
+<div class="line"><a name="l02182"></a><span class="lineno"> 2182</span> </div>
+<div class="line"><a name="l02183"></a><span class="lineno"> 2183</span> <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = MemBufferInfos.size(); i != e; ++i)</div>
+<div class="line"><a name="l02184"></a><span class="lineno"> 2184</span> <span class="keywordflow">if</span> (<span class="keywordtype">size_t</span> sized_mapped = MemBufferInfos[i]->getSizeBytesMapped())</div>
+<div class="line"><a name="l02185"></a><span class="lineno"> 2185</span> <span class="keywordflow">switch</span> (MemBufferInfos[i]->getMemoryBufferKind()) {</div>
+<div class="line"><a name="l02186"></a><span class="lineno"> 2186</span> <span class="keywordflow">case</span> llvm::MemoryBuffer::MemoryBuffer_MMap:</div>
+<div class="line"><a name="l02187"></a><span class="lineno"> 2187</span> mmap_bytes += sized_mapped;</div>
+<div class="line"><a name="l02188"></a><span class="lineno"> 2188</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02189"></a><span class="lineno"> 2189</span> <span class="keywordflow">case</span> llvm::MemoryBuffer::MemoryBuffer_Malloc:</div>
+<div class="line"><a name="l02190"></a><span class="lineno"> 2190</span> malloc_bytes += sized_mapped;</div>
+<div class="line"><a name="l02191"></a><span class="lineno"> 2191</span> <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02192"></a><span class="lineno"> 2192</span> }</div>
+<div class="line"><a name="l02193"></a><span class="lineno"> 2193</span> </div>
+<div class="line"><a name="l02194"></a><span class="lineno"> 2194</span> <span class="keywordflow">return</span> <a class="code" href="structclang_1_1SourceManager_1_1MemoryBufferSizes.html">MemoryBufferSizes</a>(malloc_bytes, mmap_bytes);</div>
+<div class="line"><a name="l02195"></a><span class="lineno"> 2195</span> }</div>
+<div class="line"><a name="l02196"></a><span class="lineno"> 2196</span> </div>
+<div class="line"><a name="l02197"></a><span class="lineno"><a class="code" href="classclang_1_1SourceManager.html#a33363f160ce74156d81d75db5edb0223"> 2197</a></span> <span class="keywordtype">size_t</span> <a class="code" href="classclang_1_1SourceManager.html#a33363f160ce74156d81d75db5edb0223" title="Return the amount of memory used for various side tables and data structures in the SourceManager...">SourceManager::getDataStructureSizes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l02198"></a><span class="lineno"> 2198</span> <span class="keywordtype">size_t</span> size = llvm::capacity_in_bytes(MemBufferInfos)</div>
+<div class="line"><a name="l02199"></a><span class="lineno"> 2199</span> + llvm::capacity_in_bytes(LocalSLocEntryTable)</div>
+<div class="line"><a name="l02200"></a><span class="lineno"> 2200</span> + llvm::capacity_in_bytes(LoadedSLocEntryTable)</div>
+<div class="line"><a name="l02201"></a><span class="lineno"> 2201</span> + llvm::capacity_in_bytes(SLocEntryLoaded)</div>
+<div class="line"><a name="l02202"></a><span class="lineno"> 2202</span> + llvm::capacity_in_bytes(FileInfos);</div>
+<div class="line"><a name="l02203"></a><span class="lineno"> 2203</span> </div>
+<div class="line"><a name="l02204"></a><span class="lineno"> 2204</span> <span class="keywordflow">if</span> (OverriddenFilesInfo)</div>
+<div class="line"><a name="l02205"></a><span class="lineno"> 2205</span> size += llvm::capacity_in_bytes(OverriddenFilesInfo->OverriddenFiles);</div>
+<div class="line"><a name="l02206"></a><span class="lineno"> 2206</span> </div>
+<div class="line"><a name="l02207"></a><span class="lineno"> 2207</span> <span class="keywordflow">return</span> size;</div>
+<div class="line"><a name="l02208"></a><span class="lineno"> 2208</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more
+information.</p>
+</body>
+</html>
Added: www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/SourceManager_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,226 @@
+<!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: SourceManager.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+ <div id="navrow1" class="tabs">
+ <ul class="tablist">
+ <li><a href="index.html"><span>Main Page</span></a></li>
+ <li><a href="pages.html"><span>Related Pages</span></a></li>
+ <li><a href="modules.html"><span>Modules</span></a></li>
+ <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+ <li><a href="annotated.html"><span>Classes</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ <li>
+ <div id="MSearchBox" class="MSearchBoxInactive">
+ <span class="left">
+ <img id="MSearchSelect" src="search/mag_sel.png"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ alt=""/>
+ <input type="text" id="MSearchField" value="Search" accesskey="S"
+ onfocus="searchBox.OnSearchFieldFocus(true)"
+ onblur="searchBox.OnSearchFieldFocus(false)"
+ onkeyup="searchBox.OnSearchFieldChange(event)"/>
+ </span><span class="right">
+ <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+ </span>
+ </div>
+ </li>
+ </ul>
+ </div>
+ <div id="navrow2" class="tabs2">
+ <ul class="tablist">
+ <li><a href="files.html"><span>File List</span></a></li>
+ <li><a href="globals.html"><span>File Members</span></a></li>
+ </ul>
+ </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+ onmouseover="return searchBox.OnSearchSelectShow()"
+ onmouseout="return searchBox.OnSearchSelectHide()"
+ onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0"
+ name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+ <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_24bca364b0f2c7358ed9eed68d952c0d.html">Basic</a></li><li class="navelem"><a class="el" href="dir_d56b91025ffac0ac634c9045c122e791.html">Release+Asserts</a></li> </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+ <div class="headertitle">
+<div class="title">SourceManager.d</div> </div>
+</div><!--header-->
+<div class="contents">
+<a href="SourceManager_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/SourceManager.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/SourceManager.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> SourceManager.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManagerInternals.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> /home/tstellar/llvm/include/llvm/Support/Capacity.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> /home/tstellar/llvm/include/llvm/Support/Path.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> </div>
+<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div>
+<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> </div>
+<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> /home/tstellar/llvm/include/llvm/Support/Casting.h:</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> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div>
+<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> </div>
+<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</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> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> </div>
+<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> </div>
+<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</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> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</div>
+<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div>
+<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:</div>
+<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> </div>
+<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div>
+<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> </div>
+<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div>
+<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</div>
+<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> </div>
+<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div>
+<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> /home/tstellar/llvm/include/llvm/ADT/Twine.h:</div>
+<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h:</div>
+<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div>
+<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div>
+<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div>
+<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno"> 129</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/SourceManagerInternals.h:</div>
+<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> </div>
+<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> /home/tstellar/llvm/include/llvm/ADT/Optional.h:</div>
+<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div>
+<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.h:</div>
+<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> </div>
+<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> /home/tstellar/llvm/include/llvm/Support/Capacity.h:</div>
+<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> </div>
+<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> /home/tstellar/llvm/include/llvm/Support/Path.h:</div>
+<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:14:10 for r$LatestRev$ by <a href="http://www.doxygen.org">Doxygen
+1.8.3.1</a>.</p>
+<p class="footer">
+See the <a href="http://clang.llvm.org">Main Clang Web Page</a> for more
+information.</p>
+</body>
+</html>
More information about the llvm-commits
mailing list