📄 timeseries_8h-source.html
字号:
00490 }00491 u[r] = data;00492 blocks.update();00493 <span class="keywordflow">return</span>;00494 }00495 blocks->elements.resize(n + minElementsInBlock < maxElementsInBlock ? n + minElementsInBlock : maxElementsInBlock);00496 }00497 T* u = blocks->elements.update();00498 <span class="keywordflow">for</span> (i = n; i > r; i--) { 00499 u[i] = u[i-1];00500 }00501 u[r] = data;00502 blocks->used += 1;00503 blocks.update();00504 }00505 00506 <a class="code" href="classdbDatabase.html">dbDatabase</a>& 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><<span class="keyword">class</span> T><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<T></a>* processor, oid_t oid, time_t from, time_t till) { 00529 first = pos = -1;00530 this->till = till;00531 <span class="keywordflow">if</span> (processor-><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->used;00534 T <span class="keyword">const</span>* e = blocks->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 < r) {00537 <span class="keywordtype">int</span> i = (l+r) >> 1;00538 <span class="keywordflow">if</span> (from > e[i].time()) { 00539 l = i+1;00540 } <span class="keywordflow">else</span> { 00541 r = i;00542 }00543 }00544 assert(l == r && (l == n || e[l].time() >= from)); 00545 <span class="keywordflow">if</span> (l < n) { 00546 <span class="keywordflow">if</span> (e[l].time() <= 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& elem) { 00560 <span class="keywordflow">if</span> (pos >= 0) { 00561 elem = blocks->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 >= 0) { 00573 <span class="keywordflow">if</span> (++pos == blocks->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->elements[pos].time() <= 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< dbTimeSeriesBlock<T></a> > 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><<span class="keyword">class</span> T><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<T></a>* processor, oid_t oid, time_t from, time_t till) { 00624 last = pos = -1;00625 this->from = from;00626 <span class="keywordflow">if</span> (processor-><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->used;00629 blocks.<a class="code" href="classdbCursor.html#dbCursora6">last</a>();00630 T <span class="keyword">const</span>* e = blocks->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 < r) {00633 <span class="keywordtype">int</span> i = (l+r) >> 1;00634 <span class="keywordflow">if</span> (till >= e[i].time()) { 00635 l = i+1;00636 } <span class="keywordflow">else</span> { 00637 r = i;00638 }00639 }00640 assert(l == r && (l == n || e[l].time() > till)); 00641 <span class="keywordflow">if</span> (l > 0) {00642 <span class="keywordflow">if</span> (e[l-1].time() >= 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& elem) { 00656 <span class="keywordflow">if</span> (pos >= 0) { 00657 elem = blocks->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 >= 0) { 00669 <span class="keywordflow">if</span> (--pos < 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->used-1;00674 }00675 <span class="keywordflow">if</span> (blocks->elements[pos].time() >= 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< dbTimeSeriesBlock<T></a> > 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 + -