<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>libzypp: zypp/VendorAttr.cc Source File</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="navtree.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="resize.js"></script> <script type="text/javascript" src="navtreedata.js"></script> <script type="text/javascript" src="navtree.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(initResizable); /* @license-end */</script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">libzypp  <span id="projectnumber">17.9.0</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',false,false,'search.php','Search'); }); /* @license-end */</script> <div id="main-nav"></div> </div><!-- top --> <div id="side-nav" class="ui-resizable side-nav-resizable"> <div id="nav-tree"> <div id="nav-tree-contents"> <div id="nav-sync" class="sync"></div> </div> </div> <div id="splitbar" style="-moz-user-select:none;" class="ui-resizable-handle"> </div> </div> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(document).ready(function(){initNavTree('VendorAttr_8cc_source.html','');}); /* @license-end */ </script> <div id="doc-content"> <div class="header"> <div class="headertitle"> <div class="title">VendorAttr.cc</div> </div> </div><!--header--> <div class="contents"> <a href="VendorAttr_8cc.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">/*---------------------------------------------------------------------\</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">| |__ / \ / / . \ . \ |</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">| / / \ V /| _/ _/ |</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">| / /__ | | | | | | |</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">| /_____||_| |_| |_| |</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"> File: VendorAttr.cc</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"></span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> Author: Michael Andres <ma@suse.de></span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> Maintainer: Michael Andres <ma@suse.de></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> <span class="comment"> Purpose: Manage vendor attributes</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"></span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment">/-*/</span></div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#include <iostream></span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor">#include <fstream></span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor">#include <set></span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#include <map></span></div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor">#include <vector></span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> </div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor">#include "<a class="code" href="LogTools_8h.html">zypp/base/LogTools.h</a>"</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor">#include "<a class="code" href="IOStream_8h.html">zypp/base/IOStream.h</a>"</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#include "<a class="code" href="String_8h.html">zypp/base/String.h</a>"</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="preprocessor">#include "<a class="code" href="PathInfo_8h.html">zypp/PathInfo.h</a>"</span></div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="preprocessor">#include "<a class="code" href="VendorAttr_8h.html">zypp/VendorAttr.h</a>"</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#include "<a class="code" href="ZYppFactory_8h.html">zypp/ZYppFactory.h</a>"</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="ZConfig_8h.html">zypp/ZConfig.h</a>"</span></div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="preprocessor">#include "<a class="code" href="PathInfo_8h.html">zypp/PathInfo.h</a>"</span></div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="IniDict_8h.html">zypp/parser/IniDict.h</a>"</span></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="preprocessor">#undef ZYPP_BASE_LOGGER_LOGGROUP</span></div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="VendorAttr_8cc.html#ad11ca1dc9757eafa29e9de2259388ff4"> 38</a></span> <span class="preprocessor">#define ZYPP_BASE_LOGGER_LOGGROUP "zypp::VendorAttr"</span></div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> </div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="keyword">namespace </span><a class="code" href="namespacezypp.html">zypp</a></div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> { </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span> </div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keyword">namespace</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="keyword">typedef</span> std::map<Vendor,unsigned> VendorMap;</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  VendorMap _vendorMap;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordtype">unsigned</span> vendorGroupCounter;</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  } <span class="comment">// namespace</span></div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"></span></div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keyword">namespace</span></div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  { </div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  <span class="keyword">typedef</span> DefaultIntegral<int,0> VendorMatchEntry;</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span>  <span class="keyword">typedef</span> std::unordered_map<IdString, VendorMatchEntry> VendorMatch;</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordtype">int</span> _nextId = -1;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  VendorMatch _vendorMatch;</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keyword">inline</span> <span class="keywordtype">void</span> vendorMatchIdReset()</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>  _nextId = -1;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  _vendorMatch.clear();</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="l00079"></a><span class="lineno"> 79</span>  <span class="keyword">inline</span> <span class="keywordtype">unsigned</span> vendorMatchId( IdString vendor )</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  {</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  VendorMatchEntry & ent( _vendorMatch[vendor] );</div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span> ( ! ent )</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  {</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  IdString lcvendor( <a class="code" href="namespacezypp_1_1str.html#adb668ecb122eb6de2d61fa3b3cbea555">str::toLower</a>( vendor.asString() ) );</div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  VendorMatchEntry & lcent( _vendorMatch[lcvendor] );</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">if</span> ( ! lcent )</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="keywordtype">unsigned</span> myid = 0;</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="comment">// bnc#812608: no pefix compare in opensuse namespace</span></div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  <span class="keyword">static</span> <span class="keyword">const</span> IdString openSUSE( <span class="stringliteral">"opensuse"</span> );</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  <span class="keywordflow">if</span> ( lcvendor == openSUSE || ! <a class="code" href="namespacezypp_1_1str.html#a5e64cab973a815bfc5c3811b5086a2b9">str::hasPrefix</a>( lcvendor.c_str(), openSUSE.c_str() ) )</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>  <span class="comment">// Compare this entry with the global vendor map.</span></div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  <span class="comment">// Reversed to get the longest prefix.</span></div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  <span class="keywordflow">for</span> ( VendorMap::reverse_iterator it = _vendorMap.rbegin(); it != _vendorMap.rend(); ++it )</div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  {</div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="keywordflow">if</span> ( <a class="code" href="namespacezypp_1_1str.html#a5e64cab973a815bfc5c3811b5086a2b9">str::hasPrefix</a>( lcvendor.c_str(), it->first ) )</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>  myid = it->second;</div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">break</span>; <span class="comment">// found</span></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>  }</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span> ( ! myid )</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>  myid = --_nextId; <span class="comment">// get a new class ID</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>  ent = lcent = myid; <span class="comment">// remember the new DI</span></div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  }</div><div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  {</div><div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  ent = lcent; <span class="comment">// take the ID from the lowercased vendor string</span></div><div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  }</div><div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  }</div><div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">return</span> ent;</div><div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  }</div><div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  } <span class="comment">// namespace</span></div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment"></span></div><div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#ae6df37d4a3081f9e1fb2745efb90d4d0"> 121</a></span>  <span class="keyword">const</span> <a class="code" href="classzypp_1_1VendorAttr.html">VendorAttr</a> & <a class="code" href="classzypp_1_1VendorAttr.html#ae6df37d4a3081f9e1fb2745efb90d4d0">VendorAttr::instance</a>()</div><div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  {</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keyword">static</span> <a class="code" href="classzypp_1_1VendorAttr.html">VendorAttr</a> _val;</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> _val;</div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#a2deec02a38ccffc8c167e2d31fe54efc"> 127</a></span>  <a class="code" href="classzypp_1_1VendorAttr.html#a2deec02a38ccffc8c167e2d31fe54efc">VendorAttr::VendorAttr</a> ()</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>  vendorGroupCounter = 1;</div><div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="classzypp_1_1filesystem_1_1Pathname.html">Pathname</a> vendorPath (<a class="code" href="classzypp_1_1ZConfig.html#a9b986f2c40a1aa9e1a2aea3d299210d1">ZConfig::instance</a>().vendorPath());</div><div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  {</div><div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="classTarget__Ptr.html">Target_Ptr</a> trg( getZYpp()->getTarget() );</div><div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span> ( trg )</div><div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  vendorPath = trg->root() / vendorPath;</div><div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  }</div><div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">// creating entries</span></div><div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <a class="code" href="classzypp_1_1VendorAttr.html#a3d04f4e841a16eb22f920a64e5d86d7e">addVendorDirectory</a> (vendorPath);</div><div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div><div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="comment">// bsc#1030686: The legacy default equivalence of 'suse' and 'opensuse'</span></div><div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="comment">// has been removed. Unless they are mentioned in a custom rule, create</span></div><div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="comment">// separate classes for them.</span></div><div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span> ( _vendorMap.find(<span class="stringliteral">"suse"</span>) == _vendorMap.end() )</div><div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  _vendorMap[<span class="stringliteral">"suse"</span>] = ++vendorGroupCounter;</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>  <span class="keywordflow">if</span> ( _vendorMap.find(<span class="stringliteral">"opensuse"</span>) == _vendorMap.end() )</div><div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  _vendorMap[<span class="stringliteral">"opensuse"</span>] = ++vendorGroupCounter;</div><div class="line"><a name="l00147"></a><span class="lineno"> 147</span> </div><div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="group__ZYPP__BASE__LOGGER__MACROS.html#ga552f8ec9d8e5b4efa04839a129104818">MIL</a> << *<span class="keyword">this</span> << endl;</div><div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div><div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div><div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#aa347af47c4b7d5a8411a613fc2ecc126"> 151</a></span>  <span class="keywordtype">void</span> <a class="code" href="classzypp_1_1VendorAttr.html#aa347af47c4b7d5a8411a613fc2ecc126">VendorAttr::_addVendorList</a>( <a class="code" href="classzypp_1_1VendorAttr.html#af00e352faa13a6a5633ccfbb2a03aff9">VendorList</a> & vendorList_r )<span class="keyword"> const</span></div><div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nextId = vendorGroupCounter + 1;</div><div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// convert to lowercase and check if a vendor is already defined</span></div><div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// in an existing group.</span></div><div class="line"><a name="l00156"></a><span class="lineno"> 156</span> </div><div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="Easy_8h.html#a7887338b8a0727becb37d8061fcbfc0e">for_</a>( it, vendorList_r.begin(), vendorList_r.end() )</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>  *it = <a class="code" href="namespacezypp_1_1str.html#adb668ecb122eb6de2d61fa3b3cbea555">str::toLower</a>( *it );</div><div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="keywordflow">if</span> (_vendorMap.find(*it) != _vendorMap.end())</div><div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  {</div><div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="keywordflow">if</span> (nextId != vendorGroupCounter + 1 &&</div><div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  nextId != _vendorMap[*it])</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>  <span class="comment">// We have at least 3 groups which has to be mixed --> mix the third group to the first</span></div><div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> moveID = _vendorMap[*it];</div><div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  <a class="code" href="Easy_8h.html#a7887338b8a0727becb37d8061fcbfc0e">for_</a>( itMap, _vendorMap.begin(), _vendorMap.end() )</div><div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  {</div><div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">if</span> (itMap->second == moveID)</div><div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  itMap->second = nextId;</div><div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  }</div><div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  }</div><div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">else</span></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>  nextId = _vendorMap[*it];</div><div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <a class="code" href="group__ZYPP__BASE__LOGGER__MACROS.html#ga9423380a92639b296ea0a984ea7e1c6b">WAR</a> << <span class="stringliteral">"Vendor "</span> << *it << <span class="stringliteral">" is already used in another vendor group. --> mixing these groups"</span> << endl;</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>  }</div><div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// add new entries</span></div><div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <a class="code" href="Easy_8h.html#a7887338b8a0727becb37d8061fcbfc0e">for_</a>( it, vendorList_r.begin(), vendorList_r.end() )</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>  _vendorMap[*it] = nextId;</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> </div><div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordflow">if</span> (nextId == vendorGroupCounter + 1)</div><div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  ++vendorGroupCounter;</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>  <span class="comment">// invalidate any match cache</span></div><div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  vendorMatchIdReset();</div><div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  }</div><div class="line"><a name="l00192"></a><span class="lineno"> 192</span> </div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#a23a6fab30dab5730f3cb0cd55569ae26"> 193</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzypp_1_1VendorAttr.html#a23a6fab30dab5730f3cb0cd55569ae26">VendorAttr::addVendorFile</a>( <span class="keyword">const</span> <a class="code" href="classzypp_1_1filesystem_1_1Pathname.html">Pathname</a> & filename )<span class="keyword"> const</span></div><div class="line"><a name="l00194"></a><span class="lineno"> 194</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <a class="code" href="classzypp_1_1parser_1_1IniDict.html">parser::IniDict</a> dict;</div><div class="line"><a name="l00196"></a><span class="lineno"> 196</span> </div><div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">if</span> ( <a class="code" href="classzypp_1_1filesystem_1_1PathInfo.html">PathInfo</a>(filename).isExist())</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>  <a class="code" href="classzypp_1_1InputStream.html">InputStream</a> is(filename);</div><div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  dict.<a class="code" href="classzypp_1_1parser_1_1IniDict.html#a3950872b0309d4c62f7b7c773867e977">read</a>(is);</div><div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  }</div><div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">else</span></div><div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  {</div><div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <a class="code" href="group__ZYPP__BASE__LOGGER__MACROS.html#ga552f8ec9d8e5b4efa04839a129104818">MIL</a> << filename << <span class="stringliteral">" not found."</span> << endl;</div><div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div><div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  }</div><div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div><div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> ( <a class="code" href="classzypp_1_1parser_1_1IniDict.html#a77147b49227c74b5849e191231648528">parser::IniDict::section_const_iterator</a> sit = dict.<a class="code" href="classzypp_1_1parser_1_1IniDict.html#aae68485706e471f6073b2fb49dba0e09">sectionsBegin</a>();</div><div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  sit != dict.<a class="code" href="classzypp_1_1parser_1_1IniDict.html#a20f52d380e152366c260865f8de16879">sectionsEnd</a>();</div><div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  ++sit )</div><div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  {</div><div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  std::string section(*sit);</div><div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">//MIL << section << endl;</span></div><div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">for</span> ( <a class="code" href="classzypp_1_1parser_1_1IniDict.html#a734e6326f886c2fa198a4584700301a4">parser::IniDict::entry_const_iterator</a> it = dict.<a class="code" href="classzypp_1_1parser_1_1IniDict.html#a8204f08e56825624bc5e222235a1b098">entriesBegin</a>(*sit);</div><div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  it != dict.<a class="code" href="classzypp_1_1parser_1_1IniDict.html#afb647a8b9ebe0fc9ec79b2b68eabf9df">entriesEnd</a>(*sit);</div><div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  ++it )</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>  std::string entry(it->first);</div><div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  std::string value(it->second);</div><div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span> ( section == <span class="stringliteral">"main"</span> )</div><div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  {</div><div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="keywordflow">if</span> ( entry == <span class="stringliteral">"vendors"</span> )</div><div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  {</div><div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <a class="code" href="classzypp_1_1VendorAttr.html#af00e352faa13a6a5633ccfbb2a03aff9">VendorList</a> vendorlist;</div><div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <a class="code" href="namespacezypp_1_1str.html#a3e502e8088ab73efb24b011f03f65b5a">str::split</a>( value, back_inserter(vendorlist), <span class="stringliteral">","</span> );</div><div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <a class="code" href="classzypp_1_1VendorAttr.html#aa347af47c4b7d5a8411a613fc2ecc126">_addVendorList</a> (vendorlist);</div><div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  }</div><div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  }</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>  }</div><div class="line"><a name="l00232"></a><span class="lineno"> 232</span> </div><div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  }</div><div class="line"><a name="l00235"></a><span class="lineno"> 235</span> </div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#a3d04f4e841a16eb22f920a64e5d86d7e"> 236</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzypp_1_1VendorAttr.html#a3d04f4e841a16eb22f920a64e5d86d7e">VendorAttr::addVendorDirectory</a>( <span class="keyword">const</span> <a class="code" href="classzypp_1_1filesystem_1_1Pathname.html">Pathname</a> & dirname )<span class="keyword"> const</span></div><div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="keywordflow">if</span> ( ! <a class="code" href="classzypp_1_1filesystem_1_1PathInfo.html">PathInfo</a>(dirname).isExist() )</div><div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  {</div><div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <a class="code" href="group__ZYPP__BASE__LOGGER__MACROS.html#ga552f8ec9d8e5b4efa04839a129104818">MIL</a> << dirname << <span class="stringliteral">" not found."</span> << endl;</div><div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</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> </div><div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  std::list<Pathname> filenames;</div><div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <a class="code" href="namespacezypp_1_1filesystem.html#a424d384472de80e5cc48f5d5662cc859">filesystem::readdir</a>( filenames, dirname, <span class="keyword">false</span> );</div><div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <a class="code" href="Easy_8h.html#a7887338b8a0727becb37d8061fcbfc0e">for_</a>( it, filenames.begin(), filenames.end() ) {</div><div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <a class="code" href="group__ZYPP__BASE__LOGGER__MACROS.html#ga552f8ec9d8e5b4efa04839a129104818">MIL</a> << <span class="stringliteral">"Adding file "</span> << *it << endl;</div><div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <a class="code" href="classzypp_1_1VendorAttr.html#a23a6fab30dab5730f3cb0cd55569ae26">addVendorFile</a>( *it );</div><div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div><div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div><div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div><div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">// vendor equivalence:</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"><a class="line" href="classzypp_1_1VendorAttr.html#af3acd738ca5d75a37aa0fb9ed1320ff6"> 257</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">VendorAttr::equivalent</a>( <a class="code" href="classzypp_1_1IdString.html">IdString</a> lVendor, <a class="code" href="classzypp_1_1IdString.html">IdString</a> rVendor )<span class="keyword"> const</span></div><div class="line"><a name="l00258"></a><span class="lineno"> 258</span> <span class="keyword"> </span>{</div><div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="keywordflow">if</span> ( lVendor == rVendor )</div><div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div><div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="keywordflow">return</span> vendorMatchId( lVendor ) == vendorMatchId( rVendor );</div><div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  }</div><div class="line"><a name="l00263"></a><span class="lineno"> 263</span> </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1"> 264</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">VendorAttr::equivalent</a>( <span class="keyword">const</span> <a class="code" href="namespacezypp.html#a6f0c1652bfa3d219f2c25bf832522f45">Vendor</a> & lVendor, <span class="keyword">const</span> <a class="code" href="namespacezypp.html#a6f0c1652bfa3d219f2c25bf832522f45">Vendor</a> & rVendor )<span class="keyword"> const</span></div><div class="line"><a name="l00265"></a><span class="lineno"> 265</span> <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">equivalent</a>( <a class="code" href="classzypp_1_1IdString.html">IdString</a>( lVendor ), <a class="code" href="classzypp_1_1IdString.html">IdString</a>( rVendor ) );</div><div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  }</div><div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div><div class="line"><a name="l00268"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#af9e2cf94cd47b4b395710d2e2fd80c47"> 268</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">VendorAttr::equivalent</a>( <a class="code" href="classzypp_1_1sat_1_1Solvable.html">sat::Solvable</a> lVendor, <a class="code" href="classzypp_1_1sat_1_1Solvable.html">sat::Solvable</a> rVendor )<span class="keyword"> const</span></div><div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">equivalent</a>( lVendor.<a class="code" href="classzypp_1_1sat_1_1Solvable.html#a2e2ec20f761fbf3219e7909ffaf460d0">vendor</a>(), rVendor.<a class="code" href="classzypp_1_1sat_1_1Solvable.html#a2e2ec20f761fbf3219e7909ffaf460d0">vendor</a>() ); }</div><div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div><div class="line"><a name="l00271"></a><span class="lineno"><a class="line" href="classzypp_1_1VendorAttr.html#a64cc6848faa8911ef66de6fc79160059"> 271</a></span>  <span class="keywordtype">bool</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">VendorAttr::equivalent</a>( <span class="keyword">const</span> <a class="code" href="classzypp_1_1PoolItem.html">PoolItem</a> & lVendor, <span class="keyword">const</span> <a class="code" href="classzypp_1_1PoolItem.html">PoolItem</a> & rVendor )<span class="keyword"> const</span></div><div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">equivalent</a>( lVendor.<a class="code" href="structzypp_1_1sat_1_1SolvableType.html#a78de3f4b41f0965829beaa28245a25dd">satSolvable</a>().<a class="code" href="classzypp_1_1sat_1_1Solvable.html#a2e2ec20f761fbf3219e7909ffaf460d0">vendor</a>(), rVendor.<a class="code" href="structzypp_1_1sat_1_1SolvableType.html#a78de3f4b41f0965829beaa28245a25dd">satSolvable</a>().<a class="code" href="classzypp_1_1sat_1_1Solvable.html#a2e2ec20f761fbf3219e7909ffaf460d0">vendor</a>() ); }</div><div class="line"><a name="l00273"></a><span class="lineno"> 273</span> </div><div class="line"><a name="l00275"></a><span class="lineno"> 275</span> </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="namespacezypp.html#ad9ec758c22f010796c2594bbf756e53c"> 276</a></span>  std::ostream & <a class="code" href="namespacezypp.html#a736823673697753a9826f368fefff5f0">operator<<</a>( std::ostream & <a class="code" href="namespacestr.html">str</a>, <span class="keyword">const</span> <a class="code" href="classzypp_1_1VendorAttr.html">VendorAttr</a> & <span class="comment">/*obj*/</span> )</div><div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  {</div><div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <a class="code" href="namespacestr.html">str</a> << <span class="stringliteral">"Equivalent vendors:"</span>;</div><div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <a class="code" href="Easy_8h.html#a7887338b8a0727becb37d8061fcbfc0e">for_</a>( it, _vendorMap.begin(), _vendorMap.end() )</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>  <a class="code" href="namespacestr.html">str</a> << endl << <span class="stringliteral">" ["</span> << it->second << <span class="stringliteral">"] "</span> << it->first;</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="keywordflow">return</span> <a class="code" href="namespacestr.html">str</a>;</div><div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  }</div><div class="line"><a name="l00285"></a><span class="lineno"> 285</span> </div><div class="line"><a name="l00287"></a><span class="lineno"> 287</span> } <span class="comment">// namespace zypp</span></div><div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="comment"></span></div><div class="ttc" id="group__ZYPP__BASE__LOGGER__MACROS_html_ga552f8ec9d8e5b4efa04839a129104818"><div class="ttname"><a href="group__ZYPP__BASE__LOGGER__MACROS.html#ga552f8ec9d8e5b4efa04839a129104818">MIL</a></div><div class="ttdeci">#define MIL</div><div class="ttdef"><b>Definition:</b> <a href="Logger_8h_source.html#l00079">Logger.h:79</a></div></div> <div class="ttc" id="classzypp_1_1sat_1_1Solvable_html"><div class="ttname"><a href="classzypp_1_1sat_1_1Solvable.html">zypp::sat::Solvable</a></div><div class="ttdoc">A Solvable object within the sat Pool.</div><div class="ttdef"><b>Definition:</b> <a href="Solvable_8h_source.html#l00053">Solvable.h:53</a></div></div> <div class="ttc" id="classzypp_1_1sat_1_1Solvable_html_a2e2ec20f761fbf3219e7909ffaf460d0"><div class="ttname"><a href="classzypp_1_1sat_1_1Solvable.html#a2e2ec20f761fbf3219e7909ffaf460d0">zypp::sat::Solvable::vendor</a></div><div class="ttdeci">IdString vendor() const</div><div class="ttdoc">The vendor.</div><div class="ttdef"><b>Definition:</b> <a href="Solvable_8cc_source.html#l00353">Solvable.cc:353</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_a77147b49227c74b5849e191231648528"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#a77147b49227c74b5849e191231648528">zypp::parser::IniDict::section_const_iterator</a></div><div class="ttdeci">MapKVIteratorTraits< SectionSet >::Key_const_iterator section_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8h_source.html#l00046">IniDict.h:46</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_afb647a8b9ebe0fc9ec79b2b68eabf9df"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#afb647a8b9ebe0fc9ec79b2b68eabf9df">zypp::parser::IniDict::entriesEnd</a></div><div class="ttdeci">entry_const_iterator entriesEnd(const std::string &section) const</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8cc_source.html#l00082">IniDict.cc:82</a></div></div> <div class="ttc" id="classzypp_1_1ZConfig_html_a9b986f2c40a1aa9e1a2aea3d299210d1"><div class="ttname"><a href="classzypp_1_1ZConfig.html#a9b986f2c40a1aa9e1a2aea3d299210d1">zypp::ZConfig::instance</a></div><div class="ttdeci">static ZConfig & instance()</div><div class="ttdoc">Singleton ctor.</div><div class="ttdef"><b>Definition:</b> <a href="solver_2detail_2Resolver_8cc_source.html#l00130">Resolver.cc:130</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_a345a6ac1d69b8fb14b9f1a354094c3a1"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#a345a6ac1d69b8fb14b9f1a354094c3a1">zypp::VendorAttr::equivalent</a></div><div class="ttdeci">bool equivalent(const Vendor &lVendor, const Vendor &rVendor) const</div><div class="ttdoc">Return whether two vendor strings should be treated as the same vendor.</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8cc_source.html#l00264">VendorAttr.cc:264</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_a2deec02a38ccffc8c167e2d31fe54efc"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#a2deec02a38ccffc8c167e2d31fe54efc">zypp::VendorAttr::VendorAttr</a></div><div class="ttdeci">VendorAttr()</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8cc_source.html#l00127">VendorAttr.cc:127</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_a3d04f4e841a16eb22f920a64e5d86d7e"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#a3d04f4e841a16eb22f920a64e5d86d7e">zypp::VendorAttr::addVendorDirectory</a></div><div class="ttdeci">bool addVendorDirectory(const Pathname &dirname) const</div><div class="ttdoc">Adding new equivalent vendors described in a directory.</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8cc_source.html#l00236">VendorAttr.cc:236</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_a8204f08e56825624bc5e222235a1b098"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#a8204f08e56825624bc5e222235a1b098">zypp::parser::IniDict::entriesBegin</a></div><div class="ttdeci">entry_const_iterator entriesBegin(const std::string &section) const</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8cc_source.html#l00071">IniDict.cc:71</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_af00e352faa13a6a5633ccfbb2a03aff9"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#af00e352faa13a6a5633ccfbb2a03aff9">zypp::VendorAttr::VendorList</a></div><div class="ttdeci">std::vector< std::string > VendorList</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8h_source.html#l00046">VendorAttr.h:46</a></div></div> <div class="ttc" id="namespacestr_html"><div class="ttname"><a href="namespacestr.html">str</a></div><div class="ttdoc">String related utilities and Regular expression matching.</div></div> <div class="ttc" id="namespacezypp_html_a6f0c1652bfa3d219f2c25bf832522f45"><div class="ttname"><a href="namespacezypp.html#a6f0c1652bfa3d219f2c25bf832522f45">zypp::Vendor</a></div><div class="ttdeci">std::string Vendor</div><div class="ttdef"><b>Definition:</b> <a href="Vendor_8h_source.html#l00022">Vendor.h:22</a></div></div> <div class="ttc" id="classzypp_1_1IdString_html"><div class="ttname"><a href="classzypp_1_1IdString.html">zypp::IdString</a></div><div class="ttdoc">Access to the sat-pools string space.</div><div class="ttdef"><b>Definition:</b> <a href="IdString_8h_source.html#l00041">IdString.h:41</a></div></div> <div class="ttc" id="classzypp_1_1InputStream_html"><div class="ttname"><a href="classzypp_1_1InputStream.html">zypp::InputStream</a></div><div class="ttdoc">Helper to create and pass std::istream.</div><div class="ttdef"><b>Definition:</b> <a href="InputStream_8h_source.html#l00056">InputStream.h:56</a></div></div> <div class="ttc" id="Easy_8h_html_a7887338b8a0727becb37d8061fcbfc0e"><div class="ttname"><a href="Easy_8h.html#a7887338b8a0727becb37d8061fcbfc0e">for_</a></div><div class="ttdeci">#define for_(IT, BEG, END)</div><div class="ttdoc">Convenient for-loops using iterator.</div><div class="ttdef"><b>Definition:</b> <a href="Easy_8h_source.html#l00027">Easy.h:27</a></div></div> <div class="ttc" id="VendorAttr_8h_html"><div class="ttname"><a href="VendorAttr_8h.html">VendorAttr.h</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_a3950872b0309d4c62f7b7c773867e977"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#a3950872b0309d4c62f7b7c773867e977">zypp::parser::IniDict::read</a></div><div class="ttdeci">void read(const InputStream &is, const ProgressData::ReceiverFnc &progress=ProgressData::ReceiverFnc())</div><div class="ttdoc">Fill a dictionary from a InputStream containing a ini structured file.</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8cc_source.html#l00046">IniDict.cc:46</a></div></div> <div class="ttc" id="IOStream_8h_html"><div class="ttname"><a href="IOStream_8h.html">IOStream.h</a></div></div> <div class="ttc" id="namespacezypp_1_1str_html_a3e502e8088ab73efb24b011f03f65b5a"><div class="ttname"><a href="namespacezypp_1_1str.html#a3e502e8088ab73efb24b011f03f65b5a">zypp::str::split</a></div><div class="ttdeci">unsigned split(const C_Str &line_r, TOutputIterator result_r, const C_Str &sepchars_r=" \t")</div><div class="ttdoc">Split line_r into words.</div><div class="ttdef"><b>Definition:</b> <a href="String_8h_source.html#l00502">String.h:502</a></div></div> <div class="ttc" id="namespacezypp_html_a736823673697753a9826f368fefff5f0"><div class="ttname"><a href="namespacezypp.html#a736823673697753a9826f368fefff5f0">zypp::operator<<</a></div><div class="ttdeci">std::ostream & operator<<(std::ostream &str, const Exception &obj)</div><div class="ttdef"><b>Definition:</b> <a href="Exception_8cc_source.html#l00147">Exception.cc:147</a></div></div> <div class="ttc" id="IniDict_8h_html"><div class="ttname"><a href="IniDict_8h.html">IniDict.h</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_a20f52d380e152366c260865f8de16879"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#a20f52d380e152366c260865f8de16879">zypp::parser::IniDict::sectionsEnd</a></div><div class="ttdeci">section_const_iterator sectionsEnd() const</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8cc_source.html#l00099">IniDict.cc:99</a></div></div> <div class="ttc" id="ZConfig_8h_html"><div class="ttname"><a href="ZConfig_8h.html">ZConfig.h</a></div></div> <div class="ttc" id="group__ZYPP__BASE__LOGGER__MACROS_html_ga9423380a92639b296ea0a984ea7e1c6b"><div class="ttname"><a href="group__ZYPP__BASE__LOGGER__MACROS.html#ga9423380a92639b296ea0a984ea7e1c6b">WAR</a></div><div class="ttdeci">#define WAR</div><div class="ttdef"><b>Definition:</b> <a href="Logger_8h_source.html#l00080">Logger.h:80</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html"><div class="ttname"><a href="classzypp_1_1VendorAttr.html">zypp::VendorAttr</a></div><div class="ttdoc">Definition of vendor equivalence.</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8h_source.html#l00043">VendorAttr.h:43</a></div></div> <div class="ttc" id="namespacezypp_1_1str_html_adb668ecb122eb6de2d61fa3b3cbea555"><div class="ttname"><a href="namespacezypp_1_1str.html#adb668ecb122eb6de2d61fa3b3cbea555">zypp::str::toLower</a></div><div class="ttdeci">std::string toLower(const std::string &s)</div><div class="ttdoc">Return lowercase version of s.</div><div class="ttdef"><b>Definition:</b> <a href="String_8cc_source.html#l00175">String.cc:175</a></div></div> <div class="ttc" id="LogTools_8h_html"><div class="ttname"><a href="LogTools_8h.html">LogTools.h</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_aa347af47c4b7d5a8411a613fc2ecc126"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#aa347af47c4b7d5a8411a613fc2ecc126">zypp::VendorAttr::_addVendorList</a></div><div class="ttdeci">void _addVendorList(VendorList &) const</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8cc_source.html#l00151">VendorAttr.cc:151</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html">zypp::parser::IniDict</a></div><div class="ttdoc">Parses a INI file and offers its structure as a dictionary.</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8h_source.html#l00040">IniDict.h:40</a></div></div> <div class="ttc" id="namespacezypp_1_1filesystem_html_a424d384472de80e5cc48f5d5662cc859"><div class="ttname"><a href="namespacezypp_1_1filesystem.html#a424d384472de80e5cc48f5d5662cc859">zypp::filesystem::readdir</a></div><div class="ttdeci">int readdir(std::list< std::string > &retlist_r, const Pathname &path_r, bool dots_r)</div><div class="ttdoc">Return content of directory via retlist.</div><div class="ttdef"><b>Definition:</b> <a href="PathInfo_8cc_source.html#l00589">PathInfo.cc:589</a></div></div> <div class="ttc" id="PathInfo_8h_html"><div class="ttname"><a href="PathInfo_8h.html">PathInfo.h</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_a23a6fab30dab5730f3cb0cd55569ae26"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#a23a6fab30dab5730f3cb0cd55569ae26">zypp::VendorAttr::addVendorFile</a></div><div class="ttdeci">bool addVendorFile(const Pathname &filename) const</div><div class="ttdoc">Adding new equivalent vendors described in a file.</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8cc_source.html#l00193">VendorAttr.cc:193</a></div></div> <div class="ttc" id="classzypp_1_1filesystem_1_1PathInfo_html"><div class="ttname"><a href="classzypp_1_1filesystem_1_1PathInfo.html">zypp::filesystem::PathInfo</a></div><div class="ttdoc">Wrapper class for ::stat/::lstat.</div><div class="ttdef"><b>Definition:</b> <a href="PathInfo_8h_source.html#l00220">PathInfo.h:220</a></div></div> <div class="ttc" id="classzypp_1_1PoolItem_html"><div class="ttname"><a href="classzypp_1_1PoolItem.html">zypp::PoolItem</a></div><div class="ttdoc">Combining sat::Solvable and ResStatus.</div><div class="ttdef"><b>Definition:</b> <a href="PoolItem_8h_source.html#l00050">PoolItem.h:50</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_aae68485706e471f6073b2fb49dba0e09"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#aae68485706e471f6073b2fb49dba0e09">zypp::parser::IniDict::sectionsBegin</a></div><div class="ttdeci">section_const_iterator sectionsBegin() const</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8cc_source.html#l00094">IniDict.cc:94</a></div></div> <div class="ttc" id="classzypp_1_1parser_1_1IniDict_html_a734e6326f886c2fa198a4584700301a4"><div class="ttname"><a href="classzypp_1_1parser_1_1IniDict.html#a734e6326f886c2fa198a4584700301a4">zypp::parser::IniDict::entry_const_iterator</a></div><div class="ttdeci">EntrySet::const_iterator entry_const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="IniDict_8h_source.html#l00047">IniDict.h:47</a></div></div> <div class="ttc" id="classzypp_1_1VendorAttr_html_ae6df37d4a3081f9e1fb2745efb90d4d0"><div class="ttname"><a href="classzypp_1_1VendorAttr.html#ae6df37d4a3081f9e1fb2745efb90d4d0">zypp::VendorAttr::instance</a></div><div class="ttdeci">static const VendorAttr & instance()</div><div class="ttdoc">Singleton.</div><div class="ttdef"><b>Definition:</b> <a href="VendorAttr_8cc_source.html#l00121">VendorAttr.cc:121</a></div></div> <div class="ttc" id="classTarget__Ptr_html"><div class="ttname"><a href="classTarget__Ptr.html">Target_Ptr</a></div></div> <div class="ttc" id="classzypp_1_1filesystem_1_1Pathname_html"><div class="ttname"><a href="classzypp_1_1filesystem_1_1Pathname.html">zypp::filesystem::Pathname</a></div><div class="ttdoc">Pathname.</div><div class="ttdef"><b>Definition:</b> <a href="Pathname_8h_source.html#l00043">Pathname.h:43</a></div></div> <div class="ttc" id="namespacezypp_html"><div class="ttname"><a href="namespacezypp.html">zypp</a></div><div class="ttdoc">Easy-to use interface to the ZYPP dependency resolver.</div><div class="ttdef"><b>Definition:</b> <a href="CodePitfalls_8doc_source.html#l00001">CodePitfalls.doc:1</a></div></div> <div class="ttc" id="structzypp_1_1sat_1_1SolvableType_html_a78de3f4b41f0965829beaa28245a25dd"><div class="ttname"><a href="structzypp_1_1sat_1_1SolvableType.html#a78de3f4b41f0965829beaa28245a25dd">zypp::sat::SolvableType::satSolvable</a></div><div class="ttdeci">Solvable satSolvable() const</div><div class="ttdoc">Return the corresponding sat::Solvable.</div><div class="ttdef"><b>Definition:</b> <a href="SolvableType_8h_source.html#l00057">SolvableType.h:57</a></div></div> <div class="ttc" id="namespacezypp_1_1str_html_a5e64cab973a815bfc5c3811b5086a2b9"><div class="ttname"><a href="namespacezypp_1_1str.html#a5e64cab973a815bfc5c3811b5086a2b9">zypp::str::hasPrefix</a></div><div class="ttdeci">bool hasPrefix(const C_Str &str_r, const C_Str &prefix_r)</div><div class="ttdoc">Return whether str_r has prefix prefix_r.</div><div class="ttdef"><b>Definition:</b> <a href="String_8h_source.html#l01020">String.h:1020</a></div></div> <div class="ttc" id="String_8h_html"><div class="ttname"><a href="String_8h.html">String.h</a></div></div> <div class="ttc" id="ZYppFactory_8h_html"><div class="ttname"><a href="ZYppFactory_8h.html">ZYppFactory.h</a></div></div> </div><!-- fragment --></div><!-- contents --> </div><!-- doc-content --> <!-- start footer part --> <div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> <ul> <li class="navelem"><a class="el" href="dir_c187b43c6f283d9fc95eff3f44ce072a.html">zypp</a></li><li class="navelem"><a class="el" href="VendorAttr_8cc.html">VendorAttr.cc</a></li> <li class="footer">Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.15 </li> </ul> </div> </body> </html>