m17n ライブラリ 1.8.4
|
コード系オブジェクトとそれに関する API. [詳解]
データ構造 | |
struct | MConverter |
コード変換に用いられる構造体. [詳解] | |
struct | MCodingInfoISO2022 |
MCODING_TYPE_ISO_2022 タイプのコード系で必要な付加情報用構造体. [詳解] | |
struct | MCodingInfoUTF |
MCODING_TYPE_UTF タイプのコード系で必要な付加情報用の構造体. [詳解] | |
関数 | |
MSymbol | mconv_define_coding (const char *name, MPlist *plist, int(*resetter)(MConverter *), int(*decoder)(const unsigned char *, int, MText *, MConverter *), int(*encoder)(MText *, int, int, unsigned char *, int, MConverter *), void *extra_info) |
MSymbol | mconv_resolve_coding (MSymbol symbol) |
コード系の名前を解決する. | |
int | mconv_list_codings (MSymbol **symbols) |
コード系を表わすシンボルを列挙する. | |
MConverter * | mconv_buffer_converter (MSymbol name, const unsigned char *buf, int n) |
バッファに結び付けられたコードコンバータを作る. | |
MConverter * | mconv_stream_converter (MSymbol name, FILE *fp) |
ストリームに結び付けられたコードコンバータを作る. | |
int | mconv_reset_converter (MConverter *converter) |
コードコンバータをリセットする. | |
void | mconv_free_converter (MConverter *converter) |
コードコンバータを解放する. | |
MConverter * | mconv_rebind_buffer (MConverter *converter, const unsigned char *buf, int n) |
コードコンバータにバッファ領域を結び付ける. | |
MConverter * | mconv_rebind_stream (MConverter *converter, FILE *fp) |
コードコンバータにストリームを結び付ける. | |
MText * | mconv_decode (MConverter *converter, MText *mt) |
バイト列を M-text にデコードする. | |
MText * | mconv_decode_buffer (MSymbol name, const unsigned char *buf, int n) |
コード系に基づいてバッファ領域をデコードする. | |
MText * | mconv_decode_stream (MSymbol name, FILE *fp) |
コード系に基づいてストリーム入力をデコードする. | |
int | mconv_encode (MConverter *converter, MText *mt) |
M-text をバイト列にエンコードする. | |
int | mconv_encode_range (MConverter *converter, MText *mt, int from, int to) |
M-text の一部をバイト列にエンコードする. | |
int | mconv_encode_buffer (MSymbol name, MText *mt, unsigned char *buf, int n) |
M-text をエンコードしてバッファ領域に書き込む. | |
int | mconv_encode_stream (MSymbol name, MText *mt, FILE *fp) |
M-text をエンコードしてストリームに書き込む. | |
int | mconv_getc (MConverter *converter) |
コードコンバータ経由で一文字を読みこむ. | |
int | mconv_ungetc (MConverter *converter, int c) |
コードコンバータに一文字戻す. | |
int | mconv_putc (MConverter *converter, int c) |
コードコンバータを経由して一文字書き出す. | |
MText * | mconv_gets (MConverter *converter, MText *mt) |
コードコンバータを使って一行読み込む. | |
変数: 定義済みコード系を指定するためのシンボル | |
MSymbol | Mcoding_us_ascii |
US-ASCII コード系のシンボル. | |
MSymbol | Mcoding_iso_8859_1 |
ISO-8859-1 コード系のシンボル. | |
MSymbol | Mcoding_utf_8 |
UTF-8 コード系のシンボル. | |
MSymbol | Mcoding_utf_8_full |
UTF-8-FULL コード系のシンボル. | |
MSymbol | Mcoding_utf_16 |
UTF-16 コード系のシンボル. | |
MSymbol | Mcoding_utf_16be |
UTF-16BE コード系のシンボル. | |
MSymbol | Mcoding_utf_16le |
UTF-16LE コード系のシンボル. | |
MSymbol | Mcoding_utf_32 |
UTF-32 コード系のシンボル. | |
MSymbol | Mcoding_utf_32be |
UTF-32BE コード系のシンボル. | |
MSymbol | Mcoding_utf_32le |
UTF-32LE コード系のシンボル. | |
MSymbol | Mcoding_sjis |
SJIS コード系のシンボル. | |
変数: mconv_define_coding() 用パラメータキー | |
MSymbol | Mtype |
MSymbol | Mcharsets |
MSymbol | Mflags |
MSymbol | Mdesignation |
MSymbol | Minvocation |
MSymbol | Mcode_unit |
MSymbol | Mbom |
MSymbol | Mlittle_endian |
変数: コード系のタイプを示すシンボル. | |
MSymbol | Mutf |
MSymbol | Miso_2022 |
変数: パラメータ Mflags の値となり得るシンボル. | |
関数 mconv_define_coding() の引数として用いられるコード系のパラメータ Mflags の値となり得るシンボル。(詳細は mconv_define_coding()参照)。 | |
MSymbol | Mreset_at_eol |
MSymbol | Mreset_at_cntl |
MSymbol | Meight_bit |
MSymbol | Mlong_form |
MSymbol | Mdesignation_g0 |
MSymbol | Mdesignation_g1 |
MSymbol | Mdesignation_ctext |
MSymbol | Mdesignation_ctext_ext |
MSymbol | Mlocking_shift |
MSymbol | Msingle_shift |
MSymbol | Msingle_shift_7 |
MSymbol | Meuc_tw_shift |
MSymbol | Miso_6429 |
MSymbol | Mrevision_number |
MSymbol | Mfull_support |
変数: その他 | |
ほかの変数。 | |
MSymbol | Mmaybe |
"maybe"という名前を持つシンボル. | |
MSymbol | Mcoding |
シンボル Mcoding . | |
コード系オブジェクトとそれに関する API.
m17n ライブラリは、符号化文字集合 (coded character set; CCS) の文字符合化方式 (character encoding scheme; CES) を コード系 と呼ぶオブジェクトで表現する。 アプリケーションプログラムは独自にコード系を追加することもできる。
コードポイントから文字コードへの変換を エンコード と呼び、文字コードからコードポイントへの変換を デコード と呼ぶ。
アプリケーションプログラムは、指定されたコード系でバイト列をデコードすることによって M-text を得ることができる。また逆に、指定されたコード系で M-text をエンコードしすることによってバイト列を得ることができる。
enum MConversionResult |
コード変換の結果を示すコード.
これらの値のうち一つが MConverter->result
に設定される。
enum MCodingType |
コード系のタイプ.
列挙値 | |
---|---|
MCODING_TYPE_CHARSET | このタイプのコード系は文字セットを直接サポートする。 各文字セットの次元とは、その文字セットで一文字を表現するために必要なバイト数であり、バイト列は文字のコードポイントを直接表す。 m17n ライブラリはこのタイプ用のデフォルトのエンコード/デコードルーティンを提供する。 |
MCODING_TYPE_UTF | このタイプのコード系は、UTF 系 (UTF-8, UTF-16, UTF-32) のバイト列をサポートする。 m17n ライブラリはこのタイプ用のデフォルトのエンコード/デコードルーティンを提供する。 |
MCODING_TYPE_ISO_2022 | このタイプのコード系は、ISO-2022 系のバイト列をサポートする。 各コード系の構造の詳細は |
MCODING_TYPE_MISC | このタイプのコード系は、その他の構造のバイト列のためのものである。 m17n ライブラリはこのタイプ用のエンコード/デコードルーティンを提供しないので、アプリケーションプログラム側で準備する必要がある。 |
enum MCodingFlagISO2022 |
MCODING_TYPE_ISO_2022 タイプのコード系の詳細を表わすビットマスク.
MSymbol mconv_define_coding | ( | const char * | name, |
MPlist * | plist, | ||
int(*)(MConverter *) | resetter, | ||
int(*)(const unsigned char *, int, MText *, MConverter *) | decoder, | ||
int(*)(MText *, int, int, unsigned char *, int, MConverter *) | encoder, | ||
void * | extra_info | ||
) |
MSymbol mconv_resolve_coding | ( | MSymbol | symbol | ) |
コード系の名前を解決する.
関数 mconv_resolve_coding() は symbol がコード系を示していればそれを返す。 そうでなければコード系の名前として symbol を正規化し、それがコード系を表していれば正規化した symbol を返す。 そうでなければ::Mnil を返す。
int mconv_list_codings | ( | MSymbol ** | symbols | ) |
コード系を表わすシンボルを列挙する.
関数 mchar_list_codings() は、コード系を示すシンボルを並べた配列を作り、 symbols でポイントされた場所にこの配列へのポインタを置き、配列の長さを返す。
MConverter * mconv_buffer_converter | ( | MSymbol | name, |
const unsigned char * | buf, | ||
int | n | ||
) |
バッファに結び付けられたコードコンバータを作る.
関数 mconv_buffer_converter() は、コード系 name 用のコードコンバータを作る。このコードコンバータは、buf で示される大きさ n バイトのバッファ領域に結び付けられる。 これ以降のデコードおよびエンコードは、このバッファ領域に対して行なわれる。
name は Mnil であってもよい。この場合は現在のロケール (LC_CTYPE) に関連付けられたコード系が使われる。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_SYMBOL
, MERROR_CODING
MConverter * mconv_stream_converter | ( | MSymbol | name, |
FILE * | fp | ||
) |
ストリームに結び付けられたコードコンバータを作る.
関数 mconv_stream_converter() は、コード系 name 用のコードコンバータを作る。このコードコンバータは、ストリーム fp に結び付けられる。 これ以降のデコードおよびエンコードは、このストリームに対して行なわれる。
name は Mnil であってもよい。この場合は現在のロケール (LC_CTYPE) に関連付けられたコード系が使われる。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_SYMBOL
, MERROR_CODING
int mconv_reset_converter | ( | MConverter * | converter | ) |
コードコンバータをリセットする.
関数 mconv_reset_converter() はコードコンバータ converter を初期状態に戻す。
void mconv_free_converter | ( | MConverter * | converter | ) |
コードコンバータを解放する.
関数 mconv_free_converter() はコードコンバータ converter を解放する。
MConverter * mconv_rebind_buffer | ( | MConverter * | converter, |
const unsigned char * | buf, | ||
int | n | ||
) |
コードコンバータにバッファ領域を結び付ける.
関数 mconv_rebind_buffer() は、buf によって指された大きさ n バイトのバッファ領域をコードコンバータ converter に結び付ける。 これ以降のデコードおよびエンコードは、この新たに結び付けられたバッファ領域に対して行なわれるようになる。
MConverter * mconv_rebind_stream | ( | MConverter * | converter, |
FILE * | fp | ||
) |
コードコンバータにストリームを結び付ける.
関数 mconv_rebind_stream() は、ストリーム fp をコードコンバータ converter に結び付ける。 これ以降のデコードおよびエンコードは、この新たに結び付けられたストリームに対して行なわれるようになる。
MText * mconv_decode | ( | MConverter * | converter, |
MText * | mt | ||
) |
バイト列を M-text にデコードする.
関数 mconv_decode() は、バイト列をデコードしてその結果を M-text mt の末尾に追加する。デコード元のバイト列は、converter に現在結び付けられているバッファ領域あるいはストリームから取られる。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_IO
, MERROR_CODING
MText * mconv_decode_buffer | ( | MSymbol | name, |
const unsigned char * | buf, | ||
int | n | ||
) |
コード系に基づいてバッファ領域をデコードする.
関数 mconv_decode_buffer() は、buf によって指された n バイトのバッファ領域を、コード系 name に基づいてデコードする。 デコードに必要なコードコンバータの作成と解放は自動的に行なわれる。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_IO
, MERROR_CODING
MText * mconv_decode_stream | ( | MSymbol | name, |
FILE * | fp | ||
) |
コード系に基づいてストリーム入力をデコードする.
関数 mconv_decode_stream() は、ストリーム fp から読み込まれるバイト列全体を、コード系 name に基づいてデコードする。デコードに必要なコードコンバータの作成と解放は自動的に行なわれる。
NULL
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_IO
, MERROR_CODING
int mconv_encode | ( | MConverter * | converter, |
MText * | mt | ||
) |
M-text をバイト列にエンコードする.
関数 mconv_encode() は、M-text mt をエンコードして、コードコンバータ converter に現在結び付けられているバッファ領域あるいはストリームに得られたバイト列を書き込む。
MERROR_IO
, MERROR_CODING
int mconv_encode_range | ( | MConverter * | converter, |
MText * | mt, | ||
int | from, | ||
int | to | ||
) |
M-text の一部をバイト列にエンコードする.
関数 mconv_encode_range() は、M-text mt の from (from 自体も含む)から to (to自体は含まない) までの範囲のテキストをエンコードして、コードコンバータ converter に現在結び付けられているバッファ領域あるいはストリームに得られたバイト列を書き込む。
MERROR_RANGE
, MERROR_IO
, MERROR_CODING
int mconv_encode_buffer | ( | MSymbol | name, |
MText * | mt, | ||
unsigned char * | buf, | ||
int | n | ||
) |
M-text をエンコードしてバッファ領域に書き込む.
関数 mconv_encode_buffer() はM-text mt をコード系 name に基づいてエンコードし、得られたバイト列を buf の指すバッファ領域に書き込む。 n は書き込む最大バイト数である。 エンコードに必要なコードコンバータの作成と解放は自動的に行なわれる。
MERROR_IO
, MERROR_CODING
int mconv_encode_stream | ( | MSymbol | name, |
MText * | mt, | ||
FILE * | fp | ||
) |
M-text をエンコードしてストリームに書き込む.
関数 mconv_encode_stream() はM-text mt をコード系 name に基づいてエンコードし、得られたバイト列をストリーム fp に書き出す。エンコードに必要なコードコンバータの作成と解放は自動的に行なわれる。
MERROR_IO
, MERROR_CODING
int mconv_getc | ( | MConverter * | converter | ) |
コードコンバータ経由で一文字を読みこむ.
関数 mconv_getc() は、コードコンバータ converter に現在結び付けられているバッファ領域あるいはストリームから文字を一つ読み込む。 バイト列のデコードには converter のデコーダが用いられる。 converter の内部状態は必要に応じて更新される。
EOF
を返す。エラーが検出された場合は EOF
を返し、::merror_code にエラーコードを設定する。MERROR_CODING
int mconv_ungetc | ( | MConverter * | converter, |
int | c | ||
) |
コードコンバータに一文字戻す.
関数 mconv_ungetc() は、コードコンバータ converter に文字 c を押し戻す。戻される文字数に制限はない。この後で mconv_getc() を呼び出した際には、最後に戻された文字が最初に読まれる。戻された文字は converter の内部に蓄えられるだけであり、実際に入力源に書き込まれるわけではない。 converter の内部状態は必要に応じて更新される。
EOF
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_CODING
, MERROR_CHAR
int mconv_putc | ( | MConverter * | converter, |
int | c | ||
) |
コードコンバータを経由して一文字書き出す.
関数 mconv_putc() は、コードコンバータ converter に現在結び付けられているバッファ領域あるいはストリームに文字 c を書き出す。文字のエンコードには converter のエンコーダが用いられる。実際に書き出されたバイト数は、converter のメンバー nbytes
にセットされる。converter の内部状態は必要に応じて更新される。
EOF
を返し、外部変数 merror_code にエラーコードを設定する。MERROR_CODING
, MERROR_IO
, MERROR_CHAR
MText * mconv_gets | ( | MConverter * | converter, |
MText * | mt | ||
) |
コードコンバータを使って一行読み込む.
関数 mconv_gets() は、コードコンバータ converter に現在結び付けられているバッファ領域あるいはストリームから 1 行を読み込む。 バイト列のデコードには converter のデコーダが用いられる。デコードされた文字列は M-text mt の末尾に追加される。元のバイト列の終端改行文字は追加されない。 converter の内部状態は必要に応じて更新される。
NULL
を返し、 merror_code にエラーコードを設定する。MERROR_CODING
MSymbol Mcoding_us_ascii |
US-ASCII コード系のシンボル.
シンボル Mcoding_us_ascii は "us-ascii"
という名前を持ち、 CES US-ASCII 用のコード系を示す。
MSymbol Mcoding_iso_8859_1 |
ISO-8859-1 コード系のシンボル.
シンボル Mcoding_iso_8859_1 は "iso-8859-1"
という名前を持ち、CES ISO-8859-1 用のコード系を示す。
MSymbol Mcoding_utf_8 |
UTF-8 コード系のシンボル.
シンボル Mcoding_utf_8 は "utf-8"
という名前を持ち、CES UTF-8 用のコード系を示す。
MSymbol Mcoding_utf_8_full |
UTF-8-FULL コード系のシンボル.
シンボル Mcoding_utf_8_full は "utf-8-full"
という名前を持ち、"UTF-8"
の拡張であるコード系を示す。 このコード系は UTF-8 と同じエンコーディングアルゴリズムを用いるが、対象は Unicode 文字には限定されない。 またm17n ライブラリが扱う全ての文字をエンコードすることができる。
MSymbol Mcoding_utf_16 |
UTF-16 コード系のシンボル.
シンボル Mcoding_utf_16 は "utf-16"
という名前を持ち、 CES UTF-16 (RFC 2279) 用のコード系を示す。
MSymbol Mcoding_utf_16be |
UTF-16BE コード系のシンボル.
シンボル Mcoding_utf_16be は "utf-16be"
という名前を持ち、 CES UTF-16BE (RFC 2279) 用のコード系を示す。
MSymbol Mcoding_utf_16le |
UTF-16LE コード系のシンボル.
シンボル Mcoding_utf_16le は "utf-16le"
という名前を持ち、 CES UTF-16LE (RFC 2279) 用のコード系を示す。
MSymbol Mcoding_utf_32 |
UTF-32 コード系のシンボル.
シンボル Mcoding_utf_32 は "utf-32"
という名前を持ち、 CES UTF-32 (RFC 2279) 用のコード系を示す。
MSymbol Mcoding_utf_32be |
UTF-32BE コード系のシンボル.
シンボル Mcoding_utf_32be は "utf-32be"
という名前を持ち、 CES UTF-32BE (RFC 2279) 用のコード系を示す。
MSymbol Mcoding_utf_32le |
UTF-32LE コード系のシンボル.
シンボル Mcoding_utf_32le は "utf-32le"
という名前を持ち、 CES UTF-32LE (RFC 2279) 用のコード系を示す。
MSymbol Mcoding_sjis |
SJIS コード系のシンボル.
シンボル Mcoding_sjis has は "sjis"
という名前を持ち、 CES Shift-JIS用のコード系を示す。
MSymbol Mtype |
mconv_define_coding() 用パラメータキー (詳細は mconv_define_coding()参照).
MSymbol Mcharsets |
MSymbol Mflags |
MSymbol Mdesignation |
MSymbol Minvocation |
MSymbol Mcode_unit |
MSymbol Mbom |
MSymbol Mlittle_endian |
MSymbol Mutf |
関数 mconv_define_coding() の引数として用いられるコード系のパラメータ Mtype の値となり得るシンボル。(詳細は mconv_define_coding()参照)。
MSymbol Miso_2022 |
MSymbol Mreset_at_eol |
MSymbol Mreset_at_cntl |
MSymbol Meight_bit |
MSymbol Mlong_form |
MSymbol Mdesignation_g0 |
MSymbol Mdesignation_g1 |
MSymbol Mdesignation_ctext |
MSymbol Mdesignation_ctext_ext |
MSymbol Mlocking_shift |
MSymbol Msingle_shift |
MSymbol Msingle_shift_7 |
MSymbol Meuc_tw_shift |
MSymbol Miso_6429 |
MSymbol Mrevision_number |
MSymbol Mfull_support |
MSymbol Mmaybe |
"maybe"という名前を持つシンボル.
変数 Mmaybe は "maybe"
という名前を持つ。これは関数 mconv_define_coding() パラメータ Mbom の値として用いられる。 (詳細は mconv_define_coding() 参照)。
MSymbol Mcoding |
シンボル Mcoding
.
デコードされた M-text はすべて、キーが定義済みシンボル Mcoding
であるようなテキストプロパティを持つ。シンボル Mcoding
は "coding"
という名前を持つ。