前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0

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

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

図 14.1. リングバッファの概念図

リングバッファの概念図

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

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

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

例 14.10. リングバッファの使い方

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"