⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timeseries_8h-source.html

📁 俄罗斯牛人KK的作品,著名的ORDBMS,这里上传最新的3.39版本源代码.希望了解对象关系数据库的同好,请不要错过.
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00490                  }00491                  u[r] = data;00492                  blocks.update();00493                  <span class="keywordflow">return</span>;00494              }00495              blocks-&gt;elements.resize(n + minElementsInBlock &lt; maxElementsInBlock ? n + minElementsInBlock : maxElementsInBlock);00496          }00497          T* u = blocks-&gt;elements.update();00498          <span class="keywordflow">for</span> (i = n; i &gt; r; i--) { 00499              u[i] = u[i-1];00500          }00501          u[r] = data;00502          blocks-&gt;used += 1;00503          blocks.update();00504      }00505 00506      <a class="code" href="classdbDatabase.html">dbDatabase</a>&amp; db;00507      <span class="keywordtype">int</span>         maxElementsInBlock;00508      <span class="keywordtype">int</span>         minElementsInBlock;00509      time_t      maxBlockTimeInterval;     00510      <a class="code" href="classdbQuery.html">dbQuery</a>     selectBlock;00511      <a class="code" href="classdbQuery.html">dbQuery</a>     selectBlockReverse; 00512 };00513     00514 00518 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;<a name="l00519"></a><a class="code" href="classdbTimeSeriesIterator.html">00519</a> <span class="keyword">class </span><a class="code" href="classdbTimeSeriesIterator.html">dbTimeSeriesIterator</a> { 00520   <span class="keyword">public</span>:<a name="l00528"></a><a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora0">00528</a>     <span class="keywordtype">void</span> <a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora0">start</a>(<a class="code" href="classdbTimeSeriesProcessor.html">dbTimeSeriesProcessor&lt;T&gt;</a>* processor, oid_t oid, time_t from, time_t till) { 00529         first = pos = -1;00530         this-&gt;till = till;00531         <span class="keywordflow">if</span> (processor-&gt;<a class="code" href="classdbTimeSeriesProcessor.html#dbTimeSeriesProcessora14">_openIteratorCursor</a>(blocks, oid, from, till)) { 00532             <span class="keywordflow">do</span> { 00533                 <span class="keywordtype">int</span> n = blocks-&gt;used;00534                 T <span class="keyword">const</span>* e =  blocks-&gt;elements.<a class="code" href="classdbCursor.html#dbCursora2">get</a>();00535                 <span class="keywordtype">int</span> l = 0, r = n;00536                 <span class="keywordflow">while</span> (l &lt; r)  {00537                     <span class="keywordtype">int</span> i = (l+r) &gt;&gt; 1;00538                     <span class="keywordflow">if</span> (from &gt; e[i].time()) { 00539                         l = i+1;00540                     } <span class="keywordflow">else</span> { 00541                         r = i;00542                     }00543                 }00544                 assert(l == r &amp;&amp; (l == n || e[l].time() &gt;= from)); 00545                 <span class="keywordflow">if</span> (l &lt; n) { 00546                     <span class="keywordflow">if</span> (e[l].time() &lt;= till) {00547                         first = pos = l;00548                     }00549                     <span class="keywordflow">return</span>;00550                 }00551             } <span class="keywordflow">while</span> (blocks.<a class="code" href="classdbCursor.html#dbCursora3">next</a>());00552         }        00553     }00554             <a name="l00559"></a><a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora1">00559</a>     <span class="keywordtype">bool</span> <a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora1">current</a>(T&amp; elem) { 00560         <span class="keywordflow">if</span> (pos &gt;= 0) { 00561             elem = blocks-&gt;elements[pos];00562             <span class="keywordflow">return</span> <span class="keyword">true</span>;00563         }00564         <span class="keywordflow">return</span> <span class="keyword">false</span>;00565     }00566     <a name="l00571"></a><a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora2">00571</a>     <span class="keywordtype">bool</span> <a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora2">next</a>() { 00572         <span class="keywordflow">if</span> (pos &gt;= 0) { 00573             <span class="keywordflow">if</span> (++pos == blocks-&gt;used) { 00574                 <span class="keywordflow">if</span> (!blocks.<a class="code" href="classdbCursor.html#dbCursora3">next</a>()) { 00575                     pos = -1;00576                     <span class="keywordflow">return</span> <span class="keyword">false</span>;00577                 }00578                 pos = 0;00579             }00580             <span class="keywordflow">if</span> (blocks-&gt;elements[pos].time() &lt;= till) {00581                 <span class="keywordflow">return</span> <span class="keyword">true</span>;00582             }00583             pos = -1;00584         }00585         <span class="keywordflow">return</span> <span class="keyword">false</span>;00586     }00587 <a name="l00591"></a><a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora3">00591</a>     <span class="keywordtype">void</span> <a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora3">reset</a>() { 00592         blocks.<a class="code" href="classdbCursor.html#dbCursora5">first</a>();00593         pos = first;00594     }00595     <a name="l00600"></a><a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora4">00600</a>     <a class="code" href="classdbTimeSeriesIterator.html#dbTimeSeriesIteratora4">dbTimeSeriesIterator</a>() {00601         first = pos = -1;00602     }00603   <span class="keyword">private</span>:00604     <a class="code" href="classdbCursor.html">dbCursor&lt; dbTimeSeriesBlock&lt;T&gt;</a> &gt; blocks;00605     <span class="keywordtype">int</span>                              pos;00606     <span class="keywordtype">int</span>                              first;00607     time_t                           till;00608 };00609     00613 <span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt;<a name="l00614"></a><a class="code" href="classdbTimeSeriesReverseIterator.html">00614</a> <span class="keyword">class </span><a class="code" href="classdbTimeSeriesReverseIterator.html">dbTimeSeriesReverseIterator</a> { 00615   <span class="keyword">public</span>:<a name="l00623"></a><a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora0">00623</a>     <span class="keywordtype">void</span> <a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora0">start</a>(<a class="code" href="classdbTimeSeriesProcessor.html">dbTimeSeriesProcessor&lt;T&gt;</a>* processor, oid_t oid, time_t from, time_t till) { 00624         last = pos = -1;00625         this-&gt;from = from;00626         <span class="keywordflow">if</span> (processor-&gt;<a class="code" href="classdbTimeSeriesProcessor.html#dbTimeSeriesProcessora14">_openIteratorCursor</a>(blocks, oid, from, till)) { 00627             <span class="keywordflow">do</span> { 00628                 <span class="keywordtype">int</span> n = blocks-&gt;used;00629                 blocks.<a class="code" href="classdbCursor.html#dbCursora6">last</a>();00630                 T <span class="keyword">const</span>* e =  blocks-&gt;elements.<a class="code" href="classdbCursor.html#dbCursora2">get</a>();00631                 <span class="keywordtype">int</span> l = 0, r = n;00632                 <span class="keywordflow">while</span> (l &lt; r)  {00633                     <span class="keywordtype">int</span> i = (l+r) &gt;&gt; 1;00634                     <span class="keywordflow">if</span> (till &gt;= e[i].time()) { 00635                         l = i+1;00636                     } <span class="keywordflow">else</span> { 00637                         r = i;00638                     }00639                 }00640                 assert(l == r &amp;&amp; (l == n || e[l].time() &gt; till)); 00641                 <span class="keywordflow">if</span> (l &gt; 0) {00642                     <span class="keywordflow">if</span> (e[l-1].time() &gt;= from) {00643                         last = pos = l-1;00644                     }00645                     <span class="keywordflow">return</span>;00646                 }00647             } <span class="keywordflow">while</span> (blocks.<a class="code" href="classdbCursor.html#dbCursora4">prev</a>());00648         }        00649     }00650             <a name="l00655"></a><a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora1">00655</a>     <span class="keywordtype">bool</span> <a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora1">current</a>(T&amp; elem) { 00656         <span class="keywordflow">if</span> (pos &gt;= 0) { 00657             elem = blocks-&gt;elements[pos];00658             <span class="keywordflow">return</span> <span class="keyword">true</span>;00659         }00660         <span class="keywordflow">return</span> <span class="keyword">false</span>;00661     }00662     <a name="l00667"></a><a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora2">00667</a>     <span class="keywordtype">bool</span> <a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora2">next</a>() { 00668         <span class="keywordflow">if</span> (pos &gt;= 0) { 00669             <span class="keywordflow">if</span> (--pos &lt; 0) {00670                 <span class="keywordflow">if</span> (!blocks.<a class="code" href="classdbCursor.html#dbCursora4">prev</a>()) { 00671                     <span class="keywordflow">return</span> <span class="keyword">false</span>;00672                 }00673                 pos = blocks-&gt;used-1;00674             }00675             <span class="keywordflow">if</span> (blocks-&gt;elements[pos].time() &gt;= from) {00676                 <span class="keywordflow">return</span> <span class="keyword">true</span>;00677             }00678             pos = -1;00679         }00680         <span class="keywordflow">return</span> <span class="keyword">false</span>;00681     }00682 <a name="l00686"></a><a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora3">00686</a>     <span class="keywordtype">void</span> <a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora3">reset</a>() { 00687         blocks.<a class="code" href="classdbCursor.html#dbCursora6">last</a>();00688         pos = last;00689     }00690     <a name="l00695"></a><a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora4">00695</a>     <a class="code" href="classdbTimeSeriesReverseIterator.html#dbTimeSeriesReverseIteratora4">dbTimeSeriesReverseIterator</a>() {00696         last = pos = -1;00697     }00698   <span class="keyword">private</span>:00699     <a class="code" href="classdbCursor.html">dbCursor&lt; dbTimeSeriesBlock&lt;T&gt;</a> &gt; blocks;00700     <span class="keywordtype">int</span>                              pos;00701     <span class="keywordtype">int</span>                              last;00702     time_t                           from;00703 };00704     00705 END_FASTDB_NAMESPACE00706 00707 <span class="preprocessor">#endif</span></pre></div><hr><address style="align: right;"><small>Generated on Mon Oct 23 13:23:58 2006 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.18 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -