名前

RkMapPhonogram - 指定されたローマ字かな変換テーブルを用いてローマ字かな変換を行う

形式

#include <canna/RK.h>
int RkMapPhonogram(romaji, dst, maxdst, src, srclen, flags, ulen, dlen, tlen, rule)
struct RkRxDic *romaji;
unsigned char *dst;
int maxdst;
unsigned char *src;
int srclen;
int flags;
int *ulen;
int *dlen;
int *tlen;
int *rule;

説明

RkMapPhonogram は,指定されたローマ字かな変換テーブルを用いてローマ字かな変換を行います. romaji は, RkOpenRoma(3) により返されたローマ字かな変換テーブルへのポインタを与えます. RkMapPhonogram は,領域 src から srclen バイト続くデータをローマ字列として解釈し,ローマ字列先頭と一致するロー マ字かな変換規則をローマ字かな変換テーブルから探します. 対応する変換規則が見つかった場合には,対応するかな文字列を dst 領域に格納しそのバイト長を dlenにて返します.ただし,文字列のバイ ト数が maxdst -1 を超える場合には結果は切り捨てられます.
flags は,ローマ字かな変換を制御するためのフラグで以下を or で組合わせます.
RK_SOKUON
促音処理を有効にします.促音処理は,先頭2文字が同一文字xxであり,ロー マ字かな変換テーブルファイルに登録されていない時に限り,xxから「っ」へ 変換します.この処理は旧形式のローマ字かな変換テーブルを使用していると き用です。
RK_FLUSH
すべてのローマ字を強制的に変換します.これは最後のnの処理に有効です.
ulen, dlen, tlen は,ローマ字かな変換の進行具合を管理することに使われます.
例えば,``tt''のような文字を RkMapPhonogram に与えると最初の``t''がロー マ字かな変換に使われ, dst には``っ''が返ります.残りの``t''は次 のローマ字かな変換にて再び使用されます.この後``a''が入力された場合, 前回の RkMapPhonogramで残された``t''と入力された``a''を RkMapPhonogramに与え,``た''を得ます.
ulen には, srcのうちローマ字かな変換に 用いられた文字のバイト長が返ります.
dlen にはローマ字かな変換 された結果得られたかなのバイト長が返ります.
そして, tlen には,次のローマ字かな変換で引き続き使われるべき文字のバイト長が返りま す. tlen で示される文字列は, dstバッファにおいて,ローマ字かな変換済の文 字列の後ろに置かれます.
ulen, dlen, tlen に対してヌルポインタを与えた場合には,これらの値は返らず単に無視されま す.
rule にて,ローマ字かな変換ルールに関する情報をやりとりします. 最初に RkMapPhonogramを呼ぶ時は0を格納した変数へのポインタを与え て下さい.最初の呼出しから戻った時にその変数には(0の代わりに)ローマ字 かな変換ルールに関する内部的な情報が返されます.ローマ字かな変換を続け る場合は,前回指定した変数へのポインタを再び RkMapPhonogramに与え て下さい.

戻り値

dst で返される文字がローマ字かな変換テーブルに存在したルールを用いて変換さ れたものであるかどうかを返します.ローマ字かな変換テーブルにあったルー ルが使われた場合には1を返し,そうでない場合には0を返します.

Recommended readings

Pages related to RkMapPhonogram you should read also: