package com_maroontress_libcgi_util

class Tub

#define com_maroontress_libcgi_util_Tub_IMPORT
#include <com/maroontress/libcgi/util/Tub.h>
バイトストリームを貯めるためのタブです。

貯めたバイトストリームをバイト配列として取り出すことができます。


Struct Summary

struct Tub
          タブの実装となる構造体です。

Method Summary

 struct Tub * Tub_create(void)
          タブのインスタンスを生成します。
 int Tub_writeCString(struct Tubtub, const char * str)
          タブに文字列を書きます。
 int Tub_writeByte(struct Tubtub, unsigned int byte)
          タブに符号無し8ビット整数を書きます。
 int Tub_writeU16(struct Tubtub, unsigned int u16)
          タブに符号無し16ビット整数を書きます。
 int Tub_writeU32(struct Tubtub, unsigned int u32)
          タブに符号無し32ビット整数を書きます。
 int Tub_write(struct Tubtub, const void * data, size_t size)
          タブにデータを書きます。
 size_t Tub_getSize(struct Tubtub)
          タブのサイズを取得します。
 void Tub_setSize(struct Tubtub, size_t size)
          タブのサイズを設定します。
 void Tub_free(struct Tubtub)
          タブのインスタンスを解放します。
 void Tub_clear(struct Tubtub)
          タブの内容を消去します。
 void * Tub_createByteArray(struct Tubtub)
          タブの内容をもつバイト配列を生成します。
 int Tub_hasError(struct Tubtub)
          タブのエラー状態を取得します。

Struct Detail

struct Tub

タブの実装となる構造体です。

実装の詳細は隠蔽されています。


Method Detail

Tub_create

struct Tub * Tub_create( void)
タブのインスタンスを生成します。

生成したインスタンスは空の状態です。

戻り値が参照するオブジェクトはTub_free()で解放しなければなりません。

生成できなかった場合はNULLを返します。

Returns:
タブのインスタンス、またはNULL

Tub_writeCString

int Tub_writeCString( struct Tubtub,
const char * str)
タブに文字列を書きます。

文字列strtubに書きます(終端のヌル文字は除きます)。

書き込みに失敗した場合はtubにエラー状態を設定し、−1を返します。その場合、途中までのデータがタブに書かれたかもしれません。

次の呼び出しと同様です。

Tub_write(tub, str, strlen(str));
Parameters:
tub - タブのインスタンス
str - 文字列
Returns:
成功した場合は0、そうでなければ−1

Tub_writeByte

int Tub_writeByte( struct Tubtub,
unsigned int byte)
タブに符号無し8ビット整数を書きます。

byteの値をtubに書きます。

書き込みに失敗した場合はtubにエラー状態を設定し、−1を返します。

Parameters:
tub - タブのインスタンス
byte - 符号無し8ビット整数
Returns:
成功した場合は0、そうでなければ−1

Tub_writeU16

int Tub_writeU16( struct Tubtub,
unsigned int u16)
タブに符号無し16ビット整数を書きます。

u16の値をネットワークバイトオーダでtubに書きます。

書き込みに失敗した場合はtubにエラー状態を設定し、−1を返します。その場合、途中までのデータがタブに書かれたかもしれません。

Parameters:
tub - タブのインスタンス
u16 - 符号無し16ビット整数
Returns:
成功した場合は0、そうでなければ−1

Tub_writeU32

int Tub_writeU32( struct Tubtub,
unsigned int u32)
タブに符号無し32ビット整数を書きます。

u32の値をネットワークバイトオーダでtubに書きます。

書き込みに失敗した場合はtubにエラー状態を設定し、−1を返します。その場合、途中までのデータがタブに書かれたかもしれません。

Parameters:
tub - タブのインスタンス
u32 - 符号無し32ビット整数
Returns:
成功した場合は0、そうでなければ−1

Tub_write

int Tub_write( struct Tubtub,
const void * data,
size_t size)
タブにデータを書きます。

dataが指すポインタからsizeバイトのデータをtubに書きます。

書き込みに失敗した場合はtubにエラー状態を設定し、−1を返します。その場合、途中までのデータがタブに書かれたかもしれません。

Parameters:
tub - タブのインスタンス
data - データの先頭を指すポインタ
size - データのサイズ
Returns:
成功した場合は0、そうでなければ−1

Tub_getSize

size_t Tub_getSize( struct Tubtub)
タブのサイズを取得します。
Parameters:
tub - タブのインスタンス
Returns:
タブの内容のサイズ

Tub_setSize

void Tub_setSize( struct Tubtub,
size_t size)
タブのサイズを設定します。

このメソッドはタブの内容を切り捨てます。タブの実際のサイズよりもsizeが小さくなければなりません。

呼び出しの前後で、タブの内容の先頭からsizeバイトは変化しません。

タブの実際のサイズよりもsizeが大きい場合はなにもしません。このとき、タブのエラー状態は変化しません。

Parameters:
tub - タブのインスタンス
size - タブの内容のサイズ

Tub_free

void Tub_free( struct Tubtub)
タブのインスタンスを解放します。

tubNULLのときはなにもしません。呼び出し後はtubが参照するオブジェクトを参照してはなりません。

Parameters:
tub - タブのインスタンス

Tub_clear

void Tub_clear( struct Tubtub)
タブの内容を消去します。

エラー状態もクリアします。

Parameters:
tub - タブのインスタンス

Tub_createByteArray

void * Tub_createByteArray( struct Tubtub)
タブの内容をもつバイト配列を生成します。

malloc(3)で領域を確保し、タブの内容をその領域にコピーします。戻り値が参照するオブジェクトはfree(3)で解放しなければなりません。

バイト配列を生成できなかった場合はNULLを返します。このとき、タブのエラー状態は変化しません。

呼び出しの前後でタブの内容は変化しません。

Parameters:
tub - タブのインスタンス
Returns:
タブの内容のバイト配列、またはNULL

Tub_hasError

int Tub_hasError( struct Tubtub)
タブのエラー状態を取得します。
Parameters:
tub - タブのインスタンス
Returns:
エラーが発生した場合は非0、そうでなければ0