[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/ModuleManager_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleManager_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleManager_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleManager_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,362 @@
+<!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: ModuleManager.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_0dc2050340a96003388a0ee3c6e6b064.html">Serialization</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ModuleManager.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ModuleManager_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">//===--- ModuleManager.cpp - Module Manager ---------------------*- 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 ModuleManager class, which manages a set of loaded</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  modules for the ASTReader.</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_SERIALIZATION_MODULE_MANAGER_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_SERIALIZATION_MODULE_MANAGER_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="FileManager_8h.html" title="Defines the clang::FileManager interface and associated types.">clang/Basic/FileManager.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="Serialization_2Module_8h.html">clang/Serialization/Module.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> </div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="keyword">namespace </span>clang { </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">class </span>GlobalModuleIndex;</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="keyword">class </span>ModuleMap;</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="keyword">namespace </span>serialization {</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment"></span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="comment">/// \brief Manages the set of modules loaded by an AST reader.</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html">   30</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html" title="Manages the set of modules loaded by an AST reader.">ModuleManager</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">  /// \brief The chain of AST files. The first entry is the one named by the</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">  /// user, the last one is the one that doesn't depend on anything further.</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<ModuleFile *, 2></a> Chain;</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 All loaded modules, indexed by name.</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="comment"></span>  llvm::DenseMap<const FileEntry *, ModuleFile *> Modules;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">  /// \brief FileManager that handles translating between filenames and</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">  /// FileEntry *.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment"></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> &FileMgr;</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">  /// \brief A lookup of in-memory (virtual file) buffers</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment"></span>  llvm::DenseMap<const FileEntry *, llvm::MemoryBuffer *> InMemoryBuffers;</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 The visitation order.</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<ModuleFile *, 4></a> VisitOrder;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>       <span class="comment"></span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> <span class="comment">  /// \brief The list of module files that both we and the global module index</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> <span class="comment">  /// know about.</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">  /// Either the global index or the module manager may have modules that the</span></div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment">  /// other does not know about, because the global index can be out-of-date</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">  /// (in which case the module manager could have modules it does not) and</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment">  /// this particular translation unit might not have loaded all of the modules</span></div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span> <span class="comment">  /// known to the global index.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <span class="comment"></span>  <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<ModuleFile *, 4></a> ModulesInCommonWithGlobalIndex;</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">  /// \brief The global module index, if one is attached.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span> <span class="comment">  /// The global module index will actually be owned by the ASTReader; this is</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span> <span class="comment">  /// just an non-owning pointer.</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span> <span class="comment"></span>  <a class="code" href="classclang_1_1GlobalModuleIndex.html" title="A global index for a set of module files, providing information about the identifiers within those mo...">GlobalModuleIndex</a> *GlobalIndex;</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 State used by the "visit" operation to avoid malloc traffic in</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment">  /// calls to visit().</span></div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> <span class="comment"></span>  <span class="keyword">struct </span>VisitState {</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>     <span class="keyword">explicit</span> VisitState(<span class="keywordtype">unsigned</span> N)</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>       : VisitNumber(N, 0), NextVisitNumber(1), NextState(0)</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>       <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>.reserve(N);</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> </div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>     ~VisitState() {</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>       <span class="keyword">delete</span> NextState;</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="comment"></span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span> <span class="comment">    /// \brief The stack used when marking the imports of a particular module</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> <span class="comment">    /// as not-to-be-visited.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<ModuleFile *, 4></a> <a class="code" href="UnwrappedLineParser_8cpp.html#a118f9e9887ee5c70966fe9b74b815f79">Stack</a>;</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">    /// \brief The visit number of each module file, which indicates when</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment">    /// this module file was last visited.</span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment"></span>    <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<unsigned, 4></a> VisitNumber;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment"></span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">    /// \brief The next visit number to use to mark visited module files.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span> <span class="comment"></span>    <span class="keywordtype">unsigned</span> NextVisitNumber;</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 The next visit state.</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="comment"></span>    VisitState *NextState;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">  /// \brief The first visit() state in the chain.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span> <span class="comment"></span>  VisitState *FirstVisitState;</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>   VisitState *allocateVisitState();</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>   <span class="keywordtype">void</span> returnVisitState(VisitState *<a class="code" href="Format_8cpp.html#a83e9e4ff6cb05dbdf72ab2a01aa289c0">State</a>);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> </div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a45d0c34b971032d2314c7b69f1603939">   99</a></span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<ModuleFile*>::iterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a45d0c34b971032d2314c7b69f1603939">ModuleIterator</a>;</div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3759caf5e3ac84ffe58f6d2fd884b8d2">  100</a></span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<ModuleFile*>::const_iterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3759caf5e3ac84ffe58f6d2fd884b8d2">ModuleConstIterator</a>;</div>
+<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3e102cbc84899a38ecbdb37cc6bcade8">  101</a></span>   <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<ModuleFile*>::reverse_iterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3e102cbc84899a38ecbdb37cc6bcade8">ModuleReverseIterator</a>;</div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#af047c1a5ab38420046f5345245bdc482">  102</a></span>   <span class="keyword">typedef</span> std::pair<uint32_t, StringRef> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#af047c1a5ab38420046f5345245bdc482">ModuleOffset</a>;</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="keyword">explicit</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a28a78b4bb2dc8ffe55dbfbd7e9947ef2">ModuleManager</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="l00105"></a><span class="lineno">  105</span>   <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a4f7e83d51dcbc461d2514f44d21aacb4">~ModuleManager</a>();</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 Forward iterator to traverse all loaded modules.  This is reverse</span></div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="comment">  /// source-order.</span></div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a6e426db31e4fb8f13e7b4c80ae40b7d5">  109</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a45d0c34b971032d2314c7b69f1603939">ModuleIterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a6e426db31e4fb8f13e7b4c80ae40b7d5" title="Forward iterator to traverse all loaded modules. This is reverse source-order.">begin</a>() { <span class="keywordflow">return</span> Chain.begin(); }<span class="comment"></span></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span> <span class="comment">  /// \brief Forward iterator end-point to traverse all loaded modules</span></div>
+<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a9ae0715ad1ab54078eab0c41b144b263">  111</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a45d0c34b971032d2314c7b69f1603939">ModuleIterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a9ae0715ad1ab54078eab0c41b144b263" title="Forward iterator end-point to traverse all loaded modules.">end</a>() { <span class="keywordflow">return</span> Chain.end(); }</div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">  /// \brief Const forward iterator to traverse all loaded modules.  This is </span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">  /// in reverse source-order.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#ada5c50f844427eaefffe11220f3a6807">  115</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3759caf5e3ac84ffe58f6d2fd884b8d2">ModuleConstIterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#ada5c50f844427eaefffe11220f3a6807" title="Const forward iterator to traverse all loaded modules. This is in reverse source-order.">begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Chain.begin(); }<span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// \brief Const forward iterator end-point to traverse all loaded modules</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a4aa1862018c5840d6979369988384fc2">  117</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3759caf5e3ac84ffe58f6d2fd884b8d2">ModuleConstIterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a4aa1862018c5840d6979369988384fc2" title="Const forward iterator end-point to traverse all loaded modules.">end</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Chain.end(); }</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">  /// \brief Reverse iterator to traverse all loaded modules.  This is in </span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// source order.</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a5a3e9ad21f7bda93f65f316126f35d91">  121</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3e102cbc84899a38ecbdb37cc6bcade8">ModuleReverseIterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a5a3e9ad21f7bda93f65f316126f35d91" title="Reverse iterator to traverse all loaded modules. This is in source order.">rbegin</a>() { <span class="keywordflow">return</span> Chain.rbegin(); }<span class="comment"></span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">  /// \brief Reverse iterator end-point to traverse all loaded modules.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#ac87569fa216d66398e8ff3b0de6fcdbc">  123</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3e102cbc84899a38ecbdb37cc6bcade8">ModuleReverseIterator</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#ac87569fa216d66398e8ff3b0de6fcdbc" title="Reverse iterator end-point to traverse all loaded modules.">rend</a>() { <span class="keywordflow">return</span> Chain.rend(); }</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment">  /// \brief Returns the primary module associated with the manager, that is,</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span> <span class="comment">  /// the first module loaded</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3789c7d5f6dcec7382ef69d452607164">  127</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> &<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3789c7d5f6dcec7382ef69d452607164" title="Returns the primary module associated with the manager, that is, the first module loaded...">getPrimaryModule</a>() { <span class="keywordflow">return</span> *Chain[0]; }</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">  /// \brief Returns the primary module associated with the manager, that is,</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment">  /// the first module loaded.</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a1da83366d2b656c805020e0cb83fad27">  131</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> &<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a1da83366d2b656c805020e0cb83fad27" title="Returns the primary module associated with the manager, that is, the first module loaded...">getPrimaryModule</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *Chain[0]; }</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 Returns the module associated with the given index</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a6bc781897693fb96397fdef0623d0576">  134</a></span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> &<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a6bc781897693fb96397fdef0623d0576" title="Returns the module associated with the given index.">operator[]</a>(<span class="keywordtype">unsigned</span> Index)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> *Chain[Index]; }</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment">  /// \brief Returns the module associated with the given name</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> *<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a4b14a8eba3914c834a5c6888d8d4aa7b" title="Returns the module associated with the given name.">lookup</a>(StringRef Name);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">  /// \brief Returns the module associated with the given module file.</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> *<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a4b14a8eba3914c834a5c6888d8d4aa7b" title="Returns the module associated with the given name.">lookup</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment"></span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// \brief Returns the in-memory (virtual file) buffer with the given name</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> <span class="comment"></span>  llvm::MemoryBuffer *<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a7ac9c796d34765d381ac09eb437053f3" title="Returns the in-memory (virtual file) buffer with the given name.">lookupBuffer</a>(StringRef Name);</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 Number of modules loaded</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a10380278939524dc363ae4baf37f8be0">  146</a></span> <span class="comment"></span>  <span class="keywordtype">unsigned</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a10380278939524dc363ae4baf37f8be0" title="Number of modules loaded.">size</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Chain.size(); }</div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> <span class="comment"></span></div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> <span class="comment">  /// \brief The result of attempting to add a new module.</span></div>
+<div class="line"><a name="l00149"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247e">  149</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247e" title="The result of attempting to add a new module.">AddModuleResult</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">    /// \brief The module file had already been loaded.</span></div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247eac6380ac7fe96921fca1cb6531e2d9b15">  151</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247eac6380ac7fe96921fca1cb6531e2d9b15" title="The module file had already been loaded.">AlreadyLoaded</a>,<span class="comment"></span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">    /// \brief The module file was just loaded in response to this call.</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247ea8dee337c18357c59f649d5943c792ca5">  153</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247ea8dee337c18357c59f649d5943c792ca5" title="The module file was just loaded in response to this call.">NewlyLoaded</a>,<span class="comment"></span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> <span class="comment">    /// \brief The module file is missing.</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247ea004dcab30bfaf597bd12a6aaa1593c59">  155</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247ea004dcab30bfaf597bd12a6aaa1593c59" title="The module file is missing.">Missing</a>,<span class="comment"></span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">    /// \brief The module file is out-of-date.</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno"><a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247ea201fdd1ab5aa641d6866d441b984102a">  157</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247ea201fdd1ab5aa641d6866d441b984102a" title="The module file is out-of-date.">OutOfDate</a></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> <span class="comment"></span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">  /// \brief Attempts to create a new module and add it to the list of known</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment">  /// modules.</span></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">  /// \param FileName The file name of the module to be loaded.</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">  /// \param Type The kind of module being loaded.</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">  /// \param ImportLoc The location at which the module is imported.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">  /// \param ImportedBy The module that is importing this module, or NULL if</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="comment">  /// this module is imported directly by the user.</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">  /// \param Generation The generation in which this module was loaded.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">  /// \param ExpectedSize The expected size of the module file, used for</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">  /// validation. This will be zero if unknown.</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> <span class="comment">  /// \param ExpectedModTime The expected modification time of the module</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="comment">  /// file, used for validation. This will be zero if unknown.</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">  /// \param Module A pointer to the module file if the module was successfully</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">  /// loaded.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// \param ErrorStr Will be set to a non-empty string if any errors occurred</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> <span class="comment">  /// while trying to load the module.</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// \return A pointer to the module that corresponds to this file name,</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> <span class="comment">  /// and a value indicating whether the module was loaded.</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> <span class="comment"></span>  <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a3d4d359e0be095e787167c26501f247e" title="The result of attempting to add a new module.">AddModuleResult</a> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a23485b84fb8a7539b80e2de48e8550f1" title="Attempts to create a new module and add it to the list of known modules.">addModule</a>(StringRef FileName, <a class="code" href="namespaceclang_1_1serialization.html#ac4e913a3b4b4721b8995cb7dd6d9bb1e" title="Specifies the kind of module that has been loaded.">ModuleKind</a> <a class="code" href="classclang_1_1Type.html">Type</a>,</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>                             <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ImportLoc,</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>                             <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> *ImportedBy, <span class="keywordtype">unsigned</span> Generation,</div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>                             off_t ExpectedSize, time_t ExpectedModTime,</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>                             <a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> *&<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a>,</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>                             std::string &ErrorStr);</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment"></span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">  /// \brief Remove the given set of modules.</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_1serialization_1_1ModuleManager.html#a06cbf8d6526c680f265f4154f21f80f0" title="Remove the given set of modules.">removeModules</a>(<a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a45d0c34b971032d2314c7b69f1603939">ModuleIterator</a> first, <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a45d0c34b971032d2314c7b69f1603939">ModuleIterator</a> last,</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>                      <a class="code" href="classclang_1_1ModuleMap.html">ModuleMap</a> *modMap);</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment"></span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">  /// \brief Add an in-memory buffer the list of known buffers</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#ac2ef87d9d068134e771e6e00492c5c77" title="Add an in-memory buffer the list of known buffers.">addInMemoryBuffer</a>(StringRef FileName, llvm::MemoryBuffer *Buffer);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment"></span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">  /// \brief Set the global module index.</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a71e29834c501fcdf3974877c5d6cde0d" title="Set the global module index.">setGlobalIndex</a>(<a class="code" href="classclang_1_1GlobalModuleIndex.html" title="A global index for a set of module files, providing information about the identifiers within those mo...">GlobalModuleIndex</a> *Index);</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> <span class="comment"></span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> <span class="comment">  /// \brief Notification from the AST reader that the given module file</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> <span class="comment">  /// has been "accepted", and will not (can not) be unloaded.</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a47c7af47c60288c5254e2ea0d696200c" title="Notification from the AST reader that the given module file has been "accepted", and will not (can no...">moduleFileAccepted</a>(<a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> *MF);</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">  /// \brief Visit each of the modules.</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">  /// This routine visits each of the modules, starting with the</span></div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> <span class="comment">  /// "root" modules that no other loaded modules depend on, and</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// proceeding to the leaf modules, visiting each module only once</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// during the traversal.</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">  /// This traversal is intended to support various "lookup"</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">  /// operations that can find data in any of the loaded modules.</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 Visitor A visitor function that will be invoked with each</span></div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> <span class="comment">  /// module and the given user data pointer. The return value must be</span></div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment">  /// convertible to bool; when false, the visitation continues to</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">  /// modules that the current module depends on. When true, the</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">  /// visitation skips any modules that the current module depends on.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> <span class="comment">  /// \param UserData User data associated with the visitor object, which</span></div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> <span class="comment">  /// will be passed along to the visitor.</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 ModuleFilesHit If non-NULL, contains the set of module files</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> <span class="comment">  /// that we know we need to visit because the global module index told us to.</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> <span class="comment">  /// Any module that is known to both the global module index and the module</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment">  /// manager that is *not* in this set can be skipped.</span></div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#ac18e863c625539f388b9b5dfe123086b" title="Visit each of the modules.">visit</a>(<span class="keywordtype">bool</span> (*Visitor)(<a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> &M, <span class="keywordtype">void</span> *UserData), <span class="keywordtype">void</span> *UserData,</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>              llvm::SmallPtrSet<ModuleFile *, 4> *ModuleFilesHit = 0);</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> <span class="comment">  /// \brief Visit each of the modules with a depth-first traversal.</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">  /// This routine visits each of the modules known to the module</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">  /// manager using a depth-first search, starting with the first</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">  /// loaded module. The traversal invokes the callback both before</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">  /// traversing the children (preorder traversal) and after</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">  /// traversing the children (postorder traversal).</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment">  /// \param Visitor A visitor function that will be invoked with each</span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// module and given a \c Preorder flag that indicates whether we're</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">  /// visiting the module before or after visiting its children.  The</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">  /// visitor may return true at any time to abort the depth-first</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">  /// visitation.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">  /// \param UserData User data ssociated with the visitor object,</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">  /// which will be passed along to the user.</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a281ae5b792559a52bde94650192b7c0f" title="Visit each of the modules with a depth-first traversal.">visitDepthFirst</a>(<span class="keywordtype">bool</span> (*Visitor)(<a class="code" href="classclang_1_1serialization_1_1ModuleFile.html" title="Information about a module that has been loaded by the ASTReader.">ModuleFile</a> &M, <span class="keywordtype">bool</span> Preorder, </div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>                                        <span class="keywordtype">void</span> *UserData), </div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>                        <span class="keywordtype">void</span> *UserData);</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span> <span class="comment"></span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">  /// \brief Attempt to resolve the given module file name to a file entry.</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">  /// \param FileName The name of the module file.</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">  /// \param ExpectedSize The size that the module file is expected to have.</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">  /// If the actual size differs, the resolver should return \c true.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="comment">  /// \param ExpectedModTime The modification time that the module file is</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="comment">  /// expected to have. If the actual modification time differs, the resolver</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="comment">  /// should return \c true.</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> <span class="comment">  /// \param File Will be set to the file if there is one, or null</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment">  /// otherwise.</span></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">  /// \returns True if a file exists but does not meet the size/</span></div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span> <span class="comment">  /// modification time criteria, false if the file is either available and</span></div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span> <span class="comment">  /// suitable, or is missing.</span></div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#af2e264eb2a0c7f544ff1a2062048753f" title="Attempt to resolve the given module file name to a file entry.">lookupModuleFile</a>(StringRef FileName,</div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>                         off_t ExpectedSize,</div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>                         time_t ExpectedModTime,</div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</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);</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="comment"></span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> <span class="comment">  /// \brief View the graphviz representation of the module graph.</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1serialization_1_1ModuleManager.html#a646175dce481c60e387276979b0a6dd5" title="View the graphviz representation of the module graph.">viewGraph</a>();</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> </div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> } } <span class="comment">// end namespace clang::serialization</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> </div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:43 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/ModuleMap_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,2220 @@
+<!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: ModuleMap.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_925be8e1c75f746b0aee1084b3b1a980.html">Lex</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ModuleMap.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ModuleMap_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">//===--- ModuleMap.cpp - Describe the layout of modules ---------*- 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 ModuleMap implementation, which describes the layout</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// of a module as it relates to headers.</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">#include "<a class="code" href="ModuleMap_8h.html">clang/Lex/ModuleMap.h</a>"</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span> <span class="preprocessor">#include "<a class="code" href="CharInfo_8h.html">clang/Basic/CharInfo.h</a>"</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</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="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="DiagnosticOptions_8h.html">clang/Basic/DiagnosticOptions.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</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="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="include_2clang_2Basic_2TargetInfo_8h.html" title="Defines the clang::TargetInfo interface.">clang/Basic/TargetInfo.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="TargetOptions_8h.html" title="Defines the clang::TargetOptions class.">clang/Basic/TargetOptions.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="HeaderSearch_8h.html">clang/Lex/HeaderSearch.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "<a class="code" href="LexDiagnostic_8h.html">clang/Lex/LexDiagnostic.h</a>"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "<a class="code" href="Lexer_8h.html">clang/Lex/Lexer.h</a>"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "<a class="code" href="LiteralSupport_8h.html">clang/Lex/LiteralSupport.h</a>"</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/ADT/StringSwitch.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include "llvm/Support/Allocator.h"</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="preprocessor">#include "llvm/Support/FileSystem.h"</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="preprocessor">#include "llvm/Support/Host.h"</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="preprocessor">#include "llvm/Support/Path.h"</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="preprocessor">#include "llvm/Support/raw_ostream.h"</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="preprocessor">#include <stdlib.h></span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="preprocessor">#if defined(LLVM_ON_UNIX)</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</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="l00035"></a><span class="lineno">   35</span> <span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="preprocessor"></span><span class="keyword">using namespace </span>clang;</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> <a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a> </div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> ModuleMap::resolveExport(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>                          <span class="keyword">const</span> <a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html" title="Describes an exported module that has not yet been resolved (perhaps because the module it refers to ...">Module::UnresolvedExportDecl</a> &Unresolved,</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>                          <span class="keywordtype">bool</span> Complain)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="comment">// We may have just a wildcard.</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keywordflow">if</span> (Unresolved.<a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html#acdcebf92eeac8b0448d3db4ebff40395" title="The name of the module.">Id</a>.empty()) {</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>     assert(Unresolved.<a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html#aa519b34242ddc787d61235d883f4700c" title="Whether this export declaration ends in a wildcard, indicating that all of its submodules should be e...">Wildcard</a> && <span class="stringliteral">"Invalid unresolved export"</span>);</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a>(0, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>   }</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>   </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>   <span class="comment">// Resolve the module-id.</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a> = resolveModuleId(Unresolved.<a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html#acdcebf92eeac8b0448d3db4ebff40395" title="The name of the module.">Id</a>, Mod, Complain);</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>   <span class="keywordflow">if</span> (!Context)</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a>();</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a>(Context, Unresolved.<a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html#aa519b34242ddc787d61235d883f4700c" title="Whether this export declaration ends in a wildcard, indicating that all of its submodules should be e...">Wildcard</a>);</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> </div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *ModuleMap::resolveModuleId(<span class="keyword">const</span> <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> &Id, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod,</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>                                    <span class="keywordtype">bool</span> Complain)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="comment">// Find the starting module.</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Context = <a class="code" href="classclang_1_1ModuleMap.html#a4227573c64ca68ac5f24f27de1f57b49" title="Retrieve a module with the given name using lexical name lookup, starting at the given context...">lookupModuleUnqualified</a>(Id[0].first, Mod);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>   <span class="keywordflow">if</span> (!Context) {</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     <span class="keywordflow">if</span> (Complain)</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>       Diags->Report(Id[0].second, diag::err_mmap_missing_module_unqualified)</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>       << Id[0].first << Mod-><a class="code" href="classclang_1_1Module.html#a3d720c72f2fe28832745046e83b8607a" title="Retrieve the full name of this module, including the path from its top-level module.">getFullModuleName</a>();</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> </div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>   }</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>   <span class="comment">// Dig into the module path.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 1, N = Id.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Sub = <a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(Id[I].first, Context);</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     <span class="keywordflow">if</span> (!Sub) {</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>       <span class="keywordflow">if</span> (Complain)</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>         Diags->Report(Id[I].second, diag::err_mmap_missing_module_qualified)</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>         << Id[I].first << Context-><a class="code" href="classclang_1_1Module.html#a3d720c72f2fe28832745046e83b8607a" title="Retrieve the full name of this module, including the path from its top-level module.">getFullModuleName</a>()</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>         << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(Id[0].second, Id[I-1].second);</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="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     }</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     Context = Sub;</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> </div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>   <span class="keywordflow">return</span> <a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> }</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> </div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a34520f3076456909ca2ac7e391dc12e2">   86</a></span> <a class="code" href="classclang_1_1ModuleMap.html#a34520f3076456909ca2ac7e391dc12e2" title="Construct a new module map.">ModuleMap::ModuleMap</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="Format_8cpp.html#a8b28f9f83ac8256fbde7e45b0f874f27">SourceMgr</a>, <a class="code" href="classclang_1_1DiagnosticConsumer.html" title="Abstract interface, implemented by clients of the front-end, which formats and prints fully processed...">DiagnosticConsumer</a> &DC,</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>                      <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &LangOpts, <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> *Target,</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>                      <a class="code" href="classclang_1_1HeaderSearch.html" title="Encapsulates the information needed to find the file referenced by a #include or #include_next, (sub-)framework lookup, etc.">HeaderSearch</a> &HeaderInfo)</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     : SourceMgr(SourceMgr), LangOpts(LangOpts), Target(Target),</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>       HeaderInfo(HeaderInfo), BuiltinIncludeDir(0), CompilingModule(0),</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>       SourceModule(0) {</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <a class="code" href="classllvm_1_1IntrusiveRefCntPtr.html">IntrusiveRefCntPtr<DiagnosticIDs></a> DiagIDs(<span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticIDs.html" title="Used for handling and querying diagnostic IDs.">DiagnosticIDs</a>);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   Diags = <a class="code" href="classllvm_1_1IntrusiveRefCntPtr.html">IntrusiveRefCntPtr<DiagnosticsEngine></a>(</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>             <span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a>(DiagIDs, <span class="keyword">new</span> <a class="code" href="classclang_1_1DiagnosticOptions.html" title="Options for controlling the compiler diagnostics engine.">DiagnosticOptions</a>));</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   Diags->setClient(<span class="keyword">new</span> <a class="code" href="classclang_1_1ForwardingDiagnosticConsumer.html" title="Diagnostic consumer that forwards diagnostics along to an existing, already-initialized diagnostic co...">ForwardingDiagnosticConsumer</a>(DC),</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                    <span class="comment">/*ShouldOwnClient=*/</span><span class="keyword">true</span>);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   Diags->setSourceManager(&SourceMgr);</div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span> }</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> </div>
+<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#ab8769cd7eba3cb7f8f1cd2dde890603d">  100</a></span> <a class="code" href="classclang_1_1ModuleMap.html#ab8769cd7eba3cb7f8f1cd2dde890603d" title="Destroy the module map.">ModuleMap::~ModuleMap</a>() {</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>   <span class="keywordflow">for</span> (llvm::StringMap<Module *>::iterator I = Modules.begin(), </div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>                                         IEnd = Modules.end();</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>        I != IEnd; ++I) {</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="keyword">delete</span> I->getValue();</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> }</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#abc441df169e00dbd5ab3a5db003d454f">  108</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#abc441df169e00dbd5ab3a5db003d454f" title="Set the target information.">ModuleMap::setTarget</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &Target) {</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   assert((!this->Target || this->Target == &Target) && </div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>          <span class="stringliteral">"Improper target override"</span>);</div>
+<div class="line"><a name="l00111"></a><span class="lineno">  111</span>   this->Target = &Target;</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="comment"></span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment">/// \brief "Sanitize" a filename so that it can be used as an identifier.</span></div>
+<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802">  115</a></span> <span class="comment"></span><span class="keyword">static</span> StringRef <a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802" title=""Sanitize" a filename so that it can be used as an identifier.">sanitizeFilenameAsIdentifier</a>(StringRef Name,</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span>                                               <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<char></a> &Buffer) {</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>   <span class="keywordflow">if</span> (Name.empty())</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     <span class="keywordflow">return</span> Name;</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> </div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>   <span class="keywordflow">if</span> (!<a class="code" href="namespaceclang.html#ac29c2aade1752d6508313947ae5e177b">isValidIdentifier</a>(Name)) {</div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>     <span class="comment">// If we don't already have something with the form of an identifier,</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>     <span class="comment">// create a buffer with the sanitized name.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     Buffer.clear();</div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>     <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a8e582a38f36d9c625d3e31bce653befe" title="Return true if this character is an ASCII digit: [0-9].">isDigit</a>(Name[0]))</div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>       Buffer.push_back(<span class="charliteral">'_'</span>);</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     Buffer.reserve(Buffer.size() + Name.size());</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Name.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>       <span class="keywordflow">if</span> (<a class="code" href="namespaceclang.html#a9135ccefd791dcad66d31a5d83a8e8bf">isIdentifierBody</a>(Name[I]))</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>         Buffer.push_back(Name[I]);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>         Buffer.push_back(<span class="charliteral">'_'</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> </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>     Name = StringRef(Buffer.data(), Buffer.size());</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> </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   <span class="keywordflow">while</span> (llvm::StringSwitch<bool>(Name)</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="preprocessor">#define KEYWORD(Keyword,Conditions) .Case(#Keyword, true)</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="preprocessor"></span><span class="preprocessor">#define ALIAS(Keyword, AliasOf, Conditions) .Case(Keyword, true)</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="preprocessor"></span><span class="preprocessor">#include "clang/Basic/TokenKinds.def"</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>            .Default(<span class="keyword">false</span>)) {</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>     <span class="keywordflow">if</span> (Name.data() != Buffer.data())</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>       Buffer.append(Name.begin(), Name.end());</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     Buffer.push_back(<span class="charliteral">'_'</span>);</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     Name = StringRef(Buffer.data(), Buffer.size());</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="keywordflow">return</span> Name;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> <span class="comment">/// \brief Determine whether the given file name is the name of a builtin</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> <span class="comment">/// header, supplied by Clang to replace, override, or augment existing system</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> <span class="comment">/// headers.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno"><a class="code" href="ModuleMap_8cpp.html#a6b6fef8d0ee38234c3fff3e6f328474d">  154</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="ModuleMap_8cpp.html#a6b6fef8d0ee38234c3fff3e6f328474d" title="Determine whether the given file name is the name of a builtin header, supplied by Clang to replace...">isBuiltinHeader</a>(StringRef FileName) {</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>   <span class="keywordflow">return</span> llvm::StringSwitch<bool>(FileName)</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>            .Case(<span class="stringliteral">"float.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>            .Case(<span class="stringliteral">"iso646.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>            .Case(<span class="stringliteral">"limits.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>            .Case(<span class="stringliteral">"stdalign.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>            .Case(<span class="stringliteral">"stdarg.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>            .Case(<span class="stringliteral">"stdbool.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>            .Case(<span class="stringliteral">"stddef.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>            .Case(<span class="stringliteral">"stdint.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>            .Case(<span class="stringliteral">"tgmath.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>            .Case(<span class="stringliteral">"unwind.h"</span>, <span class="keyword">true</span>)</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>            .Default(<span class="keyword">false</span>);</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> }</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">ModuleMap::KnownHeader</a></div>
+<div class="line"><a name="l00170"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9">  170</a></span> <a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9" title="Retrieve the module that owns the given header file, if any.">ModuleMap::findModuleForHeader</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File,</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>                                <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestingModule) {</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>   HeadersMap::iterator Known = Headers.find(File);</div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>   <span class="keywordflow">if</span> (Known != Headers.end()) {</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>     <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">ModuleMap::KnownHeader</a> Result = <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>();</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> </div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>     <span class="comment">// Iterate over all modules that 'File' is part of to find the best fit.</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<KnownHeader>::iterator</a> I = Known->second.begin(),</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>                                                 E = Known->second.end();</div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>          I != E; ++I) {</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>       <span class="comment">// Cannot use a module if the header is excluded or unavailable in it.</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>       <span class="keywordflow">if</span> (I->getRole() == <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca29ca8d089c3fd646d54e611219d0d877" title="This header is explicitly excluded from the module.">ModuleMap::ExcludedHeader</a> ||</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>           !I->getModule()->isAvailable())</div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>       <span class="comment">// If 'File' is part of 'RequestingModule', 'RequestingModule' is the</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>       <span class="comment">// module we are looking for.</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>       <span class="keywordflow">if</span> (I->getModule() == RequestingModule)</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>         <span class="keywordflow">return</span> *I;</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">// If uses need to be specified explicitly, we are only allowed to return</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>       <span class="comment">// modules that are explicitly used by the requesting module.</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>       <span class="keywordflow">if</span> (RequestingModule && LangOpts.ModulesDeclUse &&</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>           std::find(RequestingModule-><a class="code" href="classclang_1_1Module.html#a95775566d8066cb0ede2cfd01a338c1e" title="The directly used modules.">DirectUses</a>.begin(),</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>                     RequestingModule-><a class="code" href="classclang_1_1Module.html#a95775566d8066cb0ede2cfd01a338c1e" title="The directly used modules.">DirectUses</a>.end(),</div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>                     I->getModule()) == RequestingModule-><a class="code" href="classclang_1_1Module.html#a95775566d8066cb0ede2cfd01a338c1e" title="The directly used modules.">DirectUses</a>.end())</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>       Result = *I;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>       <span class="comment">// If 'File' is a public header of this module, this is as good as we</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>       <span class="comment">// are going to get.</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>       <span class="keywordflow">if</span> (I->getRole() == <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">ModuleMap::NormalHeader</a>)</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>     }</div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>     <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>   }</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> </div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>   <span class="comment">// If we've found a builtin header within Clang's builtin include directory,</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>   <span class="comment">// load all of the module maps to see if it will get associated with a</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>   <span class="comment">// specific module (e.g., in /usr/include).</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>   <span class="keywordflow">if</span> (File-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>() == BuiltinIncludeDir &&</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>       <a class="code" href="ModuleMap_8cpp.html#a6b6fef8d0ee38234c3fff3e6f328474d" title="Determine whether the given file name is the name of a builtin header, supplied by Clang to replace...">isBuiltinHeader</a>(llvm::sys::path::filename(File-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()))) {</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>     HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a7998076a7a2d0fb9246014cf246d4774" title="Load all known, top-level system modules.">loadTopLevelSystemModules</a>();</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>     <span class="comment">// Check again.</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>     <span class="keywordflow">if</span> (Headers.find(File) != Headers.end())</div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9" title="Retrieve the module that owns the given header file, if any.">findModuleForHeader</a>(File, RequestingModule);</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>   }</div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>   </div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</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 = File-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>();</div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const DirectoryEntry *, 2></a> SkippedDirs;</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>   <span class="comment">// Note: as an egregious but useful hack we use the real path here, because</span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span>   <span class="comment">// frameworks moving from top-level frameworks to embedded frameworks tend</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span>   <span class="comment">// to be symlinked from the top-level location to the embedded location,</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>   <span class="comment">// and we need to resolve lookups as if we had found the embedded location.</span></div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span>   StringRef DirName = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#aefc9a0b6440701f04541eb6e74447bb2" title="Retrieve the canonical name for a given directory.">getCanonicalName</a>(Dir);</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>   <span class="comment">// Keep walking up the directory hierarchy, looking for a directory with</span></div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>   <span class="comment">// an umbrella header.</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>   <span class="keywordflow">do</span> {    </div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span>     llvm::DenseMap<const DirectoryEntry *, Module *>::iterator KnownDir</div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>       = UmbrellaDirs.find(Dir);</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>     <span class="keywordflow">if</span> (KnownDir != UmbrellaDirs.end()) {</div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span>       <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Result = KnownDir->second;</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span>       </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span>       <span class="comment">// Search up the module stack until we find a module with an umbrella</span></div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span>       <span class="comment">// directory.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span>       <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *UmbrellaModule = Result;</div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span>       <span class="keywordflow">while</span> (!UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a2a142c05e037bb81a45fdf60c236cea7" title="Retrieve the directory for which this module serves as the umbrella.">getUmbrellaDir</a>() && UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>)</div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span>         UmbrellaModule = UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>;</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>       <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a07cb2506efca1aba4c0959b7a0f8443c" title="Whether we should infer submodules for this module based on the headers.">InferSubmodules</a>) {</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span>         <span class="comment">// Infer submodules for each of the directories we found between</span></div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span>         <span class="comment">// the directory of the umbrella header and the directory where </span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span>         <span class="comment">// the actual header is located.</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span>         <span class="keywordtype">bool</span> Explicit = UmbrellaModule-><a class="code" href="classclang_1_1Module.html#ae64ff7e3ba9cb2d5fa98f6b55c58d921" title="Whether, when inferring submodules, the inferred submodules should be explicit.">InferExplicitSubmodules</a>;</div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span>         </div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = SkippedDirs.size(); I != 0; --I) {</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span>           <span class="comment">// Find or create the module that corresponds to this directory name.</span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span>           <a class="code" href="classllvm_1_1SmallString.html">SmallString<32></a> NameBuf;</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>           StringRef Name = <a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802" title=""Sanitize" a filename so that it can be used as an identifier.">sanitizeFilenameAsIdentifier</a>(</div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>                              llvm::sys::path::stem(SkippedDirs[I-1]->getName()),</div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span>                              NameBuf);</div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span>           Result = <a class="code" href="classclang_1_1ModuleMap.html#a115a5b7b114346aaa534995084fc3ac0" title="Find a new module or submodule, or create it if it does not already exist.">findOrCreateModule</a>(Name, Result, <span class="comment">/*IsFramework=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>                                       Explicit).first;</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">// Associate the module and the directory.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span>           UmbrellaDirs[SkippedDirs[I-1]] = Result;</div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> </div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span>           <span class="comment">// If inferred submodules export everything they import, add a </span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span>           <span class="comment">// wildcard to the set of exports.</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span>           <span class="keywordflow">if</span> (UmbrellaModule-><a class="code" href="classclang_1_1Module.html#aab3a3e63b2c07e737f21296484abbcf9" title="Whether, when inferring submodules, the inferr submodules should export all modules they import (e...">InferExportWildcard</a> && Result-><a class="code" href="classclang_1_1Module.html#a05638ca4f7fe86eb9363440c20c01130" title="The set of export declarations.">Exports</a>.empty())</div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span>             Result-><a class="code" href="classclang_1_1Module.html#a05638ca4f7fe86eb9363440c20c01130" title="The set of export declarations.">Exports</a>.push_back(<a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a>(0, <span class="keyword">true</span>));</div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span>         }</div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span>         </div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>         <span class="comment">// Infer a submodule with the same name as this header file.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>         <a class="code" href="classllvm_1_1SmallString.html">SmallString<32></a> NameBuf;</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>         StringRef Name = <a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802" title=""Sanitize" a filename so that it can be used as an identifier.">sanitizeFilenameAsIdentifier</a>(</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>                            llvm::sys::path::stem(File-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()), NameBuf);</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>         Result = <a class="code" href="classclang_1_1ModuleMap.html#a115a5b7b114346aaa534995084fc3ac0" title="Find a new module or submodule, or create it if it does not already exist.">findOrCreateModule</a>(Name, Result, <span class="comment">/*IsFramework=*/</span><span class="keyword">false</span>,</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>                                     Explicit).first;</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>         Result-><a class="code" href="classclang_1_1Module.html#a6ad1e8c7329d41f481dd3b6e193ed4ed" title="Add a top-level header associated with this module.">addTopHeader</a>(File);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span>         </div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span>         <span class="comment">// If inferred submodules export everything they import, add a </span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span>         <span class="comment">// wildcard to the set of exports.</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span>         <span class="keywordflow">if</span> (UmbrellaModule-><a class="code" href="classclang_1_1Module.html#aab3a3e63b2c07e737f21296484abbcf9" title="Whether, when inferring submodules, the inferr submodules should export all modules they import (e...">InferExportWildcard</a> && Result-><a class="code" href="classclang_1_1Module.html#a05638ca4f7fe86eb9363440c20c01130" title="The set of export declarations.">Exports</a>.empty())</div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span>           Result-><a class="code" href="classclang_1_1Module.html#a05638ca4f7fe86eb9363440c20c01130" title="The set of export declarations.">Exports</a>.push_back(<a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a>(0, <span class="keyword">true</span>));</div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span>         <span class="comment">// Record each of the directories we stepped through as being part of</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span>         <span class="comment">// the module we found, since the umbrella header covers them all.</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = SkippedDirs.size(); I != N; ++I)</div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span>           UmbrellaDirs[SkippedDirs[I]] = Result;</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>       }</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>       </div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>       Headers[File].push_back(<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>(Result, <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">NormalHeader</a>));</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> </div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>       <span class="comment">// If a header corresponds to an unavailable module, don't report</span></div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>       <span class="comment">// that it maps to anything.</span></div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>       <span class="keywordflow">if</span> (!Result-><a class="code" href="classclang_1_1Module.html#a5be57132fedcd0fea5b93e5a6c311e98" title="Determine whether this module is available for use within the current translation unit...">isAvailable</a>())</div>
+<div class="line"><a name="l00289"></a><span class="lineno">  289</span>         <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>();</div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> </div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span>       <span class="keywordflow">return</span> Headers[File].back();</div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</span>     }</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>     </div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>     SkippedDirs.push_back(Dir);</div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span>     </div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span>     <span class="comment">// Retrieve our parent path.</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>     DirName = llvm::sys::path::parent_path(DirName);</div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span>     <span class="keywordflow">if</span> (DirName.empty())</div>
+<div class="line"><a name="l00299"></a><span class="lineno">  299</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00300"></a><span class="lineno">  300</span>     </div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span>     <span class="comment">// Resolve the parent path to a directory entry.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>     Dir = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(DirName);</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span>   } <span class="keywordflow">while</span> (Dir);</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> <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>();</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"><a class="code" href="classclang_1_1ModuleMap.html#af4fbca415ce7cbde70d1fc96d9285d10">  308</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#af4fbca415ce7cbde70d1fc96d9285d10" title="Determine whether the given header is part of a module marked 'unavailable'.">ModuleMap::isHeaderInUnavailableModule</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> *Header)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span>   HeadersMap::const_iterator Known = Headers.find(Header);</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>   <span class="keywordflow">if</span> (Known != Headers.end()) {</div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span>     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<KnownHeader>::const_iterator</a></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span>              I = Known->second.begin(),</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span>              E = Known->second.end();</div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span>          I != E; ++I) {</div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span>       <span class="keywordflow">if</span> (I->isAvailable())</div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>         <span class="keywordflow">return</span> <span class="keyword">false</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>     <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span>   }</div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span>   </div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</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 = Header-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>();</div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<const DirectoryEntry *, 2></a> SkippedDirs;</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span>   StringRef DirName = Dir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>();</div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> </div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span>   <span class="comment">// Keep walking up the directory hierarchy, looking for a directory with</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span>   <span class="comment">// an umbrella header.</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span>   <span class="keywordflow">do</span> {    </div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span>     llvm::DenseMap<const DirectoryEntry *, Module *>::const_iterator KnownDir</div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span>       = UmbrellaDirs.find(Dir);</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>     <span class="keywordflow">if</span> (KnownDir != UmbrellaDirs.end()) {</div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span>       <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Found = KnownDir->second;</div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span>       <span class="keywordflow">if</span> (!Found-><a class="code" href="classclang_1_1Module.html#a5be57132fedcd0fea5b93e5a6c311e98" title="Determine whether this module is available for use within the current translation unit...">isAvailable</a>())</div>
+<div class="line"><a name="l00333"></a><span class="lineno">  333</span>         <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00334"></a><span class="lineno">  334</span> </div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span>       <span class="comment">// Search up the module stack until we find a module with an umbrella</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>       <span class="comment">// directory.</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span>       <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *UmbrellaModule = Found;</div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span>       <span class="keywordflow">while</span> (!UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a2a142c05e037bb81a45fdf60c236cea7" title="Retrieve the directory for which this module serves as the umbrella.">getUmbrellaDir</a>() && UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>)</div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span>         UmbrellaModule = UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>;</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>       <a class="code" href="mm__malloc_8h.html#a682140772a1d7d2744289e6abb2ad2ff">if</a> (UmbrellaModule-><a class="code" href="classclang_1_1Module.html#a07cb2506efca1aba4c0959b7a0f8443c" title="Whether we should infer submodules for this module based on the headers.">InferSubmodules</a>) {</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>         <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = SkippedDirs.size(); I != 0; --I) {</div>
+<div class="line"><a name="l00343"></a><span class="lineno">  343</span>           <span class="comment">// Find or create the module that corresponds to this directory name.</span></div>
+<div class="line"><a name="l00344"></a><span class="lineno">  344</span>           <a class="code" href="classllvm_1_1SmallString.html">SmallString<32></a> NameBuf;</div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span>           StringRef Name = <a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802" title=""Sanitize" a filename so that it can be used as an identifier.">sanitizeFilenameAsIdentifier</a>(</div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span>                              llvm::sys::path::stem(SkippedDirs[I-1]->getName()),</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span>                              NameBuf);</div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span>           Found = <a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(Name, Found);</div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span>           <span class="keywordflow">if</span> (!Found)</div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span>             <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span>           <span class="keywordflow">if</span> (!Found-><a class="code" href="classclang_1_1Module.html#a5be57132fedcd0fea5b93e5a6c311e98" title="Determine whether this module is available for use within the current translation unit...">isAvailable</a>())</div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span>             <span class="keywordflow">return</span> <span class="keyword">true</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>         </div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>         <span class="comment">// Infer a submodule with the same name as this header file.</span></div>
+<div class="line"><a name="l00356"></a><span class="lineno">  356</span>         <a class="code" href="classllvm_1_1SmallString.html">SmallString<32></a> NameBuf;</div>
+<div class="line"><a name="l00357"></a><span class="lineno">  357</span>         StringRef Name = <a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802" title=""Sanitize" a filename so that it can be used as an identifier.">sanitizeFilenameAsIdentifier</a>(</div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span>                            llvm::sys::path::stem(Header-><a class="code" href="classclang_1_1FileEntry.html#a94ddac74f217c35e19420dd6c419e25f">getName</a>()),</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>                            NameBuf);</div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span>         Found = <a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(Name, Found);</div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span>         <span class="keywordflow">if</span> (!Found)</div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span>           <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span>       }</div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> </div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span>       <span class="keywordflow">return</span> !Found-><a class="code" href="classclang_1_1Module.html#a5be57132fedcd0fea5b93e5a6c311e98" title="Determine whether this module is available for use within the current translation unit...">isAvailable</a>();</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>     </div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span>     SkippedDirs.push_back(Dir);</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="comment">// Retrieve our parent path.</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>     DirName = llvm::sys::path::parent_path(DirName);</div>
+<div class="line"><a name="l00372"></a><span class="lineno">  372</span>     <span class="keywordflow">if</span> (DirName.empty())</div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>       <span class="keywordflow">break</span>;</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">// Resolve the parent path to a directory entry.</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>     Dir = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(DirName);</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>   } <span class="keywordflow">while</span> (Dir);</div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>   </div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span> }</div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span> </div>
+<div class="line"><a name="l00382"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#af4c8a3d331c1f6f1e046e7f87adc7973">  382</a></span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#af4c8a3d331c1f6f1e046e7f87adc7973" title="Retrieve a module with the given name.">ModuleMap::findModule</a>(StringRef Name)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>   llvm::StringMap<Module *>::const_iterator Known = Modules.find(Name);</div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>   <span class="keywordflow">if</span> (Known != Modules.end())</div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>     <span class="keywordflow">return</span> Known->getValue();</div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>   </div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00388"></a><span class="lineno">  388</span> }</div>
+<div class="line"><a name="l00389"></a><span class="lineno">  389</span> </div>
+<div class="line"><a name="l00390"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a4227573c64ca68ac5f24f27de1f57b49">  390</a></span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#a4227573c64ca68ac5f24f27de1f57b49" title="Retrieve a module with the given name using lexical name lookup, starting at the given context...">ModuleMap::lookupModuleUnqualified</a>(StringRef Name,</div>
+<div class="line"><a name="l00391"></a><span class="lineno">  391</span>                                            <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Context)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00392"></a><span class="lineno">  392</span>   <span class="keywordflow">for</span>(; <a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>; Context = Context-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l00393"></a><span class="lineno">  393</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Sub = <a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(Name, Context))</div>
+<div class="line"><a name="l00394"></a><span class="lineno">  394</span>       <span class="keywordflow">return</span> Sub;</div>
+<div class="line"><a name="l00395"></a><span class="lineno">  395</span>   }</div>
+<div class="line"><a name="l00396"></a><span class="lineno">  396</span>   </div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>   <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ModuleMap.html#af4c8a3d331c1f6f1e046e7f87adc7973" title="Retrieve a module with the given name.">findModule</a>(Name);</div>
+<div class="line"><a name="l00398"></a><span class="lineno">  398</span> }</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_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0">  400</a></span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">ModuleMap::lookupModuleQualified</a>(StringRef Name, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Context)<span class="keyword"> const</span>{</div>
+<div class="line"><a name="l00401"></a><span class="lineno">  401</span>   <span class="keywordflow">if</span> (!Context)</div>
+<div class="line"><a name="l00402"></a><span class="lineno">  402</span>     <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ModuleMap.html#af4c8a3d331c1f6f1e046e7f87adc7973" title="Retrieve a module with the given name.">findModule</a>(Name);</div>
+<div class="line"><a name="l00403"></a><span class="lineno">  403</span>   </div>
+<div class="line"><a name="l00404"></a><span class="lineno">  404</span>   <span class="keywordflow">return</span> Context-><a class="code" href="classclang_1_1Module.html#a8ee2001b1277a38d236ab433aed277f2" title="Find the submodule with the given name.">findSubmodule</a>(Name);</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> </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span> std::pair<Module *, bool> </div>
+<div class="line"><a name="l00408"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a115a5b7b114346aaa534995084fc3ac0">  408</a></span> <a class="code" href="classclang_1_1ModuleMap.html#a115a5b7b114346aaa534995084fc3ac0" title="Find a new module or submodule, or create it if it does not already exist.">ModuleMap::findOrCreateModule</a>(StringRef Name, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Parent, <span class="keywordtype">bool</span> IsFramework,</div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>                               <span class="keywordtype">bool</span> IsExplicit) {</div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>   <span class="comment">// Try to find an existing module with this name.</span></div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Sub = <a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(Name, Parent))</div>
+<div class="line"><a name="l00412"></a><span class="lineno">  412</span>     <span class="keywordflow">return</span> std::make_pair(Sub, <span class="keyword">false</span>);</div>
+<div class="line"><a name="l00413"></a><span class="lineno">  413</span>   </div>
+<div class="line"><a name="l00414"></a><span class="lineno">  414</span>   <span class="comment">// Create a new module with this name.</span></div>
+<div class="line"><a name="l00415"></a><span class="lineno">  415</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Result = <span class="keyword">new</span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a>(Name, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), Parent, IsFramework, </div>
+<div class="line"><a name="l00416"></a><span class="lineno">  416</span>                               IsExplicit);</div>
+<div class="line"><a name="l00417"></a><span class="lineno">  417</span>   <span class="keywordflow">if</span> (LangOpts.<a class="code" href="classclang_1_1LangOptions.html#afd139a4fe76990c1c01e77ae67cd1310" title="The name of the current module.">CurrentModule</a> == Name) {</div>
+<div class="line"><a name="l00418"></a><span class="lineno">  418</span>     <a class="code" href="classclang_1_1ModuleMap.html#a7a5b8df4ab18c5ed78cde851e2842e4d">SourceModule</a> = Result;</div>
+<div class="line"><a name="l00419"></a><span class="lineno">  419</span>     <a class="code" href="classclang_1_1ModuleMap.html#a2920cbcf5d7d15a5dc08cd142b839fe0">SourceModuleName</a> = Name;</div>
+<div class="line"><a name="l00420"></a><span class="lineno">  420</span>   }</div>
+<div class="line"><a name="l00421"></a><span class="lineno">  421</span>   <span class="keywordflow">if</span> (!Parent) {</div>
+<div class="line"><a name="l00422"></a><span class="lineno">  422</span>     Modules[Name] = Result;</div>
+<div class="line"><a name="l00423"></a><span class="lineno">  423</span>     <span class="keywordflow">if</span> (!LangOpts.<a class="code" href="classclang_1_1LangOptions.html#afd139a4fe76990c1c01e77ae67cd1310" title="The name of the current module.">CurrentModule</a>.empty() && !CompilingModule &&</div>
+<div class="line"><a name="l00424"></a><span class="lineno">  424</span>         Name == LangOpts.<a class="code" href="classclang_1_1LangOptions.html#afd139a4fe76990c1c01e77ae67cd1310" title="The name of the current module.">CurrentModule</a>) {</div>
+<div class="line"><a name="l00425"></a><span class="lineno">  425</span>       CompilingModule = Result;</div>
+<div class="line"><a name="l00426"></a><span class="lineno">  426</span>     }</div>
+<div class="line"><a name="l00427"></a><span class="lineno">  427</span>   }</div>
+<div class="line"><a name="l00428"></a><span class="lineno">  428</span>   <span class="keywordflow">return</span> std::make_pair(Result, <span class="keyword">true</span>);</div>
+<div class="line"><a name="l00429"></a><span class="lineno">  429</span> }</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span> </div>
+<div class="line"><a name="l00431"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a328854f497c38e79b5b1e291d572dec9">  431</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#a328854f497c38e79b5b1e291d572dec9" title="Determine whether we can infer a framework module a framework with the given name in the given...">ModuleMap::canInferFrameworkModule</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> *ParentDir,</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>                                         StringRef Name, <span class="keywordtype">bool</span> &IsSystem)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>   <span class="comment">// Check whether we have already looked into the parent directory</span></div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>   <span class="comment">// for a module map.</span></div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>   llvm::DenseMap<const DirectoryEntry *, InferredDirectory>::const_iterator</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>     inferred = InferredDirectories.find(ParentDir);</div>
+<div class="line"><a name="l00437"></a><span class="lineno">  437</span>   <span class="keywordflow">if</span> (inferred == InferredDirectories.end())</div>
+<div class="line"><a name="l00438"></a><span class="lineno">  438</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00439"></a><span class="lineno">  439</span> </div>
+<div class="line"><a name="l00440"></a><span class="lineno">  440</span>   <span class="keywordflow">if</span> (!inferred->second.InferModules)</div>
+<div class="line"><a name="l00441"></a><span class="lineno">  441</span>     <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00442"></a><span class="lineno">  442</span> </div>
+<div class="line"><a name="l00443"></a><span class="lineno">  443</span>   <span class="comment">// We're allowed to infer for this directory, but make sure it's okay</span></div>
+<div class="line"><a name="l00444"></a><span class="lineno">  444</span>   <span class="comment">// to infer this particular module.</span></div>
+<div class="line"><a name="l00445"></a><span class="lineno">  445</span>   <span class="keywordtype">bool</span> canInfer = std::find(inferred->second.ExcludedModules.begin(),</div>
+<div class="line"><a name="l00446"></a><span class="lineno">  446</span>                             inferred->second.ExcludedModules.end(),</div>
+<div class="line"><a name="l00447"></a><span class="lineno">  447</span>                             Name) == inferred->second.ExcludedModules.end();</div>
+<div class="line"><a name="l00448"></a><span class="lineno">  448</span> </div>
+<div class="line"><a name="l00449"></a><span class="lineno">  449</span>   <span class="keywordflow">if</span> (canInfer && inferred->second.InferSystemModules)</div>
+<div class="line"><a name="l00450"></a><span class="lineno">  450</span>     IsSystem = <span class="keyword">true</span>;</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>   <span class="keywordflow">return</span> canInfer;</div>
+<div class="line"><a name="l00453"></a><span class="lineno">  453</span> }</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span> <span class="comment"></span></div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span> <span class="comment">/// \brief For a framework module, infer the framework against which we</span></div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span> <span class="comment">/// should link.</span></div>
+<div class="line"><a name="l00457"></a><span class="lineno"><a class="code" href="ModuleMap_8cpp.html#aaaa3666b8e1c7ea6a29c2da064eb8c48">  457</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="ModuleMap_8cpp.html#aaaa3666b8e1c7ea6a29c2da064eb8c48" title="For a framework module, infer the framework against which we should link.">inferFrameworkLink</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *FrameworkDir,</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</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> &FileMgr) {</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>   assert(Mod-><a class="code" href="classclang_1_1Module.html#ad335b91a8d39f2a2ca9643f1c88aac8d" title="Whether this is a framework module.">IsFramework</a> && <span class="stringliteral">"Can only infer linking for framework modules"</span>);</div>
+<div class="line"><a name="l00460"></a><span class="lineno">  460</span>   assert(!Mod-><a class="code" href="classclang_1_1Module.html#a869c5857f419f0372777d6921c989e46" title="Determine whether this module is a subframework of another framework.">isSubFramework</a>() &&</div>
+<div class="line"><a name="l00461"></a><span class="lineno">  461</span>          <span class="stringliteral">"Can only infer linking for top-level frameworks"</span>);</div>
+<div class="line"><a name="l00462"></a><span class="lineno">  462</span> </div>
+<div class="line"><a name="l00463"></a><span class="lineno">  463</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> LibName;</div>
+<div class="line"><a name="l00464"></a><span class="lineno">  464</span>   LibName += FrameworkDir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>();</div>
+<div class="line"><a name="l00465"></a><span class="lineno">  465</span>   llvm::sys::path::append(LibName, Mod-><a class="code" href="classclang_1_1Module.html#a51eba6562bd16dec5a8e7c2c5ed76890" title="The name of this module.">Name</a>);</div>
+<div class="line"><a name="l00466"></a><span class="lineno">  466</span>   <span class="keywordflow">if</span> (FileMgr.<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(LibName)) {</div>
+<div class="line"><a name="l00467"></a><span class="lineno">  467</span>     Mod-><a class="code" href="classclang_1_1Module.html#a59f744ae0f6907785614508d01a5cd59" title="The set of libraries or frameworks to link against when an entity from this module is used...">LinkLibraries</a>.push_back(<a class="code" href="structclang_1_1Module_1_1LinkLibrary.html" title="A library or framework to link against when an entity from this module is used.">Module::LinkLibrary</a>(Mod-><a class="code" href="classclang_1_1Module.html#a51eba6562bd16dec5a8e7c2c5ed76890" title="The name of this module.">Name</a>,</div>
+<div class="line"><a name="l00468"></a><span class="lineno">  468</span>                                                      <span class="comment">/*IsFramework=*/</span><span class="keyword">true</span>));</div>
+<div class="line"><a name="l00469"></a><span class="lineno">  469</span>   }</div>
+<div class="line"><a name="l00470"></a><span class="lineno">  470</span> }</div>
+<div class="line"><a name="l00471"></a><span class="lineno">  471</span> </div>
+<div class="line"><a name="l00472"></a><span class="lineno">  472</span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *</div>
+<div class="line"><a name="l00473"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#aa6a0fbdfb7431809f16fd273f84da5b6">  473</a></span> <a class="code" href="classclang_1_1ModuleMap.html#aa6a0fbdfb7431809f16fd273f84da5b6" title="Infer the contents of a framework module map from the given framework directory.">ModuleMap::inferFrameworkModule</a>(StringRef ModuleName,</div>
+<div class="line"><a name="l00474"></a><span class="lineno">  474</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> *FrameworkDir,</div>
+<div class="line"><a name="l00475"></a><span class="lineno">  475</span>                                 <span class="keywordtype">bool</span> IsSystem,</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>                                 <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Parent) {</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>   <span class="comment">// Check whether we've already found this module.</span></div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod = <a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(ModuleName, Parent))</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>     <span class="keywordflow">return</span> Mod;</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>   </div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>   <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 = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>();</div>
+<div class="line"><a name="l00482"></a><span class="lineno">  482</span> </div>
+<div class="line"><a name="l00483"></a><span class="lineno">  483</span>   <span class="comment">// If the framework has a parent path from which we're allowed to infer</span></div>
+<div class="line"><a name="l00484"></a><span class="lineno">  484</span>   <span class="comment">// a framework module, do so.</span></div>
+<div class="line"><a name="l00485"></a><span class="lineno">  485</span>   <span class="keywordflow">if</span> (!Parent) {</div>
+<div class="line"><a name="l00486"></a><span class="lineno">  486</span>     <span class="comment">// Determine whether we're allowed to infer a module map.</span></div>
+<div class="line"><a name="l00487"></a><span class="lineno">  487</span> </div>
+<div class="line"><a name="l00488"></a><span class="lineno">  488</span>     <span class="comment">// Note: as an egregious but useful hack we use the real path here, because</span></div>
+<div class="line"><a name="l00489"></a><span class="lineno">  489</span>     <span class="comment">// we might be looking at an embedded framework that symlinks out to a</span></div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>     <span class="comment">// top-level framework, and we need to infer as if we were naming the</span></div>
+<div class="line"><a name="l00491"></a><span class="lineno">  491</span>     <span class="comment">// top-level framework.</span></div>
+<div class="line"><a name="l00492"></a><span class="lineno">  492</span>     StringRef FrameworkDirName</div>
+<div class="line"><a name="l00493"></a><span class="lineno">  493</span>       = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#aefc9a0b6440701f04541eb6e74447bb2" title="Retrieve the canonical name for a given directory.">getCanonicalName</a>(FrameworkDir);</div>
+<div class="line"><a name="l00494"></a><span class="lineno">  494</span> </div>
+<div class="line"><a name="l00495"></a><span class="lineno">  495</span>     <span class="keywordtype">bool</span> canInfer = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00496"></a><span class="lineno">  496</span>     <span class="keywordflow">if</span> (llvm::sys::path::has_parent_path(FrameworkDirName)) {</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>       <span class="comment">// Figure out the parent path.</span></div>
+<div class="line"><a name="l00498"></a><span class="lineno">  498</span>       StringRef Parent = llvm::sys::path::parent_path(FrameworkDirName);</div>
+<div class="line"><a name="l00499"></a><span class="lineno">  499</span>       <span class="keywordflow">if</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> *ParentDir = FileMgr.<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(Parent)) {</div>
+<div class="line"><a name="l00500"></a><span class="lineno">  500</span>         <span class="comment">// Check whether we have already looked into the parent directory</span></div>
+<div class="line"><a name="l00501"></a><span class="lineno">  501</span>         <span class="comment">// for a module map.</span></div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>         llvm::DenseMap<const DirectoryEntry *, InferredDirectory>::const_iterator</div>
+<div class="line"><a name="l00503"></a><span class="lineno">  503</span>           inferred = InferredDirectories.find(ParentDir);</div>
+<div class="line"><a name="l00504"></a><span class="lineno">  504</span>         <span class="keywordflow">if</span> (inferred == InferredDirectories.end()) {</div>
+<div class="line"><a name="l00505"></a><span class="lineno">  505</span>           <span class="comment">// We haven't looked here before. Load a module map, if there is</span></div>
+<div class="line"><a name="l00506"></a><span class="lineno">  506</span>           <span class="comment">// one.</span></div>
+<div class="line"><a name="l00507"></a><span class="lineno">  507</span>           <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> ModMapPath = Parent;</div>
+<div class="line"><a name="l00508"></a><span class="lineno">  508</span>           llvm::sys::path::append(ModMapPath, <span class="stringliteral">"module.map"</span>);</div>
+<div class="line"><a name="l00509"></a><span class="lineno">  509</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> *ModMapFile = FileMgr.<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(ModMapPath)) {</div>
+<div class="line"><a name="l00510"></a><span class="lineno">  510</span>             <a class="code" href="classclang_1_1ModuleMap.html#aa693079e31854e7297157e751ff6b7fd" title="Parse the given module map file, and record any modules we encounter.">parseModuleMapFile</a>(ModMapFile, IsSystem);</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>             inferred = InferredDirectories.find(ParentDir);</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">  514</span>           <span class="keywordflow">if</span> (inferred == InferredDirectories.end())</div>
+<div class="line"><a name="l00515"></a><span class="lineno">  515</span>             inferred = InferredDirectories.insert(</div>
+<div class="line"><a name="l00516"></a><span class="lineno">  516</span>                          std::make_pair(ParentDir, InferredDirectory())).first;</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> </div>
+<div class="line"><a name="l00519"></a><span class="lineno">  519</span>         <span class="keywordflow">if</span> (inferred->second.InferModules) {</div>
+<div class="line"><a name="l00520"></a><span class="lineno">  520</span>           <span class="comment">// We're allowed to infer for this directory, but make sure it's okay</span></div>
+<div class="line"><a name="l00521"></a><span class="lineno">  521</span>           <span class="comment">// to infer this particular module.</span></div>
+<div class="line"><a name="l00522"></a><span class="lineno">  522</span>           StringRef Name = llvm::sys::path::stem(FrameworkDirName);</div>
+<div class="line"><a name="l00523"></a><span class="lineno">  523</span>           canInfer = std::find(inferred->second.ExcludedModules.begin(),</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>                                inferred->second.ExcludedModules.end(),</div>
+<div class="line"><a name="l00525"></a><span class="lineno">  525</span>                                Name) == inferred->second.ExcludedModules.end();</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>           <span class="keywordflow">if</span> (inferred->second.InferSystemModules)</div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>             IsSystem = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>         }</div>
+<div class="line"><a name="l00530"></a><span class="lineno">  530</span>       }</div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>     }</div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span> </div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>     <span class="comment">// If we're not allowed to infer a framework module, don't.</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>     <span class="keywordflow">if</span> (!canInfer)</div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>   }</div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span> </div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span> </div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>   <span class="comment">// Look for an umbrella header.</span></div>
+<div class="line"><a name="l00540"></a><span class="lineno">  540</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> UmbrellaName = StringRef(FrameworkDir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>());</div>
+<div class="line"><a name="l00541"></a><span class="lineno">  541</span>   llvm::sys::path::append(UmbrellaName, <span class="stringliteral">"Headers"</span>, ModuleName + <span class="stringliteral">".h"</span>);</div>
+<div class="line"><a name="l00542"></a><span class="lineno">  542</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> *UmbrellaHeader = FileMgr.<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(UmbrellaName);</div>
+<div class="line"><a name="l00543"></a><span class="lineno">  543</span>   </div>
+<div class="line"><a name="l00544"></a><span class="lineno">  544</span>   <span class="comment">// FIXME: If there's no umbrella header, we could probably scan the</span></div>
+<div class="line"><a name="l00545"></a><span class="lineno">  545</span>   <span class="comment">// framework to load *everything*. But, it's not clear that this is a good</span></div>
+<div class="line"><a name="l00546"></a><span class="lineno">  546</span>   <span class="comment">// idea.</span></div>
+<div class="line"><a name="l00547"></a><span class="lineno">  547</span>   <span class="keywordflow">if</span> (!UmbrellaHeader)</div>
+<div class="line"><a name="l00548"></a><span class="lineno">  548</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00549"></a><span class="lineno">  549</span>   </div>
+<div class="line"><a name="l00550"></a><span class="lineno">  550</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Result = <span class="keyword">new</span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a>(ModuleName, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), Parent,</div>
+<div class="line"><a name="l00551"></a><span class="lineno">  551</span>                               <span class="comment">/*IsFramework=*/</span><span class="keyword">true</span>, <span class="comment">/*IsExplicit=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l00552"></a><span class="lineno">  552</span>   <span class="keywordflow">if</span> (LangOpts.<a class="code" href="classclang_1_1LangOptions.html#afd139a4fe76990c1c01e77ae67cd1310" title="The name of the current module.">CurrentModule</a> == ModuleName) {</div>
+<div class="line"><a name="l00553"></a><span class="lineno">  553</span>     <a class="code" href="classclang_1_1ModuleMap.html#a7a5b8df4ab18c5ed78cde851e2842e4d">SourceModule</a> = Result;</div>
+<div class="line"><a name="l00554"></a><span class="lineno">  554</span>     <a class="code" href="classclang_1_1ModuleMap.html#a2920cbcf5d7d15a5dc08cd142b839fe0">SourceModuleName</a> = ModuleName;</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>   }</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>   <span class="keywordflow">if</span> (IsSystem)</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>     Result-><a class="code" href="classclang_1_1Module.html#a505c7530ef3ac10e3f8c207e5722a158" title="Whether this is a "system" module (which assumes that all headers in it are system headers)...">IsSystem</a> = IsSystem;</div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>   </div>
+<div class="line"><a name="l00559"></a><span class="lineno">  559</span>   <span class="keywordflow">if</span> (!Parent)</div>
+<div class="line"><a name="l00560"></a><span class="lineno">  560</span>     Modules[ModuleName] = Result;</div>
+<div class="line"><a name="l00561"></a><span class="lineno">  561</span>   </div>
+<div class="line"><a name="l00562"></a><span class="lineno">  562</span>   <span class="comment">// umbrella header "umbrella-header-name"</span></div>
+<div class="line"><a name="l00563"></a><span class="lineno">  563</span>   Result-><a class="code" href="classclang_1_1Module.html#acb7c8570da610974e567675303baa77b" title="The umbrella header or directory.">Umbrella</a> = UmbrellaHeader;</div>
+<div class="line"><a name="l00564"></a><span class="lineno">  564</span>   Headers[UmbrellaHeader].push_back(<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>(Result, <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">NormalHeader</a>));</div>
+<div class="line"><a name="l00565"></a><span class="lineno">  565</span>   UmbrellaDirs[UmbrellaHeader-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>()] = Result;</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>   <span class="comment">// export *</span></div>
+<div class="line"><a name="l00568"></a><span class="lineno">  568</span>   Result-><a class="code" href="classclang_1_1Module.html#a05638ca4f7fe86eb9363440c20c01130" title="The set of export declarations.">Exports</a>.push_back(<a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a>(0, <span class="keyword">true</span>));</div>
+<div class="line"><a name="l00569"></a><span class="lineno">  569</span>   </div>
+<div class="line"><a name="l00570"></a><span class="lineno">  570</span>   <span class="comment">// module * { export * }</span></div>
+<div class="line"><a name="l00571"></a><span class="lineno">  571</span>   Result-><a class="code" href="classclang_1_1Module.html#a07cb2506efca1aba4c0959b7a0f8443c" title="Whether we should infer submodules for this module based on the headers.">InferSubmodules</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00572"></a><span class="lineno">  572</span>   Result-><a class="code" href="classclang_1_1Module.html#aab3a3e63b2c07e737f21296484abbcf9" title="Whether, when inferring submodules, the inferr submodules should export all modules they import (e...">InferExportWildcard</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>   </div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>   <span class="comment">// Look for subframeworks.</span></div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>   llvm::error_code EC;</div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> SubframeworksDirName</div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>     = StringRef(FrameworkDir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>());</div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>   llvm::sys::path::append(SubframeworksDirName, <span class="stringliteral">"Frameworks"</span>);</div>
+<div class="line"><a name="l00579"></a><span class="lineno">  579</span>   llvm::sys::path::native(SubframeworksDirName);</div>
+<div class="line"><a name="l00580"></a><span class="lineno">  580</span>   <span class="keywordflow">for</span> (llvm::sys::fs::directory_iterator </div>
+<div class="line"><a name="l00581"></a><span class="lineno">  581</span>          Dir(SubframeworksDirName.str(), EC), DirEnd;</div>
+<div class="line"><a name="l00582"></a><span class="lineno">  582</span>        Dir != DirEnd && !EC; Dir.increment(EC)) {</div>
+<div class="line"><a name="l00583"></a><span class="lineno">  583</span>     <span class="keywordflow">if</span> (!StringRef(Dir->path()).endswith(<span class="stringliteral">".framework"</span>))</div>
+<div class="line"><a name="l00584"></a><span class="lineno">  584</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00585"></a><span class="lineno">  585</span> </div>
+<div class="line"><a name="l00586"></a><span class="lineno">  586</span>     <span class="keywordflow">if</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> *SubframeworkDir</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>           = FileMgr.<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(Dir->path())) {</div>
+<div class="line"><a name="l00588"></a><span class="lineno">  588</span>       <span class="comment">// Note: as an egregious but useful hack, we use the real path here and</span></div>
+<div class="line"><a name="l00589"></a><span class="lineno">  589</span>       <span class="comment">// check whether it is actually a subdirectory of the parent directory.</span></div>
+<div class="line"><a name="l00590"></a><span class="lineno">  590</span>       <span class="comment">// This will not be the case if the 'subframework' is actually a symlink</span></div>
+<div class="line"><a name="l00591"></a><span class="lineno">  591</span>       <span class="comment">// out to a top-level framework.</span></div>
+<div class="line"><a name="l00592"></a><span class="lineno">  592</span>       StringRef SubframeworkDirName = FileMgr.<a class="code" href="classclang_1_1FileManager.html#aefc9a0b6440701f04541eb6e74447bb2" title="Retrieve the canonical name for a given directory.">getCanonicalName</a>(SubframeworkDir);</div>
+<div class="line"><a name="l00593"></a><span class="lineno">  593</span>       <span class="keywordtype">bool</span> FoundParent = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00594"></a><span class="lineno">  594</span>       <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>         <span class="comment">// Get the parent directory name.</span></div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>         SubframeworkDirName</div>
+<div class="line"><a name="l00597"></a><span class="lineno">  597</span>           = llvm::sys::path::parent_path(SubframeworkDirName);</div>
+<div class="line"><a name="l00598"></a><span class="lineno">  598</span>         <span class="keywordflow">if</span> (SubframeworkDirName.empty())</div>
+<div class="line"><a name="l00599"></a><span class="lineno">  599</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00600"></a><span class="lineno">  600</span> </div>
+<div class="line"><a name="l00601"></a><span class="lineno">  601</span>         <span class="keywordflow">if</span> (FileMgr.<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(SubframeworkDirName) == FrameworkDir) {</div>
+<div class="line"><a name="l00602"></a><span class="lineno">  602</span>           FoundParent = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00603"></a><span class="lineno">  603</span>           <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00604"></a><span class="lineno">  604</span>         }</div>
+<div class="line"><a name="l00605"></a><span class="lineno">  605</span>       } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l00606"></a><span class="lineno">  606</span> </div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>       <span class="keywordflow">if</span> (!FoundParent)</div>
+<div class="line"><a name="l00608"></a><span class="lineno">  608</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00609"></a><span class="lineno">  609</span> </div>
+<div class="line"><a name="l00610"></a><span class="lineno">  610</span>       <span class="comment">// FIXME: Do we want to warn about subframeworks without umbrella headers?</span></div>
+<div class="line"><a name="l00611"></a><span class="lineno">  611</span>       <a class="code" href="classllvm_1_1SmallString.html">SmallString<32></a> NameBuf;</div>
+<div class="line"><a name="l00612"></a><span class="lineno">  612</span>       <a class="code" href="classclang_1_1ModuleMap.html#aa6a0fbdfb7431809f16fd273f84da5b6" title="Infer the contents of a framework module map from the given framework directory.">inferFrameworkModule</a>(<a class="code" href="ModuleMap_8cpp.html#a7a52c9b4721ce779ea587ea2d4d6c802" title=""Sanitize" a filename so that it can be used as an identifier.">sanitizeFilenameAsIdentifier</a>(</div>
+<div class="line"><a name="l00613"></a><span class="lineno">  613</span>                              llvm::sys::path::stem(Dir->path()), NameBuf),</div>
+<div class="line"><a name="l00614"></a><span class="lineno">  614</span>                            SubframeworkDir, IsSystem, Result);</div>
+<div class="line"><a name="l00615"></a><span class="lineno">  615</span>     }</div>
+<div class="line"><a name="l00616"></a><span class="lineno">  616</span>   }</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span> </div>
+<div class="line"><a name="l00618"></a><span class="lineno">  618</span>   <span class="comment">// If the module is a top-level framework, automatically link against the</span></div>
+<div class="line"><a name="l00619"></a><span class="lineno">  619</span>   <span class="comment">// framework.</span></div>
+<div class="line"><a name="l00620"></a><span class="lineno">  620</span>   <span class="keywordflow">if</span> (!Result-><a class="code" href="classclang_1_1Module.html#a869c5857f419f0372777d6921c989e46" title="Determine whether this module is a subframework of another framework.">isSubFramework</a>()) {</div>
+<div class="line"><a name="l00621"></a><span class="lineno">  621</span>     <a class="code" href="ModuleMap_8cpp.html#aaaa3666b8e1c7ea6a29c2da064eb8c48" title="For a framework module, infer the framework against which we should link.">inferFrameworkLink</a>(Result, FrameworkDir, FileMgr);</div>
+<div class="line"><a name="l00622"></a><span class="lineno">  622</span>   }</div>
+<div class="line"><a name="l00623"></a><span class="lineno">  623</span> </div>
+<div class="line"><a name="l00624"></a><span class="lineno">  624</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l00625"></a><span class="lineno">  625</span> }</div>
+<div class="line"><a name="l00626"></a><span class="lineno">  626</span> </div>
+<div class="line"><a name="l00627"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a4e5eb634a8ba4425d545d84b6b28156d">  627</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a4e5eb634a8ba4425d545d84b6b28156d" title="Sets the umbrella header of the given module to the given header.">ModuleMap::setUmbrellaHeader</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *UmbrellaHeader){</div>
+<div class="line"><a name="l00628"></a><span class="lineno">  628</span>   Headers[UmbrellaHeader].push_back(<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>(Mod, <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">NormalHeader</a>));</div>
+<div class="line"><a name="l00629"></a><span class="lineno">  629</span>   Mod-><a class="code" href="classclang_1_1Module.html#acb7c8570da610974e567675303baa77b" title="The umbrella header or directory.">Umbrella</a> = UmbrellaHeader;</div>
+<div class="line"><a name="l00630"></a><span class="lineno">  630</span>   UmbrellaDirs[UmbrellaHeader-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>()] = Mod;</div>
+<div class="line"><a name="l00631"></a><span class="lineno">  631</span> }</div>
+<div class="line"><a name="l00632"></a><span class="lineno">  632</span> </div>
+<div class="line"><a name="l00633"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a5cc71eb848ebea391b1a075496f2f7ee">  633</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a5cc71eb848ebea391b1a075496f2f7ee" title="Sets the umbrella directory of the given module to the given directory.">ModuleMap::setUmbrellaDir</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *UmbrellaDir) {</div>
+<div class="line"><a name="l00634"></a><span class="lineno">  634</span>   Mod-><a class="code" href="classclang_1_1Module.html#acb7c8570da610974e567675303baa77b" title="The umbrella header or directory.">Umbrella</a> = UmbrellaDir;</div>
+<div class="line"><a name="l00635"></a><span class="lineno">  635</span>   UmbrellaDirs[UmbrellaDir] = Mod;</div>
+<div class="line"><a name="l00636"></a><span class="lineno">  636</span> }</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span> </div>
+<div class="line"><a name="l00638"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a36df90fd8a0f51e6b762938002ec038d">  638</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a36df90fd8a0f51e6b762938002ec038d" title="Adds this header to the given module.">ModuleMap::addHeader</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *Header,</div>
+<div class="line"><a name="l00639"></a><span class="lineno">  639</span>                           <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleHeaderRole</a> Role) {</div>
+<div class="line"><a name="l00640"></a><span class="lineno">  640</span>   <span class="keywordflow">if</span> (Role == <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca29ca8d089c3fd646d54e611219d0d877" title="This header is explicitly excluded from the module.">ExcludedHeader</a>) {</div>
+<div class="line"><a name="l00641"></a><span class="lineno">  641</span>     Mod-><a class="code" href="classclang_1_1Module.html#a0fb319704fd02cce3cb3d7bd88a21c51" title="The headers that are explicitly excluded from this module.">ExcludedHeaders</a>.push_back(Header);</div>
+<div class="line"><a name="l00642"></a><span class="lineno">  642</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l00643"></a><span class="lineno">  643</span>     <span class="keywordflow">if</span> (Role == <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4" title="This header is included but private.">PrivateHeader</a>)</div>
+<div class="line"><a name="l00644"></a><span class="lineno">  644</span>       Mod-><a class="code" href="classclang_1_1Module.html#a03cc716919c98f60df2b1e2ed346f8bb" title="The headers that are private to this module.">PrivateHeaders</a>.push_back(Header);</div>
+<div class="line"><a name="l00645"></a><span class="lineno">  645</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00646"></a><span class="lineno">  646</span>       Mod-><a class="code" href="classclang_1_1Module.html#abb4d0264cc1709091f4d2337ec17b832" title="The headers that are part of this module.">NormalHeaders</a>.push_back(Header);</div>
+<div class="line"><a name="l00647"></a><span class="lineno">  647</span>     <span class="keywordtype">bool</span> isCompilingModuleHeader = Mod-><a class="code" href="classclang_1_1Module.html#ab9ac0815c7df4b9466e2a7212fd2d300" title="Retrieve the top-level module for this (sub)module, which may be this module.">getTopLevelModule</a>() == CompilingModule;</div>
+<div class="line"><a name="l00648"></a><span class="lineno">  648</span>     HeaderInfo.<a class="code" href="classclang_1_1HeaderSearch.html#a1325cd90bd38752e2547da2147db8e09" title="Mark the specified file as part of a module.">MarkFileModuleHeader</a>(Header, Role, isCompilingModuleHeader);</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>   }</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>   Headers[Header].push_back(<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a>(Mod, Role));</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span> }</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span> </div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</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="l00654"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#aa287c482ce0aac99831c2e2746b29612">  654</a></span> <a class="code" href="classclang_1_1ModuleMap.html#aa287c482ce0aac99831c2e2746b29612" title="Retrieve the module map file containing the definition of the given module.">ModuleMap::getContainingModuleMapFile</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a>)<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>   <span class="keywordflow">if</span> (Module-><a class="code" href="classclang_1_1Module.html#a2710db72196e0e353a27cdc2b5f54fb9" title="The location of the module definition.">DefinitionLoc</a>.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l00656"></a><span class="lineno">  656</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00657"></a><span class="lineno">  657</span> </div>
+<div class="line"><a name="l00658"></a><span class="lineno">  658</span>   <span class="keywordflow">return</span> SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(</div>
+<div class="line"><a name="l00659"></a><span class="lineno">  659</span>            SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(Module-><a class="code" href="classclang_1_1Module.html#a2710db72196e0e353a27cdc2b5f54fb9" title="The location of the module definition.">DefinitionLoc</a>));</div>
+<div class="line"><a name="l00660"></a><span class="lineno">  660</span> }</div>
+<div class="line"><a name="l00661"></a><span class="lineno">  661</span> </div>
+<div class="line"><a name="l00662"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a26b885e43a6f5268a02cd4d09efbf5ad">  662</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a26b885e43a6f5268a02cd4d09efbf5ad" title="Dump the contents of the module map, for debugging purposes.">ModuleMap::dump</a>() {</div>
+<div class="line"><a name="l00663"></a><span class="lineno">  663</span>   llvm::errs() << <span class="stringliteral">"Modules:"</span>;</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>   <span class="keywordflow">for</span> (llvm::StringMap<Module *>::iterator M = Modules.begin(), </div>
+<div class="line"><a name="l00665"></a><span class="lineno">  665</span>                                         MEnd = Modules.end(); </div>
+<div class="line"><a name="l00666"></a><span class="lineno">  666</span>        M != MEnd; ++M)</div>
+<div class="line"><a name="l00667"></a><span class="lineno">  667</span>     M->getValue()->print(llvm::errs(), 2);</div>
+<div class="line"><a name="l00668"></a><span class="lineno">  668</span>   </div>
+<div class="line"><a name="l00669"></a><span class="lineno">  669</span>   llvm::errs() << <span class="stringliteral">"Headers:"</span>;</div>
+<div class="line"><a name="l00670"></a><span class="lineno">  670</span>   <span class="keywordflow">for</span> (HeadersMap::iterator H = Headers.begin(), HEnd = Headers.end();</div>
+<div class="line"><a name="l00671"></a><span class="lineno">  671</span>        H != HEnd; ++H) {</div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>     llvm::errs() << <span class="stringliteral">"  \""</span> << H->first->getName() << <span class="stringliteral">"\" -> "</span>;</div>
+<div class="line"><a name="l00673"></a><span class="lineno">  673</span>     <span class="keywordflow">for</span> (<a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<KnownHeader>::const_iterator</a> I = H->second.begin(),</div>
+<div class="line"><a name="l00674"></a><span class="lineno">  674</span>                                                       E = H->second.end();</div>
+<div class="line"><a name="l00675"></a><span class="lineno">  675</span>          I != E; ++I) {</div>
+<div class="line"><a name="l00676"></a><span class="lineno">  676</span>       <span class="keywordflow">if</span> (I != H->second.begin())</div>
+<div class="line"><a name="l00677"></a><span class="lineno">  677</span>         llvm::errs() << <span class="stringliteral">","</span>;</div>
+<div class="line"><a name="l00678"></a><span class="lineno">  678</span>       llvm::errs() << I->getModule()->getFullModuleName();</div>
+<div class="line"><a name="l00679"></a><span class="lineno">  679</span>     }</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>     llvm::errs() << <span class="stringliteral">"\n"</span>;</div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>   }</div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span> }</div>
+<div class="line"><a name="l00683"></a><span class="lineno">  683</span> </div>
+<div class="line"><a name="l00684"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a03d91ee91e3d302d32885c4d790b3915">  684</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#a03d91ee91e3d302d32885c4d790b3915" title="Resolve all of the unresolved exports in the given module.">ModuleMap::resolveExports</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain) {</div>
+<div class="line"><a name="l00685"></a><span class="lineno">  685</span>   <span class="keywordtype">bool</span> HadError = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00686"></a><span class="lineno">  686</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Mod-><a class="code" href="classclang_1_1Module.html#a62b8063b204ad8902efdc67fa4da1956" title="The set of export declarations that have yet to be resolved.">UnresolvedExports</a>.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00687"></a><span class="lineno">  687</span>     <a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a> Export = resolveExport(Mod, Mod-><a class="code" href="classclang_1_1Module.html#a62b8063b204ad8902efdc67fa4da1956" title="The set of export declarations that have yet to be resolved.">UnresolvedExports</a>[I], </div>
+<div class="line"><a name="l00688"></a><span class="lineno">  688</span>                                               Complain);</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>     <span class="keywordflow">if</span> (Export.getPointer() || Export.getInt())</div>
+<div class="line"><a name="l00690"></a><span class="lineno">  690</span>       Mod-><a class="code" href="classclang_1_1Module.html#a05638ca4f7fe86eb9363440c20c01130" title="The set of export declarations.">Exports</a>.push_back(Export);</div>
+<div class="line"><a name="l00691"></a><span class="lineno">  691</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00692"></a><span class="lineno">  692</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00693"></a><span class="lineno">  693</span>   }</div>
+<div class="line"><a name="l00694"></a><span class="lineno">  694</span>   Mod-><a class="code" href="classclang_1_1Module.html#a62b8063b204ad8902efdc67fa4da1956" title="The set of export declarations that have yet to be resolved.">UnresolvedExports</a>.clear();</div>
+<div class="line"><a name="l00695"></a><span class="lineno">  695</span>   <span class="keywordflow">return</span> HadError;</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span> }</div>
+<div class="line"><a name="l00697"></a><span class="lineno">  697</span> </div>
+<div class="line"><a name="l00698"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#aff262a15ac7933edd463953d969e4f6b">  698</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#aff262a15ac7933edd463953d969e4f6b" title="Resolve all of the unresolved uses in the given module.">ModuleMap::resolveUses</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain) {</div>
+<div class="line"><a name="l00699"></a><span class="lineno">  699</span>   <span class="keywordtype">bool</span> HadError = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Mod-><a class="code" href="classclang_1_1Module.html#a807bbdc20e2fb8ae2007a6a76244bc49" title="The set of use declarations that have yet to be resolved.">UnresolvedDirectUses</a>.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *DirectUse =</div>
+<div class="line"><a name="l00702"></a><span class="lineno">  702</span>         resolveModuleId(Mod-><a class="code" href="classclang_1_1Module.html#a807bbdc20e2fb8ae2007a6a76244bc49" title="The set of use declarations that have yet to be resolved.">UnresolvedDirectUses</a>[I], Mod, Complain);</div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>     <span class="keywordflow">if</span> (DirectUse)</div>
+<div class="line"><a name="l00704"></a><span class="lineno">  704</span>       Mod-><a class="code" href="classclang_1_1Module.html#a95775566d8066cb0ede2cfd01a338c1e" title="The directly used modules.">DirectUses</a>.push_back(DirectUse);</div>
+<div class="line"><a name="l00705"></a><span class="lineno">  705</span>     <span class="keywordflow">else</span></div>
+<div class="line"><a name="l00706"></a><span class="lineno">  706</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00707"></a><span class="lineno">  707</span>   }</div>
+<div class="line"><a name="l00708"></a><span class="lineno">  708</span>   Mod-><a class="code" href="classclang_1_1Module.html#a807bbdc20e2fb8ae2007a6a76244bc49" title="The set of use declarations that have yet to be resolved.">UnresolvedDirectUses</a>.clear();</div>
+<div class="line"><a name="l00709"></a><span class="lineno">  709</span>   <span class="keywordflow">return</span> HadError;</div>
+<div class="line"><a name="l00710"></a><span class="lineno">  710</span> }</div>
+<div class="line"><a name="l00711"></a><span class="lineno">  711</span> </div>
+<div class="line"><a name="l00712"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a635593eb7f27a7297eb22afacd08d104">  712</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#a635593eb7f27a7297eb22afacd08d104" title="Resolve all of the unresolved conflicts in the given module.">ModuleMap::resolveConflicts</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain) {</div>
+<div class="line"><a name="l00713"></a><span class="lineno">  713</span>   <span class="keywordtype">bool</span> HadError = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Mod-><a class="code" href="classclang_1_1Module.html#ab8f0b274f72bfad381e2ca20a7aecff6" title="The list of conflicts for which the module-id has not yet been resolved.">UnresolvedConflicts</a>.size(); I != N; ++I) {</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>     <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *OtherMod = resolveModuleId(Mod-><a class="code" href="classclang_1_1Module.html#ab8f0b274f72bfad381e2ca20a7aecff6" title="The list of conflicts for which the module-id has not yet been resolved.">UnresolvedConflicts</a>[I].Id,</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>                                        Mod, Complain);</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>     <span class="keywordflow">if</span> (!OtherMod) {</div>
+<div class="line"><a name="l00718"></a><span class="lineno">  718</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00719"></a><span class="lineno">  719</span>       <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l00720"></a><span class="lineno">  720</span>     }</div>
+<div class="line"><a name="l00721"></a><span class="lineno">  721</span> </div>
+<div class="line"><a name="l00722"></a><span class="lineno">  722</span>     <a class="code" href="structclang_1_1Module_1_1Conflict.html" title="A conflict between two modules.">Module::Conflict</a> Conflict;</div>
+<div class="line"><a name="l00723"></a><span class="lineno">  723</span>     Conflict.<a class="code" href="structclang_1_1Module_1_1Conflict.html#a166e4ba42a196c12037803ac020cf83b" title="The module that this module conflicts with.">Other</a> = OtherMod;</div>
+<div class="line"><a name="l00724"></a><span class="lineno">  724</span>     Conflict.<a class="code" href="structclang_1_1Module_1_1Conflict.html#a36f68dc996f06770984dfa803d00737c" title="The message provided to the user when there is a conflict.">Message</a> = Mod-><a class="code" href="classclang_1_1Module.html#ab8f0b274f72bfad381e2ca20a7aecff6" title="The list of conflicts for which the module-id has not yet been resolved.">UnresolvedConflicts</a>[I].Message;</div>
+<div class="line"><a name="l00725"></a><span class="lineno">  725</span>     Mod-><a class="code" href="classclang_1_1Module.html#afe7d527c3baed85720bfd21f822e2783" title="The list of conflicts.">Conflicts</a>.push_back(Conflict);</div>
+<div class="line"><a name="l00726"></a><span class="lineno">  726</span>   }</div>
+<div class="line"><a name="l00727"></a><span class="lineno">  727</span>   Mod-><a class="code" href="classclang_1_1Module.html#ab8f0b274f72bfad381e2ca20a7aecff6" title="The list of conflicts for which the module-id has not yet been resolved.">UnresolvedConflicts</a>.clear();</div>
+<div class="line"><a name="l00728"></a><span class="lineno">  728</span>   <span class="keywordflow">return</span> HadError;</div>
+<div class="line"><a name="l00729"></a><span class="lineno">  729</span> }</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span> </div>
+<div class="line"><a name="l00731"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a5fbb3347d523ee9b3f32c71ef4322102">  731</a></span> <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#a5fbb3347d523ee9b3f32c71ef4322102" title="Infers the (sub)module based on the given source location and source manager.">ModuleMap::inferModuleFromLocation</a>(<a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> Loc) {</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>   <span class="keywordflow">if</span> (Loc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>     <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>   </div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>   <span class="comment">// Use the expansion location to determine which module we're in.</span></div>
+<div class="line"><a name="l00736"></a><span class="lineno">  736</span>   <a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> ExpansionLoc = Loc.<a class="code" href="classclang_1_1FullSourceLoc.html#ae2e4a9834721a370db2f3c76de37f3ae">getExpansionLoc</a>();</div>
+<div class="line"><a name="l00737"></a><span class="lineno">  737</span>   <span class="keywordflow">if</span> (!ExpansionLoc.<a class="code" href="classclang_1_1SourceLocation.html#a8317aa72ddfd4e2221603217927070cc">isFileID</a>())</div>
+<div class="line"><a name="l00738"></a><span class="lineno">  738</span>     <span class="keywordflow">return</span> 0;  </div>
+<div class="line"><a name="l00739"></a><span class="lineno">  739</span>   </div>
+<div class="line"><a name="l00740"></a><span class="lineno">  740</span>   </div>
+<div class="line"><a name="l00741"></a><span class="lineno">  741</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &SrcMgr = Loc.<a class="code" href="classclang_1_1FullSourceLoc.html#a90ff11b13596b28b7b4a89f6c6c22a91">getManager</a>();</div>
+<div class="line"><a name="l00742"></a><span class="lineno">  742</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> ExpansionFileID = ExpansionLoc.<a class="code" href="classclang_1_1FullSourceLoc.html#ae2220ce56fa3fe83cc0d9530ae4e1d56">getFileID</a>();</div>
+<div class="line"><a name="l00743"></a><span class="lineno">  743</span>   </div>
+<div class="line"><a name="l00744"></a><span class="lineno">  744</span>   <span class="keywordflow">while</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> *ExpansionFile</div>
+<div class="line"><a name="l00745"></a><span class="lineno">  745</span>            = SrcMgr.<a class="code" href="classclang_1_1SourceManager.html#a89a4d1fa8ccc458bce84b0d72b4545db" title="Returns the FileEntry record for the provided FileID.">getFileEntryForID</a>(ExpansionFileID)) {</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>     <span class="comment">// Find the module that owns this header (if any).</span></div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod = <a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9" title="Retrieve the module that owns the given header file, if any.">findModuleForHeader</a>(ExpansionFile).<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>())</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>       <span class="keywordflow">return</span> Mod;</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>     </div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>     <span class="comment">// No module owns this header, so look up the inclusion chain to see if</span></div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>     <span class="comment">// any included header has an associated module.</span></div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> IncludeLoc = SrcMgr.<a class="code" href="classclang_1_1SourceManager.html#a995d8d7843d3e79ecd3f1fbb6c0596a6" title="Returns the include location if FID is a #include'd file otherwise it returns an invalid location...">getIncludeLoc</a>(ExpansionFileID);</div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>     <span class="keywordflow">if</span> (IncludeLoc.<a class="code" href="classclang_1_1SourceLocation.html#a1936fc09837ff8a195fa63e29f05796f">isInvalid</a>())</div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>     </div>
+<div class="line"><a name="l00756"></a><span class="lineno">  756</span>     ExpansionFileID = SrcMgr.<a class="code" href="classclang_1_1SourceManager.html#a2689190a49ad77cb4f5d022d48d92a9a" title="Return the FileID for a SourceLocation.">getFileID</a>(IncludeLoc);</div>
+<div class="line"><a name="l00757"></a><span class="lineno">  757</span>   }</div>
+<div class="line"><a name="l00758"></a><span class="lineno">  758</span>   </div>
+<div class="line"><a name="l00759"></a><span class="lineno">  759</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l00760"></a><span class="lineno">  760</span> }</div>
+<div class="line"><a name="l00761"></a><span class="lineno">  761</span> </div>
+<div class="line"><a name="l00762"></a><span class="lineno">  762</span> <span class="comment">//----------------------------------------------------------------------------//</span></div>
+<div class="line"><a name="l00763"></a><span class="lineno">  763</span> <span class="comment">// Module map file parser</span></div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span> <span class="comment">//----------------------------------------------------------------------------//</span></div>
+<div class="line"><a name="l00765"></a><span class="lineno">  765</span> </div>
+<div class="line"><a name="l00766"></a><span class="lineno">  766</span> <span class="keyword">namespace </span>clang {<span class="comment"></span></div>
+<div class="line"><a name="l00767"></a><span class="lineno">  767</span> <span class="comment">  /// \brief A token in a module map file.</span></div>
+<div class="line"><a name="l00768"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html">  768</a></span> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structclang_1_1MMToken.html" title="A token in a module map file.">MMToken</a> {</div>
+<div class="line"><a name="l00769"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">  769</a></span>     <span class="keyword">enum</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">TokenKind</a> {</div>
+<div class="line"><a name="l00770"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">  770</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">Comma</a>,</div>
+<div class="line"><a name="l00771"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba58c15e1805176ec3a5b3368952f783fc">  771</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba58c15e1805176ec3a5b3368952f783fc">ConfigMacros</a>,</div>
+<div class="line"><a name="l00772"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7ecdc054dc41aa967d19a5a1a4b399b0">  772</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7ecdc054dc41aa967d19a5a1a4b399b0">Conflict</a>,</div>
+<div class="line"><a name="l00773"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">  773</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">EndOfFile</a>,</div>
+<div class="line"><a name="l00774"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">  774</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">HeaderKeyword</a>,</div>
+<div class="line"><a name="l00775"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">  775</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">Identifier</a>,</div>
+<div class="line"><a name="l00776"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baf194071d48a941dfaf44b135cd764077">  776</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baf194071d48a941dfaf44b135cd764077">Exclaim</a>,</div>
+<div class="line"><a name="l00777"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">  777</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">ExcludeKeyword</a>,</div>
+<div class="line"><a name="l00778"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">  778</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">ExplicitKeyword</a>,</div>
+<div class="line"><a name="l00779"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">  779</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">ExportKeyword</a>,</div>
+<div class="line"><a name="l00780"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">  780</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">ExternKeyword</a>,</div>
+<div class="line"><a name="l00781"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">  781</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">FrameworkKeyword</a>,</div>
+<div class="line"><a name="l00782"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba543309e2a3f1a625e43b12e2e415f177">  782</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba543309e2a3f1a625e43b12e2e415f177">LinkKeyword</a>,</div>
+<div class="line"><a name="l00783"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">  783</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">ModuleKeyword</a>,</div>
+<div class="line"><a name="l00784"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">  784</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">Period</a>,</div>
+<div class="line"><a name="l00785"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">  785</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">PrivateKeyword</a>,</div>
+<div class="line"><a name="l00786"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">  786</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">UmbrellaKeyword</a>,</div>
+<div class="line"><a name="l00787"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae438908b5113391d88f8518f6227b0d3">  787</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae438908b5113391d88f8518f6227b0d3">UseKeyword</a>,</div>
+<div class="line"><a name="l00788"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba49abad35fc18db8438fbfab6c2095418">  788</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba49abad35fc18db8438fbfab6c2095418">RequiresKeyword</a>,</div>
+<div class="line"><a name="l00789"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">  789</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">Star</a>,</div>
+<div class="line"><a name="l00790"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">  790</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">StringLiteral</a>,</div>
+<div class="line"><a name="l00791"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">  791</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">LBrace</a>,</div>
+<div class="line"><a name="l00792"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">  792</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">RBrace</a>,</div>
+<div class="line"><a name="l00793"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba73a9c8c5b7ad4861c5152d5c2bed29bb">  793</a></span>       <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba73a9c8c5b7ad4861c5152d5c2bed29bb">LSquare</a>,</div>
+<div class="line"><a name="l00794"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">  794</a></span>       RSquare</div>
+<div class="line"><a name="l00795"></a><span class="lineno">  795</span>     } <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a>;</div>
+<div class="line"><a name="l00796"></a><span class="lineno">  796</span>     </div>
+<div class="line"><a name="l00797"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#a320bd87fc7617018fc065c41da0b1f55">  797</a></span>     <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1MMToken.html#a320bd87fc7617018fc065c41da0b1f55">Location</a>;</div>
+<div class="line"><a name="l00798"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#aa6a035e1ee0a9e418fe3e02f59cdfc75">  798</a></span>     <span class="keywordtype">unsigned</span> <a class="code" href="structclang_1_1MMToken.html#aa6a035e1ee0a9e418fe3e02f59cdfc75">StringLength</a>;</div>
+<div class="line"><a name="l00799"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#a9f9d75ced8777b7c1ea5b4a31d2db5b7">  799</a></span>     <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structclang_1_1MMToken.html#a9f9d75ced8777b7c1ea5b4a31d2db5b7">StringData</a>;</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>     </div>
+<div class="line"><a name="l00801"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ae23d44d840a7cdfe382c9f4c76f8476f">  801</a></span>     <span class="keywordtype">void</span> <a class="code" href="structclang_1_1MMToken.html#ae23d44d840a7cdfe382c9f4c76f8476f">clear</a>() {</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>       <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> = EndOfFile;</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>       Location = 0;</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>       StringLength = 0;</div>
+<div class="line"><a name="l00805"></a><span class="lineno">  805</span>       StringData = 0;</div>
+<div class="line"><a name="l00806"></a><span class="lineno">  806</span>     }</div>
+<div class="line"><a name="l00807"></a><span class="lineno">  807</span>     </div>
+<div class="line"><a name="l00808"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">  808</a></span>     <span class="keywordtype">bool</span> <a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">TokenKind</a> K)<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <a class="code" href="ChrootChecker_8cpp.html#aa10c9e8951b8ccf714a59ec321bdac5b">Kind</a> == K; }</div>
+<div class="line"><a name="l00809"></a><span class="lineno">  809</span>     </div>
+<div class="line"><a name="l00810"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">  810</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_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1SourceLocation.html#af6ffb91a339feae6d6a5101c533f1494" title="Turn a raw encoding of a SourceLocation object into a real SourceLocation.">SourceLocation::getFromRawEncoding</a>(Location);</div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>     }</div>
+<div class="line"><a name="l00813"></a><span class="lineno">  813</span>     </div>
+<div class="line"><a name="l00814"></a><span class="lineno"><a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">  814</a></span>     StringRef <a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00815"></a><span class="lineno">  815</span>       <span class="keywordflow">return</span> StringRef(StringData, StringLength);</div>
+<div class="line"><a name="l00816"></a><span class="lineno">  816</span>     }</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>   };</div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span> <span class="comment"></span></div>
+<div class="line"><a name="l00819"></a><span class="lineno">  819</span> <span class="comment">  /// \brief The set of attributes that can be attached to a module.</span></div>
+<div class="line"><a name="l00820"></a><span class="lineno"><a class="code" href="structclang_1_1Attributes.html">  820</a></span> <span class="comment"></span>  <span class="keyword">struct </span><a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> {</div>
+<div class="line"><a name="l00821"></a><span class="lineno"><a class="code" href="structclang_1_1Attributes.html#ab672ec7ade49d52687a42820b23de111">  821</a></span>     <a class="code" href="structclang_1_1Attributes.html#ab672ec7ade49d52687a42820b23de111">Attributes</a>() : IsSystem(), IsExhaustive() { }</div>
+<div class="line"><a name="l00822"></a><span class="lineno">  822</span> <span class="comment"></span></div>
+<div class="line"><a name="l00823"></a><span class="lineno">  823</span> <span class="comment">    /// \brief Whether this is a system module.</span></div>
+<div class="line"><a name="l00824"></a><span class="lineno"><a class="code" href="structclang_1_1Attributes.html#a7036c98ab1887091dfe30dca3ad12a71">  824</a></span> <span class="comment"></span>    <span class="keywordtype">unsigned</span> IsSystem : 1;</div>
+<div class="line"><a name="l00825"></a><span class="lineno">  825</span> <span class="comment"></span></div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span> <span class="comment">    /// \brief Whether this is an exhaustive set of configuration macros.</span></div>
+<div class="line"><a name="l00827"></a><span class="lineno"><a class="code" href="structclang_1_1Attributes.html#a635dfbbcfd97606f95aa4b636a1c543b">  827</a></span> <span class="comment"></span>    <span class="keywordtype">unsigned</span> IsExhaustive : 1;</div>
+<div class="line"><a name="l00828"></a><span class="lineno">  828</span>   };</div>
+<div class="line"><a name="l00829"></a><span class="lineno">  829</span>   </div>
+<div class="line"><a name="l00830"></a><span class="lineno">  830</span> </div>
+<div class="line"><a name="l00831"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMapParser.html">  831</a></span>   <span class="keyword">class </span><a class="code" href="classclang_1_1ModuleMapParser.html">ModuleMapParser</a> {</div>
+<div class="line"><a name="l00832"></a><span class="lineno">  832</span>     <a class="code" href="classclang_1_1Lexer.html">Lexer</a> &L;</div>
+<div class="line"><a name="l00833"></a><span class="lineno">  833</span>     <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="Format_8cpp.html#a8b28f9f83ac8256fbde7e45b0f874f27">SourceMgr</a>;</div>
+<div class="line"><a name="l00834"></a><span class="lineno">  834</span> <span class="comment"></span></div>
+<div class="line"><a name="l00835"></a><span class="lineno">  835</span> <span class="comment">    /// \brief Default target information, used only for string literal</span></div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span> <span class="comment">    /// parsing.</span></div>
+<div class="line"><a name="l00837"></a><span class="lineno">  837</span> <span class="comment"></span>    <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> *Target;</div>
+<div class="line"><a name="l00838"></a><span class="lineno">  838</span> </div>
+<div class="line"><a name="l00839"></a><span class="lineno">  839</span>     <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diags;</div>
+<div class="line"><a name="l00840"></a><span class="lineno">  840</span>     <a class="code" href="classclang_1_1ModuleMap.html">ModuleMap</a> &<a class="code" href="namespaceclang_1_1LangAS.html#a241b6fc974438ba623ec877f2b294f0c">Map</a>;</div>
+<div class="line"><a name="l00841"></a><span class="lineno">  841</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00842"></a><span class="lineno">  842</span> <span class="comment">    /// \brief The directory that this module map resides in.</span></div>
+<div class="line"><a name="l00843"></a><span class="lineno">  843</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> *Directory;</div>
+<div class="line"><a name="l00844"></a><span class="lineno">  844</span> <span class="comment"></span></div>
+<div class="line"><a name="l00845"></a><span class="lineno">  845</span> <span class="comment">    /// \brief The directory containing Clang-supplied headers.</span></div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</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> *BuiltinIncludeDir;</div>
+<div class="line"><a name="l00847"></a><span class="lineno">  847</span> <span class="comment"></span></div>
+<div class="line"><a name="l00848"></a><span class="lineno">  848</span> <span class="comment">    /// \brief Whether this module map is in a system header directory.</span></div>
+<div class="line"><a name="l00849"></a><span class="lineno">  849</span> <span class="comment"></span>    <span class="keywordtype">bool</span> IsSystem;</div>
+<div class="line"><a name="l00850"></a><span class="lineno">  850</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00851"></a><span class="lineno">  851</span> <span class="comment">    /// \brief Whether an error occurred.</span></div>
+<div class="line"><a name="l00852"></a><span class="lineno">  852</span> <span class="comment"></span>    <span class="keywordtype">bool</span> HadError;</div>
+<div class="line"><a name="l00853"></a><span class="lineno">  853</span>         <span class="comment"></span></div>
+<div class="line"><a name="l00854"></a><span class="lineno">  854</span> <span class="comment">    /// \brief Stores string data for the various string literals referenced</span></div>
+<div class="line"><a name="l00855"></a><span class="lineno">  855</span> <span class="comment">    /// during parsing.</span></div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span> <span class="comment"></span>    llvm::BumpPtrAllocator StringData;</div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span> <span class="comment">    /// \brief The current token.</span></div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span> <span class="comment"></span>    <a class="code" href="structclang_1_1MMToken.html" title="A token in a module map file.">MMToken</a> Tok;</div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span> <span class="comment">    /// \brief The active module.</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span> <span class="comment"></span>    <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *ActiveModule;</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span> <span class="comment">    /// \brief Consume the current token and return its location.</span></div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span> <span class="comment"></span>    <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> consumeToken();</div>
+<div class="line"><a name="l00866"></a><span class="lineno">  866</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00867"></a><span class="lineno">  867</span> <span class="comment">    /// \brief Skip tokens until we reach the a token with the given kind</span></div>
+<div class="line"><a name="l00868"></a><span class="lineno">  868</span> <span class="comment">    /// (or the end of the file).</span></div>
+<div class="line"><a name="l00869"></a><span class="lineno">  869</span> <span class="comment"></span>    <span class="keywordtype">void</span> skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">MMToken::TokenKind</a> K);</div>
+<div class="line"><a name="l00870"></a><span class="lineno">  870</span> </div>
+<div class="line"><a name="l00871"></a><span class="lineno">  871</span>     <span class="keyword">typedef</span> <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<std::pair<std::string, SourceLocation></a>, 2> <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a>;</div>
+<div class="line"><a name="l00872"></a><span class="lineno">  872</span>     <span class="keywordtype">bool</span> parseModuleId(ModuleId &Id);</div>
+<div class="line"><a name="l00873"></a><span class="lineno">  873</span>     <span class="keywordtype">void</span> parseModuleDecl();</div>
+<div class="line"><a name="l00874"></a><span class="lineno">  874</span>     <span class="keywordtype">void</span> parseExternModuleDecl();</div>
+<div class="line"><a name="l00875"></a><span class="lineno">  875</span>     <span class="keywordtype">void</span> parseRequiresDecl();</div>
+<div class="line"><a name="l00876"></a><span class="lineno">  876</span>     <span class="keywordtype">void</span> parseHeaderDecl(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">clang::MMToken::TokenKind</a>,</div>
+<div class="line"><a name="l00877"></a><span class="lineno">  877</span>                          <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LeadingLoc);</div>
+<div class="line"><a name="l00878"></a><span class="lineno">  878</span>     <span class="keywordtype">void</span> parseUmbrellaDirDecl(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> UmbrellaLoc);</div>
+<div class="line"><a name="l00879"></a><span class="lineno">  879</span>     <span class="keywordtype">void</span> parseExportDecl();</div>
+<div class="line"><a name="l00880"></a><span class="lineno">  880</span>     <span class="keywordtype">void</span> parseUseDecl();</div>
+<div class="line"><a name="l00881"></a><span class="lineno">  881</span>     <span class="keywordtype">void</span> parseLinkDecl();</div>
+<div class="line"><a name="l00882"></a><span class="lineno">  882</span>     <span class="keywordtype">void</span> parseConfigMacros();</div>
+<div class="line"><a name="l00883"></a><span class="lineno">  883</span>     <span class="keywordtype">void</span> parseConflict();</div>
+<div class="line"><a name="l00884"></a><span class="lineno">  884</span>     <span class="keywordtype">void</span> parseInferredModuleDecl(<span class="keywordtype">bool</span> Framework, <span class="keywordtype">bool</span> Explicit);</div>
+<div class="line"><a name="l00885"></a><span class="lineno">  885</span>     <span class="keywordtype">bool</span> parseOptionalAttributes(<a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> &Attrs);</div>
+<div class="line"><a name="l00886"></a><span class="lineno">  886</span> </div>
+<div class="line"><a name="l00887"></a><span class="lineno">  887</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> *getOverriddenHeaderSearchDir();</div>
+<div class="line"><a name="l00888"></a><span class="lineno">  888</span>     </div>
+<div class="line"><a name="l00889"></a><span class="lineno">  889</span>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00890"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMapParser.html#a02ccffd762fc559a32e5fd8b9ded05e2">  890</a></span>     <span class="keyword">explicit</span> <a class="code" href="classclang_1_1ModuleMapParser.html">ModuleMapParser</a>(<a class="code" href="classclang_1_1Lexer.html">Lexer</a> &L, <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="Format_8cpp.html#a8b28f9f83ac8256fbde7e45b0f874f27">SourceMgr</a>, </div>
+<div class="line"><a name="l00891"></a><span class="lineno">  891</span>                              <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> *Target,</div>
+<div class="line"><a name="l00892"></a><span class="lineno">  892</span>                              <a class="code" href="classclang_1_1DiagnosticsEngine.html" title="Concrete class used by the front-end to report problems and issues.">DiagnosticsEngine</a> &Diags,</div>
+<div class="line"><a name="l00893"></a><span class="lineno">  893</span>                              <a class="code" href="classclang_1_1ModuleMap.html">ModuleMap</a> &<a class="code" href="namespaceclang_1_1LangAS.html#a241b6fc974438ba623ec877f2b294f0c">Map</a>,</div>
+<div class="line"><a name="l00894"></a><span class="lineno">  894</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> *Directory,</div>
+<div class="line"><a name="l00895"></a><span class="lineno">  895</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> *BuiltinIncludeDir,</div>
+<div class="line"><a name="l00896"></a><span class="lineno">  896</span>                              <span class="keywordtype">bool</span> IsSystem)</div>
+<div class="line"><a name="l00897"></a><span class="lineno">  897</span>       : L(L), SourceMgr(SourceMgr), Target(Target), Diags(Diags), Map(Map), </div>
+<div class="line"><a name="l00898"></a><span class="lineno">  898</span>         Directory(Directory), BuiltinIncludeDir(BuiltinIncludeDir),</div>
+<div class="line"><a name="l00899"></a><span class="lineno">  899</span>         IsSystem(IsSystem), HadError(<a class="code" href="stdbool_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>), ActiveModule(0)</div>
+<div class="line"><a name="l00900"></a><span class="lineno">  900</span>     {</div>
+<div class="line"><a name="l00901"></a><span class="lineno">  901</span>       Tok.clear();</div>
+<div class="line"><a name="l00902"></a><span class="lineno">  902</span>       consumeToken();</div>
+<div class="line"><a name="l00903"></a><span class="lineno">  903</span>     }</div>
+<div class="line"><a name="l00904"></a><span class="lineno">  904</span>     </div>
+<div class="line"><a name="l00905"></a><span class="lineno">  905</span>     <span class="keywordtype">bool</span> parseModuleMapFile();</div>
+<div class="line"><a name="l00906"></a><span class="lineno">  906</span>   };</div>
+<div class="line"><a name="l00907"></a><span class="lineno">  907</span> }</div>
+<div class="line"><a name="l00908"></a><span class="lineno">  908</span> </div>
+<div class="line"><a name="l00909"></a><span class="lineno">  909</span> <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ModuleMapParser::consumeToken() {</div>
+<div class="line"><a name="l00910"></a><span class="lineno">  910</span> retry:</div>
+<div class="line"><a name="l00911"></a><span class="lineno">  911</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> Result = Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>();</div>
+<div class="line"><a name="l00912"></a><span class="lineno">  912</span>   Tok.<a class="code" href="structclang_1_1MMToken.html#ae23d44d840a7cdfe382c9f4c76f8476f">clear</a>();</div>
+<div class="line"><a name="l00913"></a><span class="lineno">  913</span>   </div>
+<div class="line"><a name="l00914"></a><span class="lineno">  914</span>   <a class="code" href="classclang_1_1Token.html">Token</a> LToken;</div>
+<div class="line"><a name="l00915"></a><span class="lineno">  915</span>   L.<a class="code" href="classclang_1_1Lexer.html#a16e11a597200d643efbc21fb8e657567">LexFromRawLexer</a>(LToken);</div>
+<div class="line"><a name="l00916"></a><span class="lineno">  916</span>   Tok.<a class="code" href="structclang_1_1MMToken.html#a320bd87fc7617018fc065c41da0b1f55">Location</a> = LToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>().<a class="code" href="classclang_1_1SourceLocation.html#a3b9eca838127c4105fd77fd0d3b5962a" title="When a SourceLocation itself cannot be used, this returns an (opaque) 32-bit integer encoding for it...">getRawEncoding</a>();</div>
+<div class="line"><a name="l00917"></a><span class="lineno">  917</span>   <span class="keywordflow">switch</span> (LToken.<a class="code" href="classclang_1_1Token.html#a84a069f6887b650763e640eeabfeebe4">getKind</a>()) {</div>
+<div class="line"><a name="l00918"></a><span class="lineno">  918</span>   <span class="keywordflow">case</span> tok::raw_identifier:</div>
+<div class="line"><a name="l00919"></a><span class="lineno">  919</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a9f9d75ced8777b7c1ea5b4a31d2db5b7">StringData</a> = LToken.<a class="code" href="classclang_1_1Token.html#a63f951b781b7c3cca10b5edd2adfaf11">getRawIdentifierData</a>();</div>
+<div class="line"><a name="l00920"></a><span class="lineno">  920</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#aa6a035e1ee0a9e418fe3e02f59cdfc75">StringLength</a> = LToken.<a class="code" href="classclang_1_1Token.html#ada56747093e2043afd6a497d1714332d">getLength</a>();</div>
+<div class="line"><a name="l00921"></a><span class="lineno">  921</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = llvm::StringSwitch<MMToken::TokenKind>(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>())</div>
+<div class="line"><a name="l00922"></a><span class="lineno">  922</span>                  .Case(<span class="stringliteral">"config_macros"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba58c15e1805176ec3a5b3368952f783fc">MMToken::ConfigMacros</a>)</div>
+<div class="line"><a name="l00923"></a><span class="lineno">  923</span>                  .Case(<span class="stringliteral">"conflict"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7ecdc054dc41aa967d19a5a1a4b399b0">MMToken::Conflict</a>)</div>
+<div class="line"><a name="l00924"></a><span class="lineno">  924</span>                  .Case(<span class="stringliteral">"exclude"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>)</div>
+<div class="line"><a name="l00925"></a><span class="lineno">  925</span>                  .Case(<span class="stringliteral">"explicit"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">MMToken::ExplicitKeyword</a>)</div>
+<div class="line"><a name="l00926"></a><span class="lineno">  926</span>                  .Case(<span class="stringliteral">"export"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">MMToken::ExportKeyword</a>)</div>
+<div class="line"><a name="l00927"></a><span class="lineno">  927</span>                  .Case(<span class="stringliteral">"extern"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">MMToken::ExternKeyword</a>)</div>
+<div class="line"><a name="l00928"></a><span class="lineno">  928</span>                  .Case(<span class="stringliteral">"framework"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">MMToken::FrameworkKeyword</a>)</div>
+<div class="line"><a name="l00929"></a><span class="lineno">  929</span>                  .Case(<span class="stringliteral">"header"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>)</div>
+<div class="line"><a name="l00930"></a><span class="lineno">  930</span>                  .Case(<span class="stringliteral">"link"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba543309e2a3f1a625e43b12e2e415f177">MMToken::LinkKeyword</a>)</div>
+<div class="line"><a name="l00931"></a><span class="lineno">  931</span>                  .Case(<span class="stringliteral">"module"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>)</div>
+<div class="line"><a name="l00932"></a><span class="lineno">  932</span>                  .Case(<span class="stringliteral">"private"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">MMToken::PrivateKeyword</a>)</div>
+<div class="line"><a name="l00933"></a><span class="lineno">  933</span>                  .Case(<span class="stringliteral">"requires"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba49abad35fc18db8438fbfab6c2095418">MMToken::RequiresKeyword</a>)</div>
+<div class="line"><a name="l00934"></a><span class="lineno">  934</span>                  .Case(<span class="stringliteral">"umbrella"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>)</div>
+<div class="line"><a name="l00935"></a><span class="lineno">  935</span>                  .Case(<span class="stringliteral">"use"</span>, <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae438908b5113391d88f8518f6227b0d3">MMToken::UseKeyword</a>)</div>
+<div class="line"><a name="l00936"></a><span class="lineno">  936</span>                  .Default(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>);</div>
+<div class="line"><a name="l00937"></a><span class="lineno">  937</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00938"></a><span class="lineno">  938</span> </div>
+<div class="line"><a name="l00939"></a><span class="lineno">  939</span>   <span class="keywordflow">case</span> tok::comma:</div>
+<div class="line"><a name="l00940"></a><span class="lineno">  940</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">MMToken::Comma</a>;</div>
+<div class="line"><a name="l00941"></a><span class="lineno">  941</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00942"></a><span class="lineno">  942</span> </div>
+<div class="line"><a name="l00943"></a><span class="lineno">  943</span>   <span class="keywordflow">case</span> <a class="code" href="namespaceclang_1_1comments_1_1tok.html#af269e1299a7e813dd4471ab24630e01aac4904dc9309fe9cf0fe76ff45d54f265">tok::eof</a>:</div>
+<div class="line"><a name="l00944"></a><span class="lineno">  944</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">MMToken::EndOfFile</a>;</div>
+<div class="line"><a name="l00945"></a><span class="lineno">  945</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00946"></a><span class="lineno">  946</span>       </div>
+<div class="line"><a name="l00947"></a><span class="lineno">  947</span>   <span class="keywordflow">case</span> tok::l_brace:</div>
+<div class="line"><a name="l00948"></a><span class="lineno">  948</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">MMToken::LBrace</a>;</div>
+<div class="line"><a name="l00949"></a><span class="lineno">  949</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00950"></a><span class="lineno">  950</span> </div>
+<div class="line"><a name="l00951"></a><span class="lineno">  951</span>   <span class="keywordflow">case</span> tok::l_square:</div>
+<div class="line"><a name="l00952"></a><span class="lineno">  952</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba73a9c8c5b7ad4861c5152d5c2bed29bb">MMToken::LSquare</a>;</div>
+<div class="line"><a name="l00953"></a><span class="lineno">  953</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00954"></a><span class="lineno">  954</span>       </div>
+<div class="line"><a name="l00955"></a><span class="lineno">  955</span>   <span class="keywordflow">case</span> tok::period:</div>
+<div class="line"><a name="l00956"></a><span class="lineno">  956</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">MMToken::Period</a>;</div>
+<div class="line"><a name="l00957"></a><span class="lineno">  957</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00958"></a><span class="lineno">  958</span>       </div>
+<div class="line"><a name="l00959"></a><span class="lineno">  959</span>   <span class="keywordflow">case</span> tok::r_brace:</div>
+<div class="line"><a name="l00960"></a><span class="lineno">  960</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>;</div>
+<div class="line"><a name="l00961"></a><span class="lineno">  961</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00962"></a><span class="lineno">  962</span>       </div>
+<div class="line"><a name="l00963"></a><span class="lineno">  963</span>   <span class="keywordflow">case</span> tok::r_square:</div>
+<div class="line"><a name="l00964"></a><span class="lineno">  964</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>;</div>
+<div class="line"><a name="l00965"></a><span class="lineno">  965</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00966"></a><span class="lineno">  966</span>       </div>
+<div class="line"><a name="l00967"></a><span class="lineno">  967</span>   <span class="keywordflow">case</span> tok::star:</div>
+<div class="line"><a name="l00968"></a><span class="lineno">  968</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">MMToken::Star</a>;</div>
+<div class="line"><a name="l00969"></a><span class="lineno">  969</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00970"></a><span class="lineno">  970</span>       </div>
+<div class="line"><a name="l00971"></a><span class="lineno">  971</span>   <span class="keywordflow">case</span> tok::exclaim:</div>
+<div class="line"><a name="l00972"></a><span class="lineno">  972</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baf194071d48a941dfaf44b135cd764077">MMToken::Exclaim</a>;</div>
+<div class="line"><a name="l00973"></a><span class="lineno">  973</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00974"></a><span class="lineno">  974</span>       </div>
+<div class="line"><a name="l00975"></a><span class="lineno">  975</span>   <span class="keywordflow">case</span> tok::string_literal: {</div>
+<div class="line"><a name="l00976"></a><span class="lineno">  976</span>     <span class="keywordflow">if</span> (LToken.<a class="code" href="classclang_1_1Token.html#a0a2223e4b9c06ce5b651ec8bd830dedd" title="Return true if this token is a string or character literal which has a ud-suffix.">hasUDSuffix</a>()) {</div>
+<div class="line"><a name="l00977"></a><span class="lineno">  977</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_invalid_string_udl);</div>
+<div class="line"><a name="l00978"></a><span class="lineno">  978</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00979"></a><span class="lineno">  979</span>       <span class="keywordflow">goto</span> retry;</div>
+<div class="line"><a name="l00980"></a><span class="lineno">  980</span>     }</div>
+<div class="line"><a name="l00981"></a><span class="lineno">  981</span> </div>
+<div class="line"><a name="l00982"></a><span class="lineno">  982</span>     <span class="comment">// Parse the string literal.</span></div>
+<div class="line"><a name="l00983"></a><span class="lineno">  983</span>     <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> LangOpts;</div>
+<div class="line"><a name="l00984"></a><span class="lineno">  984</span>     <a class="code" href="classclang_1_1StringLiteralParser.html">StringLiteralParser</a> <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>(&LToken, 1, SourceMgr, LangOpts, *Target);</div>
+<div class="line"><a name="l00985"></a><span class="lineno">  985</span>     <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>.hadError)</div>
+<div class="line"><a name="l00986"></a><span class="lineno">  986</span>       <span class="keywordflow">goto</span> retry;</div>
+<div class="line"><a name="l00987"></a><span class="lineno">  987</span>     </div>
+<div class="line"><a name="l00988"></a><span class="lineno">  988</span>     <span class="comment">// Copy the string literal into our string data allocator.</span></div>
+<div class="line"><a name="l00989"></a><span class="lineno">  989</span>     <span class="keywordtype">unsigned</span> Length = <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>.GetStringLength();</div>
+<div class="line"><a name="l00990"></a><span class="lineno">  990</span>     <span class="keywordtype">char</span> *<a class="code" href="SemaOverload_8cpp.html#ace72bb49951cc617e98070bbdbd0db33">Saved</a> = StringData.Allocate<<span class="keywordtype">char</span>>(Length + 1);</div>
+<div class="line"><a name="l00991"></a><span class="lineno">  991</span>     memcpy(Saved, <a class="code" href="classclang_1_1StringLiteral.html">StringLiteral</a>.GetString().data(), Length);</div>
+<div class="line"><a name="l00992"></a><span class="lineno">  992</span>     Saved[Length] = 0;</div>
+<div class="line"><a name="l00993"></a><span class="lineno">  993</span>     </div>
+<div class="line"><a name="l00994"></a><span class="lineno">  994</span>     <span class="comment">// Form the token.</span></div>
+<div class="line"><a name="l00995"></a><span class="lineno">  995</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a> = <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>;</div>
+<div class="line"><a name="l00996"></a><span class="lineno">  996</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#a9f9d75ced8777b7c1ea5b4a31d2db5b7">StringData</a> = <a class="code" href="SemaOverload_8cpp.html#ace72bb49951cc617e98070bbdbd0db33">Saved</a>;</div>
+<div class="line"><a name="l00997"></a><span class="lineno">  997</span>     Tok.<a class="code" href="structclang_1_1MMToken.html#aa6a035e1ee0a9e418fe3e02f59cdfc75">StringLength</a> = Length;</div>
+<div class="line"><a name="l00998"></a><span class="lineno">  998</span>     <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l00999"></a><span class="lineno">  999</span>   }</div>
+<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>       </div>
+<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>   <span class="keywordflow">case</span> tok::comment:</div>
+<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>     <span class="keywordflow">goto</span> retry;</div>
+<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>       </div>
+<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>   <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LToken.<a class="code" href="classclang_1_1Token.html#a6f28cdecdecc3f19f8e7c976a044ebf8" title="Return a source location identifier for the specified offset in the current file.">getLocation</a>(), diag::err_mmap_unknown_token);</div>
+<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span>     <span class="keywordflow">goto</span> retry;</div>
+<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span>   }</div>
+<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span>   </div>
+<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> }</div>
+<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div>
+<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="keywordtype">void</span> ModuleMapParser::skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">MMToken::TokenKind</a> K) {</div>
+<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span>   <span class="keywordtype">unsigned</span> braceDepth = 0;</div>
+<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span>   <span class="keywordtype">unsigned</span> squareDepth = 0;</div>
+<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>     <span class="keywordflow">switch</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a>) {</div>
+<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">MMToken::EndOfFile</a>:</div>
+<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> </div>
+<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">MMToken::LBrace</a>:</div>
+<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(K) && braceDepth == 0 && squareDepth == 0)</div>
+<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span>         </div>
+<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span>       ++braceDepth;</div>
+<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span> </div>
+<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba73a9c8c5b7ad4861c5152d5c2bed29bb">MMToken::LSquare</a>:</div>
+<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(K) && braceDepth == 0 && squareDepth == 0)</div>
+<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01031"></a><span class="lineno"> 1031</span>       </div>
+<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>       ++squareDepth;</div>
+<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span> </div>
+<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>:</div>
+<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>       <span class="keywordflow">if</span> (braceDepth > 0)</div>
+<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>         --braceDepth;</div>
+<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(K))</div>
+<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span> </div>
+<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>:</div>
+<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span>       <span class="keywordflow">if</span> (squareDepth > 0)</div>
+<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span>         --squareDepth;</div>
+<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(K))</div>
+<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01047"></a><span class="lineno"> 1047</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span> </div>
+<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>       <span class="keywordflow">if</span> (braceDepth == 0 && squareDepth == 0 && Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(K))</div>
+<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>         <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>     }</div>
+<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>     </div>
+<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>    consumeToken();</div>
+<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span> }</div>
+<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span> <span class="comment"></span></div>
+<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span> <span class="comment">/// \brief Parse a module-id.</span></div>
+<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span> <span class="comment">///   module-id:</span></div>
+<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span> <span class="comment">///     identifier</span></div>
+<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span> <span class="comment">///     identifier '.' module-id</span></div>
+<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span> <span class="comment">/// \returns true if an error occurred, false otherwise.</span></div>
+<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span> <span class="comment"></span><span class="keywordtype">bool</span> ModuleMapParser::parseModuleId(<a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> &Id) {</div>
+<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span>   Id.clear();</div>
+<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l01070"></a><span class="lineno"> 1070</span>       Id.push_back(std::make_pair(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>(), Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>()));</div>
+<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>       consumeToken();</div>
+<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_module_name);</div>
+<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>       <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>     }</div>
+<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>     </div>
+<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">MMToken::Period</a>))</div>
+<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>     </div>
+<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>     consumeToken();</div>
+<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>   </div>
+<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>   <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span> }</div>
+<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span> </div>
+<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span> <span class="keyword">namespace </span>{<span class="comment"></span></div>
+<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span> <span class="comment">  /// \brief Enumerates the known attributes.</span></div>
+<div class="line"><a name="l01088"></a><span class="lineno"><a class="code" href="ModuleMap_8cpp.html#ae35a381d74eb7257124045a96ae47ade"> 1088</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="ModuleMap_8cpp.html#ae35a381d74eb7257124045a96ae47ade" title="Enumerates the known attributes.">AttributeKind</a> {<span class="comment"></span></div>
+<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span> <span class="comment">    /// \brief An unknown attribute.</span></div>
+<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span> <span class="comment"></span>    AT_unknown,<span class="comment"></span></div>
+<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span> <span class="comment">    /// \brief The 'system' attribute.</span></div>
+<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> <span class="comment"></span>    AT_system,<span class="comment"></span></div>
+<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> <span class="comment">    /// \brief The 'exhaustive' attribute.</span></div>
+<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="comment"></span>    AT_exhaustive</div>
+<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span>   };</div>
+<div class="line"><a name="l01096"></a><span class="lineno"> 1096</span> }</div>
+<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span> <span class="comment"></span></div>
+<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> <span class="comment">/// \brief Parse a module declaration.</span></div>
+<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="comment">///   module-declaration:</span></div>
+<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="comment">///     'extern' 'module' module-id string-literal</span></div>
+<div class="line"><a name="l01102"></a><span class="lineno"> 1102</span> <span class="comment">///     'explicit'[opt] 'framework'[opt] 'module' module-id attributes[opt] </span></div>
+<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span> <span class="comment">///       { module-member* }</span></div>
+<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> <span class="comment">///   module-member:</span></div>
+<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="comment">///     requires-declaration</span></div>
+<div class="line"><a name="l01107"></a><span class="lineno"> 1107</span> <span class="comment">///     header-declaration</span></div>
+<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span> <span class="comment">///     submodule-declaration</span></div>
+<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> <span class="comment">///     export-declaration</span></div>
+<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span> <span class="comment">///     link-declaration</span></div>
+<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span> <span class="comment">///   submodule-declaration:</span></div>
+<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span> <span class="comment">///     module-declaration</span></div>
+<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span> <span class="comment">///     inferred-submodule-declaration</span></div>
+<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseModuleDecl() {</div>
+<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">MMToken::ExplicitKeyword</a>) || Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>) ||</div>
+<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>          Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">MMToken::FrameworkKeyword</a>) || Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">MMToken::ExternKeyword</a>));</div>
+<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">MMToken::ExternKeyword</a>)) {</div>
+<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>     parseExternModuleDecl();</div>
+<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>   }</div>
+<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span> </div>
+<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>   <span class="comment">// Parse 'explicit' or 'framework' keyword, if present.</span></div>
+<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ExplicitLoc;</div>
+<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>   <span class="keywordtype">bool</span> Explicit = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>   <span class="keywordtype">bool</span> Framework = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span> </div>
+<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>   <span class="comment">// Parse 'explicit' keyword, if present.</span></div>
+<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">MMToken::ExplicitKeyword</a>)) {</div>
+<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>     ExplicitLoc = consumeToken();</div>
+<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>     Explicit = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>   }</div>
+<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span> </div>
+<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>   <span class="comment">// Parse 'framework' keyword, if present.</span></div>
+<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">MMToken::FrameworkKeyword</a>)) {</div>
+<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>     consumeToken();</div>
+<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>     Framework = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>   } </div>
+<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>   </div>
+<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>   <span class="comment">// Parse 'module' keyword.</span></div>
+<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>)) {</div>
+<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_module);</div>
+<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span>     consumeToken();</div>
+<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span>   }</div>
+<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span>   consumeToken(); <span class="comment">// 'module' keyword</span></div>
+<div class="line"><a name="l01148"></a><span class="lineno"> 1148</span> </div>
+<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>   <span class="comment">// If we have a wildcard for the module name, this is an inferred submodule.</span></div>
+<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span>   <span class="comment">// Parse it. </span></div>
+<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">MMToken::Star</a>))</div>
+<div class="line"><a name="l01152"></a><span class="lineno"> 1152</span>     <span class="keywordflow">return</span> parseInferredModuleDecl(Framework, Explicit);</div>
+<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>   </div>
+<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span>   <span class="comment">// Parse the module name.</span></div>
+<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span>   <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> Id;</div>
+<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span>   <span class="keywordflow">if</span> (parseModuleId(Id)) {</div>
+<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span>   }</div>
+<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> </div>
+<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span>   <span class="keywordflow">if</span> (ActiveModule) {</div>
+<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span>     <span class="keywordflow">if</span> (Id.size() > 1) {</div>
+<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Id.front().second, diag::err_mmap_nested_submodule_id)</div>
+<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span>         << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(Id.front().second, Id.back().second);</div>
+<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span>       </div>
+<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01168"></a><span class="lineno"> 1168</span>     }</div>
+<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Id.size() == 1 && Explicit) {</div>
+<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>     <span class="comment">// Top-level modules can't be explicit.</span></div>
+<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(ExplicitLoc, diag::err_mmap_explicit_top_level);</div>
+<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>     Explicit = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>     ExplicitLoc = <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>();</div>
+<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>   }</div>
+<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>   </div>
+<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *PreviousActiveModule = ActiveModule;  </div>
+<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>   <span class="keywordflow">if</span> (Id.size() > 1) {</div>
+<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>     <span class="comment">// This module map defines a submodule. Go find the module of which it</span></div>
+<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>     <span class="comment">// is a submodule.</span></div>
+<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>     ActiveModule = 0;</div>
+<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Id.size() - 1; I != N; ++I) {</div>
+<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Next = Map.<a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(Id[I].first, ActiveModule)) {</div>
+<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>         ActiveModule = Next;</div>
+<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>       }</div>
+<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>       </div>
+<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>       <span class="keywordflow">if</span> (ActiveModule) {</div>
+<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Id[I].second, diag::err_mmap_missing_module_qualified)</div>
+<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>           << Id[I].first << ActiveModule-><a class="code" href="classclang_1_1Module.html#ab9ac0815c7df4b9466e2a7212fd2d300" title="Retrieve the top-level module for this (sub)module, which may be this module.">getTopLevelModule</a>();</div>
+<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Id[I].second, diag::err_mmap_expected_module_name);</div>
+<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span>       }</div>
+<div class="line"><a name="l01194"></a><span class="lineno"> 1194</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span>     }</div>
+<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span>   } </div>
+<div class="line"><a name="l01198"></a><span class="lineno"> 1198</span>   </div>
+<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>   StringRef ModuleName = Id.back().first;</div>
+<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ModuleNameLoc = Id.back().second;</div>
+<div class="line"><a name="l01201"></a><span class="lineno"> 1201</span>   </div>
+<div class="line"><a name="l01202"></a><span class="lineno"> 1202</span>   <span class="comment">// Parse the optional attribute list.</span></div>
+<div class="line"><a name="l01203"></a><span class="lineno"> 1203</span>   <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> Attrs;</div>
+<div class="line"><a name="l01204"></a><span class="lineno"> 1204</span>   parseOptionalAttributes(Attrs);</div>
+<div class="line"><a name="l01205"></a><span class="lineno"> 1205</span>   </div>
+<div class="line"><a name="l01206"></a><span class="lineno"> 1206</span>   <span class="comment">// Parse the opening brace.</span></div>
+<div class="line"><a name="l01207"></a><span class="lineno"> 1207</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">MMToken::LBrace</a>)) {</div>
+<div class="line"><a name="l01208"></a><span class="lineno"> 1208</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_lbrace)</div>
+<div class="line"><a name="l01209"></a><span class="lineno"> 1209</span>       << ModuleName;</div>
+<div class="line"><a name="l01210"></a><span class="lineno"> 1210</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01211"></a><span class="lineno"> 1211</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01212"></a><span class="lineno"> 1212</span>   }  </div>
+<div class="line"><a name="l01213"></a><span class="lineno"> 1213</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LBraceLoc = consumeToken();</div>
+<div class="line"><a name="l01214"></a><span class="lineno"> 1214</span>   </div>
+<div class="line"><a name="l01215"></a><span class="lineno"> 1215</span>   <span class="comment">// Determine whether this (sub)module has already been defined.</span></div>
+<div class="line"><a name="l01216"></a><span class="lineno"> 1216</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Existing = Map.<a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(ModuleName, ActiveModule)) {</div>
+<div class="line"><a name="l01217"></a><span class="lineno"> 1217</span>     <span class="keywordflow">if</span> (Existing->DefinitionLoc.isInvalid() && !ActiveModule) {</div>
+<div class="line"><a name="l01218"></a><span class="lineno"> 1218</span>       <span class="comment">// Skip the module definition.</span></div>
+<div class="line"><a name="l01219"></a><span class="lineno"> 1219</span>       skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>);</div>
+<div class="line"><a name="l01220"></a><span class="lineno"> 1220</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>))</div>
+<div class="line"><a name="l01221"></a><span class="lineno"> 1221</span>         consumeToken();</div>
+<div class="line"><a name="l01222"></a><span class="lineno"> 1222</span>       <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01223"></a><span class="lineno"> 1223</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_rbrace);</div>
+<div class="line"><a name="l01224"></a><span class="lineno"> 1224</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LBraceLoc, diag::note_mmap_lbrace_match);</div>
+<div class="line"><a name="l01225"></a><span class="lineno"> 1225</span>         HadError = <span class="keyword">true</span>;        </div>
+<div class="line"><a name="l01226"></a><span class="lineno"> 1226</span>       }</div>
+<div class="line"><a name="l01227"></a><span class="lineno"> 1227</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01228"></a><span class="lineno"> 1228</span>     }</div>
+<div class="line"><a name="l01229"></a><span class="lineno"> 1229</span>     </div>
+<div class="line"><a name="l01230"></a><span class="lineno"> 1230</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(ModuleNameLoc, diag::err_mmap_module_redefinition)</div>
+<div class="line"><a name="l01231"></a><span class="lineno"> 1231</span>       << ModuleName;</div>
+<div class="line"><a name="l01232"></a><span class="lineno"> 1232</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Existing->DefinitionLoc, diag::note_mmap_prev_definition);</div>
+<div class="line"><a name="l01233"></a><span class="lineno"> 1233</span>     </div>
+<div class="line"><a name="l01234"></a><span class="lineno"> 1234</span>     <span class="comment">// Skip the module definition.</span></div>
+<div class="line"><a name="l01235"></a><span class="lineno"> 1235</span>     skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>);</div>
+<div class="line"><a name="l01236"></a><span class="lineno"> 1236</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>))</div>
+<div class="line"><a name="l01237"></a><span class="lineno"> 1237</span>       consumeToken();</div>
+<div class="line"><a name="l01238"></a><span class="lineno"> 1238</span>     </div>
+<div class="line"><a name="l01239"></a><span class="lineno"> 1239</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01240"></a><span class="lineno"> 1240</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01241"></a><span class="lineno"> 1241</span>   }</div>
+<div class="line"><a name="l01242"></a><span class="lineno"> 1242</span> </div>
+<div class="line"><a name="l01243"></a><span class="lineno"> 1243</span>   <span class="comment">// Start defining this module.</span></div>
+<div class="line"><a name="l01244"></a><span class="lineno"> 1244</span>   ActiveModule = Map.<a class="code" href="classclang_1_1ModuleMap.html#a115a5b7b114346aaa534995084fc3ac0" title="Find a new module or submodule, or create it if it does not already exist.">findOrCreateModule</a>(ModuleName, ActiveModule, Framework,</div>
+<div class="line"><a name="l01245"></a><span class="lineno"> 1245</span>                                         Explicit).first;</div>
+<div class="line"><a name="l01246"></a><span class="lineno"> 1246</span>   ActiveModule-><a class="code" href="classclang_1_1Module.html#a2710db72196e0e353a27cdc2b5f54fb9" title="The location of the module definition.">DefinitionLoc</a> = ModuleNameLoc;</div>
+<div class="line"><a name="l01247"></a><span class="lineno"> 1247</span>   <span class="keywordflow">if</span> (Attrs.<a class="code" href="structclang_1_1Attributes.html#a7036c98ab1887091dfe30dca3ad12a71" title="Whether this is a system module.">IsSystem</a> || IsSystem)</div>
+<div class="line"><a name="l01248"></a><span class="lineno"> 1248</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#a505c7530ef3ac10e3f8c207e5722a158" title="Whether this is a "system" module (which assumes that all headers in it are system headers)...">IsSystem</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01249"></a><span class="lineno"> 1249</span>   </div>
+<div class="line"><a name="l01250"></a><span class="lineno"> 1250</span>   <span class="keywordtype">bool</span> Done = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01251"></a><span class="lineno"> 1251</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01252"></a><span class="lineno"> 1252</span>     <span class="keywordflow">switch</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a>) {</div>
+<div class="line"><a name="l01253"></a><span class="lineno"> 1253</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">MMToken::EndOfFile</a>:</div>
+<div class="line"><a name="l01254"></a><span class="lineno"> 1254</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>:</div>
+<div class="line"><a name="l01255"></a><span class="lineno"> 1255</span>       Done = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01256"></a><span class="lineno"> 1256</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01257"></a><span class="lineno"> 1257</span> </div>
+<div class="line"><a name="l01258"></a><span class="lineno"> 1258</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba58c15e1805176ec3a5b3368952f783fc">MMToken::ConfigMacros</a>:</div>
+<div class="line"><a name="l01259"></a><span class="lineno"> 1259</span>       parseConfigMacros();</div>
+<div class="line"><a name="l01260"></a><span class="lineno"> 1260</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01261"></a><span class="lineno"> 1261</span> </div>
+<div class="line"><a name="l01262"></a><span class="lineno"> 1262</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7ecdc054dc41aa967d19a5a1a4b399b0">MMToken::Conflict</a>:</div>
+<div class="line"><a name="l01263"></a><span class="lineno"> 1263</span>       parseConflict();</div>
+<div class="line"><a name="l01264"></a><span class="lineno"> 1264</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01265"></a><span class="lineno"> 1265</span> </div>
+<div class="line"><a name="l01266"></a><span class="lineno"> 1266</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">MMToken::ExplicitKeyword</a>:</div>
+<div class="line"><a name="l01267"></a><span class="lineno"> 1267</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">MMToken::ExternKeyword</a>:</div>
+<div class="line"><a name="l01268"></a><span class="lineno"> 1268</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">MMToken::FrameworkKeyword</a>:</div>
+<div class="line"><a name="l01269"></a><span class="lineno"> 1269</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>:</div>
+<div class="line"><a name="l01270"></a><span class="lineno"> 1270</span>       parseModuleDecl();</div>
+<div class="line"><a name="l01271"></a><span class="lineno"> 1271</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01272"></a><span class="lineno"> 1272</span> </div>
+<div class="line"><a name="l01273"></a><span class="lineno"> 1273</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">MMToken::ExportKeyword</a>:</div>
+<div class="line"><a name="l01274"></a><span class="lineno"> 1274</span>       parseExportDecl();</div>
+<div class="line"><a name="l01275"></a><span class="lineno"> 1275</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01276"></a><span class="lineno"> 1276</span> </div>
+<div class="line"><a name="l01277"></a><span class="lineno"> 1277</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae438908b5113391d88f8518f6227b0d3">MMToken::UseKeyword</a>:</div>
+<div class="line"><a name="l01278"></a><span class="lineno"> 1278</span>       parseUseDecl();</div>
+<div class="line"><a name="l01279"></a><span class="lineno"> 1279</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01280"></a><span class="lineno"> 1280</span>         </div>
+<div class="line"><a name="l01281"></a><span class="lineno"> 1281</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba49abad35fc18db8438fbfab6c2095418">MMToken::RequiresKeyword</a>:</div>
+<div class="line"><a name="l01282"></a><span class="lineno"> 1282</span>       parseRequiresDecl();</div>
+<div class="line"><a name="l01283"></a><span class="lineno"> 1283</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01284"></a><span class="lineno"> 1284</span> </div>
+<div class="line"><a name="l01285"></a><span class="lineno"> 1285</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>: {</div>
+<div class="line"><a name="l01286"></a><span class="lineno"> 1286</span>       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> UmbrellaLoc = consumeToken();</div>
+<div class="line"><a name="l01287"></a><span class="lineno"> 1287</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>))</div>
+<div class="line"><a name="l01288"></a><span class="lineno"> 1288</span>         parseHeaderDecl(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>, UmbrellaLoc);</div>
+<div class="line"><a name="l01289"></a><span class="lineno"> 1289</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01290"></a><span class="lineno"> 1290</span>         parseUmbrellaDirDecl(UmbrellaLoc);</div>
+<div class="line"><a name="l01291"></a><span class="lineno"> 1291</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01292"></a><span class="lineno"> 1292</span>     }</div>
+<div class="line"><a name="l01293"></a><span class="lineno"> 1293</span>         </div>
+<div class="line"><a name="l01294"></a><span class="lineno"> 1294</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>: {</div>
+<div class="line"><a name="l01295"></a><span class="lineno"> 1295</span>       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ExcludeLoc = consumeToken();</div>
+<div class="line"><a name="l01296"></a><span class="lineno"> 1296</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>)) {</div>
+<div class="line"><a name="l01297"></a><span class="lineno"> 1297</span>         parseHeaderDecl(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>, ExcludeLoc);</div>
+<div class="line"><a name="l01298"></a><span class="lineno"> 1298</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01299"></a><span class="lineno"> 1299</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_header)</div>
+<div class="line"><a name="l01300"></a><span class="lineno"> 1300</span>           << <span class="stringliteral">"exclude"</span>;</div>
+<div class="line"><a name="l01301"></a><span class="lineno"> 1301</span>       }</div>
+<div class="line"><a name="l01302"></a><span class="lineno"> 1302</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01303"></a><span class="lineno"> 1303</span>     }</div>
+<div class="line"><a name="l01304"></a><span class="lineno"> 1304</span>       </div>
+<div class="line"><a name="l01305"></a><span class="lineno"> 1305</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">MMToken::PrivateKeyword</a>: {</div>
+<div class="line"><a name="l01306"></a><span class="lineno"> 1306</span>       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> PrivateLoc = consumeToken();</div>
+<div class="line"><a name="l01307"></a><span class="lineno"> 1307</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>)) {</div>
+<div class="line"><a name="l01308"></a><span class="lineno"> 1308</span>         parseHeaderDecl(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">MMToken::PrivateKeyword</a>, PrivateLoc);</div>
+<div class="line"><a name="l01309"></a><span class="lineno"> 1309</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01310"></a><span class="lineno"> 1310</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_header)</div>
+<div class="line"><a name="l01311"></a><span class="lineno"> 1311</span>           << <span class="stringliteral">"private"</span>;</div>
+<div class="line"><a name="l01312"></a><span class="lineno"> 1312</span>       }</div>
+<div class="line"><a name="l01313"></a><span class="lineno"> 1313</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01314"></a><span class="lineno"> 1314</span>     }</div>
+<div class="line"><a name="l01315"></a><span class="lineno"> 1315</span>       </div>
+<div class="line"><a name="l01316"></a><span class="lineno"> 1316</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>:</div>
+<div class="line"><a name="l01317"></a><span class="lineno"> 1317</span>       parseHeaderDecl(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>());</div>
+<div class="line"><a name="l01318"></a><span class="lineno"> 1318</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01319"></a><span class="lineno"> 1319</span> </div>
+<div class="line"><a name="l01320"></a><span class="lineno"> 1320</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba543309e2a3f1a625e43b12e2e415f177">MMToken::LinkKeyword</a>:</div>
+<div class="line"><a name="l01321"></a><span class="lineno"> 1321</span>       parseLinkDecl();</div>
+<div class="line"><a name="l01322"></a><span class="lineno"> 1322</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01323"></a><span class="lineno"> 1323</span> </div>
+<div class="line"><a name="l01324"></a><span class="lineno"> 1324</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01325"></a><span class="lineno"> 1325</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_member);</div>
+<div class="line"><a name="l01326"></a><span class="lineno"> 1326</span>       consumeToken();</div>
+<div class="line"><a name="l01327"></a><span class="lineno"> 1327</span>       <span class="keywordflow">break</span>;        </div>
+<div class="line"><a name="l01328"></a><span class="lineno"> 1328</span>     }</div>
+<div class="line"><a name="l01329"></a><span class="lineno"> 1329</span>   } <span class="keywordflow">while</span> (!Done);</div>
+<div class="line"><a name="l01330"></a><span class="lineno"> 1330</span> </div>
+<div class="line"><a name="l01331"></a><span class="lineno"> 1331</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>))</div>
+<div class="line"><a name="l01332"></a><span class="lineno"> 1332</span>     consumeToken();</div>
+<div class="line"><a name="l01333"></a><span class="lineno"> 1333</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01334"></a><span class="lineno"> 1334</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_rbrace);</div>
+<div class="line"><a name="l01335"></a><span class="lineno"> 1335</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LBraceLoc, diag::note_mmap_lbrace_match);</div>
+<div class="line"><a name="l01336"></a><span class="lineno"> 1336</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01337"></a><span class="lineno"> 1337</span>   }</div>
+<div class="line"><a name="l01338"></a><span class="lineno"> 1338</span> </div>
+<div class="line"><a name="l01339"></a><span class="lineno"> 1339</span>   <span class="comment">// If the active module is a top-level framework, and there are no link</span></div>
+<div class="line"><a name="l01340"></a><span class="lineno"> 1340</span>   <span class="comment">// libraries, automatically link against the framework.</span></div>
+<div class="line"><a name="l01341"></a><span class="lineno"> 1341</span>   <span class="keywordflow">if</span> (ActiveModule-><a class="code" href="classclang_1_1Module.html#ad335b91a8d39f2a2ca9643f1c88aac8d" title="Whether this is a framework module.">IsFramework</a> && !ActiveModule-><a class="code" href="classclang_1_1Module.html#a869c5857f419f0372777d6921c989e46" title="Determine whether this module is a subframework of another framework.">isSubFramework</a>() &&</div>
+<div class="line"><a name="l01342"></a><span class="lineno"> 1342</span>       ActiveModule-><a class="code" href="classclang_1_1Module.html#a59f744ae0f6907785614508d01a5cd59" title="The set of libraries or frameworks to link against when an entity from this module is used...">LinkLibraries</a>.empty()) {</div>
+<div class="line"><a name="l01343"></a><span class="lineno"> 1343</span>     <a class="code" href="ModuleMap_8cpp.html#aaaa3666b8e1c7ea6a29c2da064eb8c48" title="For a framework module, infer the framework against which we should link.">inferFrameworkLink</a>(ActiveModule, Directory, SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>());</div>
+<div class="line"><a name="l01344"></a><span class="lineno"> 1344</span>   }</div>
+<div class="line"><a name="l01345"></a><span class="lineno"> 1345</span> </div>
+<div class="line"><a name="l01346"></a><span class="lineno"> 1346</span>   <span class="comment">// We're done parsing this module. Pop back to the previous module.</span></div>
+<div class="line"><a name="l01347"></a><span class="lineno"> 1347</span>   ActiveModule = PreviousActiveModule;</div>
+<div class="line"><a name="l01348"></a><span class="lineno"> 1348</span> }</div>
+<div class="line"><a name="l01349"></a><span class="lineno"> 1349</span> <span class="comment"></span></div>
+<div class="line"><a name="l01350"></a><span class="lineno"> 1350</span> <span class="comment">/// \brief Parse an extern module declaration.</span></div>
+<div class="line"><a name="l01351"></a><span class="lineno"> 1351</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01352"></a><span class="lineno"> 1352</span> <span class="comment">///   extern module-declaration:</span></div>
+<div class="line"><a name="l01353"></a><span class="lineno"> 1353</span> <span class="comment">///     'extern' 'module' module-id string-literal</span></div>
+<div class="line"><a name="l01354"></a><span class="lineno"> 1354</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseExternModuleDecl() {</div>
+<div class="line"><a name="l01355"></a><span class="lineno"> 1355</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">MMToken::ExternKeyword</a>));</div>
+<div class="line"><a name="l01356"></a><span class="lineno"> 1356</span>   consumeToken(); <span class="comment">// 'extern' keyword</span></div>
+<div class="line"><a name="l01357"></a><span class="lineno"> 1357</span> </div>
+<div class="line"><a name="l01358"></a><span class="lineno"> 1358</span>   <span class="comment">// Parse 'module' keyword.</span></div>
+<div class="line"><a name="l01359"></a><span class="lineno"> 1359</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>)) {</div>
+<div class="line"><a name="l01360"></a><span class="lineno"> 1360</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_module);</div>
+<div class="line"><a name="l01361"></a><span class="lineno"> 1361</span>     consumeToken();</div>
+<div class="line"><a name="l01362"></a><span class="lineno"> 1362</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01363"></a><span class="lineno"> 1363</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01364"></a><span class="lineno"> 1364</span>   }</div>
+<div class="line"><a name="l01365"></a><span class="lineno"> 1365</span>   consumeToken(); <span class="comment">// 'module' keyword</span></div>
+<div class="line"><a name="l01366"></a><span class="lineno"> 1366</span> </div>
+<div class="line"><a name="l01367"></a><span class="lineno"> 1367</span>   <span class="comment">// Parse the module name.</span></div>
+<div class="line"><a name="l01368"></a><span class="lineno"> 1368</span>   <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> Id;</div>
+<div class="line"><a name="l01369"></a><span class="lineno"> 1369</span>   <span class="keywordflow">if</span> (parseModuleId(Id)) {</div>
+<div class="line"><a name="l01370"></a><span class="lineno"> 1370</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01371"></a><span class="lineno"> 1371</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01372"></a><span class="lineno"> 1372</span>   }</div>
+<div class="line"><a name="l01373"></a><span class="lineno"> 1373</span> </div>
+<div class="line"><a name="l01374"></a><span class="lineno"> 1374</span>   <span class="comment">// Parse the referenced module map file name.</span></div>
+<div class="line"><a name="l01375"></a><span class="lineno"> 1375</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>)) {</div>
+<div class="line"><a name="l01376"></a><span class="lineno"> 1376</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_mmap_file);</div>
+<div class="line"><a name="l01377"></a><span class="lineno"> 1377</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01378"></a><span class="lineno"> 1378</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01379"></a><span class="lineno"> 1379</span>   }</div>
+<div class="line"><a name="l01380"></a><span class="lineno"> 1380</span>   std::string FileName = Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>();</div>
+<div class="line"><a name="l01381"></a><span class="lineno"> 1381</span>   consumeToken(); <span class="comment">// filename</span></div>
+<div class="line"><a name="l01382"></a><span class="lineno"> 1382</span> </div>
+<div class="line"><a name="l01383"></a><span class="lineno"> 1383</span>   StringRef FileNameRef = FileName;</div>
+<div class="line"><a name="l01384"></a><span class="lineno"> 1384</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> ModuleMapFileName;</div>
+<div class="line"><a name="l01385"></a><span class="lineno"> 1385</span>   <span class="keywordflow">if</span> (llvm::sys::path::is_relative(FileNameRef)) {</div>
+<div class="line"><a name="l01386"></a><span class="lineno"> 1386</span>     ModuleMapFileName += Directory-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>();</div>
+<div class="line"><a name="l01387"></a><span class="lineno"> 1387</span>     llvm::sys::path::append(ModuleMapFileName, FileName);</div>
+<div class="line"><a name="l01388"></a><span class="lineno"> 1388</span>     FileNameRef = ModuleMapFileName.str();</div>
+<div class="line"><a name="l01389"></a><span class="lineno"> 1389</span>   }</div>
+<div class="line"><a name="l01390"></a><span class="lineno"> 1390</span>   <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> *File = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(FileNameRef))</div>
+<div class="line"><a name="l01391"></a><span class="lineno"> 1391</span>     Map.<a class="code" href="classclang_1_1ModuleMap.html#aa693079e31854e7297157e751ff6b7fd" title="Parse the given module map file, and record any modules we encounter.">parseModuleMapFile</a>(File, <span class="comment">/*IsSystem=*/</span><span class="keyword">false</span>);</div>
+<div class="line"><a name="l01392"></a><span class="lineno"> 1392</span> }</div>
+<div class="line"><a name="l01393"></a><span class="lineno"> 1393</span> <span class="comment"></span></div>
+<div class="line"><a name="l01394"></a><span class="lineno"> 1394</span> <span class="comment">/// \brief Parse a requires declaration.</span></div>
+<div class="line"><a name="l01395"></a><span class="lineno"> 1395</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01396"></a><span class="lineno"> 1396</span> <span class="comment">///   requires-declaration:</span></div>
+<div class="line"><a name="l01397"></a><span class="lineno"> 1397</span> <span class="comment">///     'requires' feature-list</span></div>
+<div class="line"><a name="l01398"></a><span class="lineno"> 1398</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01399"></a><span class="lineno"> 1399</span> <span class="comment">///   feature-list:</span></div>
+<div class="line"><a name="l01400"></a><span class="lineno"> 1400</span> <span class="comment">///     feature ',' feature-list</span></div>
+<div class="line"><a name="l01401"></a><span class="lineno"> 1401</span> <span class="comment">///     feature</span></div>
+<div class="line"><a name="l01402"></a><span class="lineno"> 1402</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01403"></a><span class="lineno"> 1403</span> <span class="comment">///   feature:</span></div>
+<div class="line"><a name="l01404"></a><span class="lineno"> 1404</span> <span class="comment">///     '!'[opt] identifier</span></div>
+<div class="line"><a name="l01405"></a><span class="lineno"> 1405</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseRequiresDecl() {</div>
+<div class="line"><a name="l01406"></a><span class="lineno"> 1406</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba49abad35fc18db8438fbfab6c2095418">MMToken::RequiresKeyword</a>));</div>
+<div class="line"><a name="l01407"></a><span class="lineno"> 1407</span> </div>
+<div class="line"><a name="l01408"></a><span class="lineno"> 1408</span>   <span class="comment">// Parse 'requires' keyword.</span></div>
+<div class="line"><a name="l01409"></a><span class="lineno"> 1409</span>   consumeToken();</div>
+<div class="line"><a name="l01410"></a><span class="lineno"> 1410</span> </div>
+<div class="line"><a name="l01411"></a><span class="lineno"> 1411</span>   <span class="comment">// Parse the feature-list.</span></div>
+<div class="line"><a name="l01412"></a><span class="lineno"> 1412</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01413"></a><span class="lineno"> 1413</span>     <span class="keywordtype">bool</span> RequiredState = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01414"></a><span class="lineno"> 1414</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baf194071d48a941dfaf44b135cd764077">MMToken::Exclaim</a>)) {</div>
+<div class="line"><a name="l01415"></a><span class="lineno"> 1415</span>       RequiredState = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01416"></a><span class="lineno"> 1416</span>       consumeToken();</div>
+<div class="line"><a name="l01417"></a><span class="lineno"> 1417</span>     }</div>
+<div class="line"><a name="l01418"></a><span class="lineno"> 1418</span> </div>
+<div class="line"><a name="l01419"></a><span class="lineno"> 1419</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l01420"></a><span class="lineno"> 1420</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_feature);</div>
+<div class="line"><a name="l01421"></a><span class="lineno"> 1421</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01422"></a><span class="lineno"> 1422</span>       <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01423"></a><span class="lineno"> 1423</span>     }</div>
+<div class="line"><a name="l01424"></a><span class="lineno"> 1424</span> </div>
+<div class="line"><a name="l01425"></a><span class="lineno"> 1425</span>     <span class="comment">// Consume the feature name.</span></div>
+<div class="line"><a name="l01426"></a><span class="lineno"> 1426</span>     std::string Feature = Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>();</div>
+<div class="line"><a name="l01427"></a><span class="lineno"> 1427</span>     consumeToken();</div>
+<div class="line"><a name="l01428"></a><span class="lineno"> 1428</span> </div>
+<div class="line"><a name="l01429"></a><span class="lineno"> 1429</span>     <span class="comment">// Add this feature.</span></div>
+<div class="line"><a name="l01430"></a><span class="lineno"> 1430</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#a007a11f18b75c2258a04ed53bbcda2af" title="Add the given feature requirement to the list of features required by this module.">addRequirement</a>(Feature, RequiredState,</div>
+<div class="line"><a name="l01431"></a><span class="lineno"> 1431</span>                                  Map.LangOpts, *Map.Target);</div>
+<div class="line"><a name="l01432"></a><span class="lineno"> 1432</span> </div>
+<div class="line"><a name="l01433"></a><span class="lineno"> 1433</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">MMToken::Comma</a>))</div>
+<div class="line"><a name="l01434"></a><span class="lineno"> 1434</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01435"></a><span class="lineno"> 1435</span> </div>
+<div class="line"><a name="l01436"></a><span class="lineno"> 1436</span>     <span class="comment">// Consume the comma.</span></div>
+<div class="line"><a name="l01437"></a><span class="lineno"> 1437</span>     consumeToken();</div>
+<div class="line"><a name="l01438"></a><span class="lineno"> 1438</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01439"></a><span class="lineno"> 1439</span> }</div>
+<div class="line"><a name="l01440"></a><span class="lineno"> 1440</span> <span class="comment"></span></div>
+<div class="line"><a name="l01441"></a><span class="lineno"> 1441</span> <span class="comment">/// \brief Append to \p Paths the set of paths needed to get to the </span></div>
+<div class="line"><a name="l01442"></a><span class="lineno"> 1442</span> <span class="comment">/// subframework in which the given module lives.</span></div>
+<div class="line"><a name="l01443"></a><span class="lineno"><a class="code" href="ModuleMap_8cpp.html#aaf9af217f7106e1e2f06139adb3dcc2a"> 1443</a></span> <span class="comment"></span><span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="ModuleMap_8cpp.html#aaf9af217f7106e1e2f06139adb3dcc2a" title="Append to Paths the set of paths needed to get to the subframework in which the given module lives...">appendSubframeworkPaths</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod,</div>
+<div class="line"><a name="l01444"></a><span class="lineno"> 1444</span>                                     <a class="code" href="classllvm_1_1SmallVectorImpl.html">SmallVectorImpl<char></a> &Path) {</div>
+<div class="line"><a name="l01445"></a><span class="lineno"> 1445</span>   <span class="comment">// Collect the framework names from the given module to the top-level module.</span></div>
+<div class="line"><a name="l01446"></a><span class="lineno"> 1446</span>   <a class="code" href="classllvm_1_1SmallVector.html">SmallVector<StringRef, 2></a> Paths;</div>
+<div class="line"><a name="l01447"></a><span class="lineno"> 1447</span>   <span class="keywordflow">for</span> (; Mod; Mod = Mod-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l01448"></a><span class="lineno"> 1448</span>     <span class="keywordflow">if</span> (Mod-><a class="code" href="classclang_1_1Module.html#ad335b91a8d39f2a2ca9643f1c88aac8d" title="Whether this is a framework module.">IsFramework</a>)</div>
+<div class="line"><a name="l01449"></a><span class="lineno"> 1449</span>       Paths.push_back(Mod-><a class="code" href="classclang_1_1Module.html#a51eba6562bd16dec5a8e7c2c5ed76890" title="The name of this module.">Name</a>);</div>
+<div class="line"><a name="l01450"></a><span class="lineno"> 1450</span>   }</div>
+<div class="line"><a name="l01451"></a><span class="lineno"> 1451</span>   </div>
+<div class="line"><a name="l01452"></a><span class="lineno"> 1452</span>   <span class="keywordflow">if</span> (Paths.empty())</div>
+<div class="line"><a name="l01453"></a><span class="lineno"> 1453</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01454"></a><span class="lineno"> 1454</span>   </div>
+<div class="line"><a name="l01455"></a><span class="lineno"> 1455</span>   <span class="comment">// Add Frameworks/Name.framework for each subframework.</span></div>
+<div class="line"><a name="l01456"></a><span class="lineno"> 1456</span>   <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = Paths.size() - 1; I != 0; --I)</div>
+<div class="line"><a name="l01457"></a><span class="lineno"> 1457</span>     llvm::sys::path::append(Path, <span class="stringliteral">"Frameworks"</span>, Paths[I-1] + <span class="stringliteral">".framework"</span>);</div>
+<div class="line"><a name="l01458"></a><span class="lineno"> 1458</span> }</div>
+<div class="line"><a name="l01459"></a><span class="lineno"> 1459</span> <span class="comment"></span></div>
+<div class="line"><a name="l01460"></a><span class="lineno"> 1460</span> <span class="comment">/// \brief Parse a header declaration.</span></div>
+<div class="line"><a name="l01461"></a><span class="lineno"> 1461</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01462"></a><span class="lineno"> 1462</span> <span class="comment">///   header-declaration:</span></div>
+<div class="line"><a name="l01463"></a><span class="lineno"> 1463</span> <span class="comment">///     'umbrella'[opt] 'header' string-literal</span></div>
+<div class="line"><a name="l01464"></a><span class="lineno"> 1464</span> <span class="comment">///     'exclude'[opt] 'header' string-literal</span></div>
+<div class="line"><a name="l01465"></a><span class="lineno"> 1465</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseHeaderDecl(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4b">MMToken::TokenKind</a> LeadingToken,</div>
+<div class="line"><a name="l01466"></a><span class="lineno"> 1466</span>                                       <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LeadingLoc) {</div>
+<div class="line"><a name="l01467"></a><span class="lineno"> 1467</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>));</div>
+<div class="line"><a name="l01468"></a><span class="lineno"> 1468</span>   consumeToken();</div>
+<div class="line"><a name="l01469"></a><span class="lineno"> 1469</span> </div>
+<div class="line"><a name="l01470"></a><span class="lineno"> 1470</span>   <span class="comment">// Parse the header name.</span></div>
+<div class="line"><a name="l01471"></a><span class="lineno"> 1471</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>)) {</div>
+<div class="line"><a name="l01472"></a><span class="lineno"> 1472</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_header) </div>
+<div class="line"><a name="l01473"></a><span class="lineno"> 1473</span>       << <span class="stringliteral">"header"</span>;</div>
+<div class="line"><a name="l01474"></a><span class="lineno"> 1474</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01475"></a><span class="lineno"> 1475</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01476"></a><span class="lineno"> 1476</span>   }</div>
+<div class="line"><a name="l01477"></a><span class="lineno"> 1477</span>   std::string FileName = Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>();</div>
+<div class="line"><a name="l01478"></a><span class="lineno"> 1478</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> FileNameLoc = consumeToken();</div>
+<div class="line"><a name="l01479"></a><span class="lineno"> 1479</span>   </div>
+<div class="line"><a name="l01480"></a><span class="lineno"> 1480</span>   <span class="comment">// Check whether we already have an umbrella.</span></div>
+<div class="line"><a name="l01481"></a><span class="lineno"> 1481</span>   <span class="keywordflow">if</span> (LeadingToken == <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a> && ActiveModule-><a class="code" href="classclang_1_1Module.html#acb7c8570da610974e567675303baa77b" title="The umbrella header or directory.">Umbrella</a>) {</div>
+<div class="line"><a name="l01482"></a><span class="lineno"> 1482</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(FileNameLoc, diag::err_mmap_umbrella_clash)</div>
+<div class="line"><a name="l01483"></a><span class="lineno"> 1483</span>       << ActiveModule-><a class="code" href="classclang_1_1Module.html#a3d720c72f2fe28832745046e83b8607a" title="Retrieve the full name of this module, including the path from its top-level module.">getFullModuleName</a>();</div>
+<div class="line"><a name="l01484"></a><span class="lineno"> 1484</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01485"></a><span class="lineno"> 1485</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01486"></a><span class="lineno"> 1486</span>   }</div>
+<div class="line"><a name="l01487"></a><span class="lineno"> 1487</span> </div>
+<div class="line"><a name="l01488"></a><span class="lineno"> 1488</span>   <span class="comment">// Look for this file.</span></div>
+<div class="line"><a name="l01489"></a><span class="lineno"> 1489</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 = 0;</div>
+<div class="line"><a name="l01490"></a><span class="lineno"> 1490</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> *BuiltinFile = 0;</div>
+<div class="line"><a name="l01491"></a><span class="lineno"> 1491</span>   <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> PathName;</div>
+<div class="line"><a name="l01492"></a><span class="lineno"> 1492</span>   <span class="keywordflow">if</span> (llvm::sys::path::is_absolute(FileName)) {</div>
+<div class="line"><a name="l01493"></a><span class="lineno"> 1493</span>     PathName = FileName;</div>
+<div class="line"><a name="l01494"></a><span class="lineno"> 1494</span>     File = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(PathName);</div>
+<div class="line"><a name="l01495"></a><span class="lineno"> 1495</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</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 = getOverriddenHeaderSearchDir()) {</div>
+<div class="line"><a name="l01496"></a><span class="lineno"> 1496</span>     PathName = Dir->getName();</div>
+<div class="line"><a name="l01497"></a><span class="lineno"> 1497</span>     llvm::sys::path::append(PathName, FileName);</div>
+<div class="line"><a name="l01498"></a><span class="lineno"> 1498</span>     File = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(PathName);</div>
+<div class="line"><a name="l01499"></a><span class="lineno"> 1499</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01500"></a><span class="lineno"> 1500</span>     <span class="comment">// Search for the header file within the search directory.</span></div>
+<div class="line"><a name="l01501"></a><span class="lineno"> 1501</span>     PathName = Directory-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>();</div>
+<div class="line"><a name="l01502"></a><span class="lineno"> 1502</span>     <span class="keywordtype">unsigned</span> PathLength = PathName.size();</div>
+<div class="line"><a name="l01503"></a><span class="lineno"> 1503</span>     </div>
+<div class="line"><a name="l01504"></a><span class="lineno"> 1504</span>     <span class="keywordflow">if</span> (ActiveModule-><a class="code" href="classclang_1_1Module.html#acb0eb0ac4a5d242095c5f63488496cfe" title="Determine whether this module is a part of a framework, either because it is a framework module or be...">isPartOfFramework</a>()) {</div>
+<div class="line"><a name="l01505"></a><span class="lineno"> 1505</span>       <a class="code" href="ModuleMap_8cpp.html#aaf9af217f7106e1e2f06139adb3dcc2a" title="Append to Paths the set of paths needed to get to the subframework in which the given module lives...">appendSubframeworkPaths</a>(ActiveModule, PathName);</div>
+<div class="line"><a name="l01506"></a><span class="lineno"> 1506</span>       </div>
+<div class="line"><a name="l01507"></a><span class="lineno"> 1507</span>       <span class="comment">// Check whether this file is in the public headers.</span></div>
+<div class="line"><a name="l01508"></a><span class="lineno"> 1508</span>       llvm::sys::path::append(PathName, <span class="stringliteral">"Headers"</span>, FileName);</div>
+<div class="line"><a name="l01509"></a><span class="lineno"> 1509</span>       File = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(PathName);</div>
+<div class="line"><a name="l01510"></a><span class="lineno"> 1510</span>       </div>
+<div class="line"><a name="l01511"></a><span class="lineno"> 1511</span>       <span class="keywordflow">if</span> (!File) {</div>
+<div class="line"><a name="l01512"></a><span class="lineno"> 1512</span>         <span class="comment">// Check whether this file is in the private headers.</span></div>
+<div class="line"><a name="l01513"></a><span class="lineno"> 1513</span>         PathName.resize(PathLength);</div>
+<div class="line"><a name="l01514"></a><span class="lineno"> 1514</span>         llvm::sys::path::append(PathName, <span class="stringliteral">"PrivateHeaders"</span>, FileName);</div>
+<div class="line"><a name="l01515"></a><span class="lineno"> 1515</span>         File = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(PathName);</div>
+<div class="line"><a name="l01516"></a><span class="lineno"> 1516</span>       }</div>
+<div class="line"><a name="l01517"></a><span class="lineno"> 1517</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01518"></a><span class="lineno"> 1518</span>       <span class="comment">// Lookup for normal headers.</span></div>
+<div class="line"><a name="l01519"></a><span class="lineno"> 1519</span>       llvm::sys::path::append(PathName, FileName);</div>
+<div class="line"><a name="l01520"></a><span class="lineno"> 1520</span>       File = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(PathName);</div>
+<div class="line"><a name="l01521"></a><span class="lineno"> 1521</span>       </div>
+<div class="line"><a name="l01522"></a><span class="lineno"> 1522</span>       <span class="comment">// If this is a system module with a top-level header, this header</span></div>
+<div class="line"><a name="l01523"></a><span class="lineno"> 1523</span>       <span class="comment">// may have a counterpart (or replacement) in the set of headers</span></div>
+<div class="line"><a name="l01524"></a><span class="lineno"> 1524</span>       <span class="comment">// supplied by Clang. Find that builtin header.</span></div>
+<div class="line"><a name="l01525"></a><span class="lineno"> 1525</span>       <span class="keywordflow">if</span> (ActiveModule-><a class="code" href="classclang_1_1Module.html#a505c7530ef3ac10e3f8c207e5722a158" title="Whether this is a "system" module (which assumes that all headers in it are system headers)...">IsSystem</a> && LeadingToken != <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a> &&</div>
+<div class="line"><a name="l01526"></a><span class="lineno"> 1526</span>           BuiltinIncludeDir && BuiltinIncludeDir != Directory &&</div>
+<div class="line"><a name="l01527"></a><span class="lineno"> 1527</span>           <a class="code" href="ModuleMap_8cpp.html#a6b6fef8d0ee38234c3fff3e6f328474d" title="Determine whether the given file name is the name of a builtin header, supplied by Clang to replace...">isBuiltinHeader</a>(FileName)) {</div>
+<div class="line"><a name="l01528"></a><span class="lineno"> 1528</span>         <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> BuiltinPathName(BuiltinIncludeDir-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>());</div>
+<div class="line"><a name="l01529"></a><span class="lineno"> 1529</span>         llvm::sys::path::append(BuiltinPathName, FileName);</div>
+<div class="line"><a name="l01530"></a><span class="lineno"> 1530</span>         BuiltinFile = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#ae250b54e2bc90b8075b96ea7e88eff77" title="Lookup, cache, and verify the specified file (real or virtual).">getFile</a>(BuiltinPathName);</div>
+<div class="line"><a name="l01531"></a><span class="lineno"> 1531</span>         </div>
+<div class="line"><a name="l01532"></a><span class="lineno"> 1532</span>         <span class="comment">// If Clang supplies this header but the underlying system does not,</span></div>
+<div class="line"><a name="l01533"></a><span class="lineno"> 1533</span>         <span class="comment">// just silently swap in our builtin version. Otherwise, we'll end</span></div>
+<div class="line"><a name="l01534"></a><span class="lineno"> 1534</span>         <span class="comment">// up adding both (later).</span></div>
+<div class="line"><a name="l01535"></a><span class="lineno"> 1535</span>         <span class="keywordflow">if</span> (!File && BuiltinFile) {</div>
+<div class="line"><a name="l01536"></a><span class="lineno"> 1536</span>           File = BuiltinFile;</div>
+<div class="line"><a name="l01537"></a><span class="lineno"> 1537</span>           BuiltinFile = 0;</div>
+<div class="line"><a name="l01538"></a><span class="lineno"> 1538</span>         }</div>
+<div class="line"><a name="l01539"></a><span class="lineno"> 1539</span>       }</div>
+<div class="line"><a name="l01540"></a><span class="lineno"> 1540</span>     }</div>
+<div class="line"><a name="l01541"></a><span class="lineno"> 1541</span>   }</div>
+<div class="line"><a name="l01542"></a><span class="lineno"> 1542</span>   </div>
+<div class="line"><a name="l01543"></a><span class="lineno"> 1543</span>   <span class="comment">// FIXME: We shouldn't be eagerly stat'ing every file named in a module map.</span></div>
+<div class="line"><a name="l01544"></a><span class="lineno"> 1544</span>   <span class="comment">// Come up with a lazy way to do this.</span></div>
+<div class="line"><a name="l01545"></a><span class="lineno"> 1545</span>   <span class="keywordflow">if</span> (File) {</div>
+<div class="line"><a name="l01546"></a><span class="lineno"> 1546</span>     <span class="keywordflow">if</span> (LeadingToken == <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>) {</div>
+<div class="line"><a name="l01547"></a><span class="lineno"> 1547</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> *UmbrellaDir = File-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>();</div>
+<div class="line"><a name="l01548"></a><span class="lineno"> 1548</span>       <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *UmbrellaModule = Map.UmbrellaDirs[UmbrellaDir]) {</div>
+<div class="line"><a name="l01549"></a><span class="lineno"> 1549</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LeadingLoc, diag::err_mmap_umbrella_clash)</div>
+<div class="line"><a name="l01550"></a><span class="lineno"> 1550</span>           << UmbrellaModule->getFullModuleName();</div>
+<div class="line"><a name="l01551"></a><span class="lineno"> 1551</span>         HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01552"></a><span class="lineno"> 1552</span>       } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01553"></a><span class="lineno"> 1553</span>         <span class="comment">// Record this umbrella header.</span></div>
+<div class="line"><a name="l01554"></a><span class="lineno"> 1554</span>         Map.<a class="code" href="classclang_1_1ModuleMap.html#a4e5eb634a8ba4425d545d84b6b28156d" title="Sets the umbrella header of the given module to the given header.">setUmbrellaHeader</a>(ActiveModule, File);</div>
+<div class="line"><a name="l01555"></a><span class="lineno"> 1555</span>       }</div>
+<div class="line"><a name="l01556"></a><span class="lineno"> 1556</span>     } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01557"></a><span class="lineno"> 1557</span>       <span class="comment">// Record this header.</span></div>
+<div class="line"><a name="l01558"></a><span class="lineno"> 1558</span>       <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleMap::ModuleHeaderRole</a> Role = <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">ModuleMap::NormalHeader</a>;</div>
+<div class="line"><a name="l01559"></a><span class="lineno"> 1559</span>       <span class="keywordflow">if</span> (LeadingToken == <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>)</div>
+<div class="line"><a name="l01560"></a><span class="lineno"> 1560</span>         Role = <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca29ca8d089c3fd646d54e611219d0d877" title="This header is explicitly excluded from the module.">ModuleMap::ExcludedHeader</a>;</div>
+<div class="line"><a name="l01561"></a><span class="lineno"> 1561</span>       <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LeadingToken == <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">MMToken::PrivateKeyword</a>)</div>
+<div class="line"><a name="l01562"></a><span class="lineno"> 1562</span>         Role = <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4" title="This header is included but private.">ModuleMap::PrivateHeader</a>;</div>
+<div class="line"><a name="l01563"></a><span class="lineno"> 1563</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01564"></a><span class="lineno"> 1564</span>         assert(LeadingToken == <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>);</div>
+<div class="line"><a name="l01565"></a><span class="lineno"> 1565</span>         </div>
+<div class="line"><a name="l01566"></a><span class="lineno"> 1566</span>       Map.<a class="code" href="classclang_1_1ModuleMap.html#a36df90fd8a0f51e6b762938002ec038d" title="Adds this header to the given module.">addHeader</a>(ActiveModule, File, Role);</div>
+<div class="line"><a name="l01567"></a><span class="lineno"> 1567</span>       </div>
+<div class="line"><a name="l01568"></a><span class="lineno"> 1568</span>       <span class="comment">// If there is a builtin counterpart to this file, add it now.</span></div>
+<div class="line"><a name="l01569"></a><span class="lineno"> 1569</span>       <span class="keywordflow">if</span> (BuiltinFile)</div>
+<div class="line"><a name="l01570"></a><span class="lineno"> 1570</span>         Map.<a class="code" href="classclang_1_1ModuleMap.html#a36df90fd8a0f51e6b762938002ec038d" title="Adds this header to the given module.">addHeader</a>(ActiveModule, BuiltinFile, Role);</div>
+<div class="line"><a name="l01571"></a><span class="lineno"> 1571</span>     }</div>
+<div class="line"><a name="l01572"></a><span class="lineno"> 1572</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (LeadingToken != <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>) {</div>
+<div class="line"><a name="l01573"></a><span class="lineno"> 1573</span>     <span class="comment">// Ignore excluded header files. They're optional anyway.</span></div>
+<div class="line"><a name="l01574"></a><span class="lineno"> 1574</span>     </div>
+<div class="line"><a name="l01575"></a><span class="lineno"> 1575</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(FileNameLoc, diag::err_mmap_header_not_found)</div>
+<div class="line"><a name="l01576"></a><span class="lineno"> 1576</span>       << (LeadingToken == <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>) << FileName;</div>
+<div class="line"><a name="l01577"></a><span class="lineno"> 1577</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01578"></a><span class="lineno"> 1578</span>   }</div>
+<div class="line"><a name="l01579"></a><span class="lineno"> 1579</span> }</div>
+<div class="line"><a name="l01580"></a><span class="lineno"> 1580</span> <span class="comment"></span></div>
+<div class="line"><a name="l01581"></a><span class="lineno"> 1581</span> <span class="comment">/// \brief Parse an umbrella directory declaration.</span></div>
+<div class="line"><a name="l01582"></a><span class="lineno"> 1582</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01583"></a><span class="lineno"> 1583</span> <span class="comment">///   umbrella-dir-declaration:</span></div>
+<div class="line"><a name="l01584"></a><span class="lineno"> 1584</span> <span class="comment">///     umbrella string-literal</span></div>
+<div class="line"><a name="l01585"></a><span class="lineno"> 1585</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseUmbrellaDirDecl(<a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> UmbrellaLoc) {</div>
+<div class="line"><a name="l01586"></a><span class="lineno"> 1586</span>   <span class="comment">// Parse the directory name.</span></div>
+<div class="line"><a name="l01587"></a><span class="lineno"> 1587</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>)) {</div>
+<div class="line"><a name="l01588"></a><span class="lineno"> 1588</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_header) </div>
+<div class="line"><a name="l01589"></a><span class="lineno"> 1589</span>       << <span class="stringliteral">"umbrella"</span>;</div>
+<div class="line"><a name="l01590"></a><span class="lineno"> 1590</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01591"></a><span class="lineno"> 1591</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01592"></a><span class="lineno"> 1592</span>   }</div>
+<div class="line"><a name="l01593"></a><span class="lineno"> 1593</span> </div>
+<div class="line"><a name="l01594"></a><span class="lineno"> 1594</span>   std::string DirName = Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>();</div>
+<div class="line"><a name="l01595"></a><span class="lineno"> 1595</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> DirNameLoc = consumeToken();</div>
+<div class="line"><a name="l01596"></a><span class="lineno"> 1596</span>   </div>
+<div class="line"><a name="l01597"></a><span class="lineno"> 1597</span>   <span class="comment">// Check whether we already have an umbrella.</span></div>
+<div class="line"><a name="l01598"></a><span class="lineno"> 1598</span>   <span class="keywordflow">if</span> (ActiveModule-><a class="code" href="classclang_1_1Module.html#acb7c8570da610974e567675303baa77b" title="The umbrella header or directory.">Umbrella</a>) {</div>
+<div class="line"><a name="l01599"></a><span class="lineno"> 1599</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(DirNameLoc, diag::err_mmap_umbrella_clash)</div>
+<div class="line"><a name="l01600"></a><span class="lineno"> 1600</span>       << ActiveModule-><a class="code" href="classclang_1_1Module.html#a3d720c72f2fe28832745046e83b8607a" title="Retrieve the full name of this module, including the path from its top-level module.">getFullModuleName</a>();</div>
+<div class="line"><a name="l01601"></a><span class="lineno"> 1601</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01602"></a><span class="lineno"> 1602</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01603"></a><span class="lineno"> 1603</span>   }</div>
+<div class="line"><a name="l01604"></a><span class="lineno"> 1604</span> </div>
+<div class="line"><a name="l01605"></a><span class="lineno"> 1605</span>   <span class="comment">// Look for this file.</span></div>
+<div class="line"><a name="l01606"></a><span class="lineno"> 1606</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 = 0;</div>
+<div class="line"><a name="l01607"></a><span class="lineno"> 1607</span>   <span class="keywordflow">if</span> (llvm::sys::path::is_absolute(DirName))</div>
+<div class="line"><a name="l01608"></a><span class="lineno"> 1608</span>     Dir = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(DirName);</div>
+<div class="line"><a name="l01609"></a><span class="lineno"> 1609</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01610"></a><span class="lineno"> 1610</span>     <a class="code" href="classllvm_1_1SmallString.html">SmallString<128></a> PathName;</div>
+<div class="line"><a name="l01611"></a><span class="lineno"> 1611</span>     PathName = Directory-><a class="code" href="classclang_1_1DirectoryEntry.html#a15bbfeeaf1752e5ead2684c445ad81f4">getName</a>();</div>
+<div class="line"><a name="l01612"></a><span class="lineno"> 1612</span>     llvm::sys::path::append(PathName, DirName);</div>
+<div class="line"><a name="l01613"></a><span class="lineno"> 1613</span>     Dir = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#aa80ae8266b98edd041407e7f96fa7501">getFileManager</a>().<a class="code" href="classclang_1_1FileManager.html#a6af5df3554d6faa096998a2dd00510fc" title="Lookup, cache, and verify the specified directory (real or virtual).">getDirectory</a>(PathName);</div>
+<div class="line"><a name="l01614"></a><span class="lineno"> 1614</span>   }</div>
+<div class="line"><a name="l01615"></a><span class="lineno"> 1615</span>   </div>
+<div class="line"><a name="l01616"></a><span class="lineno"> 1616</span>   <span class="keywordflow">if</span> (!Dir) {</div>
+<div class="line"><a name="l01617"></a><span class="lineno"> 1617</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(DirNameLoc, diag::err_mmap_umbrella_dir_not_found)</div>
+<div class="line"><a name="l01618"></a><span class="lineno"> 1618</span>       << DirName;</div>
+<div class="line"><a name="l01619"></a><span class="lineno"> 1619</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01620"></a><span class="lineno"> 1620</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01621"></a><span class="lineno"> 1621</span>   }</div>
+<div class="line"><a name="l01622"></a><span class="lineno"> 1622</span>   </div>
+<div class="line"><a name="l01623"></a><span class="lineno"> 1623</span>   <span class="keywordflow">if</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *OwningModule = Map.UmbrellaDirs[Dir]) {</div>
+<div class="line"><a name="l01624"></a><span class="lineno"> 1624</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(UmbrellaLoc, diag::err_mmap_umbrella_clash)</div>
+<div class="line"><a name="l01625"></a><span class="lineno"> 1625</span>       << OwningModule->getFullModuleName();</div>
+<div class="line"><a name="l01626"></a><span class="lineno"> 1626</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01627"></a><span class="lineno"> 1627</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01628"></a><span class="lineno"> 1628</span>   } </div>
+<div class="line"><a name="l01629"></a><span class="lineno"> 1629</span>   </div>
+<div class="line"><a name="l01630"></a><span class="lineno"> 1630</span>   <span class="comment">// Record this umbrella directory.</span></div>
+<div class="line"><a name="l01631"></a><span class="lineno"> 1631</span>   Map.<a class="code" href="classclang_1_1ModuleMap.html#a5cc71eb848ebea391b1a075496f2f7ee" title="Sets the umbrella directory of the given module to the given directory.">setUmbrellaDir</a>(ActiveModule, Dir);</div>
+<div class="line"><a name="l01632"></a><span class="lineno"> 1632</span> }</div>
+<div class="line"><a name="l01633"></a><span class="lineno"> 1633</span> <span class="comment"></span></div>
+<div class="line"><a name="l01634"></a><span class="lineno"> 1634</span> <span class="comment">/// \brief Parse a module export declaration.</span></div>
+<div class="line"><a name="l01635"></a><span class="lineno"> 1635</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01636"></a><span class="lineno"> 1636</span> <span class="comment">///   export-declaration:</span></div>
+<div class="line"><a name="l01637"></a><span class="lineno"> 1637</span> <span class="comment">///     'export' wildcard-module-id</span></div>
+<div class="line"><a name="l01638"></a><span class="lineno"> 1638</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01639"></a><span class="lineno"> 1639</span> <span class="comment">///   wildcard-module-id:</span></div>
+<div class="line"><a name="l01640"></a><span class="lineno"> 1640</span> <span class="comment">///     identifier</span></div>
+<div class="line"><a name="l01641"></a><span class="lineno"> 1641</span> <span class="comment">///     '*'</span></div>
+<div class="line"><a name="l01642"></a><span class="lineno"> 1642</span> <span class="comment">///     identifier '.' wildcard-module-id</span></div>
+<div class="line"><a name="l01643"></a><span class="lineno"> 1643</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseExportDecl() {</div>
+<div class="line"><a name="l01644"></a><span class="lineno"> 1644</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">MMToken::ExportKeyword</a>));</div>
+<div class="line"><a name="l01645"></a><span class="lineno"> 1645</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ExportLoc = consumeToken();</div>
+<div class="line"><a name="l01646"></a><span class="lineno"> 1646</span>   </div>
+<div class="line"><a name="l01647"></a><span class="lineno"> 1647</span>   <span class="comment">// Parse the module-id with an optional wildcard at the end.</span></div>
+<div class="line"><a name="l01648"></a><span class="lineno"> 1648</span>   <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> ParsedModuleId;</div>
+<div class="line"><a name="l01649"></a><span class="lineno"> 1649</span>   <span class="keywordtype">bool</span> Wildcard = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01650"></a><span class="lineno"> 1650</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01651"></a><span class="lineno"> 1651</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l01652"></a><span class="lineno"> 1652</span>       ParsedModuleId.push_back(std::make_pair(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>(), </div>
+<div class="line"><a name="l01653"></a><span class="lineno"> 1653</span>                                               Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>()));</div>
+<div class="line"><a name="l01654"></a><span class="lineno"> 1654</span>       consumeToken();</div>
+<div class="line"><a name="l01655"></a><span class="lineno"> 1655</span>       </div>
+<div class="line"><a name="l01656"></a><span class="lineno"> 1656</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">MMToken::Period</a>)) {</div>
+<div class="line"><a name="l01657"></a><span class="lineno"> 1657</span>         consumeToken();</div>
+<div class="line"><a name="l01658"></a><span class="lineno"> 1658</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01659"></a><span class="lineno"> 1659</span>       } </div>
+<div class="line"><a name="l01660"></a><span class="lineno"> 1660</span>       </div>
+<div class="line"><a name="l01661"></a><span class="lineno"> 1661</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01662"></a><span class="lineno"> 1662</span>     }</div>
+<div class="line"><a name="l01663"></a><span class="lineno"> 1663</span>     </div>
+<div class="line"><a name="l01664"></a><span class="lineno"> 1664</span>     <span class="keywordflow">if</span>(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">MMToken::Star</a>)) {</div>
+<div class="line"><a name="l01665"></a><span class="lineno"> 1665</span>       Wildcard = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01666"></a><span class="lineno"> 1666</span>       consumeToken();</div>
+<div class="line"><a name="l01667"></a><span class="lineno"> 1667</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01668"></a><span class="lineno"> 1668</span>     }</div>
+<div class="line"><a name="l01669"></a><span class="lineno"> 1669</span>     </div>
+<div class="line"><a name="l01670"></a><span class="lineno"> 1670</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_module_id);</div>
+<div class="line"><a name="l01671"></a><span class="lineno"> 1671</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01672"></a><span class="lineno"> 1672</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01673"></a><span class="lineno"> 1673</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01674"></a><span class="lineno"> 1674</span>   </div>
+<div class="line"><a name="l01675"></a><span class="lineno"> 1675</span>   <a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html" title="Describes an exported module that has not yet been resolved (perhaps because the module it refers to ...">Module::UnresolvedExportDecl</a> Unresolved = { </div>
+<div class="line"><a name="l01676"></a><span class="lineno"> 1676</span>     ExportLoc, ParsedModuleId, Wildcard </div>
+<div class="line"><a name="l01677"></a><span class="lineno"> 1677</span>   };</div>
+<div class="line"><a name="l01678"></a><span class="lineno"> 1678</span>   ActiveModule-><a class="code" href="classclang_1_1Module.html#a62b8063b204ad8902efdc67fa4da1956" title="The set of export declarations that have yet to be resolved.">UnresolvedExports</a>.push_back(Unresolved);</div>
+<div class="line"><a name="l01679"></a><span class="lineno"> 1679</span> }</div>
+<div class="line"><a name="l01680"></a><span class="lineno"> 1680</span> <span class="comment"></span></div>
+<div class="line"><a name="l01681"></a><span class="lineno"> 1681</span> <span class="comment">/// \brief Parse a module uses declaration.</span></div>
+<div class="line"><a name="l01682"></a><span class="lineno"> 1682</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01683"></a><span class="lineno"> 1683</span> <span class="comment">///   uses-declaration:</span></div>
+<div class="line"><a name="l01684"></a><span class="lineno"> 1684</span> <span class="comment">///     'uses' wildcard-module-id</span></div>
+<div class="line"><a name="l01685"></a><span class="lineno"> 1685</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseUseDecl() {</div>
+<div class="line"><a name="l01686"></a><span class="lineno"> 1686</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae438908b5113391d88f8518f6227b0d3">MMToken::UseKeyword</a>));</div>
+<div class="line"><a name="l01687"></a><span class="lineno"> 1687</span>   consumeToken();</div>
+<div class="line"><a name="l01688"></a><span class="lineno"> 1688</span>   <span class="comment">// Parse the module-id.</span></div>
+<div class="line"><a name="l01689"></a><span class="lineno"> 1689</span>   <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> ParsedModuleId;</div>
+<div class="line"><a name="l01690"></a><span class="lineno"> 1690</span> </div>
+<div class="line"><a name="l01691"></a><span class="lineno"> 1691</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01692"></a><span class="lineno"> 1692</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l01693"></a><span class="lineno"> 1693</span>       ParsedModuleId.push_back(</div>
+<div class="line"><a name="l01694"></a><span class="lineno"> 1694</span>           std::make_pair(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>(), Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>()));</div>
+<div class="line"><a name="l01695"></a><span class="lineno"> 1695</span>       consumeToken();</div>
+<div class="line"><a name="l01696"></a><span class="lineno"> 1696</span> </div>
+<div class="line"><a name="l01697"></a><span class="lineno"> 1697</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">MMToken::Period</a>)) {</div>
+<div class="line"><a name="l01698"></a><span class="lineno"> 1698</span>         consumeToken();</div>
+<div class="line"><a name="l01699"></a><span class="lineno"> 1699</span>         <span class="keywordflow">continue</span>;</div>
+<div class="line"><a name="l01700"></a><span class="lineno"> 1700</span>       }</div>
+<div class="line"><a name="l01701"></a><span class="lineno"> 1701</span> </div>
+<div class="line"><a name="l01702"></a><span class="lineno"> 1702</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01703"></a><span class="lineno"> 1703</span>     }</div>
+<div class="line"><a name="l01704"></a><span class="lineno"> 1704</span> </div>
+<div class="line"><a name="l01705"></a><span class="lineno"> 1705</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_module_id);</div>
+<div class="line"><a name="l01706"></a><span class="lineno"> 1706</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01707"></a><span class="lineno"> 1707</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01708"></a><span class="lineno"> 1708</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01709"></a><span class="lineno"> 1709</span> </div>
+<div class="line"><a name="l01710"></a><span class="lineno"> 1710</span>   ActiveModule-><a class="code" href="classclang_1_1Module.html#a807bbdc20e2fb8ae2007a6a76244bc49" title="The set of use declarations that have yet to be resolved.">UnresolvedDirectUses</a>.push_back(ParsedModuleId);</div>
+<div class="line"><a name="l01711"></a><span class="lineno"> 1711</span> }</div>
+<div class="line"><a name="l01712"></a><span class="lineno"> 1712</span> <span class="comment"></span></div>
+<div class="line"><a name="l01713"></a><span class="lineno"> 1713</span> <span class="comment">/// \brief Parse a link declaration.</span></div>
+<div class="line"><a name="l01714"></a><span class="lineno"> 1714</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01715"></a><span class="lineno"> 1715</span> <span class="comment">///   module-declaration:</span></div>
+<div class="line"><a name="l01716"></a><span class="lineno"> 1716</span> <span class="comment">///     'link' 'framework'[opt] string-literal</span></div>
+<div class="line"><a name="l01717"></a><span class="lineno"> 1717</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseLinkDecl() {</div>
+<div class="line"><a name="l01718"></a><span class="lineno"> 1718</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba543309e2a3f1a625e43b12e2e415f177">MMToken::LinkKeyword</a>));</div>
+<div class="line"><a name="l01719"></a><span class="lineno"> 1719</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LinkLoc = consumeToken();</div>
+<div class="line"><a name="l01720"></a><span class="lineno"> 1720</span> </div>
+<div class="line"><a name="l01721"></a><span class="lineno"> 1721</span>   <span class="comment">// Parse the optional 'framework' keyword.</span></div>
+<div class="line"><a name="l01722"></a><span class="lineno"> 1722</span>   <span class="keywordtype">bool</span> IsFramework = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01723"></a><span class="lineno"> 1723</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">MMToken::FrameworkKeyword</a>)) {</div>
+<div class="line"><a name="l01724"></a><span class="lineno"> 1724</span>     consumeToken();</div>
+<div class="line"><a name="l01725"></a><span class="lineno"> 1725</span>     IsFramework = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01726"></a><span class="lineno"> 1726</span>   }</div>
+<div class="line"><a name="l01727"></a><span class="lineno"> 1727</span> </div>
+<div class="line"><a name="l01728"></a><span class="lineno"> 1728</span>   <span class="comment">// Parse the library name</span></div>
+<div class="line"><a name="l01729"></a><span class="lineno"> 1729</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>)) {</div>
+<div class="line"><a name="l01730"></a><span class="lineno"> 1730</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_library_name)</div>
+<div class="line"><a name="l01731"></a><span class="lineno"> 1731</span>       << IsFramework << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(LinkLoc);</div>
+<div class="line"><a name="l01732"></a><span class="lineno"> 1732</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01733"></a><span class="lineno"> 1733</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01734"></a><span class="lineno"> 1734</span>   }</div>
+<div class="line"><a name="l01735"></a><span class="lineno"> 1735</span> </div>
+<div class="line"><a name="l01736"></a><span class="lineno"> 1736</span>   std::string LibraryName = Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>();</div>
+<div class="line"><a name="l01737"></a><span class="lineno"> 1737</span>   consumeToken();</div>
+<div class="line"><a name="l01738"></a><span class="lineno"> 1738</span>   ActiveModule-><a class="code" href="classclang_1_1Module.html#a59f744ae0f6907785614508d01a5cd59" title="The set of libraries or frameworks to link against when an entity from this module is used...">LinkLibraries</a>.push_back(<a class="code" href="structclang_1_1Module_1_1LinkLibrary.html" title="A library or framework to link against when an entity from this module is used.">Module::LinkLibrary</a>(LibraryName,</div>
+<div class="line"><a name="l01739"></a><span class="lineno"> 1739</span>                                                             IsFramework));</div>
+<div class="line"><a name="l01740"></a><span class="lineno"> 1740</span> }</div>
+<div class="line"><a name="l01741"></a><span class="lineno"> 1741</span> <span class="comment"></span></div>
+<div class="line"><a name="l01742"></a><span class="lineno"> 1742</span> <span class="comment">/// \brief Parse a configuration macro declaration.</span></div>
+<div class="line"><a name="l01743"></a><span class="lineno"> 1743</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01744"></a><span class="lineno"> 1744</span> <span class="comment">///   module-declaration:</span></div>
+<div class="line"><a name="l01745"></a><span class="lineno"> 1745</span> <span class="comment">///     'config_macros' attributes[opt] config-macro-list?</span></div>
+<div class="line"><a name="l01746"></a><span class="lineno"> 1746</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01747"></a><span class="lineno"> 1747</span> <span class="comment">///   config-macro-list:</span></div>
+<div class="line"><a name="l01748"></a><span class="lineno"> 1748</span> <span class="comment">///     identifier (',' identifier)?</span></div>
+<div class="line"><a name="l01749"></a><span class="lineno"> 1749</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseConfigMacros() {</div>
+<div class="line"><a name="l01750"></a><span class="lineno"> 1750</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba58c15e1805176ec3a5b3368952f783fc">MMToken::ConfigMacros</a>));</div>
+<div class="line"><a name="l01751"></a><span class="lineno"> 1751</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConfigMacrosLoc = consumeToken();</div>
+<div class="line"><a name="l01752"></a><span class="lineno"> 1752</span> </div>
+<div class="line"><a name="l01753"></a><span class="lineno"> 1753</span>   <span class="comment">// Only top-level modules can have configuration macros.</span></div>
+<div class="line"><a name="l01754"></a><span class="lineno"> 1754</span>   <span class="keywordflow">if</span> (ActiveModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l01755"></a><span class="lineno"> 1755</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(ConfigMacrosLoc, diag::err_mmap_config_macro_submodule);</div>
+<div class="line"><a name="l01756"></a><span class="lineno"> 1756</span>   }</div>
+<div class="line"><a name="l01757"></a><span class="lineno"> 1757</span> </div>
+<div class="line"><a name="l01758"></a><span class="lineno"> 1758</span>   <span class="comment">// Parse the optional attributes.</span></div>
+<div class="line"><a name="l01759"></a><span class="lineno"> 1759</span>   <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> Attrs;</div>
+<div class="line"><a name="l01760"></a><span class="lineno"> 1760</span>   parseOptionalAttributes(Attrs);</div>
+<div class="line"><a name="l01761"></a><span class="lineno"> 1761</span>   <span class="keywordflow">if</span> (Attrs.<a class="code" href="structclang_1_1Attributes.html#a635dfbbcfd97606f95aa4b636a1c543b" title="Whether this is an exhaustive set of configuration macros.">IsExhaustive</a> && !ActiveModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l01762"></a><span class="lineno"> 1762</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#a97a926961c5f156791faf98633970246" title="Whether the set of configuration macros is exhaustive.">ConfigMacrosExhaustive</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01763"></a><span class="lineno"> 1763</span>   }</div>
+<div class="line"><a name="l01764"></a><span class="lineno"> 1764</span> </div>
+<div class="line"><a name="l01765"></a><span class="lineno"> 1765</span>   <span class="comment">// If we don't have an identifier, we're done.</span></div>
+<div class="line"><a name="l01766"></a><span class="lineno"> 1766</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>))</div>
+<div class="line"><a name="l01767"></a><span class="lineno"> 1767</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01768"></a><span class="lineno"> 1768</span> </div>
+<div class="line"><a name="l01769"></a><span class="lineno"> 1769</span>   <span class="comment">// Consume the first identifier.</span></div>
+<div class="line"><a name="l01770"></a><span class="lineno"> 1770</span>   <span class="keywordflow">if</span> (!ActiveModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l01771"></a><span class="lineno"> 1771</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#a162d6fa484ed34109093c8264dd116d3" title="The set of "configuration macros", which are macros that (intentionally) change how this module is bu...">ConfigMacros</a>.push_back(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>().str());</div>
+<div class="line"><a name="l01772"></a><span class="lineno"> 1772</span>   }</div>
+<div class="line"><a name="l01773"></a><span class="lineno"> 1773</span>   consumeToken();</div>
+<div class="line"><a name="l01774"></a><span class="lineno"> 1774</span> </div>
+<div class="line"><a name="l01775"></a><span class="lineno"> 1775</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01776"></a><span class="lineno"> 1776</span>     <span class="comment">// If there's a comma, consume it.</span></div>
+<div class="line"><a name="l01777"></a><span class="lineno"> 1777</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">MMToken::Comma</a>))</div>
+<div class="line"><a name="l01778"></a><span class="lineno"> 1778</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01779"></a><span class="lineno"> 1779</span>     consumeToken();</div>
+<div class="line"><a name="l01780"></a><span class="lineno"> 1780</span> </div>
+<div class="line"><a name="l01781"></a><span class="lineno"> 1781</span>     <span class="comment">// We expect to see a macro name here.</span></div>
+<div class="line"><a name="l01782"></a><span class="lineno"> 1782</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l01783"></a><span class="lineno"> 1783</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_config_macro);</div>
+<div class="line"><a name="l01784"></a><span class="lineno"> 1784</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01785"></a><span class="lineno"> 1785</span>     }</div>
+<div class="line"><a name="l01786"></a><span class="lineno"> 1786</span> </div>
+<div class="line"><a name="l01787"></a><span class="lineno"> 1787</span>     <span class="comment">// Consume the macro name.</span></div>
+<div class="line"><a name="l01788"></a><span class="lineno"> 1788</span>     <span class="keywordflow">if</span> (!ActiveModule-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l01789"></a><span class="lineno"> 1789</span>       ActiveModule-><a class="code" href="classclang_1_1Module.html#a162d6fa484ed34109093c8264dd116d3" title="The set of "configuration macros", which are macros that (intentionally) change how this module is bu...">ConfigMacros</a>.push_back(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>().str());</div>
+<div class="line"><a name="l01790"></a><span class="lineno"> 1790</span>     }</div>
+<div class="line"><a name="l01791"></a><span class="lineno"> 1791</span>     consumeToken();</div>
+<div class="line"><a name="l01792"></a><span class="lineno"> 1792</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l01793"></a><span class="lineno"> 1793</span> }</div>
+<div class="line"><a name="l01794"></a><span class="lineno"> 1794</span> <span class="comment"></span></div>
+<div class="line"><a name="l01795"></a><span class="lineno"> 1795</span> <span class="comment">/// \brief Format a module-id into a string.</span></div>
+<div class="line"><a name="l01796"></a><span class="lineno"><a class="code" href="ModuleMap_8cpp.html#abc9978556cc9900580d0367b3bc5fe65"> 1796</a></span> <span class="comment"></span><span class="keyword">static</span> std::string <a class="code" href="ModuleMap_8cpp.html#abc9978556cc9900580d0367b3bc5fe65" title="Format a module-id into a string.">formatModuleId</a>(<span class="keyword">const</span> <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> &Id) {</div>
+<div class="line"><a name="l01797"></a><span class="lineno"> 1797</span>   std::string result;</div>
+<div class="line"><a name="l01798"></a><span class="lineno"> 1798</span>   {</div>
+<div class="line"><a name="l01799"></a><span class="lineno"> 1799</span>     llvm::raw_string_ostream OS(result);</div>
+<div class="line"><a name="l01800"></a><span class="lineno"> 1800</span> </div>
+<div class="line"><a name="l01801"></a><span class="lineno"> 1801</span>     <span class="keywordflow">for</span> (<span class="keywordtype">unsigned</span> I = 0, N = Id.size(); I != N; ++I) {</div>
+<div class="line"><a name="l01802"></a><span class="lineno"> 1802</span>       <span class="keywordflow">if</span> (I)</div>
+<div class="line"><a name="l01803"></a><span class="lineno"> 1803</span>         OS << <span class="stringliteral">"."</span>;</div>
+<div class="line"><a name="l01804"></a><span class="lineno"> 1804</span>       OS << Id[I].first;</div>
+<div class="line"><a name="l01805"></a><span class="lineno"> 1805</span>     }</div>
+<div class="line"><a name="l01806"></a><span class="lineno"> 1806</span>   }</div>
+<div class="line"><a name="l01807"></a><span class="lineno"> 1807</span> </div>
+<div class="line"><a name="l01808"></a><span class="lineno"> 1808</span>   <span class="keywordflow">return</span> result;</div>
+<div class="line"><a name="l01809"></a><span class="lineno"> 1809</span> }</div>
+<div class="line"><a name="l01810"></a><span class="lineno"> 1810</span> <span class="comment"></span></div>
+<div class="line"><a name="l01811"></a><span class="lineno"> 1811</span> <span class="comment">/// \brief Parse a conflict declaration.</span></div>
+<div class="line"><a name="l01812"></a><span class="lineno"> 1812</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01813"></a><span class="lineno"> 1813</span> <span class="comment">///   module-declaration:</span></div>
+<div class="line"><a name="l01814"></a><span class="lineno"> 1814</span> <span class="comment">///     'conflict' module-id ',' string-literal</span></div>
+<div class="line"><a name="l01815"></a><span class="lineno"> 1815</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseConflict() {</div>
+<div class="line"><a name="l01816"></a><span class="lineno"> 1816</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7ecdc054dc41aa967d19a5a1a4b399b0">MMToken::Conflict</a>));</div>
+<div class="line"><a name="l01817"></a><span class="lineno"> 1817</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> ConflictLoc = consumeToken();</div>
+<div class="line"><a name="l01818"></a><span class="lineno"> 1818</span>   <a class="code" href="structclang_1_1Module_1_1UnresolvedConflict.html" title="An unresolved conflict with another module.">Module::UnresolvedConflict</a> Conflict;</div>
+<div class="line"><a name="l01819"></a><span class="lineno"> 1819</span> </div>
+<div class="line"><a name="l01820"></a><span class="lineno"> 1820</span>   <span class="comment">// Parse the module-id.</span></div>
+<div class="line"><a name="l01821"></a><span class="lineno"> 1821</span>   <span class="keywordflow">if</span> (parseModuleId(Conflict.<a class="code" href="structclang_1_1Module_1_1UnresolvedConflict.html#a632f3ed5dfa8f5daf18509050e18859b" title="The (unresolved) module id.">Id</a>))</div>
+<div class="line"><a name="l01822"></a><span class="lineno"> 1822</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01823"></a><span class="lineno"> 1823</span> </div>
+<div class="line"><a name="l01824"></a><span class="lineno"> 1824</span>   <span class="comment">// Parse the ','.</span></div>
+<div class="line"><a name="l01825"></a><span class="lineno"> 1825</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">MMToken::Comma</a>)) {</div>
+<div class="line"><a name="l01826"></a><span class="lineno"> 1826</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_conflicts_comma)</div>
+<div class="line"><a name="l01827"></a><span class="lineno"> 1827</span>       << <a class="code" href="classclang_1_1SourceRange.html" title="A trival tuple used to represent a source range.">SourceRange</a>(ConflictLoc);</div>
+<div class="line"><a name="l01828"></a><span class="lineno"> 1828</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01829"></a><span class="lineno"> 1829</span>   }</div>
+<div class="line"><a name="l01830"></a><span class="lineno"> 1830</span>   consumeToken();</div>
+<div class="line"><a name="l01831"></a><span class="lineno"> 1831</span> </div>
+<div class="line"><a name="l01832"></a><span class="lineno"> 1832</span>   <span class="comment">// Parse the message.</span></div>
+<div class="line"><a name="l01833"></a><span class="lineno"> 1833</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>)) {</div>
+<div class="line"><a name="l01834"></a><span class="lineno"> 1834</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_conflicts_message)</div>
+<div class="line"><a name="l01835"></a><span class="lineno"> 1835</span>       << <a class="code" href="ModuleMap_8cpp.html#abc9978556cc9900580d0367b3bc5fe65" title="Format a module-id into a string.">formatModuleId</a>(Conflict.<a class="code" href="structclang_1_1Module_1_1UnresolvedConflict.html#a632f3ed5dfa8f5daf18509050e18859b" title="The (unresolved) module id.">Id</a>);</div>
+<div class="line"><a name="l01836"></a><span class="lineno"> 1836</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01837"></a><span class="lineno"> 1837</span>   }</div>
+<div class="line"><a name="l01838"></a><span class="lineno"> 1838</span>   Conflict.<a class="code" href="structclang_1_1Module_1_1UnresolvedConflict.html#a363b8c33e8037a2ce8282d4ab29b7241" title="The message provided to the user when there is a conflict.">Message</a> = Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>().str();</div>
+<div class="line"><a name="l01839"></a><span class="lineno"> 1839</span>   consumeToken();</div>
+<div class="line"><a name="l01840"></a><span class="lineno"> 1840</span> </div>
+<div class="line"><a name="l01841"></a><span class="lineno"> 1841</span>   <span class="comment">// Add this unresolved conflict.</span></div>
+<div class="line"><a name="l01842"></a><span class="lineno"> 1842</span>   ActiveModule-><a class="code" href="classclang_1_1Module.html#ab8f0b274f72bfad381e2ca20a7aecff6" title="The list of conflicts for which the module-id has not yet been resolved.">UnresolvedConflicts</a>.push_back(Conflict);</div>
+<div class="line"><a name="l01843"></a><span class="lineno"> 1843</span> }</div>
+<div class="line"><a name="l01844"></a><span class="lineno"> 1844</span> <span class="comment"></span></div>
+<div class="line"><a name="l01845"></a><span class="lineno"> 1845</span> <span class="comment">/// \brief Parse an inferred module declaration (wildcard modules).</span></div>
+<div class="line"><a name="l01846"></a><span class="lineno"> 1846</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01847"></a><span class="lineno"> 1847</span> <span class="comment">///   module-declaration:</span></div>
+<div class="line"><a name="l01848"></a><span class="lineno"> 1848</span> <span class="comment">///     'explicit'[opt] 'framework'[opt] 'module' * attributes[opt]</span></div>
+<div class="line"><a name="l01849"></a><span class="lineno"> 1849</span> <span class="comment">///       { inferred-module-member* }</span></div>
+<div class="line"><a name="l01850"></a><span class="lineno"> 1850</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01851"></a><span class="lineno"> 1851</span> <span class="comment">///   inferred-module-member:</span></div>
+<div class="line"><a name="l01852"></a><span class="lineno"> 1852</span> <span class="comment">///     'export' '*'</span></div>
+<div class="line"><a name="l01853"></a><span class="lineno"> 1853</span> <span class="comment">///     'exclude' identifier</span></div>
+<div class="line"><a name="l01854"></a><span class="lineno"> 1854</span> <span class="comment"></span><span class="keywordtype">void</span> ModuleMapParser::parseInferredModuleDecl(<span class="keywordtype">bool</span> Framework, <span class="keywordtype">bool</span> Explicit) {</div>
+<div class="line"><a name="l01855"></a><span class="lineno"> 1855</span>   assert(Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">MMToken::Star</a>));</div>
+<div class="line"><a name="l01856"></a><span class="lineno"> 1856</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> StarLoc = consumeToken();</div>
+<div class="line"><a name="l01857"></a><span class="lineno"> 1857</span>   <span class="keywordtype">bool</span> Failed = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01858"></a><span class="lineno"> 1858</span> </div>
+<div class="line"><a name="l01859"></a><span class="lineno"> 1859</span>   <span class="comment">// Inferred modules must be submodules.</span></div>
+<div class="line"><a name="l01860"></a><span class="lineno"> 1860</span>   <span class="keywordflow">if</span> (!ActiveModule && !Framework) {</div>
+<div class="line"><a name="l01861"></a><span class="lineno"> 1861</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(StarLoc, diag::err_mmap_top_level_inferred_submodule);</div>
+<div class="line"><a name="l01862"></a><span class="lineno"> 1862</span>     Failed = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01863"></a><span class="lineno"> 1863</span>   }</div>
+<div class="line"><a name="l01864"></a><span class="lineno"> 1864</span> </div>
+<div class="line"><a name="l01865"></a><span class="lineno"> 1865</span>   <span class="keywordflow">if</span> (ActiveModule) {</div>
+<div class="line"><a name="l01866"></a><span class="lineno"> 1866</span>     <span class="comment">// Inferred modules must have umbrella directories.</span></div>
+<div class="line"><a name="l01867"></a><span class="lineno"> 1867</span>     <span class="keywordflow">if</span> (!Failed && !ActiveModule-><a class="code" href="classclang_1_1Module.html#a2a142c05e037bb81a45fdf60c236cea7" title="Retrieve the directory for which this module serves as the umbrella.">getUmbrellaDir</a>()) {</div>
+<div class="line"><a name="l01868"></a><span class="lineno"> 1868</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(StarLoc, diag::err_mmap_inferred_no_umbrella);</div>
+<div class="line"><a name="l01869"></a><span class="lineno"> 1869</span>       Failed = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01870"></a><span class="lineno"> 1870</span>     }</div>
+<div class="line"><a name="l01871"></a><span class="lineno"> 1871</span>     </div>
+<div class="line"><a name="l01872"></a><span class="lineno"> 1872</span>     <span class="comment">// Check for redefinition of an inferred module.</span></div>
+<div class="line"><a name="l01873"></a><span class="lineno"> 1873</span>     <span class="keywordflow">if</span> (!Failed && ActiveModule-><a class="code" href="classclang_1_1Module.html#a07cb2506efca1aba4c0959b7a0f8443c" title="Whether we should infer submodules for this module based on the headers.">InferSubmodules</a>) {</div>
+<div class="line"><a name="l01874"></a><span class="lineno"> 1874</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(StarLoc, diag::err_mmap_inferred_redef);</div>
+<div class="line"><a name="l01875"></a><span class="lineno"> 1875</span>       <span class="keywordflow">if</span> (ActiveModule-><a class="code" href="classclang_1_1Module.html#a16910d5312b19f955d1912fe6a34a20c" title="The location of the inferred submodule.">InferredSubmoduleLoc</a>.<a class="code" href="classclang_1_1SourceLocation.html#ad504978d83973770506b6ddb1d7b48f9" title="Return true if this is a valid SourceLocation object.">isValid</a>())</div>
+<div class="line"><a name="l01876"></a><span class="lineno"> 1876</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(ActiveModule-><a class="code" href="classclang_1_1Module.html#a16910d5312b19f955d1912fe6a34a20c" title="The location of the inferred submodule.">InferredSubmoduleLoc</a>,</div>
+<div class="line"><a name="l01877"></a><span class="lineno"> 1877</span>                      diag::note_mmap_prev_definition);</div>
+<div class="line"><a name="l01878"></a><span class="lineno"> 1878</span>       Failed = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01879"></a><span class="lineno"> 1879</span>     }</div>
+<div class="line"><a name="l01880"></a><span class="lineno"> 1880</span> </div>
+<div class="line"><a name="l01881"></a><span class="lineno"> 1881</span>     <span class="comment">// Check for the 'framework' keyword, which is not permitted here.</span></div>
+<div class="line"><a name="l01882"></a><span class="lineno"> 1882</span>     <span class="keywordflow">if</span> (Framework) {</div>
+<div class="line"><a name="l01883"></a><span class="lineno"> 1883</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(StarLoc, diag::err_mmap_inferred_framework_submodule);</div>
+<div class="line"><a name="l01884"></a><span class="lineno"> 1884</span>       Framework = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01885"></a><span class="lineno"> 1885</span>     }</div>
+<div class="line"><a name="l01886"></a><span class="lineno"> 1886</span>   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (Explicit) {</div>
+<div class="line"><a name="l01887"></a><span class="lineno"> 1887</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(StarLoc, diag::err_mmap_explicit_inferred_framework);</div>
+<div class="line"><a name="l01888"></a><span class="lineno"> 1888</span>     Explicit = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01889"></a><span class="lineno"> 1889</span>   }</div>
+<div class="line"><a name="l01890"></a><span class="lineno"> 1890</span> </div>
+<div class="line"><a name="l01891"></a><span class="lineno"> 1891</span>   <span class="comment">// If there were any problems with this inferred submodule, skip its body.</span></div>
+<div class="line"><a name="l01892"></a><span class="lineno"> 1892</span>   <span class="keywordflow">if</span> (Failed) {</div>
+<div class="line"><a name="l01893"></a><span class="lineno"> 1893</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">MMToken::LBrace</a>)) {</div>
+<div class="line"><a name="l01894"></a><span class="lineno"> 1894</span>       consumeToken();</div>
+<div class="line"><a name="l01895"></a><span class="lineno"> 1895</span>       skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>);</div>
+<div class="line"><a name="l01896"></a><span class="lineno"> 1896</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>))</div>
+<div class="line"><a name="l01897"></a><span class="lineno"> 1897</span>         consumeToken();</div>
+<div class="line"><a name="l01898"></a><span class="lineno"> 1898</span>     }</div>
+<div class="line"><a name="l01899"></a><span class="lineno"> 1899</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01900"></a><span class="lineno"> 1900</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01901"></a><span class="lineno"> 1901</span>   }</div>
+<div class="line"><a name="l01902"></a><span class="lineno"> 1902</span> </div>
+<div class="line"><a name="l01903"></a><span class="lineno"> 1903</span>   <span class="comment">// Parse optional attributes.</span></div>
+<div class="line"><a name="l01904"></a><span class="lineno"> 1904</span>   <a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> Attrs;</div>
+<div class="line"><a name="l01905"></a><span class="lineno"> 1905</span>   parseOptionalAttributes(Attrs);</div>
+<div class="line"><a name="l01906"></a><span class="lineno"> 1906</span> </div>
+<div class="line"><a name="l01907"></a><span class="lineno"> 1907</span>   <span class="keywordflow">if</span> (ActiveModule) {</div>
+<div class="line"><a name="l01908"></a><span class="lineno"> 1908</span>     <span class="comment">// Note that we have an inferred submodule.</span></div>
+<div class="line"><a name="l01909"></a><span class="lineno"> 1909</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#a07cb2506efca1aba4c0959b7a0f8443c" title="Whether we should infer submodules for this module based on the headers.">InferSubmodules</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01910"></a><span class="lineno"> 1910</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#a16910d5312b19f955d1912fe6a34a20c" title="The location of the inferred submodule.">InferredSubmoduleLoc</a> = StarLoc;</div>
+<div class="line"><a name="l01911"></a><span class="lineno"> 1911</span>     ActiveModule-><a class="code" href="classclang_1_1Module.html#ae64ff7e3ba9cb2d5fa98f6b55c58d921" title="Whether, when inferring submodules, the inferred submodules should be explicit.">InferExplicitSubmodules</a> = Explicit;</div>
+<div class="line"><a name="l01912"></a><span class="lineno"> 1912</span>   } <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01913"></a><span class="lineno"> 1913</span>     <span class="comment">// We'll be inferring framework modules for this directory.</span></div>
+<div class="line"><a name="l01914"></a><span class="lineno"> 1914</span>     Map.InferredDirectories[Directory].InferModules = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01915"></a><span class="lineno"> 1915</span>     Map.InferredDirectories[Directory].InferSystemModules = Attrs.<a class="code" href="structclang_1_1Attributes.html#a7036c98ab1887091dfe30dca3ad12a71" title="Whether this is a system module.">IsSystem</a>;</div>
+<div class="line"><a name="l01916"></a><span class="lineno"> 1916</span>   }</div>
+<div class="line"><a name="l01917"></a><span class="lineno"> 1917</span> </div>
+<div class="line"><a name="l01918"></a><span class="lineno"> 1918</span>   <span class="comment">// Parse the opening brace.</span></div>
+<div class="line"><a name="l01919"></a><span class="lineno"> 1919</span>   <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">MMToken::LBrace</a>)) {</div>
+<div class="line"><a name="l01920"></a><span class="lineno"> 1920</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_lbrace_wildcard);</div>
+<div class="line"><a name="l01921"></a><span class="lineno"> 1921</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01922"></a><span class="lineno"> 1922</span>     <span class="keywordflow">return</span>;</div>
+<div class="line"><a name="l01923"></a><span class="lineno"> 1923</span>   }  </div>
+<div class="line"><a name="l01924"></a><span class="lineno"> 1924</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LBraceLoc = consumeToken();</div>
+<div class="line"><a name="l01925"></a><span class="lineno"> 1925</span> </div>
+<div class="line"><a name="l01926"></a><span class="lineno"> 1926</span>   <span class="comment">// Parse the body of the inferred submodule.</span></div>
+<div class="line"><a name="l01927"></a><span class="lineno"> 1927</span>   <span class="keywordtype">bool</span> Done = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l01928"></a><span class="lineno"> 1928</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l01929"></a><span class="lineno"> 1929</span>     <span class="keywordflow">switch</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a>) {</div>
+<div class="line"><a name="l01930"></a><span class="lineno"> 1930</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">MMToken::EndOfFile</a>:</div>
+<div class="line"><a name="l01931"></a><span class="lineno"> 1931</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>:</div>
+<div class="line"><a name="l01932"></a><span class="lineno"> 1932</span>       Done = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01933"></a><span class="lineno"> 1933</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01934"></a><span class="lineno"> 1934</span> </div>
+<div class="line"><a name="l01935"></a><span class="lineno"> 1935</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>: {</div>
+<div class="line"><a name="l01936"></a><span class="lineno"> 1936</span>       <span class="keywordflow">if</span> (ActiveModule) {</div>
+<div class="line"><a name="l01937"></a><span class="lineno"> 1937</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_inferred_member)</div>
+<div class="line"><a name="l01938"></a><span class="lineno"> 1938</span>           << (ActiveModule != 0);</div>
+<div class="line"><a name="l01939"></a><span class="lineno"> 1939</span>         consumeToken();</div>
+<div class="line"><a name="l01940"></a><span class="lineno"> 1940</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01941"></a><span class="lineno"> 1941</span>       }</div>
+<div class="line"><a name="l01942"></a><span class="lineno"> 1942</span> </div>
+<div class="line"><a name="l01943"></a><span class="lineno"> 1943</span>       consumeToken();</div>
+<div class="line"><a name="l01944"></a><span class="lineno"> 1944</span>       <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l01945"></a><span class="lineno"> 1945</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_missing_exclude_name);</div>
+<div class="line"><a name="l01946"></a><span class="lineno"> 1946</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01947"></a><span class="lineno"> 1947</span>       }</div>
+<div class="line"><a name="l01948"></a><span class="lineno"> 1948</span> </div>
+<div class="line"><a name="l01949"></a><span class="lineno"> 1949</span>       Map.InferredDirectories[Directory].ExcludedModules</div>
+<div class="line"><a name="l01950"></a><span class="lineno"> 1950</span>         .push_back(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>());</div>
+<div class="line"><a name="l01951"></a><span class="lineno"> 1951</span>       consumeToken();</div>
+<div class="line"><a name="l01952"></a><span class="lineno"> 1952</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01953"></a><span class="lineno"> 1953</span>     }</div>
+<div class="line"><a name="l01954"></a><span class="lineno"> 1954</span> </div>
+<div class="line"><a name="l01955"></a><span class="lineno"> 1955</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">MMToken::ExportKeyword</a>:</div>
+<div class="line"><a name="l01956"></a><span class="lineno"> 1956</span>       <span class="keywordflow">if</span> (!ActiveModule) {</div>
+<div class="line"><a name="l01957"></a><span class="lineno"> 1957</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_inferred_member)</div>
+<div class="line"><a name="l01958"></a><span class="lineno"> 1958</span>           << (ActiveModule != 0);</div>
+<div class="line"><a name="l01959"></a><span class="lineno"> 1959</span>         consumeToken();</div>
+<div class="line"><a name="l01960"></a><span class="lineno"> 1960</span>         <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01961"></a><span class="lineno"> 1961</span>       }</div>
+<div class="line"><a name="l01962"></a><span class="lineno"> 1962</span> </div>
+<div class="line"><a name="l01963"></a><span class="lineno"> 1963</span>       consumeToken();</div>
+<div class="line"><a name="l01964"></a><span class="lineno"> 1964</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">MMToken::Star</a>)) </div>
+<div class="line"><a name="l01965"></a><span class="lineno"> 1965</span>         ActiveModule-><a class="code" href="classclang_1_1Module.html#aab3a3e63b2c07e737f21296484abbcf9" title="Whether, when inferring submodules, the inferr submodules should export all modules they import (e...">InferExportWildcard</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01966"></a><span class="lineno"> 1966</span>       <span class="keywordflow">else</span></div>
+<div class="line"><a name="l01967"></a><span class="lineno"> 1967</span>         Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), </div>
+<div class="line"><a name="l01968"></a><span class="lineno"> 1968</span>                      diag::err_mmap_expected_export_wildcard);</div>
+<div class="line"><a name="l01969"></a><span class="lineno"> 1969</span>       consumeToken();</div>
+<div class="line"><a name="l01970"></a><span class="lineno"> 1970</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l01971"></a><span class="lineno"> 1971</span> </div>
+<div class="line"><a name="l01972"></a><span class="lineno"> 1972</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">MMToken::ExplicitKeyword</a>:</div>
+<div class="line"><a name="l01973"></a><span class="lineno"> 1973</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>:</div>
+<div class="line"><a name="l01974"></a><span class="lineno"> 1974</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>:</div>
+<div class="line"><a name="l01975"></a><span class="lineno"> 1975</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">MMToken::PrivateKeyword</a>:</div>
+<div class="line"><a name="l01976"></a><span class="lineno"> 1976</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>:</div>
+<div class="line"><a name="l01977"></a><span class="lineno"> 1977</span>     <span class="keywordflow">default</span>:</div>
+<div class="line"><a name="l01978"></a><span class="lineno"> 1978</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_inferred_member)</div>
+<div class="line"><a name="l01979"></a><span class="lineno"> 1979</span>           << (ActiveModule != 0);</div>
+<div class="line"><a name="l01980"></a><span class="lineno"> 1980</span>       consumeToken();</div>
+<div class="line"><a name="l01981"></a><span class="lineno"> 1981</span>       <span class="keywordflow">break</span>;        </div>
+<div class="line"><a name="l01982"></a><span class="lineno"> 1982</span>     }</div>
+<div class="line"><a name="l01983"></a><span class="lineno"> 1983</span>   } <span class="keywordflow">while</span> (!Done);</div>
+<div class="line"><a name="l01984"></a><span class="lineno"> 1984</span>   </div>
+<div class="line"><a name="l01985"></a><span class="lineno"> 1985</span>   <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>))</div>
+<div class="line"><a name="l01986"></a><span class="lineno"> 1986</span>     consumeToken();</div>
+<div class="line"><a name="l01987"></a><span class="lineno"> 1987</span>   <span class="keywordflow">else</span> {</div>
+<div class="line"><a name="l01988"></a><span class="lineno"> 1988</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_rbrace);</div>
+<div class="line"><a name="l01989"></a><span class="lineno"> 1989</span>     Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LBraceLoc, diag::note_mmap_lbrace_match);</div>
+<div class="line"><a name="l01990"></a><span class="lineno"> 1990</span>     HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l01991"></a><span class="lineno"> 1991</span>   }</div>
+<div class="line"><a name="l01992"></a><span class="lineno"> 1992</span> }</div>
+<div class="line"><a name="l01993"></a><span class="lineno"> 1993</span> <span class="comment"></span></div>
+<div class="line"><a name="l01994"></a><span class="lineno"> 1994</span> <span class="comment">/// \brief Parse optional attributes.</span></div>
+<div class="line"><a name="l01995"></a><span class="lineno"> 1995</span> <span class="comment">///</span></div>
+<div class="line"><a name="l01996"></a><span class="lineno"> 1996</span> <span class="comment">///   attributes:</span></div>
+<div class="line"><a name="l01997"></a><span class="lineno"> 1997</span> <span class="comment">///     attribute attributes</span></div>
+<div class="line"><a name="l01998"></a><span class="lineno"> 1998</span> <span class="comment">///     attribute</span></div>
+<div class="line"><a name="l01999"></a><span class="lineno"> 1999</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02000"></a><span class="lineno"> 2000</span> <span class="comment">///   attribute:</span></div>
+<div class="line"><a name="l02001"></a><span class="lineno"> 2001</span> <span class="comment">///     [ identifier ]</span></div>
+<div class="line"><a name="l02002"></a><span class="lineno"> 2002</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02003"></a><span class="lineno"> 2003</span> <span class="comment">/// \param Attrs Will be filled in with the parsed attributes.</span></div>
+<div class="line"><a name="l02004"></a><span class="lineno"> 2004</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02005"></a><span class="lineno"> 2005</span> <span class="comment">/// \returns true if an error occurred, false otherwise.</span></div>
+<div class="line"><a name="l02006"></a><span class="lineno"> 2006</span> <span class="comment"></span><span class="keywordtype">bool</span> ModuleMapParser::parseOptionalAttributes(<a class="code" href="structclang_1_1Attributes.html" title="The set of attributes that can be attached to a module.">Attributes</a> &Attrs) {</div>
+<div class="line"><a name="l02007"></a><span class="lineno"> 2007</span>   <span class="keywordtype">bool</span> HadError = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l02008"></a><span class="lineno"> 2008</span>   </div>
+<div class="line"><a name="l02009"></a><span class="lineno"> 2009</span>   <span class="keywordflow">while</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba73a9c8c5b7ad4861c5152d5c2bed29bb">MMToken::LSquare</a>)) {</div>
+<div class="line"><a name="l02010"></a><span class="lineno"> 2010</span>     <span class="comment">// Consume the '['.</span></div>
+<div class="line"><a name="l02011"></a><span class="lineno"> 2011</span>     <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> LSquareLoc = consumeToken();</div>
+<div class="line"><a name="l02012"></a><span class="lineno"> 2012</span> </div>
+<div class="line"><a name="l02013"></a><span class="lineno"> 2013</span>     <span class="comment">// Check whether we have an attribute name here.</span></div>
+<div class="line"><a name="l02014"></a><span class="lineno"> 2014</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>)) {</div>
+<div class="line"><a name="l02015"></a><span class="lineno"> 2015</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_attribute);</div>
+<div class="line"><a name="l02016"></a><span class="lineno"> 2016</span>       skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>);</div>
+<div class="line"><a name="l02017"></a><span class="lineno"> 2017</span>       <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>))</div>
+<div class="line"><a name="l02018"></a><span class="lineno"> 2018</span>         consumeToken();</div>
+<div class="line"><a name="l02019"></a><span class="lineno"> 2019</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02020"></a><span class="lineno"> 2020</span>     }</div>
+<div class="line"><a name="l02021"></a><span class="lineno"> 2021</span> </div>
+<div class="line"><a name="l02022"></a><span class="lineno"> 2022</span>     <span class="comment">// Decode the attribute name.</span></div>
+<div class="line"><a name="l02023"></a><span class="lineno"> 2023</span>     <a class="code" href="ModuleMap_8cpp.html#ae35a381d74eb7257124045a96ae47ade" title="Enumerates the known attributes.">AttributeKind</a> Attribute</div>
+<div class="line"><a name="l02024"></a><span class="lineno"> 2024</span>       = llvm::StringSwitch<AttributeKind>(Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>())</div>
+<div class="line"><a name="l02025"></a><span class="lineno"> 2025</span>           .Case(<span class="stringliteral">"exhaustive"</span>, AT_exhaustive)</div>
+<div class="line"><a name="l02026"></a><span class="lineno"> 2026</span>           .Case(<span class="stringliteral">"system"</span>, AT_system)</div>
+<div class="line"><a name="l02027"></a><span class="lineno"> 2027</span>           .Default(AT_unknown);</div>
+<div class="line"><a name="l02028"></a><span class="lineno"> 2028</span>     <span class="keywordflow">switch</span> (Attribute) {</div>
+<div class="line"><a name="l02029"></a><span class="lineno"> 2029</span>     <span class="keywordflow">case</span> AT_unknown:</div>
+<div class="line"><a name="l02030"></a><span class="lineno"> 2030</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::warn_mmap_unknown_attribute)</div>
+<div class="line"><a name="l02031"></a><span class="lineno"> 2031</span>         << Tok.<a class="code" href="structclang_1_1MMToken.html#ae8b9f863ea73a89a89a588c22e4baf42">getString</a>();</div>
+<div class="line"><a name="l02032"></a><span class="lineno"> 2032</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02033"></a><span class="lineno"> 2033</span> </div>
+<div class="line"><a name="l02034"></a><span class="lineno"> 2034</span>     <span class="keywordflow">case</span> AT_system:</div>
+<div class="line"><a name="l02035"></a><span class="lineno"> 2035</span>       Attrs.<a class="code" href="structclang_1_1Attributes.html#a7036c98ab1887091dfe30dca3ad12a71" title="Whether this is a system module.">IsSystem</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02036"></a><span class="lineno"> 2036</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02037"></a><span class="lineno"> 2037</span> </div>
+<div class="line"><a name="l02038"></a><span class="lineno"> 2038</span>     <span class="keywordflow">case</span> AT_exhaustive:</div>
+<div class="line"><a name="l02039"></a><span class="lineno"> 2039</span>       Attrs.<a class="code" href="structclang_1_1Attributes.html#a635dfbbcfd97606f95aa4b636a1c543b" title="Whether this is an exhaustive set of configuration macros.">IsExhaustive</a> = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02040"></a><span class="lineno"> 2040</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02041"></a><span class="lineno"> 2041</span>     }</div>
+<div class="line"><a name="l02042"></a><span class="lineno"> 2042</span>     consumeToken();</div>
+<div class="line"><a name="l02043"></a><span class="lineno"> 2043</span> </div>
+<div class="line"><a name="l02044"></a><span class="lineno"> 2044</span>     <span class="comment">// Consume the ']'.</span></div>
+<div class="line"><a name="l02045"></a><span class="lineno"> 2045</span>     <span class="keywordflow">if</span> (!Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>)) {</div>
+<div class="line"><a name="l02046"></a><span class="lineno"> 2046</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_rsquare);</div>
+<div class="line"><a name="l02047"></a><span class="lineno"> 2047</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(LSquareLoc, diag::note_mmap_lsquare_match);</div>
+<div class="line"><a name="l02048"></a><span class="lineno"> 2048</span>       skipUntil(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>);</div>
+<div class="line"><a name="l02049"></a><span class="lineno"> 2049</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02050"></a><span class="lineno"> 2050</span>     }</div>
+<div class="line"><a name="l02051"></a><span class="lineno"> 2051</span> </div>
+<div class="line"><a name="l02052"></a><span class="lineno"> 2052</span>     <span class="keywordflow">if</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a77bf300833b85f35504455bf59119625">is</a>(<a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>))</div>
+<div class="line"><a name="l02053"></a><span class="lineno"> 2053</span>       consumeToken();</div>
+<div class="line"><a name="l02054"></a><span class="lineno"> 2054</span>   }</div>
+<div class="line"><a name="l02055"></a><span class="lineno"> 2055</span> </div>
+<div class="line"><a name="l02056"></a><span class="lineno"> 2056</span>   <span class="keywordflow">return</span> HadError;</div>
+<div class="line"><a name="l02057"></a><span class="lineno"> 2057</span> }</div>
+<div class="line"><a name="l02058"></a><span class="lineno"> 2058</span> <span class="comment"></span></div>
+<div class="line"><a name="l02059"></a><span class="lineno"> 2059</span> <span class="comment">/// \brief If there is a specific header search directory due the presence</span></div>
+<div class="line"><a name="l02060"></a><span class="lineno"> 2060</span> <span class="comment">/// of an umbrella directory, retrieve that directory. Otherwise, returns null.</span></div>
+<div class="line"><a name="l02061"></a><span class="lineno"> 2061</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> *ModuleMapParser::getOverriddenHeaderSearchDir() {</div>
+<div class="line"><a name="l02062"></a><span class="lineno"> 2062</span>   <span class="keywordflow">for</span> (<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod = ActiveModule; Mod; Mod = Mod-><a class="code" href="classclang_1_1Module.html#a2bf2f0da38465698656382734688ebef" title="The parent of this module. This will be NULL for the top-level module.">Parent</a>) {</div>
+<div class="line"><a name="l02063"></a><span class="lineno"> 2063</span>     <span class="comment">// If we have an umbrella directory, use that.</span></div>
+<div class="line"><a name="l02064"></a><span class="lineno"> 2064</span>     <span class="keywordflow">if</span> (Mod-><a class="code" href="classclang_1_1Module.html#a5d5a3bef3811c442f39ecd596ca9e7df" title="Determine whether this module has an umbrella directory that is not based on an umbrella header...">hasUmbrellaDir</a>())</div>
+<div class="line"><a name="l02065"></a><span class="lineno"> 2065</span>       <span class="keywordflow">return</span> Mod-><a class="code" href="classclang_1_1Module.html#a2a142c05e037bb81a45fdf60c236cea7" title="Retrieve the directory for which this module serves as the umbrella.">getUmbrellaDir</a>();</div>
+<div class="line"><a name="l02066"></a><span class="lineno"> 2066</span>     </div>
+<div class="line"><a name="l02067"></a><span class="lineno"> 2067</span>     <span class="comment">// If we have a framework directory, stop looking.</span></div>
+<div class="line"><a name="l02068"></a><span class="lineno"> 2068</span>     <span class="keywordflow">if</span> (Mod-><a class="code" href="classclang_1_1Module.html#ad335b91a8d39f2a2ca9643f1c88aac8d" title="Whether this is a framework module.">IsFramework</a>)</div>
+<div class="line"><a name="l02069"></a><span class="lineno"> 2069</span>       <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02070"></a><span class="lineno"> 2070</span>   }</div>
+<div class="line"><a name="l02071"></a><span class="lineno"> 2071</span>   </div>
+<div class="line"><a name="l02072"></a><span class="lineno"> 2072</span>   <span class="keywordflow">return</span> 0;</div>
+<div class="line"><a name="l02073"></a><span class="lineno"> 2073</span> }</div>
+<div class="line"><a name="l02074"></a><span class="lineno"> 2074</span> <span class="comment"></span></div>
+<div class="line"><a name="l02075"></a><span class="lineno"> 2075</span> <span class="comment">/// \brief Parse a module map file.</span></div>
+<div class="line"><a name="l02076"></a><span class="lineno"> 2076</span> <span class="comment">///</span></div>
+<div class="line"><a name="l02077"></a><span class="lineno"> 2077</span> <span class="comment">///   module-map-file:</span></div>
+<div class="line"><a name="l02078"></a><span class="lineno"> 2078</span> <span class="comment">///     module-declaration*</span></div>
+<div class="line"><a name="l02079"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMapParser.html#ad3752f98506207781ba6a506f37e1228"> 2079</a></span> <span class="comment"></span><span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMapParser.html#ad3752f98506207781ba6a506f37e1228" title="Parse a module map file.">ModuleMapParser::parseModuleMapFile</a>() {</div>
+<div class="line"><a name="l02080"></a><span class="lineno"> 2080</span>   <span class="keywordflow">do</span> {</div>
+<div class="line"><a name="l02081"></a><span class="lineno"> 2081</span>     <span class="keywordflow">switch</span> (Tok.<a class="code" href="structclang_1_1MMToken.html#a2292022d9a6ca6a52e5555e73357d778">Kind</a>) {</div>
+<div class="line"><a name="l02082"></a><span class="lineno"> 2082</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacfdbeb69247d08426216ed8dfcc12be7">MMToken::EndOfFile</a>:</div>
+<div class="line"><a name="l02083"></a><span class="lineno"> 2083</span>       <span class="keywordflow">return</span> HadError;</div>
+<div class="line"><a name="l02084"></a><span class="lineno"> 2084</span>       </div>
+<div class="line"><a name="l02085"></a><span class="lineno"> 2085</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba30d5cd45e7a706ec9628035ecb8b4ce4">MMToken::ExplicitKeyword</a>:</div>
+<div class="line"><a name="l02086"></a><span class="lineno"> 2086</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4babc6b2954698c90a9bd71ce5c7714d104">MMToken::ExternKeyword</a>:</div>
+<div class="line"><a name="l02087"></a><span class="lineno"> 2087</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baaee3aab4fef91eadc493c221f4a136cb">MMToken::ModuleKeyword</a>:</div>
+<div class="line"><a name="l02088"></a><span class="lineno"> 2088</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7330c30ccee851f9c7e918080ff97b5c">MMToken::FrameworkKeyword</a>:</div>
+<div class="line"><a name="l02089"></a><span class="lineno"> 2089</span>       parseModuleDecl();</div>
+<div class="line"><a name="l02090"></a><span class="lineno"> 2090</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02091"></a><span class="lineno"> 2091</span> </div>
+<div class="line"><a name="l02092"></a><span class="lineno"> 2092</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bab52c81bbf584f8f4e30e4b9ee7524cb8">MMToken::Comma</a>:</div>
+<div class="line"><a name="l02093"></a><span class="lineno"> 2093</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba58c15e1805176ec3a5b3368952f783fc">MMToken::ConfigMacros</a>:</div>
+<div class="line"><a name="l02094"></a><span class="lineno"> 2094</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba7ecdc054dc41aa967d19a5a1a4b399b0">MMToken::Conflict</a>:</div>
+<div class="line"><a name="l02095"></a><span class="lineno"> 2095</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4baf194071d48a941dfaf44b135cd764077">MMToken::Exclaim</a>:</div>
+<div class="line"><a name="l02096"></a><span class="lineno"> 2096</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6b23f21ec91017cdfd211f8ca6c9ad82">MMToken::ExcludeKeyword</a>:</div>
+<div class="line"><a name="l02097"></a><span class="lineno"> 2097</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba3094a0eb1b6ff41cdd855823e5672b4d">MMToken::ExportKeyword</a>:</div>
+<div class="line"><a name="l02098"></a><span class="lineno"> 2098</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae7499b5dfe6d98e6d101eab72b13bdfb">MMToken::HeaderKeyword</a>:</div>
+<div class="line"><a name="l02099"></a><span class="lineno"> 2099</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba0509e35da3910d3bbbf91384abc5ad40">MMToken::Identifier</a>:</div>
+<div class="line"><a name="l02100"></a><span class="lineno"> 2100</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba6ec369f84e9b91c9d16f74efbd1c2c36">MMToken::LBrace</a>:</div>
+<div class="line"><a name="l02101"></a><span class="lineno"> 2101</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba543309e2a3f1a625e43b12e2e415f177">MMToken::LinkKeyword</a>:</div>
+<div class="line"><a name="l02102"></a><span class="lineno"> 2102</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba73a9c8c5b7ad4861c5152d5c2bed29bb">MMToken::LSquare</a>:</div>
+<div class="line"><a name="l02103"></a><span class="lineno"> 2103</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bacf233185402ee25983d523fb04268ec4">MMToken::Period</a>:</div>
+<div class="line"><a name="l02104"></a><span class="lineno"> 2104</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba2d2ba141f0c7eb34e91c8f86b6a30ee4">MMToken::PrivateKeyword</a>:</div>
+<div class="line"><a name="l02105"></a><span class="lineno"> 2105</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba8706853f89f49f7eb31b375e4d2395c4">MMToken::RBrace</a>:</div>
+<div class="line"><a name="l02106"></a><span class="lineno"> 2106</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba859e13f4b67168456aa4bd5b758bfa37">MMToken::RSquare</a>:</div>
+<div class="line"><a name="l02107"></a><span class="lineno"> 2107</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba49abad35fc18db8438fbfab6c2095418">MMToken::RequiresKeyword</a>:</div>
+<div class="line"><a name="l02108"></a><span class="lineno"> 2108</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac79841bc46ac28e7d9b64bb940da6993">MMToken::Star</a>:</div>
+<div class="line"><a name="l02109"></a><span class="lineno"> 2109</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4ba4bbdb267187f1a5926eff2996c6a808e">MMToken::StringLiteral</a>:</div>
+<div class="line"><a name="l02110"></a><span class="lineno"> 2110</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bac4961edb0aefa0c9db75b173d1a233f4">MMToken::UmbrellaKeyword</a>:</div>
+<div class="line"><a name="l02111"></a><span class="lineno"> 2111</span>     <span class="keywordflow">case</span> <a class="code" href="structclang_1_1MMToken.html#ac349990fea082bc69ee1ffcbc9ec9a4bae438908b5113391d88f8518f6227b0d3">MMToken::UseKeyword</a>:</div>
+<div class="line"><a name="l02112"></a><span class="lineno"> 2112</span>       Diags.<a class="code" href="classclang_1_1DiagnosticsEngine.html#a03686c59442babd725417ff740b397b4" title="Issue the message to the client.">Report</a>(Tok.<a class="code" href="structclang_1_1MMToken.html#aeff6c1999b8ff4967d14e2d3ef7d9b61">getLocation</a>(), diag::err_mmap_expected_module);</div>
+<div class="line"><a name="l02113"></a><span class="lineno"> 2113</span>       HadError = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02114"></a><span class="lineno"> 2114</span>       consumeToken();</div>
+<div class="line"><a name="l02115"></a><span class="lineno"> 2115</span>       <span class="keywordflow">break</span>;</div>
+<div class="line"><a name="l02116"></a><span class="lineno"> 2116</span>     }</div>
+<div class="line"><a name="l02117"></a><span class="lineno"> 2117</span>   } <span class="keywordflow">while</span> (<span class="keyword">true</span>);</div>
+<div class="line"><a name="l02118"></a><span class="lineno"> 2118</span> }</div>
+<div class="line"><a name="l02119"></a><span class="lineno"> 2119</span> </div>
+<div class="line"><a name="l02120"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#aa693079e31854e7297157e751ff6b7fd"> 2120</a></span> <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#aa693079e31854e7297157e751ff6b7fd" title="Parse the given module map file, and record any modules we encounter.">ModuleMap::parseModuleMapFile</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="keywordtype">bool</span> IsSystem) {</div>
+<div class="line"><a name="l02121"></a><span class="lineno"> 2121</span>   llvm::DenseMap<const FileEntry *, bool>::iterator Known</div>
+<div class="line"><a name="l02122"></a><span class="lineno"> 2122</span>     = ParsedModuleMap.find(File);</div>
+<div class="line"><a name="l02123"></a><span class="lineno"> 2123</span>   <span class="keywordflow">if</span> (Known != ParsedModuleMap.end())</div>
+<div class="line"><a name="l02124"></a><span class="lineno"> 2124</span>     <span class="keywordflow">return</span> Known->second;</div>
+<div class="line"><a name="l02125"></a><span class="lineno"> 2125</span> </div>
+<div class="line"><a name="l02126"></a><span class="lineno"> 2126</span>   assert(Target != 0 && <span class="stringliteral">"Missing target information"</span>);</div>
+<div class="line"><a name="l02127"></a><span class="lineno"> 2127</span>   <a class="code" href="classclang_1_1FileID.html" title="An opaque identifier used by SourceManager which refers to a source file (MemoryBuffer) along with it...">FileID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a> = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#acefb5d310242160b1910104bbf4d8b2d" title="Create a new FileID that represents the specified file being #included from the specified IncludePosi...">createFileID</a>(File, <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a>(), <a class="code" href="namespaceclang_1_1SrcMgr.html#a27297b3568f189486de6df08a8cba35dab0548ddada8d87ad92e94d67e5af0a4f">SrcMgr::C_User</a>);</div>
+<div class="line"><a name="l02128"></a><span class="lineno"> 2128</span>   <span class="keyword">const</span> llvm::MemoryBuffer *Buffer = SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(ID);</div>
+<div class="line"><a name="l02129"></a><span class="lineno"> 2129</span>   <span class="keywordflow">if</span> (!Buffer)</div>
+<div class="line"><a name="l02130"></a><span class="lineno"> 2130</span>     <span class="keywordflow">return</span> ParsedModuleMap[File] = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l02131"></a><span class="lineno"> 2131</span>   </div>
+<div class="line"><a name="l02132"></a><span class="lineno"> 2132</span>   <span class="comment">// Parse this module map file.</span></div>
+<div class="line"><a name="l02133"></a><span class="lineno"> 2133</span>   <a class="code" href="classclang_1_1Lexer.html">Lexer</a> L(ID, SourceMgr.<a class="code" href="classclang_1_1SourceManager.html#a35f2a3fbf5cf9bff34b1d7f613096437" title="Return the buffer for the specified FileID.">getBuffer</a>(ID), SourceMgr, MMapLangOpts);</div>
+<div class="line"><a name="l02134"></a><span class="lineno"> 2134</span>   Diags->getClient()->BeginSourceFile(MMapLangOpts);</div>
+<div class="line"><a name="l02135"></a><span class="lineno"> 2135</span>   <a class="code" href="classclang_1_1ModuleMapParser.html">ModuleMapParser</a> <a class="code" href="classclang_1_1Parser.html">Parser</a>(L, SourceMgr, Target, *Diags, *<span class="keyword">this</span>, File-><a class="code" href="classclang_1_1FileEntry.html#a93533898e5cfd56df70289244f623fd6" title="Return the directory the file lives in.">getDir</a>(),</div>
+<div class="line"><a name="l02136"></a><span class="lineno"> 2136</span>                          BuiltinIncludeDir, IsSystem);</div>
+<div class="line"><a name="l02137"></a><span class="lineno"> 2137</span>   <span class="keywordtype">bool</span> Result = <a class="code" href="classclang_1_1Parser.html">Parser</a>.parseModuleMapFile();</div>
+<div class="line"><a name="l02138"></a><span class="lineno"> 2138</span>   Diags->getClient()->EndSourceFile();</div>
+<div class="line"><a name="l02139"></a><span class="lineno"> 2139</span>   ParsedModuleMap[File] = Result;</div>
+<div class="line"><a name="l02140"></a><span class="lineno"> 2140</span>   <span class="keywordflow">return</span> Result;</div>
+<div class="line"><a name="l02141"></a><span class="lineno"> 2141</span> }</div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:44 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/ModuleMap_8d_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8d_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8d_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8d_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,334 @@
+<!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: ModuleMap.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_925be8e1c75f746b0aee1084b3b1a980.html">Lex</a></li><li class="navelem"><a class="el" href="dir_c266f83cbdf5b0cb8b651438a3cfe616.html">Release+Asserts</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">ModuleMap.d</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ModuleMap_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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Release+Asserts/ModuleMap.o \</div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Release+Asserts/ModuleMap.d: \</div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>  ModuleMap.cpp \</div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.h \</div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.h \</div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CommentOptions.h \</div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LLVM.h \</div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>  /home/tstellar/llvm/include/llvm/Support/Casting.h \</div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>  /home/tstellar/llvm/include/llvm/Support/type_traits.h \</div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>  /home/tstellar/llvm/include/llvm/Support/DataTypes.h \</div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>  /home/tstellar/llvm/include/llvm/ADT/None.h \</div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/ObjCRuntime.h \</div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/VersionTuple.h \</div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>  /home/tstellar/llvm/include/llvm/ADT/Optional.h \</div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>  /home/tstellar/llvm/include/llvm/Support/Compiler.h \</div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>  /home/tstellar/llvm/include/llvm/Config/llvm-config.h \</div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>  /home/tstellar/llvm/include/llvm/Support/AlignOf.h \</div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>  /home/tstellar/llvm/include/llvm/ADT/Triple.h \</div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>  /home/tstellar/llvm/include/llvm/ADT/Twine.h \</div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>  /home/tstellar/llvm/include/llvm/ADT/StringRef.h \</div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>  /home/tstellar/llvm/include/llvm/Support/ErrorHandling.h \</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h \</div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#a78aadfeaf316ded55fdd2d1a9c8815b6" title="Describes the different kinds of linkage (C++ [basic.link], C99 6.2.2) that an entity may have...">Linkage</a>.h \</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>  /home/tstellar/llvm/include/llvm/ADT/IntrusiveRefCntPtr.h \</div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Sanitizers.def \</div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.def \</div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OpenCLExtensions.def \</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Module.h \</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceLocation.h \</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>  /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h \</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>  /home/tstellar/llvm/include/llvm/ADT/DenseSet.h \</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMap.h \</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>  /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h \</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>  /home/tstellar/llvm/include/llvm/Support/MathExtras.h \</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>  /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h \</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>  /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h \</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>  /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h \</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>  /home/tstellar/llvm/include/llvm/ADT/SetVector.h \</div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>  /home/tstellar/llvm/include/llvm/ADT/SmallSet.h \</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>  /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h \</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>  /home/tstellar/llvm/include/llvm/ADT/SmallVector.h \</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>  /home/tstellar/llvm/include/llvm/ADT/StringMap.h \</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>  /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h \</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceManager.h \</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileManager.h \</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileSystemOptions.h \</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>  /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h \</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>  /home/tstellar/llvm/include/llvm/Support/FileSystem.h \</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>  /home/tstellar/llvm/include/llvm/ADT/SmallString.h \</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>  /home/tstellar/llvm/include/llvm/Support/TimeValue.h \</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>  /home/tstellar/llvm/include/llvm/Support/system_error.h \</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>  /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h \</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>  /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h \</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span>  /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h \</div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>  /home/tstellar/llvm/include/llvm-c/Core.h \</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CharInfo.h \</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Diagnostic.h \</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticIDs.h \</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticCommonKinds.inc \</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.h \</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.def \</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TargetInfo.h \</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/AddressSpaces.h \</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TargetCXXABI.h \</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Specifiers.h \</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TargetOptions.h \</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>  /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h \</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/HeaderSearch.h \</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h \</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>  /home/tstellar/llvm/include/llvm/ADT/StringSet.h \</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LexDiagnostic.h \</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticLexKinds.inc \</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h \</div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h \</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h \</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h \</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.h \</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.def \</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TemplateKinds.h \</div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.h \</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.def \</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>  /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LiteralSupport.h \</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>  /home/tstellar/llvm/include/llvm/ADT/APFloat.h \</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>  /home/tstellar/llvm/include/llvm/ADT/APInt.h \</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>  /home/tstellar/llvm/include/llvm/Support/Host.h \</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>  /home/tstellar/llvm/include/llvm/Support/Path.h \</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>  /home/tstellar/llvm/include/llvm/Support/raw_ostream.h</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span> </div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/ModuleMap.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.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/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CommentOptions.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LLVM.h:</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> </div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> /home/tstellar/llvm/include/llvm/Support/Casting.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/Support/type_traits.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/DataTypes.h:</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span> /home/tstellar/llvm/include/llvm/ADT/None.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/ObjCRuntime.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/VersionTuple.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/Optional.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/Compiler.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/Config/llvm-config.h:</div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> /home/tstellar/llvm/include/llvm/Support/AlignOf.h:</div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> </div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> /home/tstellar/llvm/include/llvm/ADT/Triple.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/Twine.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/StringRef.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/Support/ErrorHandling.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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/<a class="code" href="namespaceclang.html#afbab15cd4aa598c4e6d9192f7ac4f102" title="Describes the different kinds of visibility that a declaration may have.">Visibility</a>.h:</div>
+<div class="line"><a name="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/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../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="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/IntrusiveRefCntPtr.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/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Sanitizers.def:</div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> </div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/LangOptions.def:</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span> </div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OpenCLExtensions.def:</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> </div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Module.h:</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> </div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceLocation.h:</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> </div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> /home/tstellar/llvm/include/llvm/Support/PointerLikeTypeTraits.h:</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span> /home/tstellar/llvm/include/llvm/ADT/DenseSet.h:</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> </div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> /home/tstellar/llvm/include/llvm/ADT/DenseMap.h:</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno">  147</span> /home/tstellar/llvm/include/llvm/ADT/DenseMapInfo.h:</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span> </div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> /home/tstellar/llvm/include/llvm/Support/MathExtras.h:</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> </div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> /home/tstellar/llvm/include/llvm/Support/SwapByteOrder.h:</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span> </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span> /home/tstellar/llvm/include/llvm/ADT/PointerIntPair.h:</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span> </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> /home/tstellar/llvm/include/llvm/ADT/PointerUnion.h:</div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> </div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> /home/tstellar/llvm/include/llvm/ADT/SetVector.h:</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> </div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> /home/tstellar/llvm/include/llvm/ADT/SmallSet.h:</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> </div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> /home/tstellar/llvm/include/llvm/ADT/SmallPtrSet.h:</div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> </div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> /home/tstellar/llvm/include/llvm/ADT/SmallVector.h:</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span> </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span> /home/tstellar/llvm/include/llvm/ADT/StringMap.h:</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span> /home/tstellar/llvm/include/llvm/Support/<a class="code" href="Format_8cpp.html#a0805f884ee63233d49322f71926371de">Allocator</a>.h:</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/SourceManager.h:</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileManager.h:</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> </div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/FileSystemOptions.h:</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> </div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> /home/tstellar/llvm/include/llvm/ADT/OwningPtr.h:</div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> </div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> /home/tstellar/llvm/include/llvm/Support/FileSystem.h:</div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> </div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> /home/tstellar/llvm/include/llvm/ADT/SmallString.h:</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> </div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> /home/tstellar/llvm/include/llvm/Support/TimeValue.h:</div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> </div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> /home/tstellar/llvm/include/llvm/Support/system_error.h:</div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span> </div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span> /home/tstellar/llvm/include/llvm/ADT/ArrayRef.h:</div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> </div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span> /home/tstellar/llvm/include/llvm/Support/MemoryBuffer.h:</div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span> </div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span> /home/tstellar/llvm/include/llvm/Support/CBindingWrapping.h:</div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span> </div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> /home/tstellar/llvm/include/llvm-c/Core.h:</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span> </div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/CharInfo.h:</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> </div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Diagnostic.h:</div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span> </div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticIDs.h:</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> </div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticCommonKinds.inc:</div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> </div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.h:</div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> </div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticOptions.def:</div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span> </div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TargetInfo.h:</div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span> </div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/AddressSpaces.h:</div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span> </div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TargetCXXABI.h:</div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> </div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/Specifiers.h:</div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span> </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TargetOptions.h:</div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span> /home/tstellar/llvm/include/llvm/ADT/StringSwitch.h:</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span> </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/HeaderSearch.h:</div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> </div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/DirectoryLookup.h:</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span> </div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> /home/tstellar/llvm/include/llvm/ADT/StringSet.h:</div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> </div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LexDiagnostic.h:</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> </div>
+<div class="line"><a name="l00225"></a><span class="lineno">  225</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/DiagnosticLexKinds.inc:</div>
+<div class="line"><a name="l00226"></a><span class="lineno">  226</span> </div>
+<div class="line"><a name="l00227"></a><span class="lineno">  227</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/Lexer.h:</div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span> </div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/PreprocessorLexer.h:</div>
+<div class="line"><a name="l00230"></a><span class="lineno">  230</span> </div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/MultipleIncludeOpt.h:</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> </div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/<a class="code" href="UnwrappedLineParser_8cpp.html#ac39165965ffcb0218343355d1f482d64">Token</a>.h:</div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> </div>
+<div class="line"><a name="l00235"></a><span class="lineno">  235</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.h:</div>
+<div class="line"><a name="l00236"></a><span class="lineno">  236</span> </div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/OperatorKinds.def:</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> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TemplateKinds.h:</div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> </div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.h:</div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> </div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/Basic/TokenKinds.def:</div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> </div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> /home/tstellar/llvm/tools/clang/lib/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/../../include/clang/<a class="code" href="Format_8cpp.html#af225acf665df209626523284f00162d4">Lex</a>/LiteralSupport.h:</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> /home/tstellar/llvm/include/llvm/ADT/APFloat.h:</div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> </div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> /home/tstellar/llvm/include/llvm/ADT/APInt.h:</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> /home/tstellar/llvm/include/llvm/Support/Host.h:</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> /home/tstellar/llvm/include/llvm/Support/Path.h:</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> /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:44 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/ModuleMap_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/ModuleMap_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,456 @@
+<!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: ModuleMap.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">ModuleMap.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="ModuleMap_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">//===--- ModuleMap.h - Describe the layout of modules -----------*- 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 ModuleMap interface, which describes the layout of a</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">// module as it relates to headers.</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> </div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span> <span class="preprocessor">#ifndef LLVM_CLANG_LEX_MODULEMAP_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span><span class="preprocessor">#define LLVM_CLANG_LEX_MODULEMAP_H</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="LangOptions_8h.html" title="Defines the clang::LangOptions interface.">clang/Basic/LangOptions.h</a>"</span></div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span> <span class="preprocessor">#include "<a class="code" href="Basic_2Module_8h.html" title="Defines the clang::Module class, which describes a module in the source code.">clang/Basic/Module.h</a>"</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span> <span class="preprocessor">#include "<a class="code" href="SourceManager_8h.html" title="Defines the SourceManager interface.">clang/Basic/SourceManager.h</a>"</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="preprocessor">#include "llvm/ADT/DenseMap.h"</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="preprocessor">#include "llvm/ADT/IntrusiveRefCntPtr.h"</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="preprocessor">#include "llvm/ADT/SmallVector.h"</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="preprocessor">#include "llvm/ADT/StringMap.h"</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="preprocessor">#include "llvm/ADT/StringRef.h"</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="preprocessor">#include <string></span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">namespace </span>clang {</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>DirectoryEntry;</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="keyword">class </span>FileEntry;</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="keyword">class </span>FileManager;</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="keyword">class </span>DiagnosticConsumer;</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="keyword">class </span>DiagnosticsEngine;</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span> <span class="keyword">class </span>HeaderSearch;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span> <span class="keyword">class </span>ModuleMapParser;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html">   39</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1ModuleMap.html">ModuleMap</a> {</div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>   <a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &SourceMgr;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>   <a class="code" href="classllvm_1_1IntrusiveRefCntPtr.html">IntrusiveRefCntPtr<DiagnosticsEngine></a> Diags;</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &LangOpts;</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>   <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> *Target;</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>   <a class="code" href="classclang_1_1HeaderSearch.html" title="Encapsulates the information needed to find the file referenced by a #include or #include_next, (sub-)framework lookup, etc.">HeaderSearch</a> &HeaderInfo;</div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">  /// \brief The directory used for Clang-supplied, builtin include headers,</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment">  /// such as "stdint.h".</span></div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</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> *BuiltinIncludeDir;</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span> <span class="comment">  /// \brief Language options used to parse the module map itself.</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">  /// These are always simple C language options.</span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment"></span>  <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> MMapLangOpts;</div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> </div>
+<div class="line"><a name="l00055"></a><span class="lineno">   55</span>   <span class="comment">// The module that we are building; related to \c LangOptions::CurrentModule.</span></div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *CompilingModule;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span> </div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>   <span class="comment">// The module that the .cc source file is associated with.</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a7a5b8df4ab18c5ed78cde851e2842e4d">   60</a></span>   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#a7a5b8df4ab18c5ed78cde851e2842e4d">SourceModule</a>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a2920cbcf5d7d15a5dc08cd142b839fe0">   61</a></span>   std::string <a class="code" href="classclang_1_1ModuleMap.html#a2920cbcf5d7d15a5dc08cd142b839fe0">SourceModuleName</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">private</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span> <span class="comment">  /// \brief The top-level modules that are known.</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span> <span class="comment"></span>  llvm::StringMap<Module *> Modules;</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">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span> <span class="comment">  /// \brief Describes the role of a module header.</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec">   69</a></span> <span class="comment"></span>  <span class="keyword">enum</span> <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleHeaderRole</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> <span class="comment">    /// \brief This header is normally included in the module.</span></div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa">   71</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">NormalHeader</a>,<span class="comment"></span></div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> <span class="comment">    /// \brief This header is included but private.</span></div>
+<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4">   73</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca0500e1f1c1ee8f9e6c76c993aa48b0d4" title="This header is included but private.">PrivateHeader</a>,<span class="comment"></span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span> <span class="comment">    /// \brief This header is explicitly excluded from the module.</span></div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca29ca8d089c3fd646d54e611219d0d877">   75</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca29ca8d089c3fd646d54e611219d0d877" title="This header is explicitly excluded from the module.">ExcludedHeader</a></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     <span class="comment">// Caution: Adding an enumerator needs other changes.</span></div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     <span class="comment">// Adjust the number of bits for KnownHeader::Storage.</span></div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>     <span class="comment">// Adjust the bitfield HeaderFileInfo::HeaderRole size.</span></div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>     <span class="comment">// Adjust the HeaderFileInfoTrait::ReadData streaming.</span></div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>     <span class="comment">// Adjust the HeaderFileInfoTrait::EmitData streaming.</span></div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>   };</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span> <span class="comment"></span></div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span> <span class="comment">  /// \brief A header that is known to reside within a given module,</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  /// whether it was included or excluded.</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html">   85</a></span> <span class="comment"></span>  <span class="keyword">class </span><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html" title="A header that is known to reside within a given module, whether it was included or excluded...">KnownHeader</a> {</div>
+<div class="line"><a name="l00086"></a><span class="lineno">   86</span>     llvm::PointerIntPair<Module *, 2, ModuleHeaderRole> Storage;</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>   <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#aaba092396cecc3cb5a67b9e375b58fd5">   89</a></span>     <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#aaba092396cecc3cb5a67b9e375b58fd5">KnownHeader</a>() : Storage(0, <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca50b6dee47a2d5b1f50f46dc46e4c96aa" title="This header is normally included in the module.">NormalHeader</a>) { }</div>
+<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a45db7dd0f39fe5feebd78996bcfe470c">   90</a></span>     <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a45db7dd0f39fe5feebd78996bcfe470c">KnownHeader</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *M, <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleHeaderRole</a> Role) : Storage(M, Role) { }</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span> <span class="comment"></span></div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span> <span class="comment">    /// \brief Retrieve the module the header is stored in.</span></div>
+<div class="line"><a name="l00093"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5">   93</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Storage.getPointer(); }</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span> <span class="comment"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">    /// \brief The role of this header within the module.</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a615f8b7ad99d67134a8a55d1d3fab994">   96</a></span> <span class="comment"></span>    <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleHeaderRole</a> <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a615f8b7ad99d67134a8a55d1d3fab994" title="The role of this header within the module.">getRole</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Storage.getInt(); }</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 Whether this header is available in the module.</span></div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a643f9e9aff1da04366c728d5c2131862">   99</a></span> <span class="comment"></span>    <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a643f9e9aff1da04366c728d5c2131862" title="Whether this header is available in the module.">isAvailable</a>()<span class="keyword"> const </span>{ </div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a615f8b7ad99d67134a8a55d1d3fab994" title="The role of this header within the module.">getRole</a>() != <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8deca29ca8d089c3fd646d54e611219d0d877" title="This header is explicitly excluded from the module.">ExcludedHeader</a> && <a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#a7b62eee1d73659d194a543a83256c9f5" title="Retrieve the module the header is stored in.">getModule</a>()-><a class="code" href="classclang_1_1Module.html#a5be57132fedcd0fea5b93e5a6c311e98" title="Determine whether this module is available for use within the current translation unit...">isAvailable</a>(); </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>     }</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span> </div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="comment">// \brief Whether this known header is valid (i.e., it has an</span></div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>     <span class="comment">// associated module).</span></div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap_1_1KnownHeader.html#aad43e50a18b828a87b13f3fec6a09398">  105</a></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> Storage.getPointer() != 0; }</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>   };</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span> </div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>   <span class="keyword">typedef</span> llvm::DenseMap<const FileEntry *, SmallVector<KnownHeader, 1> ></div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   HeadersMap;</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">  /// \brief Mapping from each header to the module that owns the contents of</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">  /// that header.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno">  114</span> <span class="comment"></span>  HeadersMap Headers;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// \brief Mapping from directories with umbrella headers to the module</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">  /// that is generated from the umbrella header.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">  /// This mapping is used to map headers that haven't explicitly been named</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// in the module map over to the module that includes them via its umbrella</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">  /// header.</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment"></span>  llvm::DenseMap<const DirectoryEntry *, Module *> UmbrellaDirs;</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 A directory for which framework modules can be inferred.</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span> <span class="comment"></span>  <span class="keyword">struct </span>InferredDirectory {</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>     InferredDirectory() : InferModules(), InferSystemModules() { }</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span> <span class="comment"></span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span> <span class="comment">    /// \brief Whether to infer modules from this directory.</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span> <span class="comment"></span>    <span class="keywordtype">unsigned</span> InferModules : 1;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span> <span class="comment"></span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span> <span class="comment">    /// \brief Whether the modules we infer are [system] modules.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span> <span class="comment"></span>    <span class="keywordtype">unsigned</span> InferSystemModules : 1;</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 The names of modules that cannot be inferred within this</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span> <span class="comment">    /// directory.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> <span class="comment"></span>    SmallVector<std::string, 2> ExcludedModules;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>   };</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span> <span class="comment"></span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span> <span class="comment">  /// \brief A mapping from directories to information about inferring</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span> <span class="comment">  /// framework modules from within those directories.</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment"></span>  llvm::DenseMap<const DirectoryEntry *, InferredDirectory> InferredDirectories;</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 Describes whether we haved parsed a particular file as a module</span></div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span> <span class="comment">  /// map.</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span> <span class="comment"></span>  llvm::DenseMap<const FileEntry *, bool> ParsedModuleMap;</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> </div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a69fccb440615f32e24516ed4e718457d">  147</a></span>   <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classclang_1_1ModuleMapParser.html">ModuleMapParser</a>;</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  /// \brief Resolve the given export declaration into an actual export</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span> <span class="comment">  /// declaration.</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">  /// \param Mod The module in which we're resolving the export declaration.</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">  /// \param Unresolved The export declaration to resolve.</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span> <span class="comment">  /// \param Complain Whether this routine should complain about unresolvable</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span> <span class="comment">  /// exports.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span> <span class="comment">  /// \returns The resolved export declaration, which will have a NULL pointer</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span> <span class="comment">  /// if the export could not be resolved.</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html#a3b638d27f1c3f0a666c473f6067b0d56" title="Describes an exported module.">Module::ExportDecl</a> </div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>   resolveExport(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keyword">const</span> <a class="code" href="structclang_1_1Module_1_1UnresolvedExportDecl.html" title="Describes an exported module that has not yet been resolved (perhaps because the module it refers to ...">Module::UnresolvedExportDecl</a> &Unresolved,</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                 <span class="keywordtype">bool</span> Complain) <span class="keyword">const</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">  /// \brief Resolve the given module id to an actual module.</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">  /// \param Id The module-id to resolve.</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span> <span class="comment">  /// \param Mod The module in which we're resolving the module-id.</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span> <span class="comment">  /// \param Complain Whether this routine should complain about unresolvable</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> <span class="comment">  /// module-ids.</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span> <span class="comment">  /// \returns The resolved module, or null if the module-id could not be</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span> <span class="comment">  /// resolved.</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *resolveModuleId(<span class="keyword">const</span> <a class="code" href="namespaceclang.html#ada651c821b65538c5626af99b65ea13a" title="Describes the name of a module.">ModuleId</a> &Id, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span> </div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span> <span class="keyword">public</span>:<span class="comment"></span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span> <span class="comment">  /// \brief Construct a new module map.</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span> <span class="comment">  /// \param SourceMgr The source manager used to find module files and headers.</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span> <span class="comment">  /// This source manager should be shared with the header-search mechanism,</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span> <span class="comment">  /// since they will refer to the same headers.</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">  /// \param DC A diagnostic consumer that will be cloned for use in generating</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span> <span class="comment">  /// diagnostics.</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">  /// \param LangOpts Language options for this translation unit.</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 Target The target for this translation unit.</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span> <span class="comment"></span>  <a class="code" href="classclang_1_1ModuleMap.html#a34520f3076456909ca2ac7e391dc12e2" title="Construct a new module map.">ModuleMap</a>(<a class="code" href="classclang_1_1SourceManager.html" title="This class handles loading and caching of source files into memory.">SourceManager</a> &<a class="code" href="Format_8cpp.html#a8b28f9f83ac8256fbde7e45b0f874f27">SourceMgr</a>, <a class="code" href="classclang_1_1DiagnosticConsumer.html" title="Abstract interface, implemented by clients of the front-end, which formats and prints fully processed...">DiagnosticConsumer</a> &DC,</div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>             <span class="keyword">const</span> <a class="code" href="classclang_1_1LangOptions.html" title="Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...">LangOptions</a> &LangOpts, <span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> *Target,</div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>             <a class="code" href="classclang_1_1HeaderSearch.html" title="Encapsulates the information needed to find the file referenced by a #include or #include_next, (sub-)framework lookup, etc.">HeaderSearch</a> &HeaderInfo);</div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span> <span class="comment"></span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span> <span class="comment">  /// \brief Destroy the module map.</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"></span>  <a class="code" href="classclang_1_1ModuleMap.html#ab8769cd7eba3cb7f8f1cd2dde890603d" title="Destroy the module map.">~ModuleMap</a>();</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span> <span class="comment"></span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span> <span class="comment">  /// \brief Set the target information.</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#abc441df169e00dbd5ab3a5db003d454f" title="Set the target information.">setTarget</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TargetInfo.html" title="Exposes information about the current target.">TargetInfo</a> &Target);</div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span> <span class="comment"></span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span> <span class="comment">  /// \brief Set the directory that contains Clang-supplied include</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span> <span class="comment">  /// files, such as our stdarg.h or tgmath.h.</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a6c624a7392febb43c7bb1a19e835ab34">  204</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a6c624a7392febb43c7bb1a19e835ab34" title="Set the directory that contains Clang-supplied include files, such as our stdarg.h or tgmath...">setBuiltinIncludeDir</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="l00205"></a><span class="lineno">  205</span>     BuiltinIncludeDir = Dir;</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 Retrieve the module that owns the given header file, if any.</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span> <span class="comment">  /// \param File The header file that is likely to be included.</span></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">  /// \param RequestingModule Specifies the module the header is intended to be</span></div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span> <span class="comment">  /// used from.  Used to disambiguate if a header is present in multiple</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span> <span class="comment">  /// modules.</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">  /// \returns The module KnownHeader, which provides the module that owns the</span></div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span> <span class="comment">  /// given header file.  The KnownHeader is default constructed to indicate</span></div>
+<div class="line"><a name="l00218"></a><span class="lineno">  218</span> <span class="comment">  /// that no module owns this header file.</span></div>
+<div class="line"><a name="l00219"></a><span class="lineno">  219</span> <span class="comment"></span>  KnownHeader <a class="code" href="classclang_1_1ModuleMap.html#a127dbf10d2e3134aedb7d7c60cf23cc9" title="Retrieve the module that owns the given header file, if any.">findModuleForHeader</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FileEntry.html" title="Cached information about one file (either on disk or in the virtual file system).">FileEntry</a> *File,</div>
+<div class="line"><a name="l00220"></a><span class="lineno">  220</span>                                   <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *RequestingModule = <a class="code" href="stddef_8h.html#a070d2ce7b6bb7e5c05602aa8c308d0c4">NULL</a>);</div>
+<div class="line"><a name="l00221"></a><span class="lineno">  221</span> <span class="comment"></span></div>
+<div class="line"><a name="l00222"></a><span class="lineno">  222</span> <span class="comment">  /// \brief Determine whether the given header is part of a module</span></div>
+<div class="line"><a name="l00223"></a><span class="lineno">  223</span> <span class="comment">  /// marked 'unavailable'.</span></div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#af4fbca415ce7cbde70d1fc96d9285d10" title="Determine whether the given header is part of a module marked 'unavailable'.">isHeaderInUnavailableModule</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> *Header) <span class="keyword">const</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 Retrieve a module with the given name.</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 Name The name of the module to look up.</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">  /// \returns The named module, if known; otherwise, returns null.</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#af4c8a3d331c1f6f1e046e7f87adc7973" title="Retrieve a module with the given name.">findModule</a>(StringRef Name) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span> <span class="comment"></span></div>
+<div class="line"><a name="l00233"></a><span class="lineno">  233</span> <span class="comment">  /// \brief Retrieve a module with the given name using lexical name lookup,</span></div>
+<div class="line"><a name="l00234"></a><span class="lineno">  234</span> <span class="comment">  /// starting at the given context.</span></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">  /// \param Name The name of the module to look up.</span></div>
+<div class="line"><a name="l00237"></a><span class="lineno">  237</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00238"></a><span class="lineno">  238</span> <span class="comment">  /// \param Context The module context, from which we will perform lexical</span></div>
+<div class="line"><a name="l00239"></a><span class="lineno">  239</span> <span class="comment">  /// name lookup.</span></div>
+<div class="line"><a name="l00240"></a><span class="lineno">  240</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span> <span class="comment">  /// \returns The named module, if known; otherwise, returns null.</span></div>
+<div class="line"><a name="l00242"></a><span class="lineno">  242</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#a4227573c64ca68ac5f24f27de1f57b49" title="Retrieve a module with the given name using lexical name lookup, starting at the given context...">lookupModuleUnqualified</a>(StringRef Name, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00243"></a><span class="lineno">  243</span> <span class="comment"></span></div>
+<div class="line"><a name="l00244"></a><span class="lineno">  244</span> <span class="comment">  /// \brief Retrieve a module with the given name within the given context,</span></div>
+<div class="line"><a name="l00245"></a><span class="lineno">  245</span> <span class="comment">  /// using direct (qualified) name lookup.</span></div>
+<div class="line"><a name="l00246"></a><span class="lineno">  246</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00247"></a><span class="lineno">  247</span> <span class="comment">  /// \param Name The name of the module to look up.</span></div>
+<div class="line"><a name="l00248"></a><span class="lineno">  248</span> <span class="comment">  /// </span></div>
+<div class="line"><a name="l00249"></a><span class="lineno">  249</span> <span class="comment">  /// \param Context The module for which we will look for a submodule. If</span></div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span> <span class="comment">  /// null, we will look for a top-level module.</span></div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00252"></a><span class="lineno">  252</span> <span class="comment">  /// \returns The named submodule, if known; otherwose, returns null.</span></div>
+<div class="line"><a name="l00253"></a><span class="lineno">  253</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#aad648df48b6a75a9321ac7f2e383c5e0" title="Retrieve a module with the given name within the given context, using direct (qualified) name lookup...">lookupModuleQualified</a>(StringRef Name, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="ASTMatchFinder_8cpp.html#a779280869b9fac47a9bc391e7709171f">Context</a>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00254"></a><span class="lineno">  254</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00255"></a><span class="lineno">  255</span> <span class="comment">  /// \brief Find a new module or submodule, or create it if it does not already</span></div>
+<div class="line"><a name="l00256"></a><span class="lineno">  256</span> <span class="comment">  /// exist.</span></div>
+<div class="line"><a name="l00257"></a><span class="lineno">  257</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00258"></a><span class="lineno">  258</span> <span class="comment">  /// \param Name The name of the module to find or create.</span></div>
+<div class="line"><a name="l00259"></a><span class="lineno">  259</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00260"></a><span class="lineno">  260</span> <span class="comment">  /// \param Parent The module that will act as the parent of this submodule,</span></div>
+<div class="line"><a name="l00261"></a><span class="lineno">  261</span> <span class="comment">  /// or NULL to indicate that this is a top-level module.</span></div>
+<div class="line"><a name="l00262"></a><span class="lineno">  262</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00263"></a><span class="lineno">  263</span> <span class="comment">  /// \param IsFramework Whether this is a framework module.</span></div>
+<div class="line"><a name="l00264"></a><span class="lineno">  264</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span> <span class="comment">  /// \param IsExplicit Whether this is an explicit submodule.</span></div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span> <span class="comment">  /// \returns The found or newly-created module, along with a boolean value</span></div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span> <span class="comment">  /// that will be true if the module is newly-created.</span></div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span> <span class="comment"></span>  std::pair<Module *, bool> <a class="code" href="classclang_1_1ModuleMap.html#a115a5b7b114346aaa534995084fc3ac0" title="Find a new module or submodule, or create it if it does not already exist.">findOrCreateModule</a>(StringRef Name, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Parent, </div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>                                                <span class="keywordtype">bool</span> IsFramework,</div>
+<div class="line"><a name="l00271"></a><span class="lineno">  271</span>                                                <span class="keywordtype">bool</span> IsExplicit);</div>
+<div class="line"><a name="l00272"></a><span class="lineno">  272</span> <span class="comment"></span></div>
+<div class="line"><a name="l00273"></a><span class="lineno">  273</span> <span class="comment">  /// \brief Determine whether we can infer a framework module a framework</span></div>
+<div class="line"><a name="l00274"></a><span class="lineno">  274</span> <span class="comment">  /// with the given name in the given</span></div>
+<div class="line"><a name="l00275"></a><span class="lineno">  275</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00276"></a><span class="lineno">  276</span> <span class="comment">  /// \param ParentDir The directory that is the parent of the framework</span></div>
+<div class="line"><a name="l00277"></a><span class="lineno">  277</span> <span class="comment">  /// directory.</span></div>
+<div class="line"><a name="l00278"></a><span class="lineno">  278</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00279"></a><span class="lineno">  279</span> <span class="comment">  /// \param Name The name of the module.</span></div>
+<div class="line"><a name="l00280"></a><span class="lineno">  280</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00281"></a><span class="lineno">  281</span> <span class="comment">  /// \param IsSystem Will be set to 'true' if the inferred module must be a</span></div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span> <span class="comment">  /// system module.</span></div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span> <span class="comment">  /// \returns true if we are allowed to infer a framework module, and false</span></div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span> <span class="comment">  /// otherwise.</span></div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#a328854f497c38e79b5b1e291d572dec9" title="Determine whether we can infer a framework module a framework with the given name in the given...">canInferFrameworkModule</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> *ParentDir,</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>                                StringRef Name, <span class="keywordtype">bool</span> &IsSystem) <span class="keyword">const</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 Infer the contents of a framework module map from the given</span></div>
+<div class="line"><a name="l00290"></a><span class="lineno">  290</span> <span class="comment">  /// framework directory.</span></div>
+<div class="line"><a name="l00291"></a><span class="lineno">  291</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#aa6a0fbdfb7431809f16fd273f84da5b6" title="Infer the contents of a framework module map from the given framework directory.">inferFrameworkModule</a>(StringRef ModuleName, </div>
+<div class="line"><a name="l00292"></a><span class="lineno">  292</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> *FrameworkDir,</div>
+<div class="line"><a name="l00293"></a><span class="lineno">  293</span>                                <span class="keywordtype">bool</span> IsSystem, <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Parent);</div>
+<div class="line"><a name="l00294"></a><span class="lineno">  294</span>   <span class="comment"></span></div>
+<div class="line"><a name="l00295"></a><span class="lineno">  295</span> <span class="comment">  /// \brief Retrieve the module map file containing the definition of the given</span></div>
+<div class="line"><a name="l00296"></a><span class="lineno">  296</span> <span class="comment">  /// module.</span></div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00298"></a><span class="lineno">  298</span> <span class="comment">  /// \param Module The module whose module map file will be returned, if known.</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">  /// \returns The file entry for the module map file containing the given</span></div>
+<div class="line"><a name="l00301"></a><span class="lineno">  301</span> <span class="comment">  /// module, or NULL if the module definition was inferred.</span></div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</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_1ModuleMap.html#aa287c482ce0aac99831c2e2746b29612" title="Retrieve the module map file containing the definition of the given module.">getContainingModuleMapFile</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a>) <span class="keyword">const</span>;</div>
+<div class="line"><a name="l00303"></a><span class="lineno">  303</span> <span class="comment"></span></div>
+<div class="line"><a name="l00304"></a><span class="lineno">  304</span> <span class="comment">  /// \brief Resolve all of the unresolved exports in the given module.</span></div>
+<div class="line"><a name="l00305"></a><span class="lineno">  305</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00306"></a><span class="lineno">  306</span> <span class="comment">  /// \param Mod The module whose exports should be resolved.</span></div>
+<div class="line"><a name="l00307"></a><span class="lineno">  307</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00308"></a><span class="lineno">  308</span> <span class="comment">  /// \param Complain Whether to emit diagnostics for failures.</span></div>
+<div class="line"><a name="l00309"></a><span class="lineno">  309</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span> <span class="comment">  /// \returns true if any errors were encountered while resolving exports,</span></div>
+<div class="line"><a name="l00311"></a><span class="lineno">  311</span> <span class="comment">  /// false otherwise.</span></div>
+<div class="line"><a name="l00312"></a><span class="lineno">  312</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#a03d91ee91e3d302d32885c4d790b3915" title="Resolve all of the unresolved exports in the given module.">resolveExports</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain);</div>
+<div class="line"><a name="l00313"></a><span class="lineno">  313</span> <span class="comment"></span></div>
+<div class="line"><a name="l00314"></a><span class="lineno">  314</span> <span class="comment">  /// \brief Resolve all of the unresolved uses in the given module.</span></div>
+<div class="line"><a name="l00315"></a><span class="lineno">  315</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span> <span class="comment">  /// \param Mod The module whose uses should be resolved.</span></div>
+<div class="line"><a name="l00317"></a><span class="lineno">  317</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00318"></a><span class="lineno">  318</span> <span class="comment">  /// \param Complain Whether to emit diagnostics for failures.</span></div>
+<div class="line"><a name="l00319"></a><span class="lineno">  319</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00320"></a><span class="lineno">  320</span> <span class="comment">  /// \returns true if any errors were encountered while resolving uses,</span></div>
+<div class="line"><a name="l00321"></a><span class="lineno">  321</span> <span class="comment">  /// false otherwise.</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#aff262a15ac7933edd463953d969e4f6b" title="Resolve all of the unresolved uses in the given module.">resolveUses</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain);</div>
+<div class="line"><a name="l00323"></a><span class="lineno">  323</span> <span class="comment"></span></div>
+<div class="line"><a name="l00324"></a><span class="lineno">  324</span> <span class="comment">  /// \brief Resolve all of the unresolved conflicts in the given module.</span></div>
+<div class="line"><a name="l00325"></a><span class="lineno">  325</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00326"></a><span class="lineno">  326</span> <span class="comment">  /// \param Mod The module whose conflicts should be resolved.</span></div>
+<div class="line"><a name="l00327"></a><span class="lineno">  327</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00328"></a><span class="lineno">  328</span> <span class="comment">  /// \param Complain Whether to emit diagnostics for failures.</span></div>
+<div class="line"><a name="l00329"></a><span class="lineno">  329</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span> <span class="comment">  /// \returns true if any errors were encountered while resolving conflicts,</span></div>
+<div class="line"><a name="l00331"></a><span class="lineno">  331</span> <span class="comment">  /// false otherwise.</span></div>
+<div class="line"><a name="l00332"></a><span class="lineno">  332</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#a635593eb7f27a7297eb22afacd08d104" title="Resolve all of the unresolved conflicts in the given module.">resolveConflicts</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <span class="keywordtype">bool</span> Complain);</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 Infers the (sub)module based on the given source location and</span></div>
+<div class="line"><a name="l00335"></a><span class="lineno">  335</span> <span class="comment">  /// source manager.</span></div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00337"></a><span class="lineno">  337</span> <span class="comment">  /// \param Loc The location within the source that we are querying, along</span></div>
+<div class="line"><a name="l00338"></a><span class="lineno">  338</span> <span class="comment">  /// with its source manager.</span></div>
+<div class="line"><a name="l00339"></a><span class="lineno">  339</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00340"></a><span class="lineno">  340</span> <span class="comment">  /// \returns The module that owns this source location, or null if no</span></div>
+<div class="line"><a name="l00341"></a><span class="lineno">  341</span> <span class="comment">  /// module owns this source location.</span></div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span> <span class="comment"></span>  <a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *<a class="code" href="classclang_1_1ModuleMap.html#a5fbb3347d523ee9b3f32c71ef4322102" title="Infers the (sub)module based on the given source location and source manager.">inferModuleFromLocation</a>(<a class="code" href="classclang_1_1FullSourceLoc.html" title="A SourceLocation and its associated SourceManager.">FullSourceLoc</a> Loc);</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">  /// \brief Sets the umbrella header of the given module to the given</span></div>
+<div class="line"><a name="l00345"></a><span class="lineno">  345</span> <span class="comment">  /// header.</span></div>
+<div class="line"><a name="l00346"></a><span class="lineno">  346</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a4e5eb634a8ba4425d545d84b6b28156d" title="Sets the umbrella header of the given module to the given header.">setUmbrellaHeader</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *UmbrellaHeader);</div>
+<div class="line"><a name="l00347"></a><span class="lineno">  347</span> <span class="comment"></span></div>
+<div class="line"><a name="l00348"></a><span class="lineno">  348</span> <span class="comment">  /// \brief Sets the umbrella directory of the given module to the given</span></div>
+<div class="line"><a name="l00349"></a><span class="lineno">  349</span> <span class="comment">  /// directory.</span></div>
+<div class="line"><a name="l00350"></a><span class="lineno">  350</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a5cc71eb848ebea391b1a075496f2f7ee" title="Sets the umbrella directory of the given module to the given directory.">setUmbrellaDir</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *UmbrellaDir);</div>
+<div class="line"><a name="l00351"></a><span class="lineno">  351</span> <span class="comment"></span></div>
+<div class="line"><a name="l00352"></a><span class="lineno">  352</span> <span class="comment">  /// \brief Adds this header to the given module.</span></div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span> <span class="comment">  /// \param Role The role of the header wrt the module.</span></div>
+<div class="line"><a name="l00354"></a><span class="lineno">  354</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a36df90fd8a0f51e6b762938002ec038d" title="Adds this header to the given module.">addHeader</a>(<a class="code" href="classclang_1_1Module.html" title="Describes a module or submodule.">Module</a> *Mod, <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> *Header,</div>
+<div class="line"><a name="l00355"></a><span class="lineno">  355</span>                  <a class="code" href="classclang_1_1ModuleMap.html#ac7a2413d4d0a8f29d2dad359bcfd8dec" title="Describes the role of a module header.">ModuleHeaderRole</a> Role);</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 Parse the given module map file, and record any modules we </span></div>
+<div class="line"><a name="l00358"></a><span class="lineno">  358</span> <span class="comment">  /// encounter.</span></div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00360"></a><span class="lineno">  360</span> <span class="comment">  /// \param File The file to be parsed.</span></div>
+<div class="line"><a name="l00361"></a><span class="lineno">  361</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00362"></a><span class="lineno">  362</span> <span class="comment">  /// \param IsSystem Whether this module map file is in a system header</span></div>
+<div class="line"><a name="l00363"></a><span class="lineno">  363</span> <span class="comment">  /// directory, and therefore should be considered a system module.</span></div>
+<div class="line"><a name="l00364"></a><span class="lineno">  364</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00365"></a><span class="lineno">  365</span> <span class="comment">  /// \returns true if an error occurred, false otherwise.</span></div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1ModuleMap.html#aa693079e31854e7297157e751ff6b7fd" title="Parse the given module map file, and record any modules we encounter.">parseModuleMapFile</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="keywordtype">bool</span> IsSystem);</div>
+<div class="line"><a name="l00367"></a><span class="lineno">  367</span>     <span class="comment"></span></div>
+<div class="line"><a name="l00368"></a><span class="lineno">  368</span> <span class="comment">  /// \brief Dump the contents of the module map, for debugging purposes.</span></div>
+<div class="line"><a name="l00369"></a><span class="lineno">  369</span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1ModuleMap.html#a26b885e43a6f5268a02cd4d09efbf5ad" title="Dump the contents of the module map, for debugging purposes.">dump</a>();</div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>   </div>
+<div class="line"><a name="l00371"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a3798c26000fac4ac7c3da9ca67f1f619">  371</a></span>   <span class="keyword">typedef</span> llvm::StringMap<Module *>::const_iterator <a class="code" href="classclang_1_1ModuleMap.html#a3798c26000fac4ac7c3da9ca67f1f619">module_iterator</a>;</div>
+<div class="line"><a name="l00372"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a3c37bdb86dfab455fb9d19c724bd4f9b">  372</a></span>   <a class="code" href="classclang_1_1ModuleMap.html#a3798c26000fac4ac7c3da9ca67f1f619">module_iterator</a> <a class="code" href="classclang_1_1ModuleMap.html#a3c37bdb86dfab455fb9d19c724bd4f9b">module_begin</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> Modules.begin(); }</div>
+<div class="line"><a name="l00373"></a><span class="lineno"><a class="code" href="classclang_1_1ModuleMap.html#a0a5b86a1ca98add98e810d7d73bdfe0a">  373</a></span>   <a class="code" href="classclang_1_1ModuleMap.html#a3798c26000fac4ac7c3da9ca67f1f619">module_iterator</a> <a class="code" href="classclang_1_1ModuleMap.html#a0a5b86a1ca98add98e810d7d73bdfe0a">module_end</a>()<span class="keyword">   const </span>{ <span class="keywordflow">return</span> Modules.end(); }</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>   </div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span> }</div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span> <span class="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:44 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/MultipleIncludeOpt_8h_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/MultipleIncludeOpt_8h_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/MultipleIncludeOpt_8h_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/MultipleIncludeOpt_8h_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,260 @@
+<!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: MultipleIncludeOpt.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">MultipleIncludeOpt.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="MultipleIncludeOpt_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">//===--- MultipleIncludeOpt.h - Header Multiple-Include Optzn ---*- 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 MultipleIncludeOpt interface.</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment"></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_MULTIPLEINCLUDEOPT_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_MULTIPLEINCLUDEOPT_H</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor"></span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="SourceLocation_8h.html" title="Defines the clang::SourceLocation class and associated facilities.">clang/Basic/SourceLocation.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> </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="keyword">class </span>IdentifierInfo;</div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span> <span class="comment"></span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span> <span class="comment">/// \brief Implements the simple state machine that the Lexer class uses to</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> <span class="comment">/// detect files subject to the 'multiple-include' optimization.</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">///</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">/// The public methods in this class are triggered by various</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span> <span class="comment">/// events that occur when a file is lexed, and after the entire file is lexed,</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span> <span class="comment">/// information about which macro (if any) controls the header is returned.</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html">   29</a></span> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classclang_1_1MultipleIncludeOpt.html" title="Implements the simple state machine that the Lexer class uses to detect files subject to the 'multipl...">MultipleIncludeOpt</a> {<span class="comment"></span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span> <span class="comment">  /// ReadAnyTokens - This is set to false when a file is first opened and true</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span> <span class="comment">  /// any time a token is returned to the client or a (non-multiple-include)</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span> <span class="comment">  /// directive is parsed.  When the final \#endif is parsed this is reset back</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span> <span class="comment">  /// to false, that way any tokens before the first \#ifdef or after the last</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span> <span class="comment">  /// \#endif can be easily detected.</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span> <span class="comment"></span>  <span class="keywordtype">bool</span> ReadAnyTokens;</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">  /// ImmediatelyAfterTopLevelIfndef - This is true when the only tokens</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span> <span class="comment">  /// processed in the file so far is an #ifndef and an identifier.  Used in</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span> <span class="comment">  /// the detection of header guards in a file.</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span> <span class="comment"></span>  <span class="keywordtype">bool</span> ImmediatelyAfterTopLevelIfndef;</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">  /// ReadAnyTokens - This is set to false when a file is first opened and true</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span> <span class="comment">  /// any time a token is returned to the client or a (non-multiple-include)</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span> <span class="comment">  /// directive is parsed.  When the final #endif is parsed this is reset back</span></div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span> <span class="comment">  /// to false, that way any tokens before the first #ifdef or after the last</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span> <span class="comment">  /// #endif can be easily detected.</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span> <span class="comment"></span>  <span class="keywordtype">bool</span> DidMacroExpansion;</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">  /// TheMacro - The controlling macro for a file, if valid.</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>  <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *TheMacro;</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span> <span class="comment"></span></div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span> <span class="comment">  /// DefinedMacro - The macro defined right after TheMacro, if any.</span></div>
+<div class="line"><a name="l00054"></a><span class="lineno">   54</span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *DefinedMacro;</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>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> MacroLoc;</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> DefinedLoc;</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"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a51ea841985d037d55a757e20cf67131f">   59</a></span>   <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a51ea841985d037d55a757e20cf67131f">MultipleIncludeOpt</a>() {</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>     ReadAnyTokens = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>     ImmediatelyAfterTopLevelIfndef = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>     DidMacroExpansion = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     TheMacro = 0;</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>     DefinedMacro = 0;</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> </div>
+<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a9cc46cda81b2202845aac7f06a933d45">   67</a></span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a9cc46cda81b2202845aac7f06a933d45">GetMacroLocation</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00068"></a><span class="lineno">   68</span>     <span class="keywordflow">return</span> MacroLoc;</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>   }</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span> </div>
+<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#ae5af6ad8f8e2df1dbbfe9e4dcb19f229">   71</a></span>   <a class="code" href="classclang_1_1SourceLocation.html" title="Encodes a location in the source. The SourceManager can decode this to get at the full include stack...">SourceLocation</a> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#ae5af6ad8f8e2df1dbbfe9e4dcb19f229">GetDefinedLocation</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>     <span class="keywordflow">return</span> DefinedLoc;</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"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#adc6998eedbfdd5beb27666d1bd6a8604">   75</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#adc6998eedbfdd5beb27666d1bd6a8604">resetImmediatelyAfterTopLevelIfndef</a>() {</div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>     ImmediatelyAfterTopLevelIfndef = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>   }</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> </div>
+<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a7d95aa602a7dc413510161ef8d84814b">   79</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a7d95aa602a7dc413510161ef8d84814b">SetDefinedMacro</a>(<a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *M, <a class="code" href="classclang_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="l00080"></a><span class="lineno">   80</span>     DefinedMacro = M;</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     DefinedLoc = Loc;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span> <span class="comment">  /// Invalidate - Permanently mark this file as not being suitable for the</span></div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span> <span class="comment">  /// include-file optimization.</span></div>
+<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a592021395f25d71e85b594f2bdfa853b">   86</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a592021395f25d71e85b594f2bdfa853b">Invalidate</a>() {</div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span>     <span class="comment">// If we have read tokens but have no controlling macro, the state-machine</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>     <span class="comment">// below can never "accept".</span></div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>     ReadAnyTokens = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>     ImmediatelyAfterTopLevelIfndef = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>     DefinedMacro = 0;</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>     TheMacro = 0;</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> <span class="comment"></span></div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span> <span class="comment">  /// getHasReadAnyTokensVal - This is used for the \#ifndef hande-shake at the</span></div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span> <span class="comment">  /// top of the file when reading preprocessor directives.  Otherwise, reading</span></div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span> <span class="comment">  /// the "ifndef x" would count as reading tokens.</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a23426d820924a7de712697ac350d1a69">   98</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a23426d820924a7de712697ac350d1a69">getHasReadAnyTokensVal</a>()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> ReadAnyTokens; }</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span> <span class="comment"></span></div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span> <span class="comment">  /// getImmediatelyAfterTopLevelIfndef - returns true if the last directive</span></div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span> <span class="comment">  /// was an #ifndef at the beginning of the file.</span></div>
+<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a685c4d7282424823e67fe1595d0db250">  102</a></span> <span class="comment"></span>  <span class="keywordtype">bool</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a685c4d7282424823e67fe1595d0db250">getImmediatelyAfterTopLevelIfndef</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>     <span class="keywordflow">return</span> ImmediatelyAfterTopLevelIfndef;</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="comment">// If a token is read, remember that we have seen a side-effect in this file.</span></div>
+<div class="line"><a name="l00107"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#ac6805e623dcb09dd02f5bf8e0c3f8185">  107</a></span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#ac6805e623dcb09dd02f5bf8e0c3f8185">ReadToken</a>() {</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>     ReadAnyTokens = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>     ImmediatelyAfterTopLevelIfndef = <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> <span class="comment"></span></div>
+<div class="line"><a name="l00112"></a><span class="lineno">  112</span> <span class="comment">  /// ExpandedMacro - When a macro is expanded with this lexer as the current</span></div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span> <span class="comment">  /// buffer, this method is called to disable the MIOpt if needed.</span></div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#af86888809694748a1f511cefcf63cc91">  114</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#af86888809694748a1f511cefcf63cc91">ExpandedMacro</a>() { DidMacroExpansion = <span class="keyword">true</span>; }</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span> <span class="comment"></span></div>
+<div class="line"><a name="l00116"></a><span class="lineno">  116</span> <span class="comment">  /// \brief Called when entering a top-level \#ifndef directive (or the</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span> <span class="comment">  /// "\#if !defined" equivalent) without any preceding tokens.</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span> <span class="comment">  ///</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> <span class="comment">  /// Note, we don't care about the input value of 'ReadAnyTokens'.  The caller</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> <span class="comment">  /// ensures that this is only called if there are no tokens read before the</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span> <span class="comment">  /// \#ifndef.  The caller is required to do this, because reading the \#if</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span> <span class="comment">  /// line obviously reads in in tokens.</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#aef87b0d5364cd004dbf6335655de0f3d">  123</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#aef87b0d5364cd004dbf6335655de0f3d" title="Called when entering a top-level #ifndef directive (or the "\#if !defined" equivalent) without any pr...">EnterTopLevelIfndef</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *M, <a class="code" href="classclang_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="l00124"></a><span class="lineno">  124</span>     <span class="comment">// If the macro is already set, this is after the top-level #endif.</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>     <span class="keywordflow">if</span> (TheMacro)</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a592021395f25d71e85b594f2bdfa853b">Invalidate</a>();</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>     <span class="comment">// If we have already expanded a macro by the end of the #ifndef line, then</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     <span class="comment">// there is a macro expansion *in* the #ifndef line.  This means that the</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>     <span class="comment">// condition could evaluate differently when subsequently #included.  Reject</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>     <span class="comment">// this.</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>     <span class="keywordflow">if</span> (DidMacroExpansion)</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>       <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a592021395f25d71e85b594f2bdfa853b">Invalidate</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>     <span class="comment">// Remember that we're in the #if and that we have the macro.</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>     ReadAnyTokens = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>     ImmediatelyAfterTopLevelIfndef = <span class="keyword">true</span>;</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     TheMacro = M;</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>     MacroLoc = Loc;</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>   }</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> <span class="comment"></span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span> <span class="comment">  /// \brief Invoked when a top level conditional (except \#ifndef) is found.</span></div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#ad6b7f9f7ebe4cea60792c6bade10ea20">  143</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#ad6b7f9f7ebe4cea60792c6bade10ea20" title="Invoked when a top level conditional (except #ifndef) is found.">EnterTopLevelConditional</a>() {</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>     <span class="comment">// If a conditional directive (except #ifndef) is found at the top level,</span></div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     <span class="comment">// there is a chunk of the file not guarded by the controlling macro.</span></div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>     <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a592021395f25d71e85b594f2bdfa853b">Invalidate</a>();</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"></span></div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span> <span class="comment">  /// \brief Called when the lexer exits the top-level conditional.</span></div>
+<div class="line"><a name="l00150"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a6715b998517d175774050fd2410de7d8">  150</a></span> <span class="comment"></span>  <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a6715b998517d175774050fd2410de7d8" title="Called when the lexer exits the top-level conditional.">ExitTopLevelConditional</a>() {</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>     <span class="comment">// If we have a macro, that means the top of the file was ok.  Set our state</span></div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>     <span class="comment">// back to "not having read any tokens" so we can detect anything after the</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>     <span class="comment">// #endif.</span></div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>     <span class="keywordflow">if</span> (!TheMacro) <span class="keywordflow">return</span> <a class="code" href="classclang_1_1MultipleIncludeOpt.html#a592021395f25d71e85b594f2bdfa853b">Invalidate</a>();</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span> </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>     <span class="comment">// At this point, we haven't "read any tokens" but we do have a controlling</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>     <span class="comment">// macro.</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>     ReadAnyTokens = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>     ImmediatelyAfterTopLevelIfndef = <span class="keyword">false</span>;</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>   }</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> <span class="comment"></span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span> <span class="comment">  /// \brief Once the entire file has been lexed, if there is a controlling</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span> <span class="comment">  /// macro, return it.</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#ab3a84e4727386e43bc7993d36342ded1">  164</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *<a class="code" href="classclang_1_1MultipleIncludeOpt.html#ab3a84e4727386e43bc7993d36342ded1" title="Once the entire file has been lexed, if there is a controlling macro, return it.">GetControllingMacroAtEndOfFile</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     <span class="comment">// If we haven't read any tokens after the #endif, return the controlling</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>     <span class="comment">// macro if it's valid (if it isn't, it will be null).</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>     <span class="keywordflow">if</span> (!ReadAnyTokens)</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>       <span class="keywordflow">return</span> TheMacro;</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>     <span class="keywordflow">return</span> 0;</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 If the ControllingMacro is followed by a macro definition, return</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span> <span class="comment">  /// the macro that was defined.</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno"><a class="code" href="classclang_1_1MultipleIncludeOpt.html#a8672844fec0ea48d4456096e1e1b5c9d">  174</a></span> <span class="comment"></span>  <span class="keyword">const</span> <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *<a class="code" href="classclang_1_1MultipleIncludeOpt.html#a8672844fec0ea48d4456096e1e1b5c9d" title="If the ControllingMacro is followed by a macro definition, return the macro that was defined...">GetDefinedMacro</a>()<span class="keyword"> const </span>{</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>     <span class="keywordflow">return</span> DefinedMacro;</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> };</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">// end namespace clang</span></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="preprocessor">#endif</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<hr>
+<p class="footer">
+Generated on Mon May 12 2014 12:13:44 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/MultiplexConsumer_8cpp_source.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/MultiplexConsumer_8cpp_source.html?rev=225843&view=auto
==============================================================================
--- www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/MultiplexConsumer_8cpp_source.html (added)
+++ www-releases/trunk/3.5.1/tools/clang/docs/doxygen/html/MultiplexConsumer_8cpp_source.html Tue Jan 13 16:55:20 2015
@@ -0,0 +1,374 @@
+<!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: MultiplexConsumer.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_cfd7caa53089bfce4c036750f74ca8fe.html">Frontend</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">MultiplexConsumer.cpp</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="MultiplexConsumer_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">//===- MultiplexConsumer.cpp - AST Consumer for PCH Generation --*- 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 MultiplexConsumer class. It also declares and defines</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span> <span class="comment">//  MultiplexASTDeserializationListener and  MultiplexASTMutationListener, which</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span> <span class="comment">//  are implementation details of MultiplexConsumer.</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="MultiplexConsumer_8h.html">clang/Frontend/MultiplexConsumer.h</a>"</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span> <span class="preprocessor">#include "<a class="code" href="ASTMutationListener_8h.html">clang/AST/ASTMutationListener.h</a>"</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span> <span class="preprocessor">#include "<a class="code" href="DeclGroup_8h.html">clang/AST/DeclGroup.h</a>"</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span> <span class="preprocessor">#include "<a class="code" href="ASTDeserializationListener_8h.html">clang/Serialization/ASTDeserializationListener.h</a>"</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">using 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">namespace </span>clang {</div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span> </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span> <span class="comment">// This ASTDeserializationListener forwards its notifications to a set of</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span> <span class="comment">// child listeners.</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html">   27</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html">MultiplexASTDeserializationListener</a></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>     : <span class="keyword">public</span> <a class="code" href="classclang_1_1ASTDeserializationListener.html">ASTDeserializationListener</a> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>   <span class="comment">// Does NOT take ownership of the elements in L.</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>   <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html">MultiplexASTDeserializationListener</a>(</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>       <span class="keyword">const</span> std::vector<ASTDeserializationListener*>& L);</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> ReaderInitialized(<a class="code" href="classclang_1_1ASTReader.html" title="Reads an AST files chain containing the contents of a translation unit.">ASTReader</a> *Reader);</div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> IdentifierRead(<a class="code" href="namespaceclang_1_1serialization.html#aa7a1e72ed4b332bf9f49c7410e175cad" title="An ID number that refers to an identifier in an AST file.">serialization::IdentID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>,</div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>                               <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II);</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> TypeRead(<a class="code" href="classclang_1_1serialization_1_1TypeIdx.html" title="A type index; the type ID with the qualifier bits removed.">serialization::TypeIdx</a> Idx, <a class="code" href="classclang_1_1QualType.html">QualType</a> T);</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> DeclRead(<a class="code" href="namespaceclang_1_1serialization.html#af3f9c681595246da4bb499bd210e7f36" title="An ID number that refers to a declaration in an AST file.">serialization::DeclID</a> ID, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> SelectorRead(<a class="code" href="namespaceclang_1_1serialization.html#a79d7521f50e764df679984a7df6bbd9c" title="An ID number that refers to an ObjC selector in an AST file.">serialization::SelectorID</a> iD, <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="l00039"></a><span class="lineno">   39</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> MacroDefinitionRead(<a class="code" href="namespaceclang_1_1serialization.html#a69b0c2eae71e4e80def76ebd48d75957" title="An ID number that refers to an entity in the detailed preprocessing record.">serialization::PreprocessedEntityID</a>, </div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>                                    <a class="code" href="classclang_1_1MacroDefinition.html" title="Record the location of a macro definition.">MacroDefinition</a> *MD);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span> <span class="keyword">private</span>:</div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>   std::vector<ASTDeserializationListener*> Listeners;</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> </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#ad5cbe319204899f62ada4a0103cc4b84">   45</a></span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#ad5cbe319204899f62ada4a0103cc4b84">MultiplexASTDeserializationListener::MultiplexASTDeserializationListener</a>(</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>       <span class="keyword">const</span> std::vector<ASTDeserializationListener*>& L)</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>     : Listeners(L) {</div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span> }</div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span> </div>
+<div class="line"><a name="l00050"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a3c2ca15606ae60eed284d54ae57cc6b6">   50</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a3c2ca15606ae60eed284d54ae57cc6b6" title="The ASTReader was initialized.">MultiplexASTDeserializationListener::ReaderInitialized</a>(</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>     <a class="code" href="classclang_1_1ASTReader.html" title="Reads an AST files chain containing the contents of a translation unit.">ASTReader</a> *Reader) {</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a3c2ca15606ae60eed284d54ae57cc6b6" title="The ASTReader was initialized.">ReaderInitialized</a>(Reader);</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> </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a6e65452689bdda381bc1b78478af8d0f">   56</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a6e65452689bdda381bc1b78478af8d0f" title="An identifier was deserialized from the AST file.">MultiplexASTDeserializationListener::IdentifierRead</a>(</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>     <a class="code" href="namespaceclang_1_1serialization.html#aa7a1e72ed4b332bf9f49c7410e175cad" title="An ID number that refers to an identifier in an AST file.">serialization::IdentID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>, <a class="code" href="classclang_1_1IdentifierInfo.html">IdentifierInfo</a> *II) {</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a6e65452689bdda381bc1b78478af8d0f" title="An identifier was deserialized from the AST file.">IdentifierRead</a>(ID, II);</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_1MultiplexASTDeserializationListener.html#a6e96f4bd294237f15569492e78f21dda">   62</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a6e96f4bd294237f15569492e78f21dda" title="A type was deserialized from the AST file. The ID here has the qualifier bits already removed...">MultiplexASTDeserializationListener::TypeRead</a>(</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>     <a class="code" href="classclang_1_1serialization_1_1TypeIdx.html" title="A type index; the type ID with the qualifier bits removed.">serialization::TypeIdx</a> Idx, <a class="code" href="classclang_1_1QualType.html">QualType</a> T) {</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a6e96f4bd294237f15569492e78f21dda" title="A type was deserialized from the AST file. The ID here has the qualifier bits already removed...">TypeRead</a>(Idx, T);</div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span> }</div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span> </div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a24be19c5fcd6f2f90de2c0100d2d3106">   68</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a24be19c5fcd6f2f90de2c0100d2d3106" title="A decl was deserialized from the AST file.">MultiplexASTDeserializationListener::DeclRead</a>(</div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>     <a class="code" href="namespaceclang_1_1serialization.html#af3f9c681595246da4bb499bd210e7f36" title="An ID number that refers to a declaration in an AST file.">serialization::DeclID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a24be19c5fcd6f2f90de2c0100d2d3106" title="A decl was deserialized from the AST file.">DeclRead</a>(ID, D);</div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span> }</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span> </div>
+<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a1d2c8f792b92a24b316771c04a919981">   74</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a1d2c8f792b92a24b316771c04a919981" title="A selector was read from the AST file.">MultiplexASTDeserializationListener::SelectorRead</a>(</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>     <a class="code" href="namespaceclang_1_1serialization.html#a79d7521f50e764df679984a7df6bbd9c" title="An ID number that refers to an ObjC selector in an AST file.">serialization::SelectorID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</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="l00076"></a><span class="lineno">   76</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#a1d2c8f792b92a24b316771c04a919981" title="A selector was read from the AST file.">SelectorRead</a>(ID, Sel);</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span> }</div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span> </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#ae15dd8c05a629eaca4dcded3769e6241">   80</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#ae15dd8c05a629eaca4dcded3769e6241" title="A macro definition was read from the AST file.">MultiplexASTDeserializationListener::MacroDefinitionRead</a>(</div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>     <a class="code" href="namespaceclang_1_1serialization.html#a69b0c2eae71e4e80def76ebd48d75957" title="An ID number that refers to an entity in the detailed preprocessing record.">serialization::PreprocessedEntityID</a> <a class="code" href="namespaceclang_1_1LangAS.html#a78ee38b55acb7cc806cb61e6d2a9f960" title="Defines the set of possible language-specific address spaces.">ID</a>, <a class="code" href="classclang_1_1MacroDefinition.html" title="Record the location of a macro definition.">MacroDefinition</a> *MD) {</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTDeserializationListener.html#ae15dd8c05a629eaca4dcded3769e6241" title="A macro definition was read from the AST file.">MacroDefinitionRead</a>(ID, MD);</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">// This ASTMutationListener forwards its notifications to a set of</span></div>
+<div class="line"><a name="l00087"></a><span class="lineno">   87</span> <span class="comment">// child listeners.</span></div>
+<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html">   88</a></span> <span class="keyword">class </span><a class="code" href="classclang_1_1MultiplexASTMutationListener.html">MultiplexASTMutationListener</a> : <span class="keyword">public</span> <a class="code" href="classclang_1_1ASTMutationListener.html" title="An abstract interface that should be implemented by listeners that want to be notified when an AST en...">ASTMutationListener</a> {</div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span> <span class="keyword">public</span>:</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>   <span class="comment">// Does NOT take ownership of the elements in L.</span></div>
+<div class="line"><a name="l00091"></a><span class="lineno">   91</span>   <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aba9623cfd021bce93b2e71dbdd4221c2">MultiplexASTMutationListener</a>(<a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<ASTMutationListener*></a> L);</div>
+<div class="line"><a name="l00092"></a><span class="lineno">   92</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a9ba9faeba0f4bbc3f287dd22fae5626a" title="A new TagDecl definition was completed.">CompletedTagDefinition</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TagDecl.html" title="TagDecl - Represents the declaration of a struct/union/class/enum.">TagDecl</a> *D);</div>
+<div class="line"><a name="l00093"></a><span class="lineno">   93</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a64aae70f8e1c1e4830292e4b9d05e4bf" title="A new declaration with name has been added to a DeclContext.">AddedVisibleDecl</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l00094"></a><span class="lineno">   94</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#abc6c7b79722edef00a952104add5e5e1" title="An implicit member was added after the definition was completed.">AddedCXXImplicitMember</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">AddedCXXTemplateSpecialization</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ClassTemplateDecl.html" title="Declaration of a class template.">ClassTemplateDecl</a> *TD,</div>
+<div class="line"><a name="l00096"></a><span class="lineno">   96</span>                                     <span class="keyword">const</span> <a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html" title="Represents a class template specialization, which refers to a class template with a given set of temp...">ClassTemplateSpecializationDecl</a> *D);</div>
+<div class="line"><a name="l00097"></a><span class="lineno">   97</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span></div>
+<div class="line"><a name="l00098"></a><span class="lineno">   98</span>   <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">AddedCXXTemplateSpecialization</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarTemplateDecl.html" title="Declaration of a variable template.">VarTemplateDecl</a> *TD,</div>
+<div class="line"><a name="l00099"></a><span class="lineno">   99</span>                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1VarTemplateSpecializationDecl.html" title="Represents a variable template specialization, which refers to a variable template with a given set o...">VarTemplateSpecializationDecl</a> *D);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">AddedCXXTemplateSpecialization</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *TD,</div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>                                               <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *D);</div>
+<div class="line"><a name="l00102"></a><span class="lineno">  102</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a22d91c011fde59cd463e3cd549ef9f41" title="A function's return type has been deduced.">DeducedReturnType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD, <a class="code" href="classclang_1_1QualType.html">QualType</a> ReturnType);</div>
+<div class="line"><a name="l00103"></a><span class="lineno">  103</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#af0faf16655caf66ead339fba39f62841" title="An implicit member got a definition.">CompletedImplicitDefinition</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *D);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a955bc787702e316433ed716a594a13d0" title="A static data member was implicitly instantiated.">StaticDataMemberInstantiated</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aa1d51ebf3d9acc2b776b9e132fc1e6ea" title="A new objc category class was added for an interface.">AddedObjCCategoryToInterface</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CatD,</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IFD);</div>
+<div class="line"><a name="l00107"></a><span class="lineno">  107</span>   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a7248a5b61437bae73de366eb29e6ddf4" title="A objc class extension redeclared or introduced a property.">AddedObjCPropertyInClassExtension</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop,</div>
+<div class="line"><a name="l00108"></a><span class="lineno">  108</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *OrigProp,</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>                                             <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *ClassExt);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>   <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#af0fdf8f175b689771b15e0112cbab97b" title="A declaration is marked used which was not previously marked used.">DeclarationMarkedUsed</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) LLVM_OVERRIDE;</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">private</span>:</div>
+<div class="line"><a name="l00113"></a><span class="lineno">  113</span>   std::vector<ASTMutationListener*> Listeners;</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"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aba9623cfd021bce93b2e71dbdd4221c2">  116</a></span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aba9623cfd021bce93b2e71dbdd4221c2">MultiplexASTMutationListener::MultiplexASTMutationListener</a>(</div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>     <a class="code" href="classllvm_1_1ArrayRef.html">ArrayRef<ASTMutationListener*></a> L)</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>     : Listeners(L.begin(), L.end()) {</div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span> }</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span> </div>
+<div class="line"><a name="l00121"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a9ba9faeba0f4bbc3f287dd22fae5626a">  121</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a9ba9faeba0f4bbc3f287dd22fae5626a" title="A new TagDecl definition was completed.">MultiplexASTMutationListener::CompletedTagDefinition</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1TagDecl.html" title="TagDecl - Represents the declaration of a struct/union/class/enum.">TagDecl</a> *D) {</div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a9ba9faeba0f4bbc3f287dd22fae5626a" title="A new TagDecl definition was completed.">CompletedTagDefinition</a>(D);</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> </div>
+<div class="line"><a name="l00126"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a64aae70f8e1c1e4830292e4b9d05e4bf">  126</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a64aae70f8e1c1e4830292e4b9d05e4bf" title="A new declaration with name has been added to a DeclContext.">MultiplexASTMutationListener::AddedVisibleDecl</a>(</div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1DeclContext.html">DeclContext</a> *DC, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a64aae70f8e1c1e4830292e4b9d05e4bf" title="A new declaration with name has been added to a DeclContext.">AddedVisibleDecl</a>(DC, D);</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> </div>
+<div class="line"><a name="l00132"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#abc6c7b79722edef00a952104add5e5e1">  132</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#abc6c7b79722edef00a952104add5e5e1" title="An implicit member was added after the definition was completed.">MultiplexASTMutationListener::AddedCXXImplicitMember</a>(</div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1CXXRecordDecl.html" title="Represents a C++ struct/union/class.">CXXRecordDecl</a> *RD, <span class="keyword">const</span> <a class="code" href="classclang_1_1Decl.html">Decl</a> *D) {</div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#abc6c7b79722edef00a952104add5e5e1" title="An implicit member was added after the definition was completed.">AddedCXXImplicitMember</a>(RD, D);</div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span> }</div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96">  137</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">MultiplexASTMutationListener::AddedCXXTemplateSpecialization</a>(</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1ClassTemplateDecl.html" title="Declaration of a class template.">ClassTemplateDecl</a> *TD, <span class="keyword">const</span> <a class="code" href="classclang_1_1ClassTemplateSpecializationDecl.html" title="Represents a class template specialization, which refers to a class template with a given set of temp...">ClassTemplateSpecializationDecl</a> *D) {</div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">AddedCXXTemplateSpecialization</a>(TD, D);</div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span> }</div>
+<div class="line"><a name="l00142"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a4ade93f509a85206c039e258030b78f8">  142</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">MultiplexASTMutationListener::AddedCXXTemplateSpecialization</a>(</div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1VarTemplateDecl.html" title="Declaration of a variable template.">VarTemplateDecl</a> *TD, <span class="keyword">const</span> <a class="code" href="classclang_1_1VarTemplateSpecializationDecl.html" title="Represents a variable template specialization, which refers to a variable template with a given set o...">VarTemplateSpecializationDecl</a> *D) {</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00145"></a><span class="lineno">  145</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">AddedCXXTemplateSpecialization</a>(TD, D);</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span> }</div>
+<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a11f3581073fecc4a46823244808b418f">  147</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">MultiplexASTMutationListener::AddedCXXTemplateSpecialization</a>(</div>
+<div class="line"><a name="l00148"></a><span class="lineno">  148</span>     <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionTemplateDecl.html" title="Declaration of a template function.">FunctionTemplateDecl</a> *TD, <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *D) {</div>
+<div class="line"><a name="l00149"></a><span class="lineno">  149</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00150"></a><span class="lineno">  150</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a072ebcc43e086e360b99cda6d4e3ef96" title="A template specialization (or partial one) was added to the template declaration.">AddedCXXTemplateSpecialization</a>(TD, D);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span> }</div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a22d91c011fde59cd463e3cd549ef9f41">  152</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a22d91c011fde59cd463e3cd549ef9f41" title="A function's return type has been deduced.">MultiplexASTMutationListener::DeducedReturnType</a>(<span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *FD,</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>                                                      <a class="code" href="classclang_1_1QualType.html">QualType</a> ReturnType) {</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a22d91c011fde59cd463e3cd549ef9f41" title="A function's return type has been deduced.">DeducedReturnType</a>(FD, ReturnType);</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_1MultiplexASTMutationListener.html#af0faf16655caf66ead339fba39f62841">  157</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#af0faf16655caf66ead339fba39f62841" title="An implicit member got a definition.">MultiplexASTMutationListener::CompletedImplicitDefinition</a>(</div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>                                                         <span class="keyword">const</span> <a class="code" href="classclang_1_1FunctionDecl.html">FunctionDecl</a> *D) {</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#af0faf16655caf66ead339fba39f62841" title="An implicit member got a definition.">CompletedImplicitDefinition</a>(D);</div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span> }</div>
+<div class="line"><a name="l00162"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a955bc787702e316433ed716a594a13d0">  162</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a955bc787702e316433ed716a594a13d0" title="A static data member was implicitly instantiated.">MultiplexASTMutationListener::StaticDataMemberInstantiated</a>(</div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>                                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1VarDecl.html">VarDecl</a> *D) {</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a955bc787702e316433ed716a594a13d0" title="A static data member was implicitly instantiated.">StaticDataMemberInstantiated</a>(D);</div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span> }</div>
+<div class="line"><a name="l00167"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aa1d51ebf3d9acc2b776b9e132fc1e6ea">  167</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aa1d51ebf3d9acc2b776b9e132fc1e6ea" title="A new objc category class was added for an interface.">MultiplexASTMutationListener::AddedObjCCategoryToInterface</a>(</div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>                                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCCategoryDecl.html">ObjCCategoryDecl</a> *CatD,</div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>                                                  <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCInterfaceDecl.html" title="Represents an ObjC class declaration.">ObjCInterfaceDecl</a> *IFD) {</div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>   <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0, e = Listeners.size(); i != e; ++i)</div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>     Listeners[i]-><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#aa1d51ebf3d9acc2b776b9e132fc1e6ea" title="A new objc category class was added for an interface.">AddedObjCCategoryToInterface</a>(CatD, IFD);</div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span> }</div>
+<div class="line"><a name="l00173"></a><span class="lineno"><a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a7248a5b61437bae73de366eb29e6ddf4">  173</a></span> <span class="keywordtype">void</span> <a class="code" href="classclang_1_1MultiplexASTMutationListener.html#a7248a5b61437bae73de366eb29e6ddf4" title="A objc class extension redeclared or introduced a property.">MultiplexASTMutationListener::AddedObjCPropertyInClassExtension</a>(</div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *Prop,</div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>                                              <span class="keyword">const</span> <a class="code" href="classclang_1_1ObjCPropertyDecl.html" title="Represents one property declaration in an Objective-C interface.">ObjCPropertyDecl</a> *OrigProp,</div>
+<div class="line"><a name="l00176"