[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/ExpressionTraits_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExpressionTraits_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExpressionTraits_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExpressionTraits_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,105 @@
+<!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: ExpressionTraits.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">ExpressionTraits.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ExpressionTraits_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">//===- ExpressionTraits.h - C++ Expression Traits Support Enums -*- 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 enumerations for expression traits intrinsics.</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_EXPRESSIONTRAITS_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_EXPRESSIONTRAITS_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="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a name="l00020"></a><span class="lineno"><a class="code" href="namespaceclang.html#ae06b509d34e749898b535a8c0203fc79">   20</a></span>   <span class="keyword">enum</span> <a class="code" href="namespaceclang.html#ae06b509d34e749898b535a8c0203fc79">ExpressionTrait</a> {</div>
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="code" href="namespaceclang.html#ae06b509d34e749898b535a8c0203fc79a008131673ae872203eb1802cc27ec7f9">   21</a></span>     <a class="code" href="namespaceclang.html#ae06b509d34e749898b535a8c0203fc79a008131673ae872203eb1802cc27ec7f9">ET_IsLValueExpr</a>,</div>
+<div class="line"><a name="l00022"></a><span class="lineno"><a class="code" href="namespaceclang.html#ae06b509d34e749898b535a8c0203fc79ae2f266f8a4f2493190a13c008c4290e0">   22</a></span>     <a class="code" href="namespaceclang.html#ae06b509d34e749898b535a8c0203fc79ae2f266f8a4f2493190a13c008c4290e0">ET_IsRValueExpr</a></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>   };</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> }</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/ExternalASTSource_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,141 @@
+<!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: ExternalASTSource.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_d3636efc55c6148efe36c59ffa01cb41.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ExternalASTSource.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ExternalASTSource_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">//===- ExternalASTSource.cpp - Abstract External AST Interface --*- 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 provides the default implementation of the ExternalASTSource </span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  interface, which enables construction of AST nodes from some external</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//  source.</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> </div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="ExternalASTSource_8h.html">clang/AST/ExternalASTSource.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="DeclarationName_8h.html">clang/AST/DeclarationName.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a name="l00021"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a89ac6193eb9b4b659c445fc3e4f4b7dc">   21</a></span> <a class="code" href="classclang_1_1ExternalASTSource.html#a89ac6193eb9b4b659c445fc3e4f4b7dc">ExternalASTSource::~ExternalASTSource</a>() { }</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aa65cedf268215b2a6af8913bbfc59eb2">   23</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#aa65cedf268215b2a6af8913bbfc59eb2" title="Print any statistics that have been gathered regarding the external AST source.">ExternalASTSource::PrintStats</a>() { }</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#abf6b21c4e3af3b542dfb5367fba5fa9f">   25</a></span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1ExternalASTSource.html#abf6b21c4e3af3b542dfb5367fba5fa9f" title="Resolve a declaration ID into a declaration, potentially building a new declaration.">ExternalASTSource::GetExternalDecl</a>(uint32_t <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="l00026"></a><span class="lineno">   26</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> }</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a5242efbc84c2fd2151f48172238c2adb">   29</a></span> <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> <a class="code" href="classclang_1_1ExternalASTSource.html#a5242efbc84c2fd2151f48172238c2adb" title="Resolve a selector ID into a selector.">ExternalASTSource::GetExternalSelector</a>(uint32_t <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="l00030"></a><span class="lineno">   30</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a>();</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> </div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a6823ba4e88f75f15c2efbd321f930f59">   33</a></span> uint32_t <a class="code" href="classclang_1_1ExternalASTSource.html#a6823ba4e88f75f15c2efbd321f930f59" title="Returns the number of selectors known to the external AST source.">ExternalASTSource::GetNumExternalSelectors</a>() {</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>    <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> }</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aa6849a7f52a6afff294df7f87cb47f46">   37</a></span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1ExternalASTSource.html#aa6849a7f52a6afff294df7f87cb47f46" title="Resolve the offset of a statement in the decl stream into a statement.">ExternalASTSource::GetExternalDeclStmt</a>(uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> }</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *</div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#ac519ca921df299ca818534788e2801e2">   42</a></span> <a class="code" href="classclang_1_1ExternalASTSource.html#ac519ca921df299ca818534788e2801e2" title="Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers...">ExternalASTSource::GetExternalCXXBaseSpecifiers</a>(uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> }</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> </div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aaec254c48efa0ee820ca9f5b31349c59">   47</a></span> <a class="code" href="classclang_1_1ExternalASTSource.html#aaec254c48efa0ee820ca9f5b31349c59" title="Find all declarations with the given name in the given context, and add them to the context by callin...">ExternalASTSource::FindExternalVisibleDeclsByName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>                                                   <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordflow">return</span> <span class="keyword">false</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> </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aea7e33b4bcacc133af28804a77711717">   52</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#aea7e33b4bcacc133af28804a77711717" title="Ensures that the table of all visible declarations inside this context is up to date.">ExternalASTSource::completeVisibleDeclsMap</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> }</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804" title="Enumeration describing the result of loading information from an external source.">ExternalLoadResult</a></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a667d761ce9399a8c44b739cf15bd2e89">   56</a></span> <a class="code" href="classclang_1_1ExternalASTSource.html#a667d761ce9399a8c44b739cf15bd2e89" title="Finds all declarations lexically contained within the given DeclContext, after applying an optional f...">ExternalASTSource::FindExternalLexicalDecls</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>                                             <span class="keywordtype">bool</span> (*isKindWeWant)(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Decl::Kind</a>),</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>                                          <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl*></a> &Result) {</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="keywordflow">return</span> <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804a2597b3182b586863f7157d4c681bd2dc" title="The external information has already been loaded, and therefore no additional processing is required...">ELR_AlreadyLoaded</a>;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> }</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#abeca9a537fd8d8f38159c2cc289c29db">   62</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a231aa213619de95327e5540a4418b582">ExternalASTSource::getMemoryBufferSizes</a>(<a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html">MemoryBufferSizes</a> &sizes)<span class="keyword"> const </span>{ }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/ExternalASTSource_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,214 @@
+<!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: ExternalASTSource.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_d3636efc55c6148efe36c59ffa01cb41.html">AST</a></li><li class="navelem"><a class="el" href="dir_e796beea07674cb14e7827e2d3a82e85.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ExternalASTSource.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ExternalASTSource_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/AST/Release+Asserts/ExternalASTSource.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/AST/Release+Asserts/ExternalASTSource.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  ExternalASTSource.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/ExternalASTSource.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/CharUnits.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.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/Support/type_traits.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/DeclBase.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/AttrIterator.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/DeclarationName.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/IdentifierTable.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/PartialDiagnostic.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/ADT/STLExtras.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/DeclNodes.inc</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> /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/ExternalASTSource.h:</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> /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/CharUnits.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/include/llvm/ADT/DenseMapInfo.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/include/llvm/Support/PointerLikeTypeTraits.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/include/llvm/Support/DataTypes.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/include/llvm/Support/type_traits.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/MathExtras.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/Compiler.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/Config/llvm-config.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/Support/SwapByteOrder.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/tools/clang/lib/AST/../../include/clang/AST/DeclBase.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/tools/clang/lib/AST/../../include/clang/AST/AttrIterator.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/tools/clang/lib/AST/../../include/clang/Basic/LLVM.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/Casting.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/ADT/None.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/tools/clang/lib/AST/../../include/clang/AST/DeclarationName.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/tools/clang/lib/AST/../../include/clang/Basic/IdentifierTable.h:</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/OperatorKinds.def:</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/tools/clang/lib/AST/../../include/clang/Basic/TokenKinds.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/tools/clang/lib/AST/../../include/clang/Basic/TokenKinds.def:</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/SmallString.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/SmallVector.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/AlignOf.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/ADT/StringRef.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/StringMap.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/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/tools/clang/lib/AST/../../include/clang/Basic/PartialDiagnostic.h:</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/Basic/Diagnostic.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/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.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/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticCommonKinds.inc:</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/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticOptions.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/tools/clang/lib/AST/../../include/clang/Basic/DiagnosticOptions.def:</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/tools/clang/lib/AST/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> </div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> /home/tstellar/llvm/include/llvm/ADT/STLExtras.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/AST/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h:</div>
+<div class="line"><a name="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/AST/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> /home/tstellar/llvm/include/llvm/Support/PrettyStackTrace.h:</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> /home/tstellar/llvm/tools/clang/lib/AST/../../include/clang/AST/DeclNodes.inc:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/ExternalASTSource_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalASTSource_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,623 @@
+<!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: ExternalASTSource.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_6152e82a4845f7e2a2888050f43c34d1.html">AST</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ExternalASTSource.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ExternalASTSource_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">//===--- ExternalASTSource.h - Abstract External AST Interface --*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the ExternalASTSource interface, which enables</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  construction of AST nodes from some external source.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#ifndef LLVM_CLANG_AST_EXTERNAL_AST_SOURCE_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_AST_EXTERNAL_AST_SOURCE_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="CharUnits_8h.html">clang/AST/CharUnits.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclBase_8h.html">clang/AST/DeclBase.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "llvm/ADT/DenseMap.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">class </span>ASTConsumer;</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">class </span>CXXBaseSpecifier;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">class </span>DeclarationName;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">class </span>ExternalSemaSource; <span class="comment">// layering violation required for downcasting</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">class </span>FieldDecl;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">class </span>Module;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">class </span>NamedDecl;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">class </span>RecordDecl;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">class </span>Selector;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">class </span>Stmt;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">class </span>TagDecl;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// \brief Enumeration describing the result of loading information from</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment">/// an external source.</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804">   37</a></span> <span class="comment"></span><span class="keyword">enum</span> <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804" title="Enumeration describing the result of loading information from an external source.">ExternalLoadResult</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">  /// \brief Loading the external information has succeeded.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804ad19885d294356c1cca6bc967dcd1283e">   39</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804ad19885d294356c1cca6bc967dcd1283e" title="Loading the external information has succeeded.">ELR_Success</a>,</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  /// \brief Loading the external information has failed.</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804a588d13e26faab1325bfce8f69054d345">   42</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804a588d13e26faab1325bfce8f69054d345" title="Loading the external information has failed.">ELR_Failure</a>,</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">  /// \brief The external information has already been loaded, and therefore</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">  /// no additional processing is required.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804a2597b3182b586863f7157d4c681bd2dc">   46</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804a2597b3182b586863f7157d4c681bd2dc" title="The external information has already been loaded, and therefore no additional processing is required...">ELR_AlreadyLoaded</a></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>   <span class="comment"></span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">/// \brief Abstract interface for external sources of AST nodes.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// External AST sources provide AST nodes constructed from some</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">/// external source, such as a precompiled header. External AST</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">/// sources can resolve types and declarations from abstract IDs into</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">/// actual type and declaration nodes, and read parts of declaration</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// contexts.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html">   56</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">  /// \brief Whether this AST source also provides information for</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">  /// semantic analysis.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment"></span>  <span class="keywordtype">bool</span> SemaSource;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aef937260b0b7607b1bd31627638d429d">   61</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ExternalSemaSource.html" title="An abstract interface that should be implemented by external AST sources that also provide informatio...">ExternalSemaSource</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">public</span>:</div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aa3ed6f4f3d8281ef63dc2cce0c719c10">   64</a></span>   <a class="code" href="classclang_1_1ExternalASTSource.html#aa3ed6f4f3d8281ef63dc2cce0c719c10">ExternalASTSource</a>() : SemaSource(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>) { }</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>   <span class="keyword">virtual</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a89ac6193eb9b4b659c445fc3e4f4b7dc">~ExternalASTSource</a>();</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">  /// \brief RAII class for safely pairing a StartedDeserializing call</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">  /// with FinishedDeserializing.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource_1_1Deserializing.html">   70</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1ExternalASTSource_1_1Deserializing.html" title="RAII class for safely pairing a StartedDeserializing call with FinishedDeserializing.">Deserializing</a> {</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> *Source;</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource_1_1Deserializing.html#a2bd32e734305a539eb9c6852336b2c09">   73</a></span>     <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ExternalASTSource_1_1Deserializing.html#a2bd32e734305a539eb9c6852336b2c09">Deserializing</a>(<a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> *source) : Source(source) {</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       assert(Source);</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>       Source-><a class="code" href="classclang_1_1ExternalASTSource.html#a963d866521122dc66f35a651e66cd955" title="Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeseriali...">StartedDeserializing</a>();</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     }</div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource_1_1Deserializing.html#adc8d420785417c7fc933409cc172cbf3">   77</a></span>     <a class="code" href="classclang_1_1ExternalASTSource_1_1Deserializing.html#adc8d420785417c7fc933409cc172cbf3">~Deserializing</a>() {</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>       Source-><a class="code" href="classclang_1_1ExternalASTSource.html#aa85f881b9f404d41b9855d5dedf60d87" title="Notify ExternalASTSource that we finished the deserialization of a decl or type. Must be paired with ...">FinishedDeserializing</a>();</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>   };</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment"></span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  /// \brief Resolve a declaration ID into a declaration, potentially</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  /// building a new declaration.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// This method only needs to be implemented if the AST source ever</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">  /// passes back decl sets as VisibleDeclaration objects.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *<a class="code" href="classclang_1_1ExternalASTSource.html#abf6b21c4e3af3b542dfb5367fba5fa9f" title="Resolve a declaration ID into a declaration, potentially building a new declaration.">GetExternalDecl</a>(uint32_t <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="l00090"></a><span class="lineno">   90</span> <span class="comment"></span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">  /// \brief Resolve a selector ID into a selector.</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  /// This operation only needs to be implemented if the AST source</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  /// returns non-zero for GetNumKnownSelectors().</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> <a class="code" href="classclang_1_1ExternalASTSource.html#a5242efbc84c2fd2151f48172238c2adb" title="Resolve a selector ID into a selector.">GetExternalSelector</a>(uint32_t <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="l00098"></a><span class="lineno">   98</span> <span class="comment"></span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">  /// \brief Returns the number of selectors known to the external AST</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">  /// source.</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment"></span>  <span class="keyword">virtual</span> uint32_t <a class="code" href="classclang_1_1ExternalASTSource.html#a6823ba4e88f75f15c2efbd321f930f59" title="Returns the number of selectors known to the external AST source.">GetNumExternalSelectors</a>();</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment"></span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> <span class="comment">  /// \brief Resolve the offset of a statement in the decl stream into</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment">  /// a statement.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">  /// This operation is meant to be used via a LazyOffsetPtr.  It only</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// needs to be implemented if the AST source uses methods like</span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">  /// FunctionDecl::setLazyBody when building decls.</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Stmt.html">Stmt</a> *<a class="code" href="classclang_1_1ExternalASTSource.html#aa6849a7f52a6afff294df7f87cb47f46" title="Resolve the offset of a statement in the decl stream into a statement.">GetExternalDeclStmt</a>(uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">  /// \brief Resolve the offset of a set of C++ base specifiers in the decl</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// stream into an array of specifiers.</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">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a> *<a class="code" href="classclang_1_1ExternalASTSource.html#ac519ca921df299ca818534788e2801e2" title="Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers...">GetExternalCXXBaseSpecifiers</a>(uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment"></span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">  /// \brief Update an out-of-date identifier.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a5788400e93ab9b35111ee3f02a56dc75">  122</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a5788400e93ab9b35111ee3f02a56dc75" title="Update an out-of-date identifier.">updateOutOfDateIdentifier</a>(<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> &II) { }</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment"></span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">  /// \brief Find all declarations with the given name in the given context,</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">  /// and add them to the context by calling SetExternalVisibleDeclsForName</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">  /// or SetNoExternalVisibleDeclsForName.</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">  /// \return \c true if any declarations might have been found, \c false if</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">  /// we definitely have no declarations with tbis name.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">  /// The default implementation of this method is a no-op returning \c false.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <a class="code" href="classclang_1_1ExternalASTSource.html#aaec254c48efa0ee820ca9f5b31349c59" title="Find all declarations with the given name in the given context, and add them to the context by callin...">FindExternalVisibleDeclsByName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC, <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name);</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment"></span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">  /// \brief Ensures that the table of all visible declarations inside this</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">  /// context is up to date.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">  /// The default implementation of this function is a no-op.</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#aea7e33b4bcacc133af28804a77711717" title="Ensures that the table of all visible declarations inside this context is up to date.">completeVisibleDeclsMap</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC);</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 Retrieve the module that corresponds to the given module ID.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a6803aa782054af3f0f301a906dd15839">  141</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ExternalASTSource.html#a6803aa782054af3f0f301a906dd15839" title="Retrieve the module that corresponds to the given module ID.">getModule</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="keywordflow">return</span> 0; }</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">  /// \brief Finds all declarations lexically contained within the given</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">  /// DeclContext, after applying an optional filter predicate.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">  /// \param isKindWeWant a predicate function that returns true if the passed</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">  /// declaration kind is one we are looking for. If NULL, all declarations</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  /// are returned.</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">  /// \return an indication of whether the load succeeded or failed.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804" title="Enumeration describing the result of loading information from an external source.">ExternalLoadResult</a> <a class="code" href="classclang_1_1ExternalASTSource.html#a667d761ce9399a8c44b739cf15bd2e89" title="Finds all declarations lexically contained within the given DeclContext, after applying an optional f...">FindExternalLexicalDecls</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>                                         <span class="keywordtype">bool</span> (*isKindWeWant)(<a class="code" href="classclang_1_1Decl.html#a4c591bf2c0aa4f4d5f343ec665cbf196" title="Lists the kind of concrete classes of Decl.">Decl::Kind</a>),</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>                                         <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl*></a> &Result);</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 Finds all declarations lexically contained within the given</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">  /// DeclContext.</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">  /// \return true if an error occurred</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a31e375bd609d4d99a888ce93a07cd3d1">  161</a></span> <span class="comment"></span>  <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804" title="Enumeration describing the result of loading information from an external source.">ExternalLoadResult</a> <a class="code" href="classclang_1_1ExternalASTSource.html#a667d761ce9399a8c44b739cf15bd2e89" title="Finds all declarations lexically contained within the given DeclContext, after applying an optional f...">FindExternalLexicalDecls</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>                                 <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl*></a> &Result) {</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a667d761ce9399a8c44b739cf15bd2e89" title="Finds all declarations lexically contained within the given DeclContext, after applying an optional f...">FindExternalLexicalDecls</a>(DC, 0, Result);</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   }</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keyword">template</span> <<span class="keyword">typename</span> DeclTy></div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a90e89c0e993af5dd98d075e195431f45">  167</a></span>   <a class="code" href="namespaceclang.html#a0a601e656c5c4731007649dead1eb804" title="Enumeration describing the result of loading information from an external source.">ExternalLoadResult</a> <a class="code" href="classclang_1_1ExternalASTSource.html#a90e89c0e993af5dd98d075e195431f45">FindExternalLexicalDeclsBy</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>                                   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl*></a> &Result) {</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a667d761ce9399a8c44b739cf15bd2e89" title="Finds all declarations lexically contained within the given DeclContext, after applying an optional f...">FindExternalLexicalDecls</a>(DC, DeclTy::classofKind, Result);</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   }</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment"></span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">  /// \brief Get the decls that are contained in a file in the Offset/Length</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  /// range. \p Length can be 0 to indicate a point at \p Offset instead of</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">  /// a range. </span></div>
+<div class="line"><a name="l00175"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a91916ac16d26e9216d54b84950256e0a">  175</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a91916ac16d26e9216d54b84950256e0a" title="Get the decls that are contained in a file in the Offset/Length range. Length can be 0 to indicate a ...">FindFileRegionDecls</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> File, <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>,<span class="keywordtype">unsigned</span> Length,</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>                                    <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<Decl *></a> &Decls) {}</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment"></span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">  /// \brief Gives the external AST source an opportunity to complete</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">  /// an incomplete type.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a8923ba4a9190a14fa34489478ed3a9b9">  180</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a8923ba4a9190a14fa34489478ed3a9b9" title="Gives the external AST source an opportunity to complete an incomplete type.">CompleteType</a>(<a class="code" href="classclang_1_1TagDecl.html" title="TagDecl - Represents the declaration of a struct/union/class/enum.">TagDecl</a> *Tag) {}</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment"></span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  /// \brief Gives the external AST source an opportunity to complete an</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// incomplete Objective-C class.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// This routine will only be invoked if the "externally completed" bit is</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// set on the ObjCInterfaceDecl via the function </span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  /// \c ObjCInterfaceDecl::setExternallyCompleted().</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a9e42265f7a3c45fe84770c6380642c51">  188</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a9e42265f7a3c45fe84770c6380642c51" title="Gives the external AST source an opportunity to complete an incomplete Objective-C class...">CompleteType</a>(<a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *Class) { }</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment"></span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">  /// \brief Loads comment ranges.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a0698ac919fa905d32f9620328d6bd0a5">  191</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a0698ac919fa905d32f9620328d6bd0a5" title="Loads comment ranges.">ReadComments</a>() { }</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment"></span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">  /// \brief Notify ExternalASTSource that we started deserialization of</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">  /// a decl or type so until FinishedDeserializing is called there may be</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">  /// decls that are initializing. Must be paired with FinishedDeserializing.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a963d866521122dc66f35a651e66cd955">  198</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a963d866521122dc66f35a651e66cd955" title="Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeseriali...">StartedDeserializing</a>() { }</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment"></span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment">  /// \brief Notify ExternalASTSource that we finished the deserialization of</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">  /// a decl or type. Must be paired with StartedDeserializing.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#aa85f881b9f404d41b9855d5dedf60d87">  204</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#aa85f881b9f404d41b9855d5dedf60d87" title="Notify ExternalASTSource that we finished the deserialization of a decl or type. Must be paired with ...">FinishedDeserializing</a>() { }</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment"></span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">  /// \brief Function that will be invoked when we begin parsing a new</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">  /// translation unit involving this external AST source.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#ab58c547ace5a4f09700a29ed0d1db03b">  210</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#ab58c547ace5a4f09700a29ed0d1db03b" title="Function that will be invoked when we begin parsing a new translation unit involving this external AS...">StartTranslationUnit</a>(<a class="code" href="classclang_1_1ASTConsumer.html">ASTConsumer</a> *Consumer) { }</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment"></span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// \brief Print any statistics that have been gathered regarding</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// the external AST source.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">  /// The default implementation of this method is a no-op.</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#aa65cedf268215b2a6af8913bbfc59eb2" title="Print any statistics that have been gathered regarding the external AST source.">PrintStats</a>();</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">  /// \brief Perform layout on the given record.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">  /// This routine allows the external AST source to provide an specific </span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">  /// layout for a record, overriding the layout that would normally be</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">  /// constructed. It is intended for clients who receive specific layout</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">  /// details rather than source code (such as LLDB). The client is expected</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">  /// to fill in the field offsets, base offsets, virtual base offsets, and</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">  /// complete object size.</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment">  /// \param Record The record whose layout is being requested.</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  /// \param Size The final size of the record, in bits.</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">  /// \param Alignment The final alignment of the record, in bits.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">  /// \param FieldOffsets The offset of each of the fields within the record,</span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">  /// expressed in bits. All of the fields must be provided with offsets.</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">  /// \param BaseOffsets The offset of each of the direct, non-virtual base</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">  /// classes. If any bases are not given offsets, the bases will be laid </span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">  /// out according to the ABI.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">  /// \param VirtualBaseOffsets The offset of each of the virtual base classes</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment">  /// (either direct or not). If any bases are not given offsets, the bases will be laid </span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">  /// out according to the ABI.</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// </span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">  /// \returns true if the record layout was provided, false otherwise.</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> </div>
+<div class="line"><a name="l00247"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a6cd616287567077590b9335a2fc0f497">  247</a></span>   <a class="code" href="classclang_1_1ExternalASTSource.html#a6cd616287567077590b9335a2fc0f497" title="Perform layout on the given record.">layoutRecordType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1RecordDecl.html">RecordDecl</a> *Record,</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>                    uint64_t &Size, uint64_t &Alignment,</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>                    llvm::DenseMap<const FieldDecl *, uint64_t> &FieldOffsets,</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>                  llvm::DenseMap<const CXXRecordDecl *, CharUnits> &BaseOffsets,</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>           llvm::DenseMap<const CXXRecordDecl *, CharUnits> &VirtualBaseOffsets)</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   { </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     <span class="keywordflow">return</span> <span class="keyword">false</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>   </div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="comment">// Queries for performance analysis.</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="comment">//===--------------------------------------------------------------------===//</span></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="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html">  260</a></span>   <span class="keyword">struct </span><a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html">MemoryBufferSizes</a> {</div>
+<div class="line"><a name="l00261"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#ade13e9153a5450e684e00f23c341e048">  261</a></span>     <span class="keywordtype">size_t</span> <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#ade13e9153a5450e684e00f23c341e048">malloc_bytes</a>;</div>
+<div class="line"><a name="l00262"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#a97df482971ce7a54675ea8473fca7b58">  262</a></span>     <span class="keywordtype">size_t</span> <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#a97df482971ce7a54675ea8473fca7b58">mmap_bytes</a>;</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>     </div>
+<div class="line"><a name="l00264"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#a44aea65e2361061d1f409b82d4eacc30">  264</a></span>     <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#a44aea65e2361061d1f409b82d4eacc30">MemoryBufferSizes</a>(<span class="keywordtype">size_t</span> <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#ade13e9153a5450e684e00f23c341e048">malloc_bytes</a>, <span class="keywordtype">size_t</span> <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html#a97df482971ce7a54675ea8473fca7b58">mmap_bytes</a>)</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     : malloc_bytes(malloc_bytes), mmap_bytes(mmap_bytes) {}</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"></span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">  /// Return the amount of memory used by memory buffers, breaking down</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment">  /// by heap-backed versus mmap'ed memory.</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalASTSource.html#a231aa213619de95327e5540a4418b582">  270</a></span> <span class="comment"></span>  <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html">MemoryBufferSizes</a> <a class="code" href="classclang_1_1ExternalASTSource.html#a231aa213619de95327e5540a4418b582">getMemoryBufferSizes</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>     <a class="code" href="structclang_1_1ExternalASTSource_1_1MemoryBufferSizes.html">MemoryBufferSizes</a> sizes(0, 0);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>     <a class="code" href="classclang_1_1ExternalASTSource.html#a231aa213619de95327e5540a4418b582">getMemoryBufferSizes</a>(sizes);</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>     <span class="keywordflow">return</span> sizes;</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   }</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalASTSource.html#a231aa213619de95327e5540a4418b582">getMemoryBufferSizes</a>(MemoryBufferSizes &sizes) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> </div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keyword">static</span> <a class="code" href="namespaceclang.html#a967df4b6f890451c3e212f25cf982268">DeclContextLookupResult</a></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <a class="code" href="classclang_1_1ExternalASTSource.html#a3b536e8b03d5fbc4b7796c8bfec0f4be">SetExternalVisibleDeclsForName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>                                  <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name,</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>                                  <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<NamedDecl*></a> Decls);</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>   <span class="keyword">static</span> <a class="code" href="namespaceclang.html#a967df4b6f890451c3e212f25cf982268">DeclContextLookupResult</a></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>   <a class="code" href="classclang_1_1ExternalASTSource.html#a43c23f214e5c7a976f747da3bbf59189">SetNoExternalVisibleDeclsForName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC,</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>                                    <a class="code" href="classclang_1_1DeclarationName.html">DeclarationName</a> Name);</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span> };</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span> <span class="comment"></span></div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span> <span class="comment">/// \brief A lazy pointer to an AST node (of base type T) that resides</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> <span class="comment">/// within an external AST source.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span> <span class="comment">/// The AST node is identified within the external AST source by a</span></div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span> <span class="comment">/// 63-bit offset, and can be retrieved via an operation on the</span></div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span> <span class="comment">/// external AST source itself.</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> OffsT, T* (ExternalASTSource::*Get)(OffsT Offset)></div>
+<div class="line"><a name="l00296"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html">  296</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1LazyOffsetPtr.html" title="A lazy pointer to an AST node (of base type T) that resides within an external AST source...">LazyOffsetPtr</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> <span class="comment">  /// \brief Either a pointer to an AST node or the offset within the</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> <span class="comment">  /// external AST source where the AST node can be found.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span> <span class="comment">  /// If the low bit is clear, a pointer to the AST node. If the low</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="comment">  /// bit is set, the upper 63 bits are the offset.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d">  302</a></span> <span class="comment"></span>  <span class="keyword">mutable</span> uint64_t <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>;</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> </div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00305"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#a06f34ec32a0e3a3506bc02d2f555c7cf">  305</a></span>   <a class="code" href="structclang_1_1LazyOffsetPtr.html#a06f34ec32a0e3a3506bc02d2f555c7cf">LazyOffsetPtr</a>() : <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>(0) { }</div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> </div>
+<div class="line"><a name="l00307"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#a88d3537a6e4848c38728e336d982ffce">  307</a></span>   <span class="keyword">explicit</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#a88d3537a6e4848c38728e336d982ffce">LazyOffsetPtr</a>(T *<a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>) : Ptr(reinterpret_cast<uint64_t>(Ptr)) { }</div>
+<div class="line"><a name="l00308"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#a06e39c1b3cfcdd4e1f2cc3d5ef054878">  308</a></span>   <span class="keyword">explicit</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#a06e39c1b3cfcdd4e1f2cc3d5ef054878">LazyOffsetPtr</a>(uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) : <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>((Offset << 1) | 0x01) {</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>     assert((Offset << 1 >> 1) == Offset && <span class="stringliteral">"Offsets must require < 63 bits"</span>);</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>     <span class="keywordflow">if</span> (Offset == 0)</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>       <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> = 0;</div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   }</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> </div>
+<div class="line"><a name="l00314"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#a5fc3e65fa25d7ef1197c09c184cb2e11">  314</a></span>   <a class="code" href="structclang_1_1LazyOffsetPtr.html" title="A lazy pointer to an AST node (of base type T) that resides within an external AST source...">LazyOffsetPtr</a> &<a class="code" href="structclang_1_1LazyOffsetPtr.html#a5fc3e65fa25d7ef1197c09c184cb2e11">operator=</a>(T *<a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>) {</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>     this->Ptr = <span class="keyword">reinterpret_cast<</span>uint64_t<span class="keyword">></span>(<a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>);</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>   }</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> </div>
+<div class="line"><a name="l00319"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#ab79a61084e222f33feaa86f447ff42cf">  319</a></span>   <a class="code" href="structclang_1_1LazyOffsetPtr.html" title="A lazy pointer to an AST node (of base type T) that resides within an external AST source...">LazyOffsetPtr</a> &<a class="code" href="structclang_1_1LazyOffsetPtr.html#ab79a61084e222f33feaa86f447ff42cf">operator=</a>(uint64_t <a class="code" href="namespaceclang_1_1io.html#ae0bbdf4a2b076935546931e52d48d29b">Offset</a>) {</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     assert((Offset << 1 >> 1) == Offset && <span class="stringliteral">"Offsets must require < 63 bits"</span>);</div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span>     <span class="keywordflow">if</span> (Offset == 0)</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>       <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> = 0;</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>       <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> = (Offset << 1) | 0x01;</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> </div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>     <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   }</div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> <span class="comment"></span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> <span class="comment">  /// \brief Whether this pointer is non-NULL.</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">  /// This operation does not require the AST node to be deserialized.</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#ae81e729a19420ce1ddd7f18631478ed6">  332</a></span> <span class="comment"></span>  LLVM_EXPLICIT <span class="keyword">operator</span> <a class="code" href="stdbool_8h.html#abb452686968e48b67397da5f97445f5b">bool</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> != 0; }</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span> <span class="comment"></span></div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> <span class="comment">  /// \brief Whether this pointer is non-NULL.</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="comment">  /// This operation does not require the AST node to be deserialized.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#a4de61d4dd93e310b1aa71b929eadb940">  337</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#a4de61d4dd93e310b1aa71b929eadb940" title="Whether this pointer is non-NULL.">isValid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> != 0; }</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> <span class="comment"></span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <span class="comment">  /// \brief Whether this pointer is currently stored as an offset.</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#abe35e91389427ace5261046dcf20aeeb">  340</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#abe35e91389427ace5261046dcf20aeeb" title="Whether this pointer is currently stored as an offset.">isOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> & 0x01; }</div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> <span class="comment"></span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="comment">  /// \brief Retrieve the pointer to the AST node that this lazy pointer</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span> <span class="comment">  /// \param Source the external AST source.</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="comment">  /// \returns a pointer to the AST node.</span></div>
+<div class="line"><a name="l00347"></a><span class="lineno"><a class="code" href="structclang_1_1LazyOffsetPtr.html#ad1012480dba6e105f7447380a040f966">  347</a></span> <span class="comment"></span>  T* <span class="keyword">get</span>(<a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> *Source) <span class="keyword">const</span> {</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>     <span class="keywordflow">if</span> (<a class="code" href="structclang_1_1LazyOffsetPtr.html#abe35e91389427ace5261046dcf20aeeb" title="Whether this pointer is currently stored as an offset.">isOffset</a>()) {</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>       assert(Source &&</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>              <span class="stringliteral">"Cannot deserialize a lazy pointer without an AST source"</span>);</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>       <a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> = <span class="keyword">reinterpret_cast<</span>uint64_t<span class="keyword">></span>((Source->*Get)(<a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a> >> 1));</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="keywordflow">return</span> <span class="keyword">reinterpret_cast<</span>T*<span class="keyword">></span>(<a class="code" href="structclang_1_1LazyOffsetPtr.html#a64ffc739f1acddb7a3f8711b7cbfb12d" title="Either a pointer to an AST node or the offset within the external AST source where the AST node can b...">Ptr</a>);</div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span>   }</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span> };</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span> <span class="comment"></span></div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span> <span class="comment">/// \brief Represents a lazily-loaded vector of data.</span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="comment">/// The lazily-loaded vector of data contains data that is partially loaded</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="comment">/// from an external source and partially added by local translation. The </span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment">/// items loaded from the external source are loaded lazily, when needed for</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> <span class="comment">/// iteration over the complete vector.</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> <span class="comment"></span><span class="keyword">template</span><<span class="keyword">typename</span> T, <span class="keyword">typename</span> Source, </div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>          void (Source::*Loader)(SmallVectorImpl<T>&),</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>          <span class="keywordtype">unsigned</span> LoadedStorage = 2, <span class="keywordtype">unsigned</span> LocalStorage = 4></div>
+<div class="line"><a name="l00366"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector.html">  366</a></span> <span class="keyword">class</span> <a class="code" href="classclang_1_1LazyVector.html" title="Represents a lazily-loaded vector of data.">LazyVector</a> {</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<T, LoadedStorage></a> Loaded;</div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<T, LocalStorage></a> Local;</div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>   <span class="comment">// Iteration over the elements in the vector.</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html">  372</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> {</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>     <a class="code" href="classclang_1_1LazyVector.html" title="Represents a lazily-loaded vector of data.">LazyVector</a> *Self;</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">    /// \brief Position within the vector..</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> <span class="comment">    ///</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="comment">    /// In a complete iteration, the Position field walks the range [-M, N),</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span> <span class="comment">    /// where negative values are used to indicate elements</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span> <span class="comment">    /// loaded from the external source while non-negative values are used to</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> <span class="comment">    /// indicate elements added via \c push_back().</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> <span class="comment">    /// However, to provide iteration in source order (for, e.g., chained</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> <span class="comment">    /// precompiled headers), dereferencing the iterator flips the negative</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span> <span class="comment">    /// values (corresponding to loaded entities), so that position -M </span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span> <span class="comment">    /// corresponds to element 0 in the loaded entities vector, position -M+1</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span> <span class="comment">    /// corresponds to element 1 in the loaded entities vector, etc. This</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span> <span class="comment">    /// gives us a reasonably efficient, source-order walk.</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span> <span class="comment"></span>    <span class="keywordtype">int</span> <a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     </div>
+<div class="line"><a name="l00389"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a2670937e9249cf2789384c74526f8e72">  389</a></span>     <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a2670937e9249cf2789384c74526f8e72">LazyVector</a>;</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span>     </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00392"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aecf767e755e4ac76b9c416c6bd953cf4">  392</a></span>     <span class="keyword">typedef</span> T                   <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aecf767e755e4ac76b9c416c6bd953cf4">value_type</a>;</div>
+<div class="line"><a name="l00393"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ae4027968c3254dff50947e997e510ab6">  393</a></span>     <span class="keyword">typedef</span> value_type&         <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ae4027968c3254dff50947e997e510ab6">reference</a>;</div>
+<div class="line"><a name="l00394"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a9fddc388f88d88436d6ad1a68ff58af6">  394</a></span>     <span class="keyword">typedef</span> value_type*         <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a9fddc388f88d88436d6ad1a68ff58af6">pointer</a>;</div>
+<div class="line"><a name="l00395"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aabb8a4e772d62abf1842ef04a40ad10f">  395</a></span>     <span class="keyword">typedef</span> std::random_access_iterator_tag <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aabb8a4e772d62abf1842ef04a40ad10f">iterator_category</a>;</div>
+<div class="line"><a name="l00396"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a7be44eb6955b8ee36d7ff22af83b780e">  396</a></span>     <span class="keyword">typedef</span> <span class="keywordtype">int</span>                 <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a7be44eb6955b8ee36d7ff22af83b780e">difference_type</a>;</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>     </div>
+<div class="line"><a name="l00398"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#af1b6d7a15e9ce1f86342c1655f9995bf">  398</a></span>     <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#af1b6d7a15e9ce1f86342c1655f9995bf">iterator</a>() : Self(0), Position(0) { }</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     </div>
+<div class="line"><a name="l00400"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ae73bd288532a40c45be5fdab19699960">  400</a></span>     <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a>(<a class="code" href="classclang_1_1LazyVector.html" title="Represents a lazily-loaded vector of data.">LazyVector</a> *Self, <span class="keywordtype">int</span> Position) </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>       : Self(Self), Position(Position) { }</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     </div>
+<div class="line"><a name="l00403"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a359f735ea04d0e72e95785497e9c5b08">  403</a></span>     reference <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a359f735ea04d0e72e95785497e9c5b08">operator*</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>       <span class="keywordflow">if</span> (Position < 0)</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span>         <span class="keywordflow">return</span> Self->Loaded.end()[<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>];</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>       <span class="keywordflow">return</span> Self->Local[<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</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="classclang_1_1LazyVector_1_1iterator.html#aa700a30b89e7c8d8b9b63e38fa1e6734">  409</a></span>     pointer <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aa700a30b89e7c8d8b9b63e38fa1e6734">operator-></a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>       <span class="keywordflow">if</span> (Position < 0)</div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>         <span class="keywordflow">return</span> &Self->Loaded.end()[<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>];</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>       </div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>       <span class="keywordflow">return</span> &Self->Local[<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>];        </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>     }</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>     </div>
+<div class="line"><a name="l00416"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#af78722c49cc41232c9ec0392e3ae2fb0">  416</a></span>     reference <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#af78722c49cc41232c9ec0392e3ae2fb0">operator[]</a>(difference_type D) {</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>       <span class="keywordflow">return</span> *(*<span class="keyword">this</span> + D);</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     }</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     </div>
+<div class="line"><a name="l00420"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a9e6afd209a59c1108a76af636c202b6f">  420</a></span>     <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a9e6afd209a59c1108a76af636c202b6f">operator++</a>() {</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>       ++<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     }</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>     </div>
+<div class="line"><a name="l00425"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a2d2ab2e94a3666236f2da38f1ab32094">  425</a></span>     <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a2d2ab2e94a3666236f2da38f1ab32094">operator++</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>       <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> Prev(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>       ++<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>       <span class="keywordflow">return</span> Prev;</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>     </div>
+<div class="line"><a name="l00431"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a409303055af6a04873064afcfbf87ecb">  431</a></span>     <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a409303055af6a04873064afcfbf87ecb">operator--</a>() {</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>       --<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>       <span class="keywordflow">return</span> *<span class="keyword">this</span>;</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"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a1670d282837be1c2d6f62ef4992bcc13">  436</a></span>     <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a1670d282837be1c2d6f62ef4992bcc13">operator--</a>(<span class="keywordtype">int</span>) {</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>       <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> Prev(*<span class="keyword">this</span>);</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>       --<a class="code" href="UnwrappedLineParser_8cpp.html#a6fc9a79cf6fd7e927d2a20bd664f1619">Position</a>;</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>       <span class="keywordflow">return</span> Prev;</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>     }</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     </div>
+<div class="line"><a name="l00442"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ab27a6e65e990477cbb8a961f2783f2c7">  442</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ab27a6e65e990477cbb8a961f2783f2c7">operator==</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>       <span class="keywordflow">return</span> X.Position == Y.Position;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>     }</div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>     </div>
+<div class="line"><a name="l00446"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a683156b0dd6e6d834c39a2edeef12f89">  446</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a683156b0dd6e6d834c39a2edeef12f89">operator!=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>       <span class="keywordflow">return</span> X.Position != Y.Position;</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>     </div>
+<div class="line"><a name="l00450"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a16c56746062da161064dbe769e15f1e3">  450</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a16c56746062da161064dbe769e15f1e3">operator<</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span>       <span class="keywordflow">return</span> X.Position < Y.Position;</div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     }</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     </div>
+<div class="line"><a name="l00454"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a246316911ffafafaf2aec3b19c9533c6">  454</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a246316911ffafafaf2aec3b19c9533c6">operator></a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>       <span class="keywordflow">return</span> X.Position > Y.Position;</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>     }</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>     </div>
+<div class="line"><a name="l00458"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aee835b4e38047244a00a41bb5f57f97f">  458</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aee835b4e38047244a00a41bb5f57f97f">operator<=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>       <span class="keywordflow">return</span> X.Position < Y.Position;</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     }</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     </div>
+<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a853b1c71fc48404da8d510759465f57f">  462</a></span>     <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a853b1c71fc48404da8d510759465f57f">operator>=</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>       <span class="keywordflow">return</span> X.Position > Y.Position;</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>     }</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>     </div>
+<div class="line"><a name="l00466"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a5d8ae53fb74725a47db55e144a83f31d">  466</a></span>     <span class="keyword">friend</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a>& <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a5d8ae53fb74725a47db55e144a83f31d">operator+=</a>(<a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, difference_type D) {</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>       X.Position += D;</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>     }</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     </div>
+<div class="line"><a name="l00471"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aaa7eddbe7cf61a4051be453cd1ed5233">  471</a></span>     <span class="keyword">friend</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a>& <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#aaa7eddbe7cf61a4051be453cd1ed5233">operator-=</a>(<a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, difference_type D) {</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span>       X.Position -= D;</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span>     }</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>     </div>
+<div class="line"><a name="l00476"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a64def7717343acfb647f7b57c477c2f6">  476</a></span>     <span class="keyword">friend</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a64def7717343acfb647f7b57c477c2f6">operator+</a>(<a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, difference_type D) {</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>       X.Position += D;</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     }</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     </div>
+<div class="line"><a name="l00481"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a369cc0848881c5ae4ff798981331f4a6">  481</a></span>     <span class="keyword">friend</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#a369cc0848881c5ae4ff798981331f4a6">operator+</a>(difference_type D, <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>) {</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>       X.Position += D;</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</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"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#afd0f779f8620f57d322cf44cfb415a62">  486</a></span>     <span class="keyword">friend</span> difference_type <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#afd0f779f8620f57d322cf44cfb415a62">operator-</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &<a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> &Y) {</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>       <span class="keywordflow">return</span> X.Position - Y.Position;</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     }</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     </div>
+<div class="line"><a name="l00490"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ae1a7da5801cb53f76c7372570b4a4c83">  490</a></span>     <span class="keyword">friend</span> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="classclang_1_1LazyVector_1_1iterator.html#ae1a7da5801cb53f76c7372570b4a4c83">operator-</a>(<a class="code" href="classclang_1_1LazyVector_1_1iterator.html">iterator</a> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>, difference_type D) {</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>       X.Position -= D;</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>       <span class="keywordflow">return</span> <a class="code" href="namespaceclang_1_1tooling.html#ad61cfdb049c401f2669516dc65c93f91">X</a>;</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>     }</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span>   };</div>
+<div class="line"><a name="l00495"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector.html#a67171474c4da6cc8efe0c7fafefd2b2d">  495</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1LazyVector.html#a67171474c4da6cc8efe0c7fafefd2b2d">iterator</a>;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>   </div>
+<div class="line"><a name="l00497"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector.html#aece837b4cb6ebe8f1e2d25c502a60a7e">  497</a></span>   iterator <a class="code" href="classclang_1_1LazyVector.html#aece837b4cb6ebe8f1e2d25c502a60a7e">begin</a>(Source *source, <span class="keywordtype">bool</span> LocalOnly = <span class="keyword">false</span>) {</div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>     <span class="keywordflow">if</span> (LocalOnly)</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>, 0);</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>     <span class="keywordflow">if</span> (source)</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>       (source->*Loader)(Loaded);</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>, -(<span class="keywordtype">int</span>)Loaded.size());</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>   </div>
+<div class="line"><a name="l00506"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector.html#a9ec68a985ebe7f74314f824bfe5bb07b">  506</a></span>   iterator <a class="code" href="classclang_1_1LazyVector.html#a9ec68a985ebe7f74314f824bfe5bb07b">end</a>() {</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>     <span class="keywordflow">return</span> iterator(<span class="keyword">this</span>, Local.size());</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>   }</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   </div>
+<div class="line"><a name="l00510"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector.html#a1e7f341045a85d9146d7a09457438ee1">  510</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LazyVector.html#a1e7f341045a85d9146d7a09457438ee1">push_back</a>(<span class="keyword">const</span> T& LocalValue) {</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>     Local.push_back(LocalValue);</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span>   }</div>
+<div class="line"><a name="l00513"></a><span class="lineno">  513</span>   </div>
+<div class="line"><a name="l00514"></a><span class="lineno"><a class="code" href="classclang_1_1LazyVector.html#ae1f8d10c9cbd8417893c8bb2516f1687">  514</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1LazyVector.html#ae1f8d10c9cbd8417893c8bb2516f1687">erase</a>(iterator From, iterator To) {</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>     <span class="keywordflow">if</span> (From.Position < 0 && To.Position < 0) {</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>       Loaded.erase(Loaded.end() + From.Position, Loaded.end() + To.Position);</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>     }</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>     </div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>     <span class="keywordflow">if</span> (From.Position < 0) {</div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>       Loaded.erase(Loaded.end() + From.Position, Loaded.end());</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>       From = begin(0, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>     }</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>     </div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>     Local.erase(Local.begin() + From.Position, Local.begin() + To.Position);</div>
+<div class="line"><a name="l00526"></a><span class="lineno">  526</span>   }</div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span> };</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span> <span class="comment"></span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span> <span class="comment">/// \brief A lazy pointer to a statement.</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> <span class="comment"></span><span class="keyword">typedef</span> LazyOffsetPtr<Stmt, uint64_t, &ExternalASTSource::GetExternalDeclStmt></div>
+<div class="line"><a name="l00531"></a><span class="lineno"><a class="code" href="namespaceclang.html#aec5482c7b4c12a99e88a56177614a606">  531</a></span>   <a class="code" href="namespaceclang.html#aec5482c7b4c12a99e88a56177614a606" title="A lazy pointer to a statement.">LazyDeclStmtPtr</a>;</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> <span class="comment"></span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span> <span class="comment">/// \brief A lazy pointer to a declaration.</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span> <span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html">LazyOffsetPtr<Decl, uint32_t, &ExternalASTSource::GetExternalDecl></a></div>
+<div class="line"><a name="l00535"></a><span class="lineno"><a class="code" href="namespaceclang.html#a013da24fd5e984d45ce64b651a1aa818">  535</a></span>   <a class="code" href="namespaceclang.html#a013da24fd5e984d45ce64b651a1aa818" title="A lazy pointer to a declaration.">LazyDeclPtr</a>;</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span> <span class="comment"></span></div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> <span class="comment">/// \brief A lazy pointer to a set of CXXBaseSpecifiers.</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> <span class="comment"></span><span class="keyword">typedef</span> <a class="code" href="structclang_1_1LazyOffsetPtr.html" title="A lazy pointer to an AST node (of base type T) that resides within an external AST source...">LazyOffsetPtr</a><<a class="code" href="classclang_1_1CXXBaseSpecifier.html" title="Represents a base class of a C++ class.">CXXBaseSpecifier</a>, uint64_t, </div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>                       &<a class="code" href="classclang_1_1ExternalASTSource.html#ac519ca921df299ca818534788e2801e2" title="Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers...">ExternalASTSource::GetExternalCXXBaseSpecifiers</a>></div>
+<div class="line"><a name="l00540"></a><span class="lineno"><a class="code" href="namespaceclang.html#abdb480472f0fdf2c09165c0903bcd5d9">  540</a></span>   <a class="code" href="namespaceclang.html#abdb480472f0fdf2c09165c0903bcd5d9" title="A lazy pointer to a set of CXXBaseSpecifiers.">LazyCXXBaseSpecifiersPtr</a>;</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span> </div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span> </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span> <span class="preprocessor">#endif // LLVM_CLANG_AST_EXTERNAL_AST_SOURCE_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/ExternalPreprocessorSource_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalPreprocessorSource_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalPreprocessorSource_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalPreprocessorSource_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,118 @@
+<!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: ExternalPreprocessorSource.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_49bfb562b5f2c4dac4f33842ea680dda.html">Lex</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ExternalPreprocessorSource.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ExternalPreprocessorSource_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">//===- ExternalPreprocessorSource.h - Abstract Macro Interface --*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the ExternalPreprocessorSource interface, which enables</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  construction of macro definitions from some external source.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#ifndef LLVM_CLANG_LEX_EXTERNAL_PREPROCESSOR_SOURCE_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_LEX_EXTERNAL_PREPROCESSOR_SOURCE_H</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">class </span>IdentifierInfo;</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="comment"></span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="comment">/// \brief Abstract interface for external sources of preprocessor </span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment">/// information.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">/// This abstract class allows an external sources (such as the \c ASTReader) </span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">/// to provide additional macro definitions.</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalPreprocessorSource.html">   26</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ExternalPreprocessorSource.html" title="Abstract interface for external sources of preprocessor information.">ExternalPreprocessorSource</a> {</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <span class="keyword">virtual</span> <a class="code" href="classclang_1_1ExternalPreprocessorSource.html#a58f6744b3195257c50910067e6e491d8">~ExternalPreprocessorSource</a>();</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">  /// \brief Read the set of macros defined by this external macro source.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalPreprocessorSource.html#af2dfb1a6692f997af98df9c7476aeab1" title="Read the set of macros defined by this external macro source.">ReadDefinedMacros</a>() = 0;</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 Update an out-of-date identifier.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalPreprocessorSource.html#aa2c691e71f32dac58cd2752bdc32b30e" title="Update an out-of-date identifier.">updateOutOfDateIdentifier</a>(<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> &II) = 0;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> };</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> }</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor">#endif // LLVM_CLANG_LEX_EXTERNAL_PREPROCESSOR_SOURCE_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/ExternalSemaSource_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalSemaSource_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalSemaSource_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ExternalSemaSource_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,309 @@
+<!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: ExternalSemaSource.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_d527ffe6334522956bc19a2da6aab47c.html">Sema</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ExternalSemaSource.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ExternalSemaSource_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">//===--- ExternalSemaSource.h - External Sema Interface ---------*- C++ -*-===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the ExternalSemaSource 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> <span class="preprocessor">#ifndef LLVM_CLANG_SEMA_EXTERNAL_SEMA_SOURCE_H</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_SEMA_EXTERNAL_SEMA_SOURCE_H</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "<a class="code" href="ExternalASTSource_8h.html">clang/AST/ExternalASTSource.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="Type_8h.html">clang/AST/Type.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="TypoCorrection_8h.html">clang/Sema/TypoCorrection.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Weak_8h.html">clang/Sema/Weak.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/ADT/MapVector.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <utility></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="keyword">class </span>CXXConstructorDecl;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="keyword">class </span>CXXRecordDecl;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">class </span>DeclaratorDecl;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="keyword">class </span>LookupResult;</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">struct </span>ObjCMethodList;</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="keyword">class </span>Scope;</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keyword">class </span>Sema;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">class </span>TypedefNameDecl;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">class </span>ValueDecl;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">class </span>VarDecl;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">struct </span>LateParsedTemplate;</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> <span class="comment">/// \brief A simple structure that captures a vtable use for the purposes of</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/// the \c ExternalSemaSource.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalVTableUse.html">   39</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1ExternalVTableUse.html" title="A simple structure that captures a vtable use for the purposes of the ExternalSemaSource.">ExternalVTableUse</a> {</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalVTableUse.html#a984d38f309f1b97af648b4cb5be7a745">   40</a></span>   <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *<a class="code" href="structclang_1_1ExternalVTableUse.html#a984d38f309f1b97af648b4cb5be7a745">Record</a>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalVTableUse.html#af6cca420e36795f23abb777182f25503">   41</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="structclang_1_1ExternalVTableUse.html#af6cca420e36795f23abb777182f25503">Location</a>;</div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="structclang_1_1ExternalVTableUse.html#a790d596ae70b7814a403920d17d85a5d">   42</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1ExternalVTableUse.html#a790d596ae70b7814a403920d17d85a5d">DefinitionRequired</a>;</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="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">/// \brief An abstract interface that should be implemented by</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">/// external AST sources that also provide information for semantic</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">/// analysis.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html">   48</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1ExternalSemaSource.html" title="An abstract interface that should be implemented by external AST sources that also provide informatio...">ExternalSemaSource</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a1d7da9f1e29a1befafca0321bf069e32">   50</a></span>   <a class="code" href="classclang_1_1ExternalSemaSource.html#a1d7da9f1e29a1befafca0321bf069e32">ExternalSemaSource</a>() {</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     ExternalASTSource::SemaSource = <span class="keyword">true</span>;</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> </div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classclang_1_1ExternalSemaSource.html#a02f3a5c79bc46e09878fc28af26b1b8f">~ExternalSemaSource</a>();</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment"></span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">  /// \brief Initialize the semantic source with the Sema instance</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">  /// being used to perform semantic analysis on the abstract syntax</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">  /// tree.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a47d7417608e4e6659f902061306a5fd4">   59</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a47d7417608e4e6659f902061306a5fd4" title="Initialize the semantic source with the Sema instance being used to perform semantic analysis on the ...">InitializeSema</a>(<a class="code" href="classclang_1_1Sema.html" title="Sema - This implements semantic analysis and AST building for C.">Sema</a> &<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) {}</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment">  /// \brief Inform the semantic consumer that Sema is no longer available.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#ace4b8e519cba1043273f459c6a6ac20a">   62</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#ace4b8e519cba1043273f459c6a6ac20a" title="Inform the semantic consumer that Sema is no longer available.">ForgetSema</a>() {}</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> <span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">  /// \brief Load the contents of the global method pool for a given</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">  /// selector.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a2ffd6ece2f0eec55fdcc9be1c2578290" title="Load the contents of the global method pool for a given selector.">ReadMethodPool</a>(<a class="code" href="classclang_1_1Selector.html" title="Smart pointer class that efficiently represents Objective-C method names.">Selector</a> Sel);</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">  /// \brief Load the set of namespaces that are known to the external source,</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment">  /// which will be used during typo correction.</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a97de8b31c5f2e9defff02f9e58f3af7a" title="Load the set of namespaces that are known to the external source, which will be used during typo corr...">ReadKnownNamespaces</a>(</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>                            <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<NamespaceDecl *></a> &Namespaces);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment"></span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// \brief Load the set of used but not defined functions or variables with</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// internal linkage, or used but not defined internal functions.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a90a0e44bc73b703126b558ac6ae78207" title="Load the set of used but not defined functions or variables with internal linkage, or used but not defined internal functions.">ReadUndefinedButUsed</a>(</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>                          llvm::DenseMap<NamedDecl*, SourceLocation> &Undefined);</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment"></span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  /// \brief Do last resort, unqualified lookup on a LookupResult that</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  /// Sema cannot find.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">  /// \param R a LookupResult that is being recovered.</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">  /// \param S the Scope of the identifier occurrence.</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// \return true to tell Sema to recover using the LookupResult.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a971a425e22c9ebbfb3a2c8deb032fc7f">   86</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a971a425e22c9ebbfb3a2c8deb032fc7f" title="Do last resort, unqualified lookup on a LookupResult that Sema cannot find.">LookupUnqualified</a>(<a class="code" href="classclang_1_1LookupResult.html" title="Represents the results of name lookup.">LookupResult</a> &R, <a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>) { <span class="keywordflow">return</span> <span class="keyword">false</span>; }</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment"></span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">  /// \brief Read the set of tentative definitions known to the external Sema</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">  /// source.</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">  /// The external source should append its own tentative definitions to the</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">  /// given vector of tentative definitions. Note that this routine may be</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  /// invoked multiple times; the external source should take care not to</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  /// introduce the same declarations repeatedly.</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a43bccb2eeaada7faab710bb68d34ad01">   95</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a43bccb2eeaada7faab710bb68d34ad01" title="Read the set of tentative definitions known to the external Sema source.">ReadTentativeDefinitions</a>(</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                                   <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<VarDecl *></a> &TentativeDefs) {}</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="comment">  /// \brief Read the set of unused file-scope declarations known to the</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment">  /// external Sema source.</span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">  /// The external source should append its own unused, filed-scope to the</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">  /// given vector of declarations. Note that this routine may be</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> <span class="comment">  /// invoked multiple times; the external source should take care not to</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> <span class="comment">  /// introduce the same declarations repeatedly.</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a7c1c16fe2932500b6de0025aec4b4ff0">  105</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a7c1c16fe2932500b6de0025aec4b4ff0" title="Read the set of unused file-scope declarations known to the external Sema source.">ReadUnusedFileScopedDecls</a>(</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const DeclaratorDecl *></a> &Decls) {}</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">  /// \brief Read the set of delegating constructors known to the</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> <span class="comment">  /// external Sema source.</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">  /// The external source should append its own delegating constructors to the</span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment">  /// given vector of declarations. Note that this routine may be</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">  /// invoked multiple times; the external source should take care not to</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">  /// introduce the same declarations repeatedly.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#aba2065138032254646574ef8a9e72be2">  115</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#aba2065138032254646574ef8a9e72be2" title="Read the set of delegating constructors known to the external Sema source.">ReadDelegatingConstructors</a>(</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CXXConstructorDecl *></a> &Decls) {}</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">  /// \brief Read the set of ext_vector type declarations known to the</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">  /// external Sema source.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">  /// The external source should append its own ext_vector type declarations to</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">  /// the given vector of declarations. Note that this routine may be</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> <span class="comment">  /// invoked multiple times; the external source should take care not to</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> <span class="comment">  /// introduce the same declarations repeatedly.</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#aab07e69f3b67486b0f5877e1cd2d70f3">  125</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#aab07e69f3b67486b0f5877e1cd2d70f3" title="Read the set of ext_vector type declarations known to the external Sema source.">ReadExtVectorDecls</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<TypedefNameDecl *></a> &Decls) {}</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment"></span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">  /// \brief Read the set of dynamic classes known to the external Sema source.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment">  /// The external source should append its own dynamic classes to</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">  /// the given vector of declarations. Note that this routine may be</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">  /// invoked multiple times; the external source should take care not to</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment">  /// introduce the same declarations repeatedly.</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a389ffb2bc4129e180d3b43649427f3c8">  133</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a389ffb2bc4129e180d3b43649427f3c8" title="Read the set of dynamic classes known to the external Sema source.">ReadDynamicClasses</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<CXXRecordDecl *></a> &Decls) {}</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment"></span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">  /// \brief Read the set of locally-scoped external declarations known to the</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">  /// external Sema source.</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">  /// The external source should append its own locally-scoped external</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">  /// declarations to the given vector of declarations. Note that this routine </span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">  /// may be invoked multiple times; the external source should take care not </span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">  /// to introduce the same declarations repeatedly.</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a1b8fce6627dac13d5eda7cc88104eb43">  142</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a1b8fce6627dac13d5eda7cc88104eb43" title="Read the set of locally-scoped external declarations known to the external Sema source.">ReadLocallyScopedExternCDecls</a>(</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<NamedDecl *></a> &Decls) {}</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment"></span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">  /// \brief Read the set of referenced selectors known to the</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">  /// external Sema source.</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  /// The external source should append its own referenced selectors to the </span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  /// given vector of selectors. Note that this routine </span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">  /// may be invoked multiple times; the external source should take care not </span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">  /// to introduce the same selectors repeatedly.</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#afa99c1929cb6709ba3c77ea77ee29209">  152</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#afa99c1929cb6709ba3c77ea77ee29209" title="Read the set of referenced selectors known to the external Sema source.">ReadReferencedSelectors</a>(</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<Selector, SourceLocation> > &Sels) {}</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment"></span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">  /// \brief Read the set of weak, undeclared identifiers known to the</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">  /// external Sema source.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">  /// The external source should append its own weak, undeclared identifiers to</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">  /// the given vector. Note that this routine may be invoked multiple times; </span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">  /// the external source should take care not to introduce the same identifiers</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">  /// repeatedly.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#aa4e1d531292db2154a1a5f9ab2220f95">  162</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#aa4e1d531292db2154a1a5f9ab2220f95" title="Read the set of weak, undeclared identifiers known to the external Sema source.">ReadWeakUndeclaredIdentifiers</a>(</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<IdentifierInfo *, WeakInfo> > &WI) {}</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment"></span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment">  /// \brief Read the set of used vtables known to the external Sema source.</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> <span class="comment">  /// The external source should append its own used vtables to the given</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">  /// vector. Note that this routine may be invoked multiple times; the external</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">  /// source should take care not to introduce the same vtables repeatedly.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a62ca854c077605bf2e374580f971fd78">  170</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a62ca854c077605bf2e374580f971fd78" title="Read the set of used vtables known to the external Sema source.">ReadUsedVTables</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<ExternalVTableUse></a> &VTables) {}</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment"></span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">  /// \brief Read the set of pending instantiations known to the external</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  /// Sema source.</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">  /// The external source should append its own pending instantiations to the</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">  /// given vector. Note that this routine may be invoked multiple times; the</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">  /// external source should take care not to introduce the same instantiations</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">  /// repeatedly.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#ae5c4fc9aefb8128a9fe4cbe1aef544eb">  179</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#ae5c4fc9aefb8128a9fe4cbe1aef544eb" title="Read the set of pending instantiations known to the external Sema source.">ReadPendingInstantiations</a>(</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>                  <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl</a><std::pair<<a class="code" href="classclang_1_1ValueDecl.html">ValueDecl</a> *, </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>                                            <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>> > &Pending) {}</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment"></span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// \brief Read the set of late parsed template functions for this source.</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// The external source should insert its own late parsed template functions</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// into the map. Note that this routine may be invoked multiple times; the</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  /// external source should take care not to introduce the same map entries</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">  /// repeatedly.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a12b9260189d784b87b51e92cc6c55227">  189</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a12b9260189d784b87b51e92cc6c55227" title="Read the set of late parsed template functions for this source.">ReadLateParsedTemplates</a>(</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>       llvm::DenseMap<const FunctionDecl *, LateParsedTemplate *> &LPTMap) {}</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment"></span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment">  /// \copydoc Sema::CorrectTypo</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">  /// \note LookupKind must correspond to a valid Sema::LookupNameKind</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">  /// ExternalSemaSource::CorrectTypo is always given the first chance to</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment">  /// correct a typo (really, to offer suggestions to repair a failed lookup).</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment">  /// It will even be called when SpellChecking is turned off or after a</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">  /// fatal error has already been detected.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a3febc2b905546ca1fc38ada315b6a0ed">  199</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a> <a class="code" href="classclang_1_1ExternalSemaSource.html#a3febc2b905546ca1fc38ada315b6a0ed" title="Try to "correct" a typo in the source code by finding visible declarations whose names are similar to...">CorrectTypo</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1DeclarationNameInfo.html">DeclarationNameInfo</a> &<a class="code" href="CommentSema_8cpp.html#ace01d1978435b977e8a71c3196358cc1">Typo</a>,</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>                                      <span class="keywordtype">int</span> LookupKind, <a class="code" href="classclang_1_1Scope.html">Scope</a> *<a class="code" href="AnalysisBasedWarnings_8cpp.html#a33dc45a03958a0bf07b5da2dec4db648">S</a>, <a class="code" href="classclang_1_1CXXScopeSpec.html" title="Represents a C++ nested-name-specifier or a global scope specifier.">CXXScopeSpec</a> *SS,</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>                                      <a class="code" href="classclang_1_1CorrectionCandidateCallback.html" title="Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...">CorrectionCandidateCallback</a> &CCC,</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>                                      <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *MemberContext,</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>                                      <span class="keywordtype">bool</span> EnteringContext,</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>                                      <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCObjectPointerType.html">ObjCObjectPointerType</a> *OPT) {</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1TypoCorrection.html" title="Simple class containing the result of Sema::CorrectTypo.">TypoCorrection</a>();</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   }</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment"></span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">  /// \brief Produces a diagnostic note if the external source contains a</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  /// complete definition for \p T.</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment">  /// \param Loc the location at which a complete type was required but not</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// provided</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// \param T the \c QualType that should have been complete at \p Loc</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">  /// \return true if a diagnostic was produced, false otherwise.</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a9eb36b063b89017de02a86a745290e60">  217</a></span> <span class="comment"></span>  <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a9eb36b063b89017de02a86a745290e60" title="Produces a diagnostic note if the external source contains a complete definition for T...">MaybeDiagnoseMissingCompleteType</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="l00218"></a><span class="lineno">  218</span>                                                 <a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   }</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> </div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="comment">// isa/cast/dyn_cast support</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="code" href="classclang_1_1ExternalSemaSource.html#a49523cbf876905ce6d94702bc13cdb60">  223</a></span>   <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ExternalSemaSource.html#a49523cbf876905ce6d94702bc13cdb60">classof</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ExternalASTSource.html" title="Abstract interface for external sources of AST nodes.">ExternalASTSource</a> *Source) {</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>     <span class="keywordflow">return</span> Source->SemaSource;</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   }</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> }; </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileManager_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,674 @@
+<!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: FileManager.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">FileManager.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileManager_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">//===--- FileManager.cpp - File System Probing and Caching ----------------===//</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 FileManager 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> <span class="comment">//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="comment">// TODO: This should index all interesting directories with dirent calls.</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="comment">//  getdirentries ?</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="comment">//  opendir/readdir_r/closedir ?</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</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="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="FileSystemStatCache_8h.html" title="Defines the FileSystemStatCache interface.">clang/Basic/FileSystemStatCache.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/ADT/SmallString.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/Config/llvm-config.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/Support/MemoryBuffer.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/Support/system_error.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <map></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include <set></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">// FIXME: This is terrible, we need this for ::close.</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor">#if !defined(_MSC_VER) && !defined(__MINGW32__)</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="preprocessor"></span><span class="preprocessor">#include <unistd.h></span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor">#include <sys/uio.h></span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="preprocessor"></span><span class="preprocessor">#include <io.h></span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="preprocessor">#ifndef S_ISFIFO</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="preprocessor"></span><span class="preprocessor">#define S_ISFIFO(x) (0)</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="preprocessor"></span><span class="preprocessor">#if defined(LLVM_ON_UNIX)</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="preprocessor"></span><span class="preprocessor">#include <<a class="code" href="limits_8h.html">limits.h</a>></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="preprocessor"></span><span class="keyword">using namespace </span>clang;</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> <span class="comment">// FIXME: Enhance libsystem to support inode and other fields.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="preprocessor">#include <sys/stat.h></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment"></span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// NON_EXISTENT_DIR - A special value distinct from null that is used to</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">/// represent a dir name that doesn't exist on the disk.</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="FileManager_8cpp.html#ad55e3e3dd490f8bd481f2226577812ab">   53</a></span> <span class="comment"></span><span class="preprocessor">#define NON_EXISTENT_DIR reinterpret_cast<DirectoryEntry*>((intptr_t)-1)</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="preprocessor"></span><span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// NON_EXISTENT_FILE - A special value distinct from null that is used to</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/// represent a filename that doesn't exist on the disk.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">   57</a></span> <span class="comment"></span><span class="preprocessor">#define NON_EXISTENT_FILE reinterpret_cast<FileEntry*>((intptr_t)-1)</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> </div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#ad27f7e85c95beffd56608a64ddbd7f39">   60</a></span> <a class="code" href="classclang_1_1FileEntry.html#ad27f7e85c95beffd56608a64ddbd7f39">FileEntry::~FileEntry</a>() {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="comment">// If this FileEntry owns an open file descriptor that never got used, close</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="comment">// it.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   <span class="keywordflow">if</span> (FD != -1) ::close(FD);</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> </div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="classFileManager_1_1UniqueDirContainer.html">   66</a></span> <span class="keyword">class </span><a class="code" href="classFileManager_1_1UniqueDirContainer.html">FileManager::UniqueDirContainer</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment">  /// UniqueDirs - Cache from ID's to existing directories/files.</span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment"></span>  std::map<llvm::sys::fs::UniqueID, DirectoryEntry> UniqueDirs;</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> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">  /// getDirectory - Return an existing DirectoryEntry with the given</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">  /// ID's if there is already one; otherwise create and return a</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// default-constructed DirectoryEntry.</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="classFileManager_1_1UniqueDirContainer.html#ad7967dfd33e3d281cef784721d82e76d">   74</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> &<a class="code" href="classFileManager_1_1UniqueDirContainer.html#ad7967dfd33e3d281cef784721d82e76d">getDirectory</a>(<span class="keyword">const</span> llvm::sys::fs::UniqueID &UniqueID) {</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <span class="keywordflow">return</span> UniqueDirs[UniqueID];</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>   }</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> </div>
+<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="classFileManager_1_1UniqueDirContainer.html#a98a5d4c14e609e615d1d876dbc78aea4">   78</a></span>   <span class="keywordtype">size_t</span> <a class="code" href="classFileManager_1_1UniqueDirContainer.html#a98a5d4c14e609e615d1d876dbc78aea4">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> UniqueDirs.size(); }</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> </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="classFileManager_1_1UniqueFileContainer.html">   81</a></span> <span class="keyword">class </span><a class="code" href="classFileManager_1_1UniqueFileContainer.html">FileManager::UniqueFileContainer</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  /// UniqueFiles - Cache from ID's to existing directories/files.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment"></span>  std::set<FileEntry> UniqueFiles;</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> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">  /// getFile - Return an existing FileEntry with the given ID's if</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">  /// there is already one; otherwise create and return a</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">  /// default-constructed FileEntry.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classFileManager_1_1UniqueFileContainer.html#a6a06ae27a817c9b6c923da6b41c5deba">   89</a></span> <span class="comment"></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> &<a class="code" href="classFileManager_1_1UniqueFileContainer.html#a6a06ae27a817c9b6c923da6b41c5deba">getFile</a>(llvm::sys::fs::UniqueID UniqueID, <span class="keywordtype">bool</span> IsNamedPipe,</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>                      <span class="keywordtype">bool</span> InPCH) {</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">return</span> <span class="keyword">const_cast<</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> &<span class="keyword">></span>(</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         *UniqueFiles.insert(<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>(UniqueID, IsNamedPipe, InPCH)).first);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   }</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classFileManager_1_1UniqueFileContainer.html#a0d42d7d515e543e938b0630299820e67">   95</a></span>   <span class="keywordtype">size_t</span> <a class="code" href="classFileManager_1_1UniqueFileContainer.html#a0d42d7d515e543e938b0630299820e67">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> UniqueFiles.size(); }</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="classFileManager_1_1UniqueFileContainer.html#a69db0f3a24a58f2055c6769a0be816af">   97</a></span>   <span class="keywordtype">void</span> <a class="code" href="classFileManager_1_1UniqueFileContainer.html#a69db0f3a24a58f2055c6769a0be816af">erase</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> *Entry) { UniqueFiles.erase(*Entry); }</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">  100</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">// Common logic.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#aeff88e73d09d2d41f8714ef6676d6982">  104</a></span> <a class="code" href="classclang_1_1FileManager.html#aeff88e73d09d2d41f8714ef6676d6982">FileManager::FileManager</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a> &FSO)</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   : FileSystemOpts(FSO),</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>     UniqueRealDirs(*new <a class="code" href="classFileManager_1_1UniqueDirContainer.html">UniqueDirContainer</a>()),</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     UniqueRealFiles(*new <a class="code" href="classFileManager_1_1UniqueFileContainer.html">UniqueFileContainer</a>()),</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     SeenDirEntries(64), SeenFileEntries(64), NextFileUID(0) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   NumDirLookups = NumFileLookups = 0;</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   NumDirCacheMisses = NumFileCacheMisses = 0;</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> </div>
+<div class="line"><a name="l00113"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#abaed33b5b0c13b8a597db9335a1aacfa">  113</a></span> <a class="code" href="classclang_1_1FileManager.html#abaed33b5b0c13b8a597db9335a1aacfa">FileManager::~FileManager</a>() {</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>   <span class="keyword">delete</span> &UniqueRealDirs;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="keyword">delete</span> &UniqueRealFiles;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = VirtualFileEntries.size(); i != e; ++i)</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keyword">delete</span> VirtualFileEntries[i];</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = VirtualDirectoryEntries.size(); i != e; ++i)</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     <span class="keyword">delete</span> VirtualDirectoryEntries[i];</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> </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#af8e113d74ab7d26928c9d2bf46e4a4da">  122</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#af8e113d74ab7d26928c9d2bf46e4a4da" title="Installs the provided FileSystemStatCache object within the FileManager.">FileManager::addStatCache</a>(<a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *statCache,</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>                                <span class="keywordtype">bool</span> AtBeginning) {</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   assert(statCache && <span class="stringliteral">"No stat cache provided?"</span>);</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keywordflow">if</span> (AtBeginning || StatCache.get() == 0) {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     statCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#a4605a871937813fa38a6b7806565c06e" title="Sets the next stat call cache in the chain of stat caches. Takes ownership of the given stat cache...">setNextStatCache</a>(StatCache.take());</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     StatCache.reset(statCache);</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>     <span class="keywordflow">return</span>;</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>   <a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *LastCache = StatCache.get();</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">while</span> (LastCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#aad32589678bdaf5431f7e11630291044" title="Retrieve the next stat call cache in the chain.">getNextStatCache</a>())</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     LastCache = LastCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#aad32589678bdaf5431f7e11630291044" title="Retrieve the next stat call cache in the chain.">getNextStatCache</a>();</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>   LastCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#a4605a871937813fa38a6b7806565c06e" title="Sets the next stat call cache in the chain of stat caches. Takes ownership of the given stat cache...">setNextStatCache</a>(statCache);</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> </div>
+<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#ac5edefee07486e47e008e79f52541e36">  138</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#ac5edefee07486e47e008e79f52541e36" title="Removes the specified FileSystemStatCache object from the manager.">FileManager::removeStatCache</a>(<a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *statCache) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordflow">if</span> (!statCache)</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>   </div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>   <span class="keywordflow">if</span> (StatCache.get() == statCache) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="comment">// This is the first stat cache.</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     StatCache.reset(StatCache->takeNextStatCache());</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="keywordflow">return</span>;</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>   </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="comment">// Find the stat cache in the list.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *PrevCache = StatCache.get();</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>   <span class="keywordflow">while</span> (PrevCache && PrevCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#aad32589678bdaf5431f7e11630291044" title="Retrieve the next stat call cache in the chain.">getNextStatCache</a>() != statCache)</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     PrevCache = PrevCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#aad32589678bdaf5431f7e11630291044" title="Retrieve the next stat call cache in the chain.">getNextStatCache</a>();</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   assert(PrevCache && <span class="stringliteral">"Stat cache not found for removal"</span>);</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   PrevCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#a4605a871937813fa38a6b7806565c06e" title="Sets the next stat call cache in the chain of stat caches. Takes ownership of the given stat cache...">setNextStatCache</a>(statCache-><a class="code" href="classclang_1_1FileSystemStatCache.html#aad32589678bdaf5431f7e11630291044" title="Retrieve the next stat call cache in the chain.">getNextStatCache</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> </div>
+<div class="line"><a name="l00157"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#ab4389acb5760f2722c3dc2a7bbc1655a">  157</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#ab4389acb5760f2722c3dc2a7bbc1655a" title="Removes all FileSystemStatCache objects from the manager.">FileManager::clearStatCaches</a>() {</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>   StatCache.reset(0);</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> }</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment"></span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">/// \brief Retrieve the directory that the given file name resides in.</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">/// Filename can point to either a real file or a virtual file.</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="code" href="FileManager_8cpp.html#a81977f99a5cddefe81f86bbd21745604">  163</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *<a class="code" href="FileManager_8cpp.html#a81977f99a5cddefe81f86bbd21745604" title="Retrieve the directory that the given file name resides in. Filename can point to either a real file ...">getDirectoryFromFile</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="l00164"></a><span class="lineno">  164</span>                                                   StringRef Filename,</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>                                                   <span class="keywordtype">bool</span> CacheFailure) {</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   <span class="keywordflow">if</span> (Filename.empty())</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordflow">if</span> (llvm::sys::path::is_separator(Filename[Filename.size() - 1]))</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>     <span class="keywordflow">return</span> <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>;  <span class="comment">// If Filename is a directory.</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> </div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   StringRef DirName = llvm::sys::path::parent_path(Filename);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="comment">// Use the current directory if file has no path component.</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>   <span class="keywordflow">if</span> (DirName.empty())</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     DirName = <span class="stringliteral">"."</span>;</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> FileMgr.<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(DirName, CacheFailure);</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> <span class="comment"></span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">/// Add all ancestors of the given path (pointing to either a file or</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">/// a directory) as virtual directories.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment"></span><span class="keywordtype">void</span> FileManager::addAncestorsAsVirtualDirs(StringRef Path) {</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   StringRef DirName = llvm::sys::path::parent_path(Path);</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">if</span> (DirName.empty())</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>   llvm::StringMapEntry<DirectoryEntry *> &NamedDirEnt =</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>     SeenDirEntries.GetOrCreateValue(DirName);</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">// When caching a virtual directory, we always cache its ancestors</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>   <span class="comment">// at the same time.  Therefore, if DirName is already in the cache,</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>   <span class="comment">// we don't need to recurse as its ancestors must also already be in</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   <span class="comment">// the cache.</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>   <span class="keywordflow">if</span> (NamedDirEnt.getValue())</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>   <span class="comment">// Add the virtual directory to the cache.</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>   <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *UDE = <span class="keyword">new</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a>;</div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>   UDE->Name = NamedDirEnt.getKeyData();</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   NamedDirEnt.setValue(UDE);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>   VirtualDirectoryEntries.push_back(UDE);</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>   <span class="comment">// Recursively add the other ancestors.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   addAncestorsAsVirtualDirs(DirName);</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> }</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc">  207</a></span> <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">FileManager::getDirectory</a>(StringRef DirName,</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>                                                 <span class="keywordtype">bool</span> CacheFailure) {</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="comment">// stat doesn't like trailing separators except for root directory.</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   <span class="comment">// At least, on Win32 MSVCRT, stat() cannot strip trailing '/'.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>   <span class="comment">// (though it can strip '\\')</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>   <span class="keywordflow">if</span> (DirName.size() > 1 &&</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>       DirName != llvm::sys::path::root_path(DirName) &&</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>       llvm::sys::path::is_separator(DirName.back()))</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>     DirName = DirName.substr(0, DirName.size()-1);</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="preprocessor">#ifdef LLVM_ON_WIN32</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="preprocessor"></span>  <span class="comment">// Fixing a problem with "clang C:test.c" on Windows.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>   <span class="comment">// Stat("C:") does not recognize "C:" as a valid directory</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   std::string DirNameStr;</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>   <span class="keywordflow">if</span> (DirName.size() > 1 && DirName.back() == <span class="charliteral">':'</span> &&</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span>       DirName.equals_lower(llvm::sys::path::root_name(DirName))) {</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>     DirNameStr = DirName.str() + <span class="charliteral">'.'</span>;</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>     DirName = DirNameStr;</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   }</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span>   ++NumDirLookups;</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   llvm::StringMapEntry<DirectoryEntry *> &NamedDirEnt =</div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>     SeenDirEntries.GetOrCreateValue(DirName);</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>   <span class="comment">// See if there was already an entry in the map.  Note that the map</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>   <span class="comment">// contains both virtual and real directories.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>   <span class="keywordflow">if</span> (NamedDirEnt.getValue())</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>     <span class="keywordflow">return</span> NamedDirEnt.getValue() == <a class="code" href="FileManager_8cpp.html#ad55e3e3dd490f8bd481f2226577812ab">NON_EXISTENT_DIR</a></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>               ? 0 : NamedDirEnt.getValue();</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   ++NumDirCacheMisses;</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="comment">// By default, initialize it to invalid.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>   NamedDirEnt.setValue(<a class="code" href="FileManager_8cpp.html#ad55e3e3dd490f8bd481f2226577812ab">NON_EXISTENT_DIR</a>);</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> </div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   <span class="comment">// Get the null-terminated directory name as stored as the key of the</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   <span class="comment">// SeenDirEntries map.</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *InterndDirName = NamedDirEnt.getKeyData();</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">// Check to see if the directory exists.</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>   <a class="code" href="structclang_1_1FileData.html">FileData</a> Data;</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>   <span class="keywordflow">if</span> (getStatValue(InterndDirName, Data, <span class="keyword">false</span>, 0 <span class="comment">/*directory lookup*/</span>)) {</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>     <span class="comment">// There's no real directory at the given path.</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>     <span class="keywordflow">if</span> (!CacheFailure)</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>       SeenDirEntries.erase(DirName);</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>     <span class="keywordflow">return</span> 0;</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>   <span class="comment">// It exists.  See if we have already opened a directory with the</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>   <span class="comment">// same inode (this occurs on Unix-like systems when one dir is</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>   <span class="comment">// symlinked to another, for example) or the same path (on</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span>   <span class="comment">// Windows).</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>   <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> &UDE =</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>       UniqueRealDirs.<a class="code" href="classFileManager_1_1UniqueDirContainer.html#ad7967dfd33e3d281cef784721d82e76d">getDirectory</a>(Data.<a class="code" href="structclang_1_1FileData.html#a6f2f7531dfbb6c663815b784701cfc18">UniqueID</a>);</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>   NamedDirEnt.setValue(&UDE);</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordflow">if</span> (!UDE.<a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>()) {</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="comment">// We don't have this directory yet, add it.  We use the string</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>     <span class="comment">// key from the SeenDirEntries map as the string.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>     UDE.Name  = InterndDirName;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>   }</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> </div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>   <span class="keywordflow">return</span> &UDE;</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> }</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> </div>
+<div class="line"><a name="l00272"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77">  272</a></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> *<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">FileManager::getFile</a>(StringRef Filename, <span class="keywordtype">bool</span> openFile,</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>                                       <span class="keywordtype">bool</span> CacheFailure) {</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>   ++NumFileLookups;</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="comment">// See if there is already an entry in the map.</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>   llvm::StringMapEntry<FileEntry *> &NamedFileEnt =</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>     SeenFileEntries.GetOrCreateValue(Filename);</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> </div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>   <span class="comment">// See if there is already an entry in the map.</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>   <span class="keywordflow">if</span> (NamedFileEnt.getValue())</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>     <span class="keywordflow">return</span> NamedFileEnt.getValue() == <a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">NON_EXISTENT_FILE</a></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>                  ? 0 : NamedFileEnt.getValue();</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>   ++NumFileCacheMisses;</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> </div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>   <span class="comment">// By default, initialize it to invalid.</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>   NamedFileEnt.setValue(<a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">NON_EXISTENT_FILE</a>);</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="comment">// Get the null-terminated file name as stored as the key of the</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>   <span class="comment">// SeenFileEntries map.</span></div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *InterndFileName = NamedFileEnt.getKeyData();</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">// Look up the directory for the file.  When looking up something like</span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>   <span class="comment">// sys/foo.h we'll discover all of the search directories that have a 'sys'</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>   <span class="comment">// subdirectory.  This will let us avoid having to waste time on known-to-fail</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>   <span class="comment">// searches when we go to find sys/bar.h, because all the search directories</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>   <span class="comment">// without a 'sys' subdir will get a cached failure result.</span></div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *DirInfo = <a class="code" href="FileManager_8cpp.html#a81977f99a5cddefe81f86bbd21745604" title="Retrieve the directory that the given file name resides in. Filename can point to either a real file ...">getDirectoryFromFile</a>(*<span class="keyword">this</span>, Filename,</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>                                                        CacheFailure);</div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>   <span class="keywordflow">if</span> (DirInfo == 0) {  <span class="comment">// Directory doesn't exist, file can't exist.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     <span class="keywordflow">if</span> (!CacheFailure)</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>       SeenFileEntries.erase(Filename);</div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span>     </div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span>     <span class="keywordflow">return</span> 0;</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>   </div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span>   <span class="comment">// FIXME: Use the directory info to prune this, before doing the stat syscall.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   <span class="comment">// FIXME: This will reduce the # syscalls.</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> </div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>   <span class="comment">// Nope, there isn't.  Check to see if the file exists.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>   <span class="keywordtype">int</span> FileDescriptor = -1;</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>   <a class="code" href="structclang_1_1FileData.html">FileData</a> Data;</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>   <span class="keywordflow">if</span> (getStatValue(InterndFileName, Data, <span class="keyword">true</span>,</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>                    openFile ? &FileDescriptor : 0)) {</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>     <span class="comment">// There's no real file at the given path.</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span>     <span class="keywordflow">if</span> (!CacheFailure)</div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span>       SeenFileEntries.erase(Filename);</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>     </div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>     <span class="keywordflow">return</span> 0;</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> </div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   <span class="keywordflow">if</span> (FileDescriptor != -1 && !openFile) {</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span>     close(FileDescriptor);</div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>     FileDescriptor = -1;</div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   }</div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>   <span class="comment">// It exists.  See if we have already opened a file with the same inode.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>   <span class="comment">// This occurs when one dir is symlinked to another, for example.</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</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> &UFE =</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       UniqueRealFiles.<a class="code" href="classFileManager_1_1UniqueFileContainer.html#a6a06ae27a817c9b6c923da6b41c5deba">getFile</a>(Data.<a class="code" href="structclang_1_1FileData.html#a6f2f7531dfbb6c663815b784701cfc18">UniqueID</a>, Data.<a class="code" href="structclang_1_1FileData.html#a94fed4950d824ff952ac7ad5445360cc">IsNamedPipe</a>, Data.<a class="code" href="structclang_1_1FileData.html#a55d931c4f6e41897dbbead938a350900">InPCH</a>);</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> </div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>   NamedFileEnt.setValue(&UFE);</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span>   <span class="keywordflow">if</span> (UFE.<a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()) { <span class="comment">// Already have an entry with this inode, return it.</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>     <span class="comment">// If the stat process opened the file, close it to avoid a FD leak.</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>     <span class="keywordflow">if</span> (FileDescriptor != -1)</div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       close(FileDescriptor);</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="keywordflow">return</span> &UFE;</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="comment">// Otherwise, we don't have this directory yet, add it.</span></div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>   <span class="comment">// FIXME: Change the name to be a char* that points back to the</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>   <span class="comment">// 'SeenFileEntries' key.</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>   UFE.Name    = InterndFileName;</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>   UFE.Size = Data.<a class="code" href="structclang_1_1FileData.html#a87a0455abc21dbbd6f7b5a107e3ed357">Size</a>;</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>   UFE.ModTime = Data.<a class="code" href="structclang_1_1FileData.html#ae8fff96b53145306b60317a9d97469db">ModTime</a>;</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>   UFE.Dir     = DirInfo;</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>   UFE.UID     = NextFileUID++;</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>   UFE.FD      = FileDescriptor;</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>   <span class="keywordflow">return</span> &UFE;</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> </div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</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> *</div>
+<div class="line"><a name="l00355"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a7dd8ef9d948ba6281672e34eb8adaa2a">  355</a></span> <a class="code" href="classclang_1_1FileManager.html#a7dd8ef9d948ba6281672e34eb8adaa2a" title="Retrieve a file entry for a "virtual" file that acts as if there were a file with the given name on d...">FileManager::getVirtualFile</a>(StringRef Filename, off_t Size,</div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>                             time_t ModificationTime) {</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>   ++NumFileLookups;</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>   <span class="comment">// See if there is already an entry in the map.</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>   llvm::StringMapEntry<FileEntry *> &NamedFileEnt =</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>     SeenFileEntries.GetOrCreateValue(Filename);</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> </div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>   <span class="comment">// See if there is already an entry in the map.</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span>   <span class="keywordflow">if</span> (NamedFileEnt.getValue() && NamedFileEnt.getValue() != <a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">NON_EXISTENT_FILE</a>)</div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>     <span class="keywordflow">return</span> NamedFileEnt.getValue();</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> </div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>   ++NumFileCacheMisses;</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">// By default, initialize it to invalid.</span></div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   NamedFileEnt.setValue(<a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">NON_EXISTENT_FILE</a>);</div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span> </div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>   addAncestorsAsVirtualDirs(Filename);</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</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> *UFE = 0;</div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span> </div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>   <span class="comment">// Now that all ancestors of Filename are in the cache, the</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>   <span class="comment">// following call is guaranteed to find the DirectoryEntry from the</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   <span class="comment">// cache.</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *DirInfo = <a class="code" href="FileManager_8cpp.html#a81977f99a5cddefe81f86bbd21745604" title="Retrieve the directory that the given file name resides in. Filename can point to either a real file ...">getDirectoryFromFile</a>(*<span class="keyword">this</span>, Filename,</div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>                                                        <span class="comment">/*CacheFailure=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>   assert(DirInfo &&</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>          <span class="stringliteral">"The directory of a virtual file should already be in the cache."</span>);</div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span> </div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   <span class="comment">// Check to see if the file exists. If so, drop the virtual file</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <a class="code" href="structclang_1_1FileData.html">FileData</a> Data;</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *InterndFileName = NamedFileEnt.getKeyData();</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   <span class="keywordflow">if</span> (getStatValue(InterndFileName, Data, <span class="keyword">true</span>, 0) == 0) {</div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>     Data.<a class="code" href="structclang_1_1FileData.html#a87a0455abc21dbbd6f7b5a107e3ed357">Size</a> = Size;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span>     Data.<a class="code" href="structclang_1_1FileData.html#ae8fff96b53145306b60317a9d97469db">ModTime</a> = ModificationTime;</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span>     UFE = &UniqueRealFiles.<a class="code" href="classFileManager_1_1UniqueFileContainer.html#a6a06ae27a817c9b6c923da6b41c5deba">getFile</a>(Data.<a class="code" href="structclang_1_1FileData.html#a6f2f7531dfbb6c663815b784701cfc18">UniqueID</a>, Data.<a class="code" href="structclang_1_1FileData.html#a94fed4950d824ff952ac7ad5445360cc">IsNamedPipe</a>, Data.<a class="code" href="structclang_1_1FileData.html#a55d931c4f6e41897dbbead938a350900">InPCH</a>);</div>
+<div class="line"><a name="l00390"></a><span class="lineno">  390</span> </div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>     NamedFileEnt.setValue(UFE);</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>     <span class="comment">// If we had already opened this file, close it now so we don't</span></div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>     <span class="comment">// leak the descriptor. We're not going to use the file</span></div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>     <span class="comment">// descriptor anyway, since this is a virtual file.</span></div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>     <span class="keywordflow">if</span> (UFE->FD != -1) {</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>       close(UFE->FD);</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span>       UFE->FD = -1;</div>
+<div class="line"><a name="l00399"></a><span class="lineno">  399</span>     }</div>
+<div class="line"><a name="l00400"></a><span class="lineno">  400</span> </div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>     <span class="comment">// If we already have an entry with this inode, return it.</span></div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="keywordflow">if</span> (UFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>())</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>       <span class="keywordflow">return</span> UFE;</div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   }</div>
+<div class="line"><a name="l00405"></a><span class="lineno">  405</span> </div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>   <span class="keywordflow">if</span> (!UFE) {</div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>     UFE = <span class="keyword">new</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>();</div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>     VirtualFileEntries.push_back(UFE);</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>     NamedFileEnt.setValue(UFE);</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>   UFE->Name    = InterndFileName;</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>   UFE->Size    = Size;</div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   UFE->ModTime = ModificationTime;</div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   UFE->Dir     = DirInfo;</div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>   UFE->UID     = NextFileUID++;</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   UFE->FD      = -1;</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>   <span class="keywordflow">return</span> UFE;</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span> }</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span> </div>
+<div class="line"><a name="l00421"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f">  421</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f" title="If path is not absolute and FileSystemOptions set the working directory, the path is modified to be r...">FileManager::FixupRelativePath</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<char></a> &path)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>   StringRef pathRef(path.data(), path.size());</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span> </div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>   <span class="keywordflow">if</span> (FileSystemOpts.<a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce" title="If set, paths are resolved as if the working directory was set to the value of WorkingDir.">WorkingDir</a>.empty() </div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       || llvm::sys::path::is_absolute(pathRef))</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span> </div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> NewPath(FileSystemOpts.<a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce" title="If set, paths are resolved as if the working directory was set to the value of WorkingDir.">WorkingDir</a>);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span>   llvm::sys::path::append(NewPath, pathRef);</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>   path = NewPath;</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span> }</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span> </div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span> llvm::MemoryBuffer *<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.">FileManager::</a></div>
+<div class="line"><a name="l00434"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a4aedd4bd4b3dc2a8df7f3dba692464a8">  434</a></span> <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>(<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, std::string *ErrorStr,</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>                  <span class="keywordtype">bool</span> isVolatile) {</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<llvm::MemoryBuffer></a> Result;</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   llvm::error_code ec;</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span> </div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span>   uint64_t FileSize = Entry-><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>();</div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="comment">// If there's a high enough chance that the file have changed since we</span></div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>   <span class="comment">// got its size, force a stat before opening it.</span></div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span>   <span class="keywordflow">if</span> (isVolatile)</div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>     FileSize = -1;</div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span> </div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Filename = Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>();</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>   <span class="comment">// If the file is already open, use the open file descriptor.</span></div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>   <span class="keywordflow">if</span> (Entry->FD != -1) {</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span>     ec = llvm::MemoryBuffer::getOpenFile(Entry->FD, Filename, Result, FileSize);</div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>     <span class="keywordflow">if</span> (ErrorStr)</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>       *ErrorStr = ec.message();</div>
+<div class="line"><a name="l00451"></a><span class="lineno">  451</span> </div>
+<div class="line"><a name="l00452"></a><span class="lineno">  452</span>     close(Entry->FD);</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span>     Entry->FD = -1;</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>     <span class="keywordflow">return</span> Result.take();</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>   }</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> </div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>   <span class="comment">// Otherwise, open the file.</span></div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span> </div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   <span class="keywordflow">if</span> (FileSystemOpts.<a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce" title="If set, paths are resolved as if the working directory was set to the value of WorkingDir.">WorkingDir</a>.empty()) {</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>     ec = llvm::MemoryBuffer::getFile(Filename, Result, FileSize);</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>     <span class="keywordflow">if</span> (ec && ErrorStr)</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span>       *ErrorStr = ec.message();</div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>     <span class="keywordflow">return</span> Result.take();</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   }</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span> </div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> FilePath(Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>   <a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f" title="If path is not absolute and FileSystemOptions set the working directory, the path is modified to be r...">FixupRelativePath</a>(FilePath);</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>   ec = llvm::MemoryBuffer::getFile(FilePath.str(), Result, FileSize);</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>   <span class="keywordflow">if</span> (ec && ErrorStr)</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span>     *ErrorStr = ec.message();</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span>   <span class="keywordflow">return</span> Result.take();</div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> }</div>
+<div class="line"><a name="l00473"></a><span class="lineno">  473</span> </div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</span> llvm::MemoryBuffer *<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.">FileManager::</a></div>
+<div class="line"><a name="l00475"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a836393298c4ca05b067614e31a96d34b">  475</a></span> <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>(StringRef Filename, std::string *ErrorStr) {</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<llvm::MemoryBuffer></a> Result;</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   llvm::error_code ec;</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   <span class="keywordflow">if</span> (FileSystemOpts.<a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce" title="If set, paths are resolved as if the working directory was set to the value of WorkingDir.">WorkingDir</a>.empty()) {</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     ec = llvm::MemoryBuffer::getFile(Filename, Result);</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>     <span class="keywordflow">if</span> (ec && ErrorStr)</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>       *ErrorStr = ec.message();</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span>     <span class="keywordflow">return</span> Result.take();</div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   }</div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span> </div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> FilePath(Filename);</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>   <a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f" title="If path is not absolute and FileSystemOptions set the working directory, the path is modified to be r...">FixupRelativePath</a>(FilePath);</div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span>   ec = llvm::MemoryBuffer::getFile(FilePath.c_str(), Result);</div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>   <span class="keywordflow">if</span> (ec && ErrorStr)</div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     *ErrorStr = ec.message();</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>   <span class="keywordflow">return</span> Result.take();</div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span> }</div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span> <span class="comment"></span></div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span> <span class="comment">/// getStatValue - Get the 'stat' information for the specified path,</span></div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> <span class="comment">/// using the cache to accelerate it if possible.  This returns true</span></div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span> <span class="comment">/// if the path points to a virtual file or does not exist, or returns</span></div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span> <span class="comment">/// false if it's an existent real file.  If FileDescriptor is NULL,</span></div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span> <span class="comment">/// do directory look-up instead of file look-up.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span> <span class="comment"></span><span class="keywordtype">bool</span> FileManager::getStatValue(<span class="keyword">const</span> <span class="keywordtype">char</span> *Path, <a class="code" href="structclang_1_1FileData.html">FileData</a> &Data, <span class="keywordtype">bool</span> isFile,</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>                                <span class="keywordtype">int</span> *FileDescriptor) {</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>   <span class="comment">// FIXME: FileSystemOpts shouldn't be passed in here, all paths should be</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>   <span class="comment">// absolute!</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>   <span class="keywordflow">if</span> (FileSystemOpts.<a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce" title="If set, paths are resolved as if the working directory was set to the value of WorkingDir.">WorkingDir</a>.empty())</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileSystemStatCache.html#adfa78f647bce6f620e2c980e99e9d087" title="Get the 'stat' information for the specified path, using the cache to accelerate it if possible...">FileSystemStatCache::get</a>(Path, Data, isFile, FileDescriptor,</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>                                     StatCache.get());</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span> </div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> FilePath(Path);</div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>   <a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f" title="If path is not absolute and FileSystemOptions set the working directory, the path is modified to be r...">FixupRelativePath</a>(FilePath);</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span> </div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1FileSystemStatCache.html#adfa78f647bce6f620e2c980e99e9d087" title="Get the 'stat' information for the specified path, using the cache to accelerate it if possible...">FileSystemStatCache::get</a>(FilePath.c_str(), Data, isFile,</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>                                   FileDescriptor, StatCache.get());</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span> }</div>
+<div class="line"><a name="l00512"></a><span class="lineno">  512</span> </div>
+<div class="line"><a name="l00513"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#aca8ca32c09282d5160f973f865f1334c">  513</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileManager.html#aca8ca32c09282d5160f973f865f1334c" title="Get the 'stat' information for the given Path.">FileManager::getNoncachedStatValue</a>(StringRef Path,</div>
+<div class="line"><a name="l00514"></a><span class="lineno">  514</span>                                         llvm::sys::fs::file_status &Result) {</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> FilePath(Path);</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>   <a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f" title="If path is not absolute and FileSystemOptions set the working directory, the path is modified to be r...">FixupRelativePath</a>(FilePath);</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span> </div>
+<div class="line"><a name="l00518"></a><span class="lineno">  518</span>   <span class="keywordflow">return</span> llvm::sys::fs::status(FilePath.c_str(), Result);</div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span> }</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span> </div>
+<div class="line"><a name="l00521"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a7763d50849cb30bd3b7bcbd9da548336">  521</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a7763d50849cb30bd3b7bcbd9da548336" title="Remove the real file Entry from the cache.">FileManager::invalidateCache</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> *Entry) {</div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>   assert(Entry && <span class="stringliteral">"Cannot invalidate a NULL FileEntry"</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>   SeenFileEntries.erase(Entry-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</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">// FileEntry invalidation should not block future optimizations in the file</span></div>
+<div class="line"><a name="l00527"></a><span class="lineno">  527</span>   <span class="comment">// caches. Possible alternatives are cache truncation (invalidate last N) or</span></div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>   <span class="comment">// invalidation of the whole cache.</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>   UniqueRealFiles.<a class="code" href="classFileManager_1_1UniqueFileContainer.html#a69db0f3a24a58f2055c6769a0be816af">erase</a>(Entry);</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span> }</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span> </div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> </div>
+<div class="line"><a name="l00533"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#afc5325d1ac484f958914e4cc1259b069">  533</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#afc5325d1ac484f958914e4cc1259b069" title="Produce an array mapping from the unique IDs assigned to each file to the corresponding FileEntry poi...">FileManager::GetUniqueIDMapping</a>(</div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>                    <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const FileEntry *></a> &UIDToFiles)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>   UIDToFiles.clear();</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   UIDToFiles.resize(NextFileUID);</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">// Map file entries</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   <span class="keywordflow">for</span> (llvm::StringMap<FileEntry*, llvm::BumpPtrAllocator>::const_iterator</div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>          FE = SeenFileEntries.begin(), FEEnd = SeenFileEntries.end();</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>        FE != FEEnd; ++FE)</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</span>     <span class="keywordflow">if</span> (FE->getValue() && FE->getValue() != <a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">NON_EXISTENT_FILE</a>)</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>       UIDToFiles[FE->getValue()->getUID()] = FE->getValue();</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="comment">// Map virtual file entries</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<FileEntry *>::const_iterator</a></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>          VFE = VirtualFileEntries.begin(), VFEEnd = VirtualFileEntries.end();</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>        VFE != VFEEnd; ++VFE)</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>     <span class="keywordflow">if</span> (*VFE && *VFE != <a class="code" href="FileManager_8cpp.html#a75bef604e11b789646ef2df329e95dda">NON_EXISTENT_FILE</a>)</div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>       UIDToFiles[(*VFE)->getUID()] = *VFE;</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span> }</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span> </div>
+<div class="line"><a name="l00553"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a7ab59bd4c42aa4b1aef20f9d237d3e24">  553</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a7ab59bd4c42aa4b1aef20f9d237d3e24" title="Modifies the size and modification time of a previously created FileEntry. Use with caution...">FileManager::modifyFileEntry</a>(<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="l00554"></a><span class="lineno">  554</span>                                   off_t Size, time_t ModificationTime) {</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>   File->Size = Size;</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   File->ModTime = ModificationTime;</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> </div>
+<div class="line"><a name="l00559"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#aefc9a0b6440701f04541eb6e74447bb2">  559</a></span> StringRef <a class="code" href="classclang_1_1FileManager.html#aefc9a0b6440701f04541eb6e74447bb2" title="Retrieve the canonical name for a given directory.">FileManager::getCanonicalName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *Dir) {</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>   <span class="comment">// FIXME: use llvm::sys::fs::canonical() when it gets implemented</span></div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span> <span class="preprocessor">#ifdef LLVM_ON_UNIX</span></div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span> <span class="preprocessor"></span>  llvm::DenseMap<const DirectoryEntry *, llvm::StringRef>::iterator Known</div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>     = CanonicalDirNames.find(Dir);</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   <span class="keywordflow">if</span> (Known != CanonicalDirNames.end())</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>     <span class="keywordflow">return</span> Known->second;</div>
+<div class="line"><a name="l00566"></a><span class="lineno">  566</span> </div>
+<div class="line"><a name="l00567"></a><span class="lineno">  567</span>   StringRef CanonicalName(Dir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>());</div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   <span class="keywordtype">char</span> CanonicalNameBuf[PATH_MAX];</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   <span class="keywordflow">if</span> (realpath(Dir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>(), CanonicalNameBuf)) {</div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>     <span class="keywordtype">unsigned</span> Len = strlen(CanonicalNameBuf);</div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>     <span class="keywordtype">char</span> *Mem = <span class="keyword">static_cast<</span><span class="keywordtype">char</span> *<span class="keyword">></span>(CanonicalNameStorage.Allocate(Len, 1));</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>     memcpy(Mem, CanonicalNameBuf, Len);</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>     CanonicalName = StringRef(Mem, Len);</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>   CanonicalDirNames.insert(std::make_pair(Dir, CanonicalName));</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>   <span class="keywordflow">return</span> CanonicalName;</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span> <span class="preprocessor"></span>  <span class="keywordflow">return</span> StringRef(Dir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>());</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span> <span class="preprocessor"></span>}</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span> </div>
+<div class="line"><a name="l00583"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#a2f15237be15cb23e7955086020d54687">  583</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a2f15237be15cb23e7955086020d54687">FileManager::PrintStats</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>   llvm::errs() << <span class="stringliteral">"\n*** File Manager Stats:\n"</span>;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span>   llvm::errs() << UniqueRealFiles.<a class="code" href="classFileManager_1_1UniqueFileContainer.html#a0d42d7d515e543e938b0630299820e67">size</a>() << <span class="stringliteral">" real files found, "</span></div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>                << UniqueRealDirs.<a class="code" href="classFileManager_1_1UniqueDirContainer.html#a98a5d4c14e609e615d1d876dbc78aea4">size</a>() << <span class="stringliteral">" real dirs found.\n"</span>;</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>   llvm::errs() << VirtualFileEntries.size() << <span class="stringliteral">" virtual files found, "</span></div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>                << VirtualDirectoryEntries.size() << <span class="stringliteral">" virtual dirs found.\n"</span>;</div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>   llvm::errs() << NumDirLookups << <span class="stringliteral">" dir lookups, "</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>                << NumDirCacheMisses << <span class="stringliteral">" dir cache misses.\n"</span>;</div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>   llvm::errs() << NumFileLookups << <span class="stringliteral">" file lookups, "</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>                << NumFileCacheMisses << <span class="stringliteral">" file cache misses.\n"</span>;</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span> </div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>   <span class="comment">//llvm::errs() << PagesMapped << BytesOfPagesMapped << FSLookups;</span></div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileManager_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,181 @@
+<!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: FileManager.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">FileManager.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileManager_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/FileManager.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/FileManager.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  FileManager.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemStatCache.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/Support/Path.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.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/include/llvm/Support/Casting.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/include/llvm/Support/type_traits.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/DataTypes.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/ADT/None.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/ADT/DenseMap.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/DenseMapInfo.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/PointerLikeTypeTraits.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/Support/AlignOf.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/Compiler.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/include/llvm/Config/llvm-config.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/MathExtras.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/include/llvm/Support/SwapByteOrder.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/include/llvm/ADT/IntrusiveRefCntPtr.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/include/llvm/ADT/OwningPtr.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/SmallVector.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/StringMap.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/ADT/StringRef.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/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/FileSystem.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/SmallString.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/Twine.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/Support/ErrorHandling.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/Support/TimeValue.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/Support/system_error.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/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemStatCache.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/MemoryBuffer.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/Support/CBindingWrapping.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-c/Core.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/Path.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/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileManager_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileManager_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,360 @@
+<!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: FileManager.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">FileManager.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileManager_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">//===--- FileManager.h - File System Probing and Caching --------*- 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::FileManager interface and associated types.</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_FILEMANAGER_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_FILEMANAGER_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="FileSystemOptions_8h.html" title="Defines the clang::FileSystemOptions interface.">clang/Basic/FileSystemOptions.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</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="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/ADT/DenseMap.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "llvm/ADT/IntrusiveRefCntPtr.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/ADT/OwningPtr.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/ADT/SmallVector.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/StringMap.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/ADT/StringRef.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/Support/Allocator.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">// FIXME: Enhance libsystem to support inode and other fields in stat.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include <sys/types.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="preprocessor">#ifdef _MSC_VER</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor"></span><span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">short</span> mode_t;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">struct </span>stat;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="keyword">class </span>MemoryBuffer;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> }</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="keyword">class </span>FileManager;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="keyword">class </span>FileSystemStatCache;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment"></span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">/// \brief Cached information about one directory (either on disk or in</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">/// the virtual file system).</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classclang_1_1DirectoryEntry.html">   47</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> {</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;   <span class="comment">// Name of the directory.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classclang_1_1DirectoryEntry.html#a8480b1a0f54b1d000032cac98fa83b3f">   49</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classclang_1_1DirectoryEntry.html#ac55b8c7e5bec8fcb4967ee0717ff0fa0">   51</a></span>   <a class="code" href="classclang_1_1DirectoryEntry.html#ac55b8c7e5bec8fcb4967ee0717ff0fa0">DirectoryEntry</a>() : Name(0) {}</div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">   52</a></span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Name; }</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> <span class="comment"></span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// \brief Cached information about one file (either on disk</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/// or in the virtual file system).</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">/// If the 'FD' member is valid, then this FileEntry has an open file</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">/// descriptor for the file.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html">   60</a></span> <span class="comment"></span><span class="keyword">class </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> {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *Name;           <span class="comment">// Name of the file.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   off_t Size;                 <span class="comment">// File size in bytes.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   time_t ModTime;             <span class="comment">// Modification time of file.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *Dir;  <span class="comment">// Directory file lives in.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordtype">unsigned</span> UID;               <span class="comment">// A unique (small) ID for the file.</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   llvm::sys::fs::UniqueID UniqueID;</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>   <span class="keywordtype">bool</span> IsNamedPipe;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">bool</span> InPCH;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment"></span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment">  /// FD - The file descriptor for the file entry if it is opened and owned</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">  /// by the FileEntry.  If not, this is set to -1.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment"></span>  <span class="keyword">mutable</span> <span class="keywordtype">int</span> FD;</div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a8480b1a0f54b1d000032cac98fa83b3f">   73</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a>;</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="keyword">public</span>:</div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a83946b99a1190efd79c678ed0d4773d8">   76</a></span>   <a class="code" href="classclang_1_1FileEntry.html#a983cf98a43f0724ac946bb4d1e8c845f">FileEntry</a>(llvm::sys::fs::UniqueID UniqueID, <span class="keywordtype">bool</span> IsNamedPipe, <span class="keywordtype">bool</span> InPCH)</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>       : Name(0), UniqueID(UniqueID), IsNamedPipe(IsNamedPipe), InPCH(InPCH),</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>         FD(-1) {}</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>   <span class="comment">// Add a default constructor for use with llvm::StringMap</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a983cf98a43f0724ac946bb4d1e8c845f">   80</a></span>   <a class="code" href="classclang_1_1FileEntry.html#a983cf98a43f0724ac946bb4d1e8c845f">FileEntry</a>()</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       : Name(0), UniqueID(0, 0), IsNamedPipe(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), InPCH(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), FD(-1) {}</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> </div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#af781955c95163c06cde584de6d276bd9">   83</a></span>   <a class="code" href="classclang_1_1FileEntry.html#af781955c95163c06cde584de6d276bd9">FileEntry</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> &FE) {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     memcpy(<span class="keyword">this</span>, &FE, <span class="keyword">sizeof</span>(FE));</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     assert(FD == -1 && <span class="stringliteral">"Cannot copy a file-owning FileEntry"</span>);</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>   }</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> </div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a21f07acaf17fc608d375f5156dc83362">   88</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileEntry.html#a21f07acaf17fc608d375f5156dc83362">operator=</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> &FE) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     memcpy(<span class="keyword">this</span>, &FE, <span class="keyword">sizeof</span>(FE));</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     assert(FD == -1 && <span class="stringliteral">"Cannot assign a file-owning FileEntry"</span>);</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   }</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> </div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <a class="code" href="classclang_1_1FileEntry.html#ad27f7e85c95beffd56608a64ddbd7f39">~FileEntry</a>();</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> </div>
+<div class="line"><a name="l00095"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">   95</a></span>   <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Name; }</div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">   96</a></span>   off_t <a class="code" href="classclang_1_1FileEntry.html#aee560da94e38d95f08dfa9779acc9367">getSize</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Size; }</div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a8d7ba7530ef16d8be66c5bc5b7c161e5">   97</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1FileEntry.html#a8d7ba7530ef16d8be66c5bc5b7c161e5">getUID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> UID; }</div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a79c569c7d0b21d02bbf06bd805bbcf73">   98</a></span>   <span class="keyword">const</span> llvm::sys::fs::UniqueID &<a class="code" href="classclang_1_1FileEntry.html#a79c569c7d0b21d02bbf06bd805bbcf73">getUniqueID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> UniqueID; }</div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a1d9c07da045c7015bbe75f18412bc968">   99</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileEntry.html#a1d9c07da045c7015bbe75f18412bc968">isInPCH</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> InPCH; }</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a2df68d04c7f85abdcf5075db7778e033">  100</a></span>   time_t <a class="code" href="classclang_1_1FileEntry.html#a2df68d04c7f85abdcf5075db7778e033">getModificationTime</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ModTime; }</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 the directory the file lives in.</span></div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6">  103</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *<a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Dir; }</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#ac685a785a2da0097404596069daaa265">  105</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileEntry.html#ac685a785a2da0097404596069daaa265">operator<</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> &RHS)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> UniqueID < RHS.UniqueID; }</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> <span class="comment"></span></div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> <span class="comment">  /// \brief Check whether the file is a named pipe (and thus can't be opened by</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">  /// the native FileManager methods).</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="classclang_1_1FileEntry.html#a1c5fd51602d0f986f01036a86c79277b">  109</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileEntry.html#a1c5fd51602d0f986f01036a86c79277b" title="Check whether the file is a named pipe (and thus can't be opened by the native FileManager methods)...">isNamedPipe</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> IsNamedPipe; }</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> </div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="keyword">struct </span>FileData;</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">/// \brief Implements support for file system lookup, file system caching,</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment">/// and directory search management.</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">/// This also handles more advanced properties, such as uniquing files based</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">/// on "inode", so that a file with two names (e.g. symlinked) will be treated</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">/// as a single file.</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html">  121</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a> : <span class="keyword">public</span> <a class="code" href="classllvm_1_1RefCountedBase.html">RefCountedBase</a><FileManager> {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a> FileSystemOpts;</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="keyword">class </span><a class="code" href="classFileManager_1_1UniqueDirContainer.html">UniqueDirContainer</a>;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="keyword">class </span><a class="code" href="classFileManager_1_1UniqueFileContainer.html">UniqueFileContainer</a>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment"></span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment">  /// \brief Cache for existing real directories.</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment"></span>  <a class="code" href="classFileManager_1_1UniqueDirContainer.html">UniqueDirContainer</a> &UniqueRealDirs;</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment"></span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">  /// \brief Cache for existing real files.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment"></span>  <a class="code" href="classFileManager_1_1UniqueFileContainer.html">UniqueFileContainer</a> &UniqueRealFiles;</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment"></span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="comment">  /// \brief The virtual directories that we have allocated.</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">  /// For each virtual file (e.g. foo/bar/baz.cpp), we add all of its parent</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">  /// directories (foo/ and foo/bar/) here.</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<DirectoryEntry*, 4></a> VirtualDirectoryEntries;<span class="comment"></span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment">  /// \brief The virtual files that we have allocated.</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<FileEntry*, 4></a> VirtualFileEntries;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment"></span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment">  /// \brief A cache that maps paths to directory entries (either real or</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// virtual) we have looked up</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">  /// The actual Entries for real directories/files are</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment">  /// owned by UniqueRealDirs/UniqueRealFiles above, while the Entries</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> <span class="comment">  /// for virtual directories/files are owned by</span></div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment">  /// VirtualDirectoryEntries/VirtualFileEntries above.</span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment"></span>  llvm::StringMap<DirectoryEntry*, llvm::BumpPtrAllocator> SeenDirEntries;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment"></span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">  /// \brief A cache that maps paths to file entries (either real or</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">  /// virtual) we have looked up.</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">  /// \see SeenDirEntries</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment"></span>  llvm::StringMap<FileEntry*, llvm::BumpPtrAllocator> SeenFileEntries;</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 The canonical names of directories.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment"></span>  llvm::DenseMap<const DirectoryEntry *, llvm::StringRef> CanonicalDirNames;</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">  /// \brief Storage for canonical names that we have computed.</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment"></span>  llvm::BumpPtrAllocator CanonicalNameStorage;</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment"></span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">  /// \brief Each FileEntry we create is assigned a unique ID #.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> NextFileUID;</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">// Statistics.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>   <span class="keywordtype">unsigned</span> NumDirLookups, NumFileLookups;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>   <span class="keywordtype">unsigned</span> NumDirCacheMisses, NumFileCacheMisses;</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   <span class="comment">// Caching.</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<FileSystemStatCache></a> StatCache;</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">bool</span> getStatValue(<span class="keyword">const</span> <span class="keywordtype">char</span> *Path, <a class="code" href="structclang_1_1FileData.html">FileData</a> &Data, <span class="keywordtype">bool</span> isFile,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                     <span class="keywordtype">int</span> *FileDescriptor);</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment"></span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">  /// Add all ancestors of the given path (pointing to either a file</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">  /// or a directory) as virtual directories.</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment"></span>  <span class="keywordtype">void</span> addAncestorsAsVirtualDirs(StringRef Path);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <a class="code" href="classclang_1_1FileManager.html#aeff88e73d09d2d41f8714ef6676d6982">FileManager</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a> &FileSystemOpts);</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>   <a class="code" href="classclang_1_1FileManager.html#abaed33b5b0c13b8a597db9335a1aacfa">~FileManager</a>();</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment"></span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  /// \brief Installs the provided FileSystemStatCache object within</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// the FileManager.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment">  /// Ownership of this object is transferred to the FileManager.</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> <span class="comment">  /// \param statCache the new stat cache to install. Ownership of this</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment">  /// object is transferred to the FileManager.</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> <span class="comment">  /// \param AtBeginning whether this new stat cache must be installed at the</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment">  /// beginning of the chain of stat caches. Otherwise, it will be added to</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">  /// the end of the chain.</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#af8e113d74ab7d26928c9d2bf46e4a4da" title="Installs the provided FileSystemStatCache object within the FileManager.">addStatCache</a>(<a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *statCache, <span class="keywordtype">bool</span> AtBeginning = <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> <span class="comment"></span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment">  /// \brief Removes the specified FileSystemStatCache object from the manager.</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#ac5edefee07486e47e008e79f52541e36" title="Removes the specified FileSystemStatCache object from the manager.">removeStatCache</a>(<a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *statCache);</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment"></span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment">  /// \brief Removes all FileSystemStatCache objects from the manager.</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#ab4389acb5760f2722c3dc2a7bbc1655a" title="Removes all FileSystemStatCache objects from the manager.">clearStatCaches</a>();</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment"></span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment">  /// \brief Lookup, cache, and verify the specified directory (real or</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">  /// virtual).</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment">  /// This returns NULL if the directory doesn't exist.</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  /// \param CacheFailure If true and the file does not exist, we'll cache</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">  /// the failure to find this file.</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(StringRef DirName,</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>                                      <span class="keywordtype">bool</span> CacheFailure = <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment"></span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// \brief Lookup, cache, and verify the specified file (real or</span></div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> <span class="comment">  /// virtual).</span></div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">  /// This returns NULL if the file doesn't exist.</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment">  /// \param OpenFile if true and the file exists, it will be opened.</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">  /// \param CacheFailure If true and the file does not exist, we'll cache</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">  /// the failure to find this file.</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment"></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> *<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(StringRef Filename, <span class="keywordtype">bool</span> OpenFile = <span class="keyword">false</span>,</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>                            <span class="keywordtype">bool</span> CacheFailure = <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment"></span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">  /// \brief Returns the current file system options</span></div>
+<div class="line"><a name="l00227"></a><span class="lineno"><a class="code" href="classclang_1_1FileManager.html#aab22bc477c1e3363509ac7965d195dbe">  227</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a> &<a class="code" href="classclang_1_1FileManager.html#aab22bc477c1e3363509ac7965d195dbe" title="Returns the current file system options.">getFileSystemOptions</a>() { <span class="keywordflow">return</span> FileSystemOpts; }</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> <span class="comment"></span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  /// \brief Retrieve a file entry for a "virtual" file that acts as</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  /// if there were a file with the given name on disk.</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment">  /// The file itself is not accessed.</span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment"></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> *<a class="code" href="classclang_1_1FileManager.html#a7dd8ef9d948ba6281672e34eb8adaa2a" title="Retrieve a file entry for a "virtual" file that acts as if there were a file with the given name on d...">getVirtualFile</a>(StringRef Filename, off_t Size,</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>                                   time_t ModificationTime);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment"></span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> <span class="comment">  /// \brief Open the specified file as a MemoryBuffer, returning a new</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">  /// MemoryBuffer if successful, otherwise returning null.</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment"></span>  llvm::MemoryBuffer *<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>(<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,</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>                                        std::string *ErrorStr = 0,</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span>                                        <span class="keywordtype">bool</span> isVolatile = <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>   llvm::MemoryBuffer *<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>(StringRef Filename,</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>                                        std::string *ErrorStr = 0);</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment"></span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// \brief Get the 'stat' information for the given \p Path.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">  /// If the path is relative, it will be resolved against the WorkingDir of the</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">  /// FileManager's FileSystemOptions.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileManager.html#aca8ca32c09282d5160f973f865f1334c" title="Get the 'stat' information for the given Path.">getNoncachedStatValue</a>(StringRef Path,</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>                              llvm::sys::fs::file_status &Result);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment"></span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">  /// \brief Remove the real file \p Entry from the cache.</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a7763d50849cb30bd3b7bcbd9da548336" title="Remove the real file Entry from the cache.">invalidateCache</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> *Entry);</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment"></span></div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> <span class="comment">  /// \brief If path is not absolute and FileSystemOptions set the working</span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">  /// directory, the path is modified to be relative to the given</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> <span class="comment">  /// working directory.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a99d47ac9cdd99d2aefaea269522a748f" title="If path is not absolute and FileSystemOptions set the working directory, the path is modified to be r...">FixupRelativePath</a>(<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<char></a> &path) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> <span class="comment"></span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment">  /// \brief Produce an array mapping from the unique IDs assigned to each</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">  /// file to the corresponding FileEntry pointer.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#afc5325d1ac484f958914e4cc1259b069" title="Produce an array mapping from the unique IDs assigned to each file to the corresponding FileEntry poi...">GetUniqueIDMapping</a>(</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>                     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<const FileEntry *></a> &UIDToFiles) <span class="keyword">const</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 Modifies the size and modification time of a previously created</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="comment">  /// FileEntry. Use with caution.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> <span class="comment"></span>  <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a7ab59bd4c42aa4b1aef20f9d237d3e24" title="Modifies the size and modification time of a previously created FileEntry. Use with caution...">modifyFileEntry</a>(<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, off_t Size,</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>                               time_t ModificationTime);</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment"></span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment">  /// \brief Retrieve the canonical name for a given directory.</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="comment">  /// This is a very expensive operation, despite its results being cached,</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment">  /// and should only be used when the physical layout of the file system is</span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="comment">  /// required, which is (almost) never.</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="comment"></span>  StringRef <a class="code" href="classclang_1_1FileManager.html#aefc9a0b6440701f04541eb6e74447bb2" title="Retrieve the canonical name for a given directory.">getCanonicalName</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DirectoryEntry.html" title="Cached information about one directory (either on disk or in the virtual file system).">DirectoryEntry</a> *Dir);</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> </div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1FileManager.html#a2f15237be15cb23e7955086020d54687">PrintStats</a>() <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> };</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> </div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> }  <span class="comment">// end namespace clang</span></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> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileMatchTrie_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,267 @@
+<!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: FileMatchTrie.cpp Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_14ab871e308b37f9042717085145c002.html">Tooling</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileMatchTrie.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileMatchTrie_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">//===--- FileMatchTrie.cpp - ----------------------------------------------===//</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 contains the implementation of a FileMatchTrie.</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="FileMatchTrie_8h.html">clang/Tooling/FileMatchTrie.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "llvm/ADT/StringMap.h"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "llvm/Support/Path.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 <sstream></span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> </div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="keyword">namespace </span>tooling {</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment"></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">/// \brief Default \c PathComparator using \c llvm::sys::fs::equivalent().</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html">   25</a></span> <span class="comment"></span><span class="keyword">struct </span><a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html" title="Default PathComparator using llvm::sys::fs::equivalent().">DefaultPathComparator</a> : <span class="keyword">public</span> <a class="code" href="structclang_1_1tooling_1_1PathComparator.html">PathComparator</a> {</div>
+<div class="line"><a name="l00026"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html#a38039fceaf787554f77fcf20bf4b10ed">   26</a></span>   <span class="keyword">virtual</span> <a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html#a38039fceaf787554f77fcf20bf4b10ed">~DefaultPathComparator</a>() {}</div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html#a4f8b98efdbdc76c1a7f86494864c0ce7">   27</a></span>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html#a4f8b98efdbdc76c1a7f86494864c0ce7">equivalent</a>(StringRef FileA, StringRef FileB)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     <span class="keywordflow">return</span> FileA == FileB || llvm::sys::fs::equivalent(FileA, FileB);</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   }</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> };</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment"></span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">/// \brief A node of the \c FileMatchTrie.</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/// Each node has storage for up to one path and a map mapping a path segment to</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment">/// child nodes. The trie starts with an empty root node.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html">   36</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html" title="A node of the FileMatchTrie.">FileMatchTrieNode</a> {</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">  /// \brief Inserts 'NewPath' into this trie. \c ConsumedLength denotes</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">  /// the number of \c NewPath's trailing characters already consumed during</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">  /// recursion.</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment">  /// An insert of a path</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">  /// 'p'starts at the root node and does the following:</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">  /// - If the node is empty, insert 'p' into its storage and abort.</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">  /// - If the node has a path 'p2' but no children, take the last path segment</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">  ///   's' of 'p2', put a new child into the map at 's' an insert the rest of</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">  ///   'p2' there.</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">  /// - Insert a new child for the last segment of 'p' and insert the rest of</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">  ///   'p' there.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">  /// An insert operation is linear in the number of a path's segments.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html#aec301078f3d84602f7f3cef17220f700">   52</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html#aec301078f3d84602f7f3cef17220f700" title="Inserts 'NewPath' into this trie. ConsumedLength denotes the number of NewPath's trailing characters ...">insert</a>(StringRef NewPath, <span class="keywordtype">unsigned</span> ConsumedLength = 0) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     <span class="comment">// We cannot put relative paths into the FileMatchTrie as then a path can be</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="comment">// a postfix of another path, violating a core assumption of the trie.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>     <span class="keywordflow">if</span> (llvm::sys::path::is_relative(NewPath))</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordflow">if</span> (Path.empty()) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>       <span class="comment">// This is an empty leaf. Store NewPath and return.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>       Path = NewPath;</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>       <span class="keywordflow">return</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="keywordflow">if</span> (Children.empty()) {</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>       <span class="comment">// This is a leaf, ignore duplicate entry if 'Path' equals 'NewPath'.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>       <span class="keywordflow">if</span> (NewPath == Path)</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>           <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>       <span class="comment">// Make this a node and create a child-leaf with 'Path'.</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       StringRef Element(llvm::sys::path::filename(</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>           StringRef(Path).drop_back(ConsumedLength)));</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>       Children[Element].Path = Path;</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>     StringRef Element(llvm::sys::path::filename(</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>           StringRef(NewPath).drop_back(ConsumedLength)));</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     Children[Element].insert(NewPath, ConsumedLength + Element.size() + 1);</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 Tries to find the node under this \c FileMatchTrieNode that best</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  /// matches 'FileName'.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment">  /// If multiple paths fit 'FileName' equally well, \c IsAmbiguous is set to</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="comment">  /// \c true and an empty string is returned. If no path fits 'FileName', an</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span> <span class="comment">  /// empty string is returned. \c ConsumedLength denotes the number of</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">  /// \c Filename's trailing characters already consumed during recursion.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  /// To find the best matching node for a given path 'p', the</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// \c findEquivalent() function is called recursively for each path segment</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment">  /// (back to fron) of 'p' until a node 'n' is reached that does not ..</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">  /// - .. have children. In this case it is checked</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> <span class="comment">  ///   whether the stored path is equivalent to 'p'. If yes, the best match is</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment">  ///   found. Otherwise continue with the parent node as if this node did not</span></div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span> <span class="comment">  ///   exist.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment">  /// - .. a child matching the next path segment. In this case, all children of</span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">  ///   'n' are an equally good match for 'p'. All children are of 'n' are found</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment">  ///   recursively and their equivalence to 'p' is determined. If none are</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment">  ///   equivalent, continue with the parent node as if 'n' didn't exist. If one</span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">  ///   is equivalent, the best match is found. Otherwise, report and ambigiuity</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  ///   error.</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html#a47e5b395219f19c8c61869ecc04abe37">   97</a></span> <span class="comment"></span>  StringRef <a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html#a47e5b395219f19c8c61869ecc04abe37" title="Tries to find the node under this FileMatchTrieNode that best matches 'FileName'.">findEquivalent</a>(<span class="keyword">const</span> <a class="code" href="structclang_1_1tooling_1_1PathComparator.html">PathComparator</a>& Comparator,</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>                            StringRef FileName,</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>                            <span class="keywordtype">bool</span> &IsAmbiguous,</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>                            <span class="keywordtype">unsigned</span> ConsumedLength = 0)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     <span class="keywordflow">if</span> (Children.empty()) {</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>       <span class="keywordflow">if</span> (Comparator.<a class="code" href="structclang_1_1tooling_1_1PathComparator.html#a45cbc7e5391bcc1bbef1b4aba7874f64">equivalent</a>(StringRef(Path), FileName))</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>         <span class="keywordflow">return</span> StringRef(Path);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>       <span class="keywordflow">return</span> StringRef();</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>     StringRef Element(llvm::sys::path::filename(FileName.drop_back(</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>         ConsumedLength)));</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     llvm::StringMap<FileMatchTrieNode>::const_iterator MatchingChild =</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>         Children.find(Element);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>     <span class="keywordflow">if</span> (MatchingChild != Children.end()) {</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>       StringRef Result = MatchingChild->getValue().findEquivalent(</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>           Comparator, FileName, IsAmbiguous,</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>           ConsumedLength + Element.size() + 1);</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span>       <span class="keywordflow">if</span> (!Result.empty() || IsAmbiguous)</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>         <span class="keywordflow">return</span> Result;</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>     std::vector<StringRef> AllChildren;</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     getAll(AllChildren, MatchingChild);</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>     StringRef Result;</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; i < AllChildren.size(); i++) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>       <span class="keywordflow">if</span> (Comparator.<a class="code" href="structclang_1_1tooling_1_1PathComparator.html#a45cbc7e5391bcc1bbef1b4aba7874f64">equivalent</a>(AllChildren[i], FileName)) {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>         <span class="keywordflow">if</span> (Result.empty()) {</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>           Result = AllChildren[i];</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>         } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>           IsAmbiguous = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>           <span class="keywordflow">return</span> StringRef();</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>         }</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>     }</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="keywordflow">return</span> Result;</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> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> <span class="keyword">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> <span class="comment">  /// \brief Gets all paths under this FileMatchTrieNode.</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment"></span>  <span class="keywordtype">void</span> getAll(std::vector<StringRef> &Results,</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>               llvm::StringMap<FileMatchTrieNode>::const_iterator Except)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <span class="keywordflow">if</span> (Path.empty())</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     <span class="keywordflow">if</span> (Children.empty()) {</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>       Results.push_back(StringRef(Path));</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     }</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keywordflow">for</span> (llvm::StringMap<FileMatchTrieNode>::const_iterator</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>          It = Children.begin(), E = Children.end();</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>          It != E; ++It) {</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>       <span class="keywordflow">if</span> (It == Except)</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       It->getValue().getAll(Results, Children.end());</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> </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>   <span class="comment">// The stored absolute path in this node. Only valid for leaf nodes, i.e.</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>   <span class="comment">// nodes where Children.empty().</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   std::string Path;</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>   <span class="comment">// The children of this node stored in a map based on the next path segment.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>   llvm::StringMap<FileMatchTrieNode> Children;</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> };</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> </div>
+<div class="line"><a name="l00160"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#ab86c2872614fb2fa101b3353023c95a0">  160</a></span> <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#ab86c2872614fb2fa101b3353023c95a0">FileMatchTrie::FileMatchTrie</a>()</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>   : Root(new <a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html" title="A node of the FileMatchTrie.">FileMatchTrieNode</a>), Comparator(new <a class="code" href="structclang_1_1tooling_1_1DefaultPathComparator.html" title="Default PathComparator using llvm::sys::fs::equivalent().">DefaultPathComparator</a>()) {}</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#af951052dacb7b5a2ebeba6b7b1fad9e3">  163</a></span> <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#ab86c2872614fb2fa101b3353023c95a0">FileMatchTrie::FileMatchTrie</a>(<a class="code" href="structclang_1_1tooling_1_1PathComparator.html">PathComparator</a> *Comparator)</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   : Root(new <a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html" title="A node of the FileMatchTrie.">FileMatchTrieNode</a>), Comparator(Comparator) {}</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#a5348a1bee624545b57a820fdd9e6f4a6">  166</a></span> <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#a5348a1bee624545b57a820fdd9e6f4a6">FileMatchTrie::~FileMatchTrie</a>() {</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keyword">delete</span> Root;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#af71387b84fbf9705935028838a67883b">  170</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#af71387b84fbf9705935028838a67883b" title="Insert a new absolute path. Relative paths are ignored.">FileMatchTrie::insert</a>(StringRef NewPath) {</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>   Root-><a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html#aec301078f3d84602f7f3cef17220f700" title="Inserts 'NewPath' into this trie. ConsumedLength denotes the number of NewPath's trailing characters ...">insert</a>(NewPath);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> }</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> </div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#a89cdcbd393e30a0f52128b2983a186fc">  174</a></span> StringRef <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#a89cdcbd393e30a0f52128b2983a186fc" title="Finds the corresponding file in this trie.">FileMatchTrie::findEquivalent</a>(StringRef FileName,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                                         raw_ostream &Error)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>   <span class="keywordflow">if</span> (llvm::sys::path::is_relative(FileName)) {</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     Error << <span class="stringliteral">"Cannot resolve relative paths"</span>;</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordflow">return</span> StringRef();</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>   }</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>   <span class="keywordtype">bool</span> IsAmbiguous = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>   StringRef Result = Root-><a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html#a47e5b395219f19c8c61869ecc04abe37" title="Tries to find the node under this FileMatchTrieNode that best matches 'FileName'.">findEquivalent</a>(*Comparator, FileName, IsAmbiguous);</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>   <span class="keywordflow">if</span> (IsAmbiguous)</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>     Error << <span class="stringliteral">"Path is ambiguous"</span>;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> }</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> } <span class="comment">// end namespace tooling</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> } <span class="comment">// end namespace clang</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileMatchTrie_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,157 @@
+<!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: FileMatchTrie.d Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_87e2a7550f83bd8cbfc92736891468fc.html">lib</a></li><li class="navelem"><a class="el" href="dir_14ab871e308b37f9042717085145c002.html">Tooling</a></li><li class="navelem"><a class="el" href="dir_88d92a3518b6d6dcb8dd1cee7c911282.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileMatchTrie.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileMatchTrie_8d.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span> /home/tstellar/llvm/tools/clang/lib/Tooling/Release+Asserts/FileMatchTrie.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/Release+Asserts/FileMatchTrie.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  FileMatchTrie.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/FileMatchTrie.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.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/SmallString.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/Twine.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/Path.h \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Tooling/FileMatchTrie.h:</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> /home/tstellar/llvm/tools/clang/lib/Tooling/../../include/clang/Basic/LLVM.h:</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> /home/tstellar/llvm/include/llvm/Support/Casting.h:</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> </div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> </div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.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/include/llvm/Support/Compiler.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/include/llvm/Config/llvm-config.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/ADT/StringRef.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/ADT/StringMap.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/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/Support/AlignOf.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/MathExtras.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/Support/SwapByteOrder.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/FileSystem.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/include/llvm/ADT/IntrusiveRefCntPtr.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/ADT/SmallString.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/include/llvm/ADT/SmallVector.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/include/llvm/ADT/Twine.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/include/llvm/Support/ErrorHandling.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/Support/TimeValue.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/Support/system_error.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/Path.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/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileMatchTrie_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileMatchTrie_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,168 @@
+<!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: FileMatchTrie.h Source File</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css"/>
+</head><body>
+<p class="title">clang API Documentation</p>
+<!-- Generated by Doxygen 1.8.3.1 -->
+<script type="text/javascript">
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+</script>
+  <div id="navrow1" class="tabs">
+    <ul class="tablist">
+      <li><a href="index.html"><span>Main Page</span></a></li>
+      <li><a href="pages.html"><span>Related Pages</span></a></li>
+      <li><a href="modules.html"><span>Modules</span></a></li>
+      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
+      <li><a href="annotated.html"><span>Classes</span></a></li>
+      <li class="current"><a href="files.html"><span>Files</span></a></li>
+      <li>
+        <div id="MSearchBox" class="MSearchBoxInactive">
+        <span class="left">
+          <img id="MSearchSelect" src="search/mag_sel.png"
+               onmouseover="return searchBox.OnSearchSelectShow()"
+               onmouseout="return searchBox.OnSearchSelectHide()"
+               alt=""/>
+          <input type="text" id="MSearchField" value="Search" accesskey="S"
+               onfocus="searchBox.OnSearchFieldFocus(true)" 
+               onblur="searchBox.OnSearchFieldFocus(false)" 
+               onkeyup="searchBox.OnSearchFieldChange(event)"/>
+          </span><span class="right">
+            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
+          </span>
+        </div>
+      </li>
+    </ul>
+  </div>
+  <div id="navrow2" class="tabs2">
+    <ul class="tablist">
+      <li><a href="files.html"><span>File List</span></a></li>
+      <li><a href="globals.html"><span>File Members</span></a></li>
+    </ul>
+  </div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void
 (0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark"> </span>Groups</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(12)"><span class="SelectionMark"> </span>Pages</a></div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_f65986501076cc710d4b9355ae3fe06d.html">clang</a></li><li class="navelem"><a class="el" href="dir_3e61bbac0c8515a3c083eb51d03eb390.html">include</a></li><li class="navelem"><a class="el" href="dir_ee4f288247dc2d9ccd0382aea6916312.html">clang</a></li><li class="navelem"><a class="el" href="dir_595f3151679c28f47cf4097124b3607a.html">Tooling</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileMatchTrie.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileMatchTrie_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">//===--- FileMatchTrie.h - --------------------------------------*- 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 implements a match trie to find the matching file in a compilation</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  database based on a given path in the presence of symlinks.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#ifndef LLVM_CLANG_TOOLING_FILE_MATCH_TRIE_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_TOOLING_FILE_MATCH_TRIE_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/ADT/OwningPtr.h"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "llvm/ADT/StringRef.h"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <vector></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">namespace </span>tooling {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1PathComparator.html">   27</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1tooling_1_1PathComparator.html">PathComparator</a> {</div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="structclang_1_1tooling_1_1PathComparator.html#a4559648a1b503823aeeb7d2ee23be0c5">   28</a></span>   <span class="keyword">virtual</span> <a class="code" href="structclang_1_1tooling_1_1PathComparator.html#a4559648a1b503823aeeb7d2ee23be0c5">~PathComparator</a>() {}</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1tooling_1_1PathComparator.html#a45cbc7e5391bcc1bbef1b4aba7874f64">equivalent</a>(StringRef FileA, StringRef FileB) <span class="keyword">const</span> = 0;</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">class </span>FileMatchTrieNode;</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 A trie to efficiently match against the entries of the compilation</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">/// database in order of matching suffix length.</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">/// When a clang tool is supposed to operate on a specific file, we have to</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/// find the corresponding file in the compilation database. Although entries</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/// in the compilation database are keyed by filename, a simple string match</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">/// is insufficient because of symlinks. Commonly, a project hierarchy looks</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment">/// like this:</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="comment">///   /<project-root>/src/<path>/<somefile>.cc      (used as input for the tool)</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment">///   /<project-root>/build/<symlink-to-src>/<path>/<somefile>.cc (stored in DB)</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">/// Furthermore, there might be symlinks inside the source folder or inside the</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">/// database, so that the same source file is translated with different build</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">/// options.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">/// For a given input file, the \c FileMatchTrie finds its entries in order</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">/// of matching suffix length. For each suffix length, there might be one or</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">/// more entries in the database. For each of those entries, it calls</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// \c llvm::sys::fs::equivalent() (injected as \c PathComparator). There might</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">/// be zero or more entries with the same matching suffix length that are</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">/// equivalent to the input file. Three cases are distinguished:</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">/// 0  equivalent files: Continue with the next suffix length.</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">/// 1  equivalent file:  Best match found, return it.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">/// >1 equivalent files: Match is ambiguous, return error.</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html">   57</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html" title="A trie to efficiently match against the entries of the compilation database in order of matching suff...">FileMatchTrie</a> {</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#ab86c2872614fb2fa101b3353023c95a0">FileMatchTrie</a>();</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment"></span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment">  /// \brief Construct a new \c FileMatchTrie with the given \c PathComparator.</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">  /// The \c FileMatchTrie takes ownership of 'Comparator'. Used for testing.</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment"></span>  <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#ab86c2872614fb2fa101b3353023c95a0">FileMatchTrie</a>(<a class="code" href="structclang_1_1tooling_1_1PathComparator.html">PathComparator</a>* Comparator);</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>   <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#a5348a1bee624545b57a820fdd9e6f4a6">~FileMatchTrie</a>();</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> <span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">  /// \brief Insert a new absolute path. Relative paths are ignored.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#af71387b84fbf9705935028838a67883b" title="Insert a new absolute path. Relative paths are ignored.">insert</a>(StringRef NewPath);</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment"></span></div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span> <span class="comment">  /// \brief Finds the corresponding file in this trie.</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> <span class="comment">  /// Returns file name stored in this trie that is equivalent to 'FileName'</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">  /// according to 'Comparator', if it can be uniquely identified. If there</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> <span class="comment">  /// are no matches an empty \c StringRef is returned. If there are ambigious</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> <span class="comment">  /// matches, an empty \c StringRef is returned and a corresponding message</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">  /// written to 'Error'.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment"></span>  StringRef <a class="code" href="classclang_1_1tooling_1_1FileMatchTrie.html#a89cdcbd393e30a0f52128b2983a186fc" title="Finds the corresponding file in this trie.">findEquivalent</a>(StringRef FileName,</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>                            raw_ostream &Error) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   <a class="code" href="classclang_1_1tooling_1_1FileMatchTrieNode.html" title="A node of the FileMatchTrie.">FileMatchTrieNode</a> *Root;</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<PathComparator></a> Comparator;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> };</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> } <span class="comment">// end namespace tooling</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> } <span class="comment">// end namespace clang</span></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> <span class="preprocessor">#endif // LLVM_CLANG_TOOLING_FILE_MATCH_TRIE_H</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileOffset_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileOffset_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileOffset_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileOffset_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,144 @@
+<!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: FileOffset.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_4868472fca72dca0588e8eee4f00b3f7.html">Edit</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileOffset.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileOffset_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">//===----- FileOffset.h - Offset in a file ----------------------*- 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> </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#ifndef LLVM_CLANG_EDIT_FILEOFFSET_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_EDIT_FILEOFFSET_H</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</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="l00014"></a><span class="lineno">   14</span> </div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> </div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="keyword">namespace </span>edit {</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html">   19</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> {</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</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="l00021"></a><span class="lineno">   21</span>   <span class="keywordtype">unsigned</span> Offs;</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a5e102dd10c5880a5ee8b093aca06b7b1">   23</a></span>   <a class="code" href="classclang_1_1edit_1_1FileOffset.html#a5e102dd10c5880a5ee8b093aca06b7b1">FileOffset</a>() : Offs(0) { }</div>
+<div class="line"><a name="l00024"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a92acbc046af9ccbfe05d65c65219e328">   24</a></span>   <a class="code" href="classclang_1_1edit_1_1FileOffset.html#a92acbc046af9ccbfe05d65c65219e328">FileOffset</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> offs) : FID(fid), Offs(offs) { }</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_1edit_1_1FileOffset.html#abfafa6e95f89c7e033cd8eee07326c6d">   26</a></span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#abfafa6e95f89c7e033cd8eee07326c6d">isInvalid</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FID.<a class="code" href="classclang_1_1FileID.html#a89ac6cca1064b7275a777f86450c7863">isInvalid</a>(); }</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> </div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a6939482891c1195da9b8424c85322795">   28</a></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_1edit_1_1FileOffset.html#a6939482891c1195da9b8424c85322795">getFID</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> FID; }</div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#add6ca5017c3cfbbd80fc138ad89eb9a1">   29</a></span>   <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#add6ca5017c3cfbbd80fc138ad89eb9a1">getOffset</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Offs; }</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#acc329fd3845ef5630281c7a5733f7a37">   31</a></span>   <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#acc329fd3845ef5630281c7a5733f7a37">getWithOffset</a>(<span class="keywordtype">unsigned</span> offset)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>     <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> NewOffs = *<span class="keyword">this</span>;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>     NewOffs.Offs += offset;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     <span class="keywordflow">return</span> NewOffs;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   }</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#acae9b010aba9141c69bd2d4e71c95e5f">   37</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#acae9b010aba9141c69bd2d4e71c95e5f">operator==</a>(<a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> LHS, <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> RHS) {</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     <span class="keywordflow">return</span> LHS.FID == RHS.FID && LHS.Offs == RHS.Offs;</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   }</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a4554ea4d5e8728066345c59dd91abef0">   40</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#a4554ea4d5e8728066345c59dd91abef0">operator!=</a>(<a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> LHS, <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> RHS) {</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>     <span class="keywordflow">return</span> !(LHS == RHS);</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   }</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a3df1c59d3f29561d9de5a7e43184563b">   43</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#a3df1c59d3f29561d9de5a7e43184563b">operator<</a>(<a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> LHS, <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> RHS) {</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     <span class="keywordflow">if</span> (LHS.FID != RHS.FID)</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>       <span class="keywordflow">return</span> LHS.FID < RHS.FID;</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>     <span class="keywordflow">return</span> LHS.Offs < RHS.Offs;</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_1edit_1_1FileOffset.html#ae5f8a4e61179190212eb495699fa441a">   48</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#ae5f8a4e61179190212eb495699fa441a">operator></a>(<a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> LHS, <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> RHS) {</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>     <span class="keywordflow">if</span> (LHS.FID != RHS.FID)</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>       <span class="keywordflow">return</span> LHS.FID > RHS.FID;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">return</span> LHS.Offs > RHS.Offs;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   }</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a4338b898a727e91e5fa69af9c1b33ca2">   53</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#a4338b898a727e91e5fa69af9c1b33ca2">operator>=</a>(<a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> LHS, <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> RHS) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>     <span class="keywordflow">return</span> LHS > RHS || LHS == RHS;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   }</div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1edit_1_1FileOffset.html#a07678b7a4289f2d6855e5476c97d6418">   56</a></span>   <span class="keyword">friend</span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1edit_1_1FileOffset.html#a07678b7a4289f2d6855e5476c97d6418">operator<=</a>(<a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> LHS, <a class="code" href="classclang_1_1edit_1_1FileOffset.html">FileOffset</a> RHS) {</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <span class="keywordflow">return</span> LHS < RHS || LHS == RHS;</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> };</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> </div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span> } <span class="comment">// end namespace clang</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileRemapper_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,359 @@
+<!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: FileRemapper.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_a868d8394e81a0f5a2cc73e01aef2a43.html">ARCMigrate</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileRemapper.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileRemapper_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">//===--- FileRemapper.cpp - File Remapping Helper -------------------------===//</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> </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#include "<a class="code" href="FileRemapper_8h.html">clang/ARCMigrate/FileRemapper.h</a>"</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</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="l00012"></a><span class="lineno">   12</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="l00013"></a><span class="lineno">   13</span> <span class="preprocessor">#include "<a class="code" href="PreprocessorOptions_8h.html">clang/Lex/PreprocessorOptions.h</a>"</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "llvm/Support/MemoryBuffer.h"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include <fstream></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</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> <span class="keyword">using namespace </span>arcmt;</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0cbb2abbb030a0d1c4bb0bb1aefd745">   23</a></span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0cbb2abbb030a0d1c4bb0bb1aefd745">FileRemapper::FileRemapper</a>() {</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   FileMgr.reset(<span class="keyword">new</span> <a class="code" href="classclang_1_1FileManager.html" title="Implements support for file system lookup, file system caching, and directory search management...">FileManager</a>(<a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a>()));</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> }</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#adf8701c8a6f6d37e33c5fdf4aee86a4a">   27</a></span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#adf8701c8a6f6d37e33c5fdf4aee86a4a">FileRemapper::~FileRemapper</a>() {</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>   <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a4e3954545610124c9a0caa4baf6141b7">clear</a>();</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> }</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a4e3954545610124c9a0caa4baf6141b7">   31</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a4e3954545610124c9a0caa4baf6141b7">FileRemapper::clear</a>(StringRef outputDir) {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="keywordflow">for</span> (MappingsTy::iterator</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>          I = FromToMappings.begin(), E = FromToMappings.end(); I != E; ++I)</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>     resetTarget(I->second);</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   FromToMappings.clear();</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   assert(ToFromMappings.empty());</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keywordflow">if</span> (!outputDir.empty()) {</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>     std::string infoFile = getRemapInfoFile(outputDir);</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>     <span class="keywordtype">bool</span> existed;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>     llvm::sys::fs::remove(infoFile, existed);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   }</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> }</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> </div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> std::string FileRemapper::getRemapInfoFile(StringRef outputDir) {</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   assert(!outputDir.empty());</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> InfoFile = outputDir;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   llvm::sys::path::append(InfoFile, <span class="stringliteral">"remap"</span>);</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="keywordflow">return</span> InfoFile.str();</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> </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac60450bc1595474a1da42cf92c75669c">   51</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac60450bc1595474a1da42cf92c75669c">FileRemapper::initFromDisk</a>(StringRef outputDir, <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="l00052"></a><span class="lineno">   52</span>                                 <span class="keywordtype">bool</span> ignoreIfFilesChanged) {</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   std::string infoFile = getRemapInfoFile(outputDir);</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a0a68c5ccb01549f56502da37f3465717">initFromFile</a>(infoFile, Diag, ignoreIfFilesChanged);</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"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a0a68c5ccb01549f56502da37f3465717">   57</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a0a68c5ccb01549f56502da37f3465717">FileRemapper::initFromFile</a>(StringRef filePath, <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="l00058"></a><span class="lineno">   58</span>                                 <span class="keywordtype">bool</span> ignoreIfFilesChanged) {</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   assert(FromToMappings.empty() &&</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>          <span class="stringliteral">"initFromDisk should be called before any remap calls"</span>);</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   std::string infoFile = filePath;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>   <span class="keywordtype">bool</span> fileExists = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>   llvm::sys::fs::exists(infoFile, fileExists);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordflow">if</span> (!fileExists)</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</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>   std::vector<std::pair<const FileEntry *, const FileEntry *> > pairs;</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>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<llvm::MemoryBuffer></a> fileBuf;</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordflow">if</span> (llvm::MemoryBuffer::getFile(infoFile.c_str(), fileBuf))</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keywordflow">return</span> report(<span class="stringliteral">"Error opening file: "</span> + infoFile, Diag);</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>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<StringRef, 64></a> lines;</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>   fileBuf->getBuffer().split(lines, <span class="stringliteral">"\n"</span>);</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>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> idx = 0; idx+3 <= lines.size(); idx += 3) {</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     StringRef fromFilename = lines[idx];</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">long</span> timeModified;</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="keywordflow">if</span> (lines[idx+1].getAsInteger(10, timeModified))</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>       <span class="keywordflow">return</span> report(<span class="stringliteral">"Invalid file data: '"</span> + lines[idx+1] + <span class="stringliteral">"' not a number"</span>,</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>                     Diag);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>     StringRef toFilename = lines[idx+2];</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     </div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>     <span class="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> *origFE = FileMgr->getFile(fromFilename);</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>     <span class="keywordflow">if</span> (!origFE) {</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       <span class="keywordflow">if</span> (ignoreIfFilesChanged)</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       <span class="keywordflow">return</span> report(<span class="stringliteral">"File does not exist: "</span> + fromFilename, Diag);</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     }</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     <span class="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> *newFE = FileMgr->getFile(toFilename);</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     <span class="keywordflow">if</span> (!newFE) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>       <span class="keywordflow">if</span> (ignoreIfFilesChanged)</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>       <span class="keywordflow">return</span> report(<span class="stringliteral">"File does not exist: "</span> + toFilename, Diag);</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> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>     <span class="keywordflow">if</span> ((uint64_t)origFE-><a class="code" href="classclang_1_1FileEntry.html#a2df68d04c7f85abdcf5075db7778e033">getModificationTime</a>() != timeModified) {</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>       <span class="keywordflow">if</span> (ignoreIfFilesChanged)</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       <span class="keywordflow">return</span> report(<span class="stringliteral">"File was modified: "</span> + fromFilename, Diag);</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> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     pairs.push_back(std::make_pair(origFE, newFE));</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> </div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> i = 0, e = pairs.size(); i != e; ++i)</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">remap</a>(pairs[i].first, pairs[i].second);</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="keywordflow">return</span> <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l00112"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a1765f76b7c10fdcecfac1937c4f9a8fc">  112</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a1765f76b7c10fdcecfac1937c4f9a8fc">FileRemapper::flushToDisk</a>(StringRef outputDir, <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="l00113"></a><span class="lineno">  113</span>   <span class="keyword">using namespace </span>llvm::sys;</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="keywordtype">bool</span> existed;</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>   <span class="keywordflow">if</span> (fs::create_directory(outputDir, existed) != llvm::errc::success)</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <span class="keywordflow">return</span> report(<span class="stringliteral">"Could not create directory: "</span> + outputDir, Diag);</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>   std::string infoFile = getRemapInfoFile(outputDir);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a210f1bf43f84ffbb22e2565b37f3410b">flushToFile</a>(infoFile, Diag);</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"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a210f1bf43f84ffbb22e2565b37f3410b">  123</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a210f1bf43f84ffbb22e2565b37f3410b">FileRemapper::flushToFile</a>(StringRef outputPath, <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="l00124"></a><span class="lineno">  124</span>   <span class="keyword">using namespace </span>llvm::sys;</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> </div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   std::string errMsg;</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   std::string infoFile = outputPath;</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   llvm::raw_fd_ostream infoOut(infoFile.c_str(), errMsg,</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>                                llvm::sys::fs::F_Binary);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>   <span class="keywordflow">if</span> (!errMsg.empty())</div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="keywordflow">return</span> report(errMsg, Diag);</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="keywordflow">for</span> (MappingsTy::iterator</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>          I = FromToMappings.begin(), E = FromToMappings.end(); I != E; ++I) {</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="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> *origFE = I->first;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<200></a> origPath = StringRef(origFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>());</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     fs::make_absolute(origPath);</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     infoOut << origPath << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     infoOut << (uint64_t)origFE-><a class="code" href="classclang_1_1FileEntry.html#a2df68d04c7f85abdcf5075db7778e033">getModificationTime</a>() << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> </div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">if</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> *FE = I->second.dyn_cast<<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> *>()) {</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       <a class="code" href="classllvm_1_1SmallString.html">SmallString<200></a> newPath = StringRef(FE->getName());</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>       fs::make_absolute(newPath);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>       infoOut << newPath << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> </div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>       <a class="code" href="classllvm_1_1SmallString.html">SmallString<64></a> tempPath;</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>       <span class="keywordtype">int</span> fd;</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>       <span class="keywordflow">if</span> (fs::createTemporaryFile(path::filename(origFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()),</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>                                   path::extension(origFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()), fd,</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>                                   tempPath))</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>         <span class="keywordflow">return</span> report(<span class="stringliteral">"Could not create file: "</span> + tempPath.str(), <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="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>       llvm::raw_fd_ostream newOut(fd, <span class="comment">/*shouldClose=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>       llvm::MemoryBuffer *mem = I->second.get<llvm::MemoryBuffer *>();</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>       newOut.write(mem->getBufferStart(), mem->getBufferSize());</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>       newOut.close();</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>       </div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>       <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> *newE = FileMgr->getFile(tempPath);</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>       <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">remap</a>(origFE, newE);</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>       infoOut << newE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>() << <span class="charliteral">'\n'</span>;</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>     }</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   }</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>   infoOut.close();</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> }</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> </div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#acfb5b4774c77a3b9d601446bf5e6260f">  170</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#acfb5b4774c77a3b9d601446bf5e6260f">FileRemapper::overwriteOriginal</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="l00171"></a><span class="lineno">  171</span>                                      StringRef outputDir) {</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   <span class="keyword">using namespace </span>llvm::sys;</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">for</span> (MappingsTy::iterator</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>          I = FromToMappings.begin(), E = FromToMappings.end(); I != E; ++I) {</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</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> *origFE = I->first;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     assert(I->second.is<llvm::MemoryBuffer *>());</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>     <span class="keywordtype">bool</span> fileExists = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>     fs::exists(origFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(), fileExists);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>     <span class="keywordflow">if</span> (!fileExists)</div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">return</span> report(StringRef(<span class="stringliteral">"File does not exist: "</span>) + origFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(),</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>                     <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="l00183"></a><span class="lineno">  183</span> </div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>     std::string errMsg;</div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>     llvm::raw_fd_ostream Out(origFE-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>(), errMsg,</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>                              llvm::sys::fs::F_Binary);</div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>     <span class="keywordflow">if</span> (!errMsg.empty())</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>       <span class="keywordflow">return</span> report(errMsg, Diag);</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>     llvm::MemoryBuffer *mem = I->second.get<llvm::MemoryBuffer *>();</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>     Out.write(mem->getBufferStart(), mem->getBufferSize());</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>     Out.close();</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>   }</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>   <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a4e3954545610124c9a0caa4baf6141b7">clear</a>(outputDir);</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> }</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a788efcb0b3c9d42c38274a0acbad7b6a">  199</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a788efcb0b3c9d42c38274a0acbad7b6a">FileRemapper::applyMappings</a>(<a class="code" href="classclang_1_1PreprocessorOptions.html">PreprocessorOptions</a> &PPOpts)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>   <span class="keywordflow">for</span> (MappingsTy::const_iterator</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>          I = FromToMappings.begin(), E = FromToMappings.end(); I != E; ++I) {</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     <span class="keywordflow">if</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> *FE = I->second.dyn_cast<<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> *>()) {</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>       PPOpts.<a class="code" href="classclang_1_1PreprocessorOptions.html#ad3696370ca31e4f1b5871cb7d58f589f">addRemappedFile</a>(I->first->getName(), FE->getName());</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>       llvm::MemoryBuffer *mem = I->second.get<llvm::MemoryBuffer *>();</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>       PPOpts.<a class="code" href="classclang_1_1PreprocessorOptions.html#ad3696370ca31e4f1b5871cb7d58f589f">addRemappedFile</a>(I->first->getName(), mem);</div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>     }</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   }</div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> </div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>   PPOpts.<a class="code" href="classclang_1_1PreprocessorOptions.html#a47eb4ea58ec9f1b60266df38f6840ed6" title="Whether the compiler instance should retain (i.e., not free) the buffers associated with remapped fil...">RetainRemappedFileBuffers</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> }</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a8c8f95e2d0c10b66cdf2ce746406f3c3">  213</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a8c8f95e2d0c10b66cdf2ce746406f3c3">FileRemapper::transferMappingsAndClear</a>(<a class="code" href="classclang_1_1PreprocessorOptions.html">PreprocessorOptions</a> &PPOpts) {</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>   <span class="keywordflow">for</span> (MappingsTy::iterator</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>          I = FromToMappings.begin(), E = FromToMappings.end(); I != E; ++I) {</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>     <span class="keywordflow">if</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> *FE = I->second.dyn_cast<<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> *>()) {</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>       PPOpts.<a class="code" href="classclang_1_1PreprocessorOptions.html#ad3696370ca31e4f1b5871cb7d58f589f">addRemappedFile</a>(I->first->getName(), FE->getName());</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>       llvm::MemoryBuffer *mem = I->second.get<llvm::MemoryBuffer *>();</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>       PPOpts.<a class="code" href="classclang_1_1PreprocessorOptions.html#ad3696370ca31e4f1b5871cb7d58f589f">addRemappedFile</a>(I->first->getName(), mem);</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>     I->second = Target();</div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   }</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   PPOpts.<a class="code" href="classclang_1_1PreprocessorOptions.html#a47eb4ea58ec9f1b60266df38f6840ed6" title="Whether the compiler instance should retain (i.e., not free) the buffers associated with remapped fil...">RetainRemappedFileBuffers</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span>   <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a4e3954545610124c9a0caa4baf6141b7">clear</a>();</div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> }</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
+<div class="line"><a name="l00229"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">  229</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">FileRemapper::remap</a>(StringRef filePath, llvm::MemoryBuffer *memBuf) {</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>   <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">remap</a>(getOriginalFile(filePath), memBuf);</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> }</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">FileRemapper::remap</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, llvm::MemoryBuffer *memBuf) {</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   assert(file);</div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>   Target &targ = FromToMappings[file];</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>   resetTarget(targ);</div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>   targ = memBuf;</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> }</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> </div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">FileRemapper::remap</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, <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="l00241"></a><span class="lineno">  241</span>   assert(file && newfile);</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>   Target &targ = FromToMappings[file];</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>   resetTarget(targ);</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>   targ = newfile;</div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>   ToFromMappings[newfile] = file;</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> }</div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> </div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</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> *FileRemapper::getOriginalFile(StringRef filePath) {</div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</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> *file = FileMgr->getFile(filePath);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>   <span class="comment">// If we are updating a file that overriden an original file,</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>   <span class="comment">// actually update the original file.</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>   llvm::DenseMap<const FileEntry *, const FileEntry *>::iterator</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>     I = ToFromMappings.find(file);</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="keywordflow">if</span> (I != ToFromMappings.end()) {</div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span>     file = I->second;</div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span>     assert(FromToMappings.find(file) != FromToMappings.end() &&</div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>            <span class="stringliteral">"Original file not in mappings!"</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="keywordflow">return</span> file;</div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> }</div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> </div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="keywordtype">void</span> FileRemapper::resetTarget(Target &targ) {</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>   <span class="keywordflow">if</span> (!targ)</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> </div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>   <span class="keywordflow">if</span> (llvm::MemoryBuffer *oldmem = targ.dyn_cast<llvm::MemoryBuffer *>()) {</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>     <span class="keyword">delete</span> oldmem;</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</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> *toFE = targ.get<<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> *>();</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>     ToFromMappings.erase(toFE);</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> }</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> </div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="keywordtype">bool</span> FileRemapper::report(<span class="keyword">const</span> Twine &err, <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="l00275"></a><span class="lineno">  275</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> buf;</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>   <span class="keywordtype">unsigned</span> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a98e64a993447cd51d3efb722d0d11eab">getDiagnosticIDs</a>()->getCustomDiagID(<a class="code" href="classclang_1_1DiagnosticIDs.html#ac6baa62af365f38f883252e4555ecd5da0fa83255234af755314c3cf096042fc0">DiagnosticIDs::Error</a>,</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>                                                          err.toStringRef(buf));</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>   Diag.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(ID);</div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>   <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileRemapper_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,214 @@
+<!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: FileRemapper.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_a868d8394e81a0f5a2cc73e01aef2a43.html">ARCMigrate</a></li><li class="navelem"><a class="el" href="dir_6299cfa6169f5b1c91ae781bcb6eabad.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileRemapper.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileRemapper_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/ARCMigrate/Release+Asserts/FileRemapper.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/Release+Asserts/FileRemapper.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  FileRemapper.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/ARCMigrate/FileRemapper.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.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/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorOptions.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/ADT/StringSet.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/include/llvm/Support/Path.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</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> /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/ARCMigrate/FileRemapper.h:</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> /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/LLVM.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/include/llvm/Support/Casting.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/include/llvm/Support/type_traits.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/include/llvm/Support/DataTypes.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/include/llvm/ADT/None.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/ADT/DenseMap.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/ADT/DenseMapInfo.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/PointerLikeTypeTraits.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/Support/AlignOf.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/Support/Compiler.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/Config/llvm-config.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/MathExtras.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/SwapByteOrder.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/ADT/OwningPtr.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/ADT/PointerUnion.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/ADT/PointerIntPair.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/ADT/StringRef.h:</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/Diagnostic.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/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticIDs.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/IntrusiveRefCntPtr.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/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticCommonKinds.inc:</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/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticOptions.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/tools/clang/lib/ARCMigrate/../../include/clang/Basic/DiagnosticOptions.def:</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/tools/clang/lib/ARCMigrate/../../include/clang/Basic/SourceLocation.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/ArrayRef.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/SmallVector.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/tools/clang/lib/ARCMigrate/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span> </div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span> /home/tstellar/llvm/tools/clang/lib/ARCMigrate/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span> </div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> </div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> </div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.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/SmallString.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/Twine.h:</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> /home/tstellar/llvm/include/llvm/Support/ErrorHandling.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/TimeValue.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/system_error.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/tools/clang/lib/ARCMigrate/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorOptions.h:</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span> </div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> /home/tstellar/llvm/include/llvm/ADT/StringSet.h:</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> </div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> </div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> </div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> /home/tstellar/llvm/include/llvm/Support/Path.h:</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> /home/tstellar/llvm/include/llvm/Support/raw_ostream.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileRemapper_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileRemapper_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,158 @@
+<!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: FileRemapper.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_4fad32c6c850014487f63c25f98ba740.html">ARCMigrate</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">FileRemapper.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileRemapper_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">//===-- FileRemapper.h - File Remapping Helper ------------------*- 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> </div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="preprocessor">#ifndef LLVM_CLANG_ARCMIGRATE_FILEREMAPPER_H</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_ARCMIGRATE_FILEREMAPPER_H</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</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="l00014"></a><span class="lineno">   14</span> <span class="preprocessor">#include "llvm/ADT/DenseMap.h"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "llvm/ADT/OwningPtr.h"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "llvm/ADT/PointerUnion.h"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "llvm/ADT/StringRef.h"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> </div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="keyword">namespace </span>llvm {</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>   <span class="keyword">class </span>MemoryBuffer;</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> }</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>   <span class="keyword">class </span>FileManager;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>   <span class="keyword">class </span>FileEntry;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>   <span class="keyword">class </span>DiagnosticsEngine;</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>   <span class="keyword">class </span>PreprocessorOptions;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">namespace </span>arcmt {</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> </div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html">   31</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html">FileRemapper</a> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>   <span class="comment">// FIXME: Reuse the same FileManager for multiple ASTContexts.</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<FileManager></a> FileMgr;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> </div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   <span class="keyword">typedef</span> llvm::PointerUnion<const FileEntry *, llvm::MemoryBuffer *> Target;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">typedef</span> llvm::DenseMap<const FileEntry *, Target> MappingsTy;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   MappingsTy FromToMappings;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   llvm::DenseMap<const FileEntry *, const FileEntry *> ToFromMappings;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0cbb2abbb030a0d1c4bb0bb1aefd745">FileRemapper</a>();</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#adf8701c8a6f6d37e33c5fdf4aee86a4a">~FileRemapper</a>();</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac60450bc1595474a1da42cf92c75669c">initFromDisk</a>(StringRef outputDir, <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="l00046"></a><span class="lineno">   46</span>                     <span class="keywordtype">bool</span> ignoreIfFilesChanged);</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a0a68c5ccb01549f56502da37f3465717">initFromFile</a>(StringRef filePath, <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diag,</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>                     <span class="keywordtype">bool</span> ignoreIfFilesChanged);</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a1765f76b7c10fdcecfac1937c4f9a8fc">flushToDisk</a>(StringRef outputDir, <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diag);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a210f1bf43f84ffbb22e2565b37f3410b">flushToFile</a>(StringRef outputPath, <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diag);</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>   <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#acfb5b4774c77a3b9d601446bf5e6260f">overwriteOriginal</a>(<a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diag,</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                          StringRef outputDir = StringRef());</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="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">remap</a>(StringRef filePath, llvm::MemoryBuffer *memBuf);</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a788efcb0b3c9d42c38274a0acbad7b6a">applyMappings</a>(<a class="code" href="classclang_1_1PreprocessorOptions.html">PreprocessorOptions</a> &PPOpts) <span class="keyword">const</span>;</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="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a8c8f95e2d0c10b66cdf2ce746406f3c3">transferMappingsAndClear</a>(<a class="code" href="classclang_1_1PreprocessorOptions.html">PreprocessorOptions</a> &PPOpts);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#a4e3954545610124c9a0caa4baf6141b7">clear</a>(StringRef outputDir = StringRef());</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">private</span>:</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">remap</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, llvm::MemoryBuffer *memBuf);</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1arcmt_1_1FileRemapper.html#ac0e293320cf60eb5589aac584527c41e">remap</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, <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="l00066"></a><span class="lineno">   66</span> </div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</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> *getOriginalFile(StringRef filePath);</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="keywordtype">void</span> resetTarget(Target &targ);</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>   <span class="keywordtype">bool</span> report(<span class="keyword">const</span> Twine &err, <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diag);</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>   std::string getRemapInfoFile(StringRef outputDir);</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> </div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span> } <span class="comment">// end namespace arcmt</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span> </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> }  <span class="comment">// end namespace clang</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> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileSystemOptions_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemOptions_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemOptions_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemOptions_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,111 @@
+<!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: FileSystemOptions.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">FileSystemOptions.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileSystemOptions_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">//===--- FileSystemOptions.h - File System Options --------------*- 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::FileSystemOptions interface.</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_BASIC_FILESYSTEMOPTIONS_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_BASIC_FILESYSTEMOPTIONS_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 <string></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="comment"></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment">/// \brief Keeps track of options that affect how file operations are performed.</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemOptions.html">   23</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1FileSystemOptions.html" title="Keeps track of options that affect how file operations are performed.">FileSystemOptions</a> {</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">  /// \brief If set, paths are resolved as if the working directory was</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">  /// set to the value of WorkingDir.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce">   27</a></span> <span class="comment"></span>  std::string <a class="code" href="classclang_1_1FileSystemOptions.html#ae4aca3787990759cfe1f748b259442ce" title="If set, paths are resolved as if the working directory was set to the value of WorkingDir.">WorkingDir</a>;</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> };</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> } <span class="comment">// end namespace clang</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="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileSystemStatCache_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,215 @@
+<!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: FileSystemStatCache.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">FileSystemStatCache.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileSystemStatCache_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">//===--- FileSystemStatCache.cpp - Caching for 'stat' calls ---------------===//</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span> <span class="comment">//                     The LLVM Compiler Infrastructure</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span> <span class="comment">// This file is distributed under the University of Illinois Open Source</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span> <span class="comment">// License. See LICENSE.TXT for details.</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span> <span class="comment">//</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span> <span class="comment">//  This file defines the FileSystemStatCache 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="FileSystemStatCache_8h.html" title="Defines the FileSystemStatCache interface.">clang/Basic/FileSystemStatCache.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> </div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="comment">// FIXME: This is terrible, we need this for ::close.</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#if !defined(_MSC_VER) && !defined(__MINGW32__)</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor"></span><span class="preprocessor">#include <unistd.h></span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include <sys/uio.h></span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor"></span><span class="preprocessor">#include <io.h></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor"></span><span class="keyword">using namespace </span>clang;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#if defined(_MSC_VER)</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor"></span><span class="preprocessor">#define S_ISDIR(s) ((_S_IFDIR & s) !=0)</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="keywordtype">void</span> FileSystemStatCache::anchor() { }</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> </div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="FileSystemStatCache_8cpp.html#a5a7aa95876d19729b5b554ee3ad6ee28">   33</a></span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="FileSystemStatCache_8cpp.html#a5a7aa95876d19729b5b554ee3ad6ee28">copyStatusToFileData</a>(<span class="keyword">const</span> llvm::sys::fs::file_status &Status,</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>                                  <a class="code" href="structclang_1_1FileData.html">FileData</a> &Data) {</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>   Data.<a class="code" href="structclang_1_1FileData.html#a87a0455abc21dbbd6f7b5a107e3ed357">Size</a> = Status.getSize();</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   Data.<a class="code" href="structclang_1_1FileData.html#ae8fff96b53145306b60317a9d97469db">ModTime</a> = Status.getLastModificationTime().toEpochTime();</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   Data.<a class="code" href="structclang_1_1FileData.html#a6f2f7531dfbb6c663815b784701cfc18">UniqueID</a> = Status.getUniqueID();</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   Data.<a class="code" href="structclang_1_1FileData.html#a07710448fecef08ed14f0d897be6b3d8">IsDirectory</a> = is_directory(Status);</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>   Data.<a class="code" href="structclang_1_1FileData.html#a94fed4950d824ff952ac7ad5445360cc">IsNamedPipe</a> = Status.type() == llvm::sys::fs::file_type::fifo_file;</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   Data.<a class="code" href="structclang_1_1FileData.html#a55d931c4f6e41897dbbead938a350900">InPCH</a> = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> }</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span> <span class="comment"></span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">/// FileSystemStatCache::get - Get the 'stat' information for the specified</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">/// path, using the cache to accelerate it if possible.  This returns true if</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">/// the path does not exist or false if it exists.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">/// If isFile is true, then this lookup should only return success for files</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">/// (not directories).  If it is false this lookup should only return</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">/// success for directories (not files).  On a successful file lookup, the</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">/// implementation can optionally fill in FileDescriptor with a valid</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment">/// descriptor and the client guarantees that it will close it.</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html#adfa78f647bce6f620e2c980e99e9d087">   52</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1FileSystemStatCache.html#adfa78f647bce6f620e2c980e99e9d087" title="Get the 'stat' information for the specified path, using the cache to accelerate it if possible...">FileSystemStatCache::get</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *Path, <a class="code" href="structclang_1_1FileData.html">FileData</a> &Data, <span class="keywordtype">bool</span> isFile,</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>                               <span class="keywordtype">int</span> *FileDescriptor, <a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> *<a class="code" href="classclang_1_1TypePropertyCache.html">Cache</a>) {</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>   <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23e">LookupResult</a> R;</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="keywordtype">bool</span> isForDir = !isFile;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <span class="comment">// If we have a cache, use it to resolve the stat query.</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">if</span> (Cache)</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     R = Cache-><a class="code" href="classclang_1_1FileSystemStatCache.html#a6a9b9c1f56314a7879aa1bd4164e060c">getStat</a>(Path, Data, isFile, FileDescriptor);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordflow">else</span> <span class="keywordflow">if</span> (isForDir || !FileDescriptor) {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="comment">// If this is a directory or a file descriptor is not needed and we have</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     <span class="comment">// no cache, just go to the file system.</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     llvm::sys::fs::file_status Status;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     <span class="keywordflow">if</span> (llvm::sys::fs::status(Path, Status)) {</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>       R = <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa" title="We know that the file doesn't exist.">CacheMissing</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>       R = <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea4861b84648c1129a923b3e4b48f0a3e8" title="We know the file exists and its cached stat data.">CacheExists</a>;</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       <a class="code" href="FileSystemStatCache_8cpp.html#a5a7aa95876d19729b5b554ee3ad6ee28">copyStatusToFileData</a>(Status, Data);</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>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="comment">// Otherwise, we have to go to the filesystem.  We can always just use</span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="comment">// 'stat' here, but (for files) the client is asking whether the file exists</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     <span class="comment">// because it wants to turn around and *open* it.  It is more efficient to</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>     <span class="comment">// do "open+fstat" on success than it is to do "stat+open".</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">// Because of this, check to see if the file exists with 'open'.  If the</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="comment">// open succeeds, use fstat to get the stat info.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     llvm::error_code EC = llvm::sys::fs::openFileForRead(Path, *FileDescriptor);</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> (EC) {</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>       <span class="comment">// If the open fails, our "stat" fails.</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>       R = <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa" title="We know that the file doesn't exist.">CacheMissing</a>;</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>       <span class="comment">// Otherwise, the open succeeded.  Do an fstat to get the information</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>       <span class="comment">// about the file.  We'll end up returning the open file descriptor to the</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>       <span class="comment">// client to do what they please with it.</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>       llvm::sys::fs::file_status Status;</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>       <span class="keywordflow">if</span> (!llvm::sys::fs::status(*FileDescriptor, Status)) {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>         R = <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea4861b84648c1129a923b3e4b48f0a3e8" title="We know the file exists and its cached stat data.">CacheExists</a>;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>         <a class="code" href="FileSystemStatCache_8cpp.html#a5a7aa95876d19729b5b554ee3ad6ee28">copyStatusToFileData</a>(Status, Data);</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>         <span class="comment">// fstat rarely fails.  If it does, claim the initial open didn't</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>         <span class="comment">// succeed.</span></div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>         R = <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa" title="We know that the file doesn't exist.">CacheMissing</a>;</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>         ::close(*FileDescriptor);</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>         *FileDescriptor = -1;</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>   }</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="comment">// If the path doesn't exist, return failure.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keywordflow">if</span> (R == <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa" title="We know that the file doesn't exist.">CacheMissing</a>) <span class="keywordflow">return</span> <span class="keyword">true</span>;</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>   <span class="comment">// If the path exists, make sure that its "directoryness" matches the clients</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="comment">// demands.</span></div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   <span class="keywordflow">if</span> (Data.<a class="code" href="structclang_1_1FileData.html#a07710448fecef08ed14f0d897be6b3d8">IsDirectory</a> != isForDir) {</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>     <span class="comment">// If not, close the file if opened.</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     <span class="keywordflow">if</span> (FileDescriptor && *FileDescriptor != -1) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>       ::close(*FileDescriptor);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>       *FileDescriptor = -1;</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>     </div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</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="keywordflow">return</span> <span class="keyword">false</span>;</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> </div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23e">MemorizeStatCalls::LookupResult</a></div>
+<div class="line"><a name="l00120"></a><span class="lineno"><a class="code" href="classclang_1_1MemorizeStatCalls.html#a291ad53c0495929fbe903b149fcd4dbd">  120</a></span> <a class="code" href="classclang_1_1MemorizeStatCalls.html#a291ad53c0495929fbe903b149fcd4dbd">MemorizeStatCalls::getStat</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *Path, <a class="code" href="structclang_1_1FileData.html">FileData</a> &Data, <span class="keywordtype">bool</span> isFile,</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>                            <span class="keywordtype">int</span> *FileDescriptor) {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23e">LookupResult</a> Result = <a class="code" href="classclang_1_1FileSystemStatCache.html#ab7532f4501c95f60dff371c581f9b34b">statChained</a>(Path, Data, isFile, FileDescriptor);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span> </div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="comment">// Do not cache failed stats, it is easy to construct common inconsistent</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>   <span class="comment">// situations if we do, and they are not important for PCH performance (which</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>   <span class="comment">// currently only needs the stats to construct the initial FileManager</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>   <span class="comment">// entries).</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">if</span> (Result == <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa" title="We know that the file doesn't exist.">CacheMissing</a>)</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="keywordflow">return</span> Result;</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">// Cache file 'stat' results and directories with absolutely paths.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>   <span class="keywordflow">if</span> (!Data.<a class="code" href="structclang_1_1FileData.html#a07710448fecef08ed14f0d897be6b3d8">IsDirectory</a> || llvm::sys::path::is_absolute(Path))</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <a class="code" href="classclang_1_1MemorizeStatCalls.html#ae95bbebfc1926aac5947b8f2537c1930" title="The set of stat() calls that have been seen.">StatCalls</a>[Path] = Data;</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileSystemStatCache_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,154 @@
+<!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: FileSystemStatCache.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">FileSystemStatCache.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileSystemStatCache_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/FileSystemStatCache.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/Basic/Release+Asserts/FileSystemStatCache.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  FileSystemStatCache.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemStatCache.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/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.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/SmallString.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/Twine.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/include/llvm/Support/Path.h</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/FileSystemStatCache.h:</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> /home/tstellar/llvm/tools/clang/lib/Basic/../../include/clang/Basic/LLVM.h:</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> /home/tstellar/llvm/include/llvm/Support/Casting.h:</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> /home/tstellar/llvm/include/llvm/Support/type_traits.h:</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> /home/tstellar/llvm/include/llvm/Support/DataTypes.h:</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> /home/tstellar/llvm/include/llvm/ADT/None.h:</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</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> /home/tstellar/llvm/include/llvm/Support/Compiler.h:</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> /home/tstellar/llvm/include/llvm/Config/llvm-config.h:</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> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</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> /home/tstellar/llvm/include/llvm/ADT/StringRef.h:</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> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.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/include/llvm/Support/AlignOf.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/include/llvm/Support/MathExtras.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/include/llvm/Support/SwapByteOrder.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/include/llvm/Support/FileSystem.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/ADT/IntrusiveRefCntPtr.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/ADT/SmallString.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/ADT/SmallVector.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/Twine.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/Support/ErrorHandling.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/Support/TimeValue.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/system_error.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/Path.h:</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:38 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/FileSystemStatCache_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/FileSystemStatCache_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,194 @@
+<!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: FileSystemStatCache.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">FileSystemStatCache.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="FileSystemStatCache_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">//===--- FileSystemStatCache.h - Caching for 'stat' calls -------*- 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 FileSystemStatCache interface.</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_FILESYSTEMSTATCACHE_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_FILESYSTEMSTATCACHE_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/ADT/OwningPtr.h"</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 "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include <sys/stat.h></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include <sys/types.h></span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">namespace </span>clang {</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html">   27</a></span> <span class="keyword">struct </span><a class="code" href="structclang_1_1FileData.html">FileData</a> {</div>
+<div class="line"><a name="l00028"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html#a87a0455abc21dbbd6f7b5a107e3ed357">   28</a></span>   uint64_t <a class="code" href="structclang_1_1FileData.html#a87a0455abc21dbbd6f7b5a107e3ed357">Size</a>;</div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html#ae8fff96b53145306b60317a9d97469db">   29</a></span>   time_t <a class="code" href="structclang_1_1FileData.html#ae8fff96b53145306b60317a9d97469db">ModTime</a>;</div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html#a6f2f7531dfbb6c663815b784701cfc18">   30</a></span>   llvm::sys::fs::UniqueID <a class="code" href="structclang_1_1FileData.html#a6f2f7531dfbb6c663815b784701cfc18">UniqueID</a>;</div>
+<div class="line"><a name="l00031"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html#a07710448fecef08ed14f0d897be6b3d8">   31</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1FileData.html#a07710448fecef08ed14f0d897be6b3d8">IsDirectory</a>;</div>
+<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html#a94fed4950d824ff952ac7ad5445360cc">   32</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1FileData.html#a94fed4950d824ff952ac7ad5445360cc">IsNamedPipe</a>;</div>
+<div class="line"><a name="l00033"></a><span class="lineno"><a class="code" href="structclang_1_1FileData.html#a55d931c4f6e41897dbbead938a350900">   33</a></span>   <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1FileData.html#a55d931c4f6e41897dbbead938a350900">InPCH</a>;</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">/// \brief Abstract interface for introducing a FileManager cache for 'stat'</span></div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="comment">/// system calls, which is used by precompiled and pretokenized headers to</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">/// improve performance.</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html">   39</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1FileSystemStatCache.html" title="Abstract interface for introducing a FileManager cache for 'stat' system calls, which is used by prec...">FileSystemStatCache</a> {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> anchor();</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">protected</span>:</div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html#a1fac44c303eed60ce1e95377f83b622e">   42</a></span>   <a class="code" href="classllvm_1_1OwningPtr.html">OwningPtr<FileSystemStatCache></a> <a class="code" href="classclang_1_1FileSystemStatCache.html#a1fac44c303eed60ce1e95377f83b622e">NextStatCache</a>;</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="keyword">public</span>:</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html#a23a68a853576bb0c21fde8deb1946539">   45</a></span>   <span class="keyword">virtual</span> <a class="code" href="classclang_1_1FileSystemStatCache.html#a23a68a853576bb0c21fde8deb1946539">~FileSystemStatCache</a>() {}</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   </div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23e">   47</a></span>   <span class="keyword">enum</span> <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23e">LookupResult</a> {</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea4861b84648c1129a923b3e4b48f0a3e8">   48</a></span>     <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea4861b84648c1129a923b3e4b48f0a3e8" title="We know the file exists and its cached stat data.">CacheExists</a>,   <span class="comment">///< We know the file exists and its cached stat data.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa">   49</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1FileSystemStatCache.html#a1c580b0c1808de2073cb0d1bb4afb23ea35fd84f82ba257f7ec06f4d42a1cfbfa" title="We know that the file doesn't exist.">CacheMissing</a>   <span class="comment">///< We know that the file doesn't exist.</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment"></span>  };</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span> <span class="comment"></span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">  /// \brief Get the 'stat' information for the specified path, using the cache</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">  /// to accelerate it if possible.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">  /// \returns \c true if the path does not exist or \c false if it exists.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> <span class="comment">  /// If isFile is true, then this lookup should only return success for files</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="comment">  /// (not directories).  If it is false this lookup should only return</span></div>
+<div class="