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

📄 timeseries_8h-source.html

📁 最新版本!fastdb是高效的内存数据库系统
💻 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_NAMESPACE
00706 
00707 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Feb 14 12:42:30 2008 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 + -