[SystemC] circular_buffer

きっかけは Forumにて、


SystemC 2.3 - Bug in "void circular_buffer::resize( int size )"


このスレッドを見るまで、circular_bufferっていうものがあるのを知らなかった。。。


IEEE1666にも無いので!???
ということで、簡単に書いてみたらこんな感じ。

  • サンプルコード

  •  1|#include <systemc.h>
     2|#include <tlm.h>
     3|
     4|int sc_main(int argc, char *argv[]) {
     5|
     6|  tlm::circular_buffer<int> c_buf(10);
     7|
     8|  for (int i = 0; i < c_buf.size(); i++) {
     9|    c_buf.write(i);
    10|  }
    11|  cout << "c_buf = " << c_buf.read() << endl;
    12|  cout << "c_buf = " << c_buf.read() << endl;
    13|  cout << "c_buf = " << c_buf.read() << endl;
    14|  cout << "c_buf = " << c_buf.read() << endl;
    15|  cout << "c_buf = " << c_buf.read() << endl;
    16|  cout << "c_buf = " << c_buf.read() << endl;
    17|
    18|  c_buf.resize(3);
    19|
    20|  for (int i = 0; i < c_buf.size(); i++) {
    21|     cout << "c_buf(" << i << ") = " << c_buf.read() << endl;
    22|  }
    23|
    24|  c_buf.resize(10);
    25|
    26|  for (int i = 0; i < c_buf.size(); i++) {
    27|     cout << "c_buf(" << i << ") = " << c_buf.read() << endl;
    28|  }
    29|
    30|  return     0;
    31|}
  • 実行結果

  •              SystemC 2.3.0-ASI --- Mar 15 2013 12:59:30
            Copyright (c) 1996-2012 by all Contributors,
            ALL RIGHTS RESERVED
    
    c_buf = 0
    c_buf = 1
    c_buf = 2
    c_buf = 3
    c_buf = 4
    c_buf = 5
    c_buf(0) = 6
    c_buf(1) = 7
    c_buf(2) = 8
    c_buf(0) = 0
    c_buf(1) = 1
    c_buf(2) = 2
    c_buf(3) = 3
    c_buf(4) = 4
    c_buf(5) = 5
    c_buf(6) = 6
    c_buf(7) = 7
    c_buf(8) = 8
    c_buf(9) = 9
    

ライブラリ修正しても、この結果なので合っているのか分からなかった。
最後の 10個はどうなんでしょうね。。。
Issue 管理しているURLどこだろ?興味ある


関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数