前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0

11.3. リング バッファ クラス

SFXRingBuffer クラスは、リング バッファを表すクラスです。

リングバッファとは、 (概念上) 環状に配置されたメモリのことです。その上を右回りに進む書き込みポインタと読み取りポインタがあります。

リングバッファにデータを書き込むと、書き込みポインタが進みます。読み取りポインタは、書き込みポインタで書き込まれた位置まで読み取ることができます。

書き込み操作により読み取りポインタを通り越すことはできません。

Byte data1[] = {'1', '2', '3', '4', '5', '6', '7', '8'};
Byte data2[] = {'9', 'a', 'b', 'c', 'd', 'e'};
SFXRingBuffer ring;
SFXBuffer buffer;

// リング バッファのサイズを 12 バイトに設定

ring.Allocate(12);

// 8 バイトのデータを書き込み

ring.Write(data1, sizeof(data1));

// 読み出し用のバッファを確保

buffer.SetSize(4);

// 4 バイト読み出し

ring.Read(&buffer); // buffer は "1234" となる

// 6 バイトのデータを書き込み

ring.Write(data2, sizeof(data2));

// 読み出し用のバッファを確保

buffer.SetSize(10);

// 10 バイト読み出し

ring.Read(&buffer); // buffer は "56789abcde" となる