Main Page   Modules   Data Structures   Globals   Appendix  

構造体 MConverter
[コード変換]

コード変換に用いられる構造体. [詳細]


変数

int lenient
int last_block
unsigned at_most
int nchars
int nbytes
union {
   void *   ptr
   double   dbl
   char   c [256]
status
void * internal_info


説明

コード変換に用いられる構造体。最初の3つのメンバは変換を制御する。


構造体

int MConverter::lenient
 

厳密な変換が必要でない場合に値を 0 以外にする。デフォルトでは、 変換は厳密である。

変換が厳密とは、デコードの際には最初の不正なバイトでコンバータ が止まること、エンコードの際には変換されるコード系でサポートさ れない最初の文字でコンバータが止まることを指す。これらの場合、 MConverter->result はそれぞれ MCONVERSION_RESULT_INVALID_BYTEMCONVERSION_RESULT_INVALID_CHAR となる。

変換が厳密でない場合には、デコードの際の不正なバイトはそのバイト のまま残る。またエンコードの際には、不正な文字は Unicode 文字の 場合には "<U+XXXX>" に、そうでない場合には "<M+XXXXXX>" に置き換 えられる。

int MConverter::last_block
 

バイト列の終端のブロックをデコードする際、または文字列の終端のブ ロックをエンコードする際は、値を 0 以外にする。この値は以下のよう に変換に影響する。

デコーディングの際に最後の数バイトが正しいバイトシークエンスを形 成するには短すぎる場合:

値が 0 でなければ、変換はそのシークエンスの最初のバイトにおいて、 エラー (MCONVERSION_RESULT_INVALID_BYTE) で終る。

値が 0 ならば、変換は成功して終る。問題の数バイトはキャリーオー バとしてコンバータに保持され、続きの変換を行う際に変換するバイ ト列の前に付けられる。

エンコーディングの際にコード系が文脈依存の場合、

値が 0 でなければ、コンテキストを最初に戻すためのバイト列がソー スの文字とかかわりなく変換の結果生成されることがある。

値が 0 ならば、そのようなバイト列は生成されない。

unsigned MConverter::at_most
 

0 でなければ、変換される最大の文字数を指定する。

int MConverter::nchars
 

以下の3つのメンバは変換の結果を報告する。

最近にデコード/エンコードされた文字数。

int MConverter::nbytes
 

最近にデコード/エンコードされたバイト数。

void* MConverter::ptr
 

double MConverter::dbl
 

char MConverter::c[256]
 

union { ... } MConverter::status
 

コード変換の状況に関する種々の情報。内容はコード系のタイプによっ て異なる。status はどのような型へのキャストに対しても安全なよ うにメモリアラインされており、また最低256バイトのメモリ領域が使 えるようになっている。

void* MConverter::internal_info
 

このメンバは内部的に使用され、アプリケーションプログラムは触 れてはならない。


このページの先頭

Main Page   Modules   Data Structures   Globals   Appendix  

mulemark mule-aist@m17n.org