RkMapRoma -
指定されたローマ字かな変換テーブルを用いてローマ字かな変換を行う
#include <canna/RK.h>
int RkMapRoma(romaji, dst, maxdst, src, srclen, flags, status)
struct RkRxDic *romaji;
unsigned char *dst;
int maxdst;
unsigned char *src;
int srclen;
int flags;
int *status;
RkMapRoma
は,指定されたローマ字かな変換テーブルを用いてローマ字かな変換を行います.
romaji は,
RkOpenRoma(3)
により返されたローマ字かな変換テーブルへのポインタを与えます.
RkMapRoma は,領域
src から
srclen
バイト続くデータをローマ字列として解釈し,ローマ字列先頭と一致するロー
マ字かな変換規則をローマ字かな変換テーブルから探します.
対応する変換規則が見つかった場合には,対応するかな文字列を
dst
領域に格納します.ただし,文字列のバイト数が
maxdst -1
を超える場合には結果は切り捨てられます.
また,可能ならば変換最終位
置にヌル文字が付け加えられます.
flags
は,ローマ字かな変換を制御するためのフラグで以下を
or で組合わせます.
- RK_SOKUON
- 促音処理を有効にします.促音処理は,先頭2文字が同一文字xxであり,ロー
マ字かな変換テーブルファイルに登録されていない時に限り,xxから「っ」へ
変換します.
- RK_FLUSH
- すべてのローマ字を強制的に変換します.これは最後のnの処理に有効です.
以下のフラグは
src
に格納される文字の種類を指定します.これは,ローマ字かな変換テーブルか
ら得られたかな文字列に対するコード変換を指定します.これらは,いずれか
ひとつだけを用いることができます.
- RK_NFER
- そのまま
- RK_XFER
- ひらがな
- RK_HFER
- 半角文字
- RK_KFER
- カタカナ
- RK_ZFER
- 全角文字
status には,
dst
領域に設定された文字列のバイト数が設定されます.
この値が負の場合には,マッチするローマ字がなかったことを示します.
ローマ字かな変換でマッチしたローマ字列先頭バイト数を返します.