定数

 
[メニュー]
SJ_LIN_~
データライン
 
解説

チャンクを供給するラインを意味します。

定数説明
SJ_LIN_DATAデータライン(有効なデータを取り出すための識別子)
SJ_LIN_FREEフリーライン(使用済みデータを取り出すための識別子)
 
[メニュー]
SJ_ERR_~
エラーコード
 
解説

SJ_ERR_OKの値は0で、その他のエラーコードは負の値となります。

定数説明
SJ_ERR_OK正常終了
SJ_ERR_FATAL致命的なエラー(通常起きない)
SJ_ERR_INTERNAL内部エラー(通常起きない)
SJ_ERR_PRMパラメータエラー
 
[メニュー]
SJUNI_MODE_~
結合モード
 
解説

汎用型ストリームジョイントを生成する時のパラメータです。SJ_PutChunk関数でデータチャンクを供給したときに結合するか否かを決めます。

定数説明
SJUNI_MODE_SEPAデータチャンクを結合しない
SJUNI_MODE_JOINデータチャンクを結合する
 
 

処理マクロ

 
[メニュー]
SJUNI_CALC_WORK
作業領域の計算
 
書式
int SJUNI_CALC_WORK(nck);
 
入力

nck : チャンク数

 
出力

なし

 
戻り値

作業領域の大きさ [byte]

 
説明

汎用型ストリームジョイントの作業領域の大きさを計算します。

 
 

データ型

 
[メニュー]
UUID
ライブラリ識別子
 
解説

空間的にも時間的にも一意に定義されるライブラリ識別子。Visual C++に付属のUUIDGEN.EXEなどを実行するとコードが得られるので、これを以下のメンバーに従って各ライブラリ内で定義しています。

メンバー型名説明
Data1Uint32ID1
Data2Uint16ID2
Data3Uint16ID3
Data4[8]Uint8ID4
 
用例

C:\>uuidgen

211b2800-a6a9-11d1-8f3f-0060089448bc

#define SmD_LID { \

0x211b2800, 0xa6a9, 0x11d1, 0x8f, 0x3f, 0x00, 0x60, 0x08, 0x94, 0x48, 0xbc\

}\

 
[メニュー]
SJ
ストリームジョイントハンドル
 
解説

ストリームジョイントを制御するためのハンドルです。

 
[メニュー]
SJCK
データチャンク
 
解説

SJを用いてデータを制御する際に使用する構造体。

メンバー型名説明
dataSint8 *開始アドレス
lenSint32バイト数
 
 

関数

 
[メニュー]
SJ_Destroy
ストリームジョイントの消去
 
書式
void SJ_Destroy(SJ sj);
 
入力

sj :ストリームジョイント

 
出力

なし

 
戻り値

なし

 
説明

ストリームジョイントを消去する。

 
[メニュー]
SJ_Reset
ストリームジョイントのリセット
 
書式
void SJ_Reset(SJ sj);
 
入力

sj :ストリームジョイント

 
出力

なし

 
戻り値

なし

 
説明

ストリームジョイントをリセットする。

 
[メニュー]
SJ_GetChunk
データチャンクの取得
 
書式
void SJ_GetChunk(SJ sj, Sint32 id, Sint32 nbyte, SJCK *ck);
 
入力

sj :ストリームジョイント

id :チャンク入出力ID(SJ_LIN_DATASJ_LIN_FREE)

nbyte :要求データ量(単位:バイト)

 
出力

ck :データチャンク(データの先頭アドレス/サイズ)

 
戻り値

なし

 
説明

バッファに対して書き込みや読み出しを行う時に、ストリームジョイントから読み書き可能な領域(データチャンク)を取得する。

 
[メニュー]
SJ_UngetChunk
データチャンクを戻す
 
書式
void SJ_UngetChunk(SJ sj, Sint32 id, SJCK *ck);
 
入力

sj :ストリームジョイント

id :チャンク入出力ID(SJ_LIN_DATASJ_LIN_FREE)

ck :データチャンク(データの先頭アドレス/サイズ)

 
出力

なし

 
戻り値

なし

 
説明

取得したデータチャンクに対して、書き込みや読み出しを実際に行えなかった時に、読み書きできなかった領域(データチャンク)をストリームジョイントに戻す。

 
[メニュー]
SJ_PutChunk
データチャンクを渡す
 
書式
void SJ_PutChunk(SJ sj, Sint32 id, SJCK *ck);
 
入力

sj :ストリームジョイント

id :チャンク入出力ID(SJ_LIN_DATASJ_LIN_FREE)

ck :データチャンク(データの先頭アドレス/サイズ)

 
出力

なし

 
戻り値

なし

 
説明

取得したデータチャンクに対して、書き込みや読み出しを実際に行った時に、読み書きできた領域(データチャンク)をストリームジョイントに渡す。

 
[メニュー]
SJ_GetNumData
読み書き可能なデータ容量の取得
 
