呼び出し形式
void charsetmanager_converter_convert( charsetmanager_converter_property_ptr ccpp, const char * indata, int indatasize, int * indata_processed, char * outdata, int outdatasize, int * outdata_processed, charsetmanager_converter_stream_status_ptr cssp, charsetmanager_converter_error_status * error_status, int * error );
機能説明
コード変換プロパティ情報に格納されたコード変換ポリシーに従って、コード変換を行います。
パラメタ
コード変換プロパティ情報格納域のポインタを指定します。コード変換開始関数(“4.1.1 charsetmanager_converter_open”)の復帰値を指定します。
変換元のデータの先頭を指すポインタを指定します。
indataの長さ(バイト数)を指定します。
処理済み変換元データの長さ(バイト数)を返却します。
変換先データの格納先の先頭を指すポインタを指定します。
outdataの格納先のバッファサイズを指定します。
処理済み変換先データの長さ(バイト数)を返却します。
ストリーム情報格納域のポインタを指定します。ストリーム情報生成関数(“4.1.5 charsetmanager_converter_stream_open_status”)の復帰値を指定します。
詳細エラー情報を返却する領域のポインタを指定します。
返却されるエラー詳細情報は以下のとおりです。
typedef struct { int status; /* 結果ステータス */ int errorStringIndex; /* 不正コードの位置 */ int errorStringSize; /* 不正コードの文字コード長 */ } charsetmanager_converter_error_status;
statusに設定される値と意味、そして、各々の場合に設定されるerrorStringIndex、errorStringSizeは以下の通りです。
値 | 意味 |
---|---|
CHARSETMANAGER_CONVERTER_STATUS_COMPLETE (0) | 変換処理が正常に終了しました。 |
CHARSETMANAGER_CONVERTER_STATUS_STOPPED_BY_ENCODINGERROR (-1) | 入力文字列中の不正エンコードにより、変換処理が中断されました。不正エンコードの位置、サイズはerrorStringIndex、errorStringSizeに設定されます。 |
CHARSETMANAGER_CONVERTER_STATUS_STOPPED_BY_INVALIDCHAR (-2) | 入力文字列中の無効文字により、変換処理が中断されました。無効文字の位置、サイズはerrorStringIndex、errorStringSizeに設定されます。 |
CHARSETMANAGER_CONVERTER_STATUS_STOPPED_BY_INCONVERTIBLECHAR (-3) | 入力文字列中の変換不能文字により、変換処理が中断されました。変換不能文字の位置、サイズはerrorStringIndex、errorStringSizeに設定されます。 |
CHARSETMANAGER_CONVERTER_STATUS_ABORTED_BY_ERROR (-128) | 何らかのエラーで処理が中断されました。原因についてはエラー番号を参照してください。 |
CHARSETMANAGER_CONVERTER_STATUS_OUTPUT_BUFFER_EXHAUSTED (1) | 出力文字列の領域不足により、変換処理が中断されました。 |
CHARSETMANAGER_CONVERTER_STATUS_UNDECODABLE_AT_END_OF_BUFFER (2) | 入力文字列の最後にデコードできない文字が残存しています。バッファリングしてコード変換をしている場合は、残存しているバイト列を次回変換時の先頭にまわしてください。 |
CHARSETMANAGER_CONVERTER_STATUS_UNSPECIFIED_AT_END_OF_BUFFER (3) | 入力文字列の最後に特定できない文字が残存しています。バッファリングしてコード変換をしている場合は、残存しているバイト列を次回変換時の先頭にまわしてください。 |
エラー番号を返却する領域のポインタを指定します。本ポインタがNULLの場合、処理を中断します。関数が正常終了した場合には0が返却され、エラー終了時には1以上の詳細エラー番号が返却されます。エラー番号については、“表4.1 エラー番号一覧”を参照してください。
不正エンコーディング、無効文字等が原因で変換処理が中断された場合には、その情報はerror_statusに出力され、errorとしては0が出力されます。
復帰値
ありません。