RKMAPPHONOGRAM(3)

名前
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を返します．