書式
Sint32 SJ_GetNumData(SJ sj, Sint32 id);
 
入力

sj :ストリームジョイント

id :チャンク入出力ID(SJ_LIN_DATASJ_LIN_FREE)

 
出力

なし

 
戻り値

読み書き可能なデータ容量(単位:バイト)

      ・書き込む場合:空き容量

      ・読み出す場合:データ容量

 
説明

ストリームジョイントにデータを書き込む場合は、バッファの空き容量を取得し、読み出す場合は、バッファのデータ容量を取得する。

 
[メニュー]
SJ_GetUuid
ストリームジョイントUUIDの取得
 
書式
UUID *SJ_GetUuid(SJ sj);
 
入力

sj :ストリームジョイント

 
出力

なし

 
戻り値

ストリームジョイントのUUID

 
説明

ストリームジョイントUUIDを取得する。

 
[メニュー]
SJ_EntryErrFunc
エラー処理関数の登録
 
書式
void SJ_EntryErrFunc(SJ sj, void (*func)(void *obj, Sint32 ecode), void *obj);
 
入力

sj :ストリームジョイント

func:エラー発生時に呼び出される関数

obj :func関数の第1引数

 
出力

なし

 
戻り値

なし

 
説明

エラーが発生した時に呼び出される関数を登録する。

funcにNULLを設定すると、エラー処理関数が未登録になる。

 
[メニュー]
SJ_SplitChunk
データチャンクの分解
 
書式
void SJ_SplitChunk(SJCK *ck, Sint32 nbyte, SJCK *ck1, SJCK *ck2);
 
入力

ck :分解対象となるデータチャンク

nbyte :ck1 のサイズ(単位:バイト)

 
出力

ck1 :分解された前半のデータチャンク

ck2 :分解された後半のデータチャンク

 
戻り値

データチャンクck2のサイズ(単位:バイト)

 
説明

データチャンクckを2つのデータチャンクck1とck2に分解する。

ck1は、nbyte の長さになる。ck1のサイズがnbyteに満たない場合は分解されず、ck1にckが代入され、ck2のサイズは0となる。ck1とckは、同じものを指定しても良い。

 
用例

SJ_SplitChunk(&ck, 100, &ck, &ck2);

 
[メニュー]
SJRBF_Init
初期化
 
書式
void SJRBF_Init(void);
 
入力

なし

 
出力

なし

 
戻り値

なし

 
説明

リングバッファタイプのストリームジョイントを初期化する。

 
[メニュー]
SJRBF_Create
ストリームジョイントの生成
 
書式
SJ SJRBF_Create(Sint8 *buf, Sint32 bsize, Sint32 xsize);
 
入力

buf :リングバッファ

bsize :リングバッファのサイズ(単位:バイト)

xsize :エキストラバッファサイズ(単位:バイト)

 
出力

なし

 
戻り値

ストリームジョイント

 
説明

リングバッファタイプのストリームジョイントを生成する。

引数bufには、bsize+xsizeで確保したバッファを指定します。

 
[メニュー]
SJMEM_Init
初期化
 
書式
void SJMEM_Init(void);
 
入力

なし

 
出力

なし

 
戻り値

なし

 
説明

メモリタイプのストリームジョイントを初期化する。

 
[メニュー]
SJMEM_Create
ストリームジョイントの生成
 
書式
SJ SJMEM_Create(Sint8 *data, Sint32 bsize);
 
入力

data :データ領域

bsize :データサイズ(単位:バイト)

 
出力

なし

 
戻り値

ストリームジョイント

 
説明

メモリタイプのストリームジョイントを生成する。

 
[メニュー]
SJUNI_Init
初期化
 
書式
void SJUNI_Init(void);
 
入力

なし

 
出力

なし

 
戻り値

なし

 
説明

汎用タイプのストリームジョイントを初期化する。

 
[メニュー]
SJUNI_Create
ストリームジョイントの生成
 
書式
SJ SJUNI_Create(Sint32 mode, Sint8 *work, Sint32 wksize);
 
入力

mode :結合モード (SJUNI_MODE_SEPA, SJUNI_MODE_JOIN)

work :作業領域

wksize :作業領域のサイズ

 
出力

なし

 
戻り値

ストリームジョイント

 
説明

汎用タイプのストリームジョイントを生成する。

データチャンクを分離したまま扱う場合は、SJUNI_MODE_SEPAを指定し、データチャンクを結合する場合は、SJUNI_MODE_JOINを指定する。

ストリームジョイントの扱う最大データチャンク数より作業領域を確保し、workとwksizeに引数として渡す。

 
用例

#define MAX_NCK (256)

Sint8 work[SJUNI_CALC_WORK(MAX_NCK)];

sj = SJUNI_Create(SJUNI_MODE_SEPA, work, sizeof(work));


Copyright (c) 2001-2006 CRI Middleware Co.,LTD.