Blame src/m17n.h

Packit Service a721b1
/* m17n.h -- header file for the SHELL API of the m17n library.
Packit Service a721b1
   Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Packit Service a721b1
     National Institute of Advanced Industrial Science and Technology (AIST)
Packit Service a721b1
     Registration Number H15PRO112
Packit Service a721b1
Packit Service a721b1
   This file is part of the m17n library.
Packit Service a721b1
Packit Service a721b1
   The m17n library is free software; you can redistribute it and/or
Packit Service a721b1
   modify it under the terms of the GNU Lesser General Public License
Packit Service a721b1
   as published by the Free Software Foundation; either version 2.1 of
Packit Service a721b1
   the License, or (at your option) any later version.
Packit Service a721b1
Packit Service a721b1
   The m17n library is distributed in the hope that it will be useful,
Packit Service a721b1
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service a721b1
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service a721b1
   Lesser General Public License for more details.
Packit Service a721b1
Packit Service a721b1
   You should have received a copy of the GNU Lesser General Public
Packit Service a721b1
   License along with the m17n library; if not, write to the Free
Packit Service a721b1
   Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit Service a721b1
   Boston, MA 02110-1301 USA.  */
Packit Service a721b1
Packit Service a721b1
#ifndef _M17N_H_
Packit Service a721b1
#define _M17N_H_
Packit Service a721b1
Packit Service a721b1
#include <stdio.h>
Packit Service a721b1
#include <stdlib.h>
Packit Service a721b1
#include <time.h>
Packit Service a721b1
Packit Service a721b1
#ifndef _M17N_CORE_H_
Packit Service a721b1
#include <m17n-core.h>
Packit Service a721b1
#endif
Packit Service a721b1
Packit Service a721b1
M17N_BEGIN_HEADER
Packit Service a721b1
Packit Service a721b1
#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
Packit Service a721b1
extern void m17n_init (void);
Packit Service a721b1
#undef M17N_INIT
Packit Service a721b1
#ifdef _M17N_FLT_H_
Packit Service a721b1
#define M17N_INIT()	\
Packit Service a721b1
  do {			\
Packit Service a721b1
    m17n_init ();	\
Packit Service a721b1
    m17n_init_flt ();	\
Packit Service a721b1
  } while (0)
Packit Service a721b1
#else  /* not _M17N_FLT_H_ */
Packit Service a721b1
#define M17N_INIT() m17n_init ()
Packit Service a721b1
#endif	/* not _M17N_FLT_H_ */
Packit Service a721b1
Packit Service a721b1
extern void m17n_fini (void);
Packit Service a721b1
#undef M17N_FINI
Packit Service a721b1
#ifdef _M17N_FLT_H_
Packit Service a721b1
#define M17N_FINI()	\
Packit Service a721b1
  do {			\
Packit Service a721b1
    m17n_fini_flt ();	\
Packit Service a721b1
    m17n_fini ();	\
Packit Service a721b1
  } while (0)
Packit Service a721b1
#else  /* not _M17N_FLT_H_ */
Packit Service a721b1
#define M17N_FINI() m17n_fini ()
Packit Service a721b1
#endif	/* not _M17N_FLT_H_ */
Packit Service a721b1
Packit Service a721b1
#endif
Packit Service a721b1
Packit Service a721b1
/***en @defgroup m17nShell SHELL API
Packit Service a721b1
    @brief API provided by libm17n.so */
Packit Service a721b1
/***ja @defgroup m17nShell シェル API
Packit Service a721b1
    @brief libm17n.so が提供する API */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*
Packit Service a721b1
 *  (11) Functions related to the m17n database
Packit Service a721b1
 */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
/* (S2) Charset staffs */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nShell */
Packit Service a721b1
/***en @defgroup m17nCharset Charset */
Packit Service a721b1
/***ja @defgroup m17nCharset 文字セット */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
#if !defined (FOR_DOXYGEN) || defined (DOXYGEN_INTERNAL_MODULE)
Packit Service a721b1
#define MCHAR_INVALID_CODE 0xFFFFFFFF
Packit Service a721b1
#endif
Packit Service a721b1
Packit Service a721b1
/* Predefined charsets */ 
Packit Service a721b1
extern MSymbol Mcharset_ascii;
Packit Service a721b1
extern MSymbol Mcharset_iso_8859_1;
Packit Service a721b1
extern MSymbol Mcharset_unicode;
Packit Service a721b1
extern MSymbol Mcharset_m17n;
Packit Service a721b1
extern MSymbol Mcharset_binary;
Packit Service a721b1
Packit Service a721b1
/* Predefined keys for mchar_define_charset ().  */ 
Packit Service a721b1
extern MSymbol Mmethod;
Packit Service a721b1
extern MSymbol Mdimension;
Packit Service a721b1
extern MSymbol Mmin_range;
Packit Service a721b1
extern MSymbol Mmax_range;
Packit Service a721b1
extern MSymbol Mmin_code;
Packit Service a721b1
extern MSymbol Mmax_code;
Packit Service a721b1
extern MSymbol Mascii_compatible;
Packit Service a721b1
extern MSymbol Mfinal_byte;
Packit Service a721b1
extern MSymbol Mrevision;
Packit Service a721b1
extern MSymbol Mmin_char;
Packit Service a721b1
extern MSymbol Mmapfile;
Packit Service a721b1
extern MSymbol Mparents;
Packit Service a721b1
extern MSymbol Msubset_offset;
Packit Service a721b1
extern MSymbol Mdefine_coding;
Packit Service a721b1
extern MSymbol Maliases;
Packit Service a721b1
Packit Service a721b1
/* Methods of a charset.  */
Packit Service a721b1
extern MSymbol Moffset;
Packit Service a721b1
extern MSymbol Mmap;
Packit Service a721b1
extern MSymbol Munify;
Packit Service a721b1
extern MSymbol Msubset;
Packit Service a721b1
extern MSymbol Msuperset;
Packit Service a721b1
Packit Service a721b1
/* etc. */
Packit Service a721b1
extern MSymbol mchar_define_charset (const char *name, MPlist *plist);
Packit Service a721b1
Packit Service a721b1
extern MSymbol mchar_resolve_charset (MSymbol symbol);
Packit Service a721b1
Packit Service a721b1
extern int mchar_list_charset (MSymbol **symbols);
Packit Service a721b1
Packit Service a721b1
extern int mchar_decode (MSymbol charset_name, unsigned code);
Packit Service a721b1
Packit Service a721b1
extern unsigned mchar_encode (MSymbol charset_name, int c);
Packit Service a721b1
Packit Service a721b1
extern int mchar_map_charset (MSymbol charset_name,
Packit Service a721b1
			      void (*func) (int from, int to, void *arg),
Packit Service a721b1
			      void *func_arg);
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/* (S3) code conversion */
Packit Service a721b1
/*=*/
Packit Service a721b1
/*** @ingroup m17nShell */
Packit Service a721b1
/***en @defgroup m17nConv Code Conversion */
Packit Service a721b1
/***ja @defgroup m17nConv コード変換 */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/* Predefined coding systems */
Packit Service a721b1
extern MSymbol Mcoding_us_ascii;
Packit Service a721b1
extern MSymbol Mcoding_iso_8859_1;
Packit Service a721b1
extern MSymbol Mcoding_utf_8;
Packit Service a721b1
extern MSymbol Mcoding_utf_8_full;
Packit Service a721b1
extern MSymbol Mcoding_utf_16;
Packit Service a721b1
extern MSymbol Mcoding_utf_16be;
Packit Service a721b1
extern MSymbol Mcoding_utf_16le;
Packit Service a721b1
extern MSymbol Mcoding_utf_32;
Packit Service a721b1
extern MSymbol Mcoding_utf_32be;
Packit Service a721b1
extern MSymbol Mcoding_utf_32le;
Packit Service a721b1
extern MSymbol Mcoding_sjis;
Packit Service a721b1
Packit Service a721b1
/* Parameter keys for mconv_define_coding ().  */
Packit Service a721b1
extern MSymbol Mtype;
Packit Service a721b1
extern MSymbol Mcharsets;
Packit Service a721b1
extern MSymbol Mflags;
Packit Service a721b1
extern MSymbol Mdesignation;
Packit Service a721b1
extern MSymbol Minvocation;
Packit Service a721b1
extern MSymbol Mcode_unit;
Packit Service a721b1
extern MSymbol Mbom;
Packit Service a721b1
extern MSymbol Mlittle_endian;
Packit Service a721b1
Packit Service a721b1
/* Symbols representing coding system type.  */
Packit Service a721b1
extern MSymbol Mutf;
Packit Service a721b1
extern MSymbol Miso_2022;
Packit Service a721b1
Packit Service a721b1
/* Symbols appearing in the value of Mfrag parameter.  */
Packit Service a721b1
extern MSymbol Mreset_at_eol;
Packit Service a721b1
extern MSymbol Mreset_at_cntl;
Packit Service a721b1
extern MSymbol Meight_bit;
Packit Service a721b1
extern MSymbol Mlong_form;
Packit Service a721b1
extern MSymbol Mdesignation_g0;
Packit Service a721b1
extern MSymbol Mdesignation_g1;
Packit Service a721b1
extern MSymbol Mdesignation_ctext;
Packit Service a721b1
extern MSymbol Mdesignation_ctext_ext;
Packit Service a721b1
extern MSymbol Mlocking_shift;
Packit Service a721b1
extern MSymbol Msingle_shift;
Packit Service a721b1
extern MSymbol Msingle_shift_7;
Packit Service a721b1
extern MSymbol Meuc_tw_shift;
Packit Service a721b1
extern MSymbol Miso_6429;
Packit Service a721b1
extern MSymbol Mrevision_number;
Packit Service a721b1
extern MSymbol Mfull_support;
Packit Service a721b1
Packit Service a721b1
/* etc */
Packit Service a721b1
extern MSymbol Mcoding;
Packit Service a721b1
extern MSymbol Mmaybe;
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nConv */
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Codes that represent the result of code conversion.
Packit Service a721b1
Packit Service a721b1
    One of these values is set in @c MConverter-\>result.   */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief コード変換の結果を示すコード.
Packit Service a721b1
Packit Service a721b1
    これらの値のうち一つが @c MConverter-\>result に設定される。  */
Packit Service a721b1
Packit Service a721b1
enum MConversionResult
Packit Service a721b1
  {
Packit Service a721b1
    /***en Code conversion is successful. */
Packit Service a721b1
    /***ja コード変換は成功. */
Packit Service a721b1
    MCONVERSION_RESULT_SUCCESS,
Packit Service a721b1
Packit Service a721b1
    /***en On decoding, the source contains an invalid byte. */
Packit Service a721b1
    /***ja デコード時、ソースに不正なバイトが含まれている. */
Packit Service a721b1
    MCONVERSION_RESULT_INVALID_BYTE,
Packit Service a721b1
Packit Service a721b1
    /***en On encoding, the source contains a character that cannot be
Packit Service a721b1
	encoded by the specified coding system. */
Packit Service a721b1
    /***ja エンコード時、指定のコード系でエンコードできない文字がソースに含まれている. */
Packit Service a721b1
    MCONVERSION_RESULT_INVALID_CHAR,
Packit Service a721b1
Packit Service a721b1
    /***en On decoding, the source ends with an incomplete byte sequence. */
Packit Service a721b1
    /***ja デコード時、不完全なバイト列でソースが終わっている。*/
Packit Service a721b1
    MCONVERSION_RESULT_INSUFFICIENT_SRC,
Packit Service a721b1
Packit Service a721b1
    /***en On encoding, the destination is too short to store the result. */
Packit Service a721b1
    /***ja エンコード時、結果を格納する領域が短かすぎる。 */
Packit Service a721b1
    MCONVERSION_RESULT_INSUFFICIENT_DST,
Packit Service a721b1
Packit Service a721b1
    /***en An I/O error occurred in the conversion.  */
Packit Service a721b1
    /***ja コード変換中に I/O エラーが起こった。  */
Packit Service a721b1
    MCONVERSION_RESULT_IO_ERROR
Packit Service a721b1
  };
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nConv */
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Structure to be used in code conversion.
Packit Service a721b1
Packit Service a721b1
    Structure to be used in code conversion.  The first three members
Packit Service a721b1
    are to control the conversion.  */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief コード変換に用いられる構造体.
Packit Service a721b1
Packit Service a721b1
    コード変換に用いられる構造体。最初の3つのメンバは変換を制御する。
Packit Service a721b1
Packit Service a721b1
    @latexonly \IPAlabel{MConverter} @endlatexonly  
Packit Service a721b1
*/
Packit Service a721b1
Packit Service a721b1
typedef struct
Packit Service a721b1
{
Packit Service a721b1
  /***en
Packit Service a721b1
      Set the value to nonzero if the conversion should be lenient.
Packit Service a721b1
      By default, the conversion is strict (i.e. not lenient).
Packit Service a721b1
Packit Service a721b1
      If the conversion is strict, the converter stops at the first
Packit Service a721b1
      invalid byte (on decoding) or at the first character not
Packit Service a721b1
      supported by the coding system (on encoding).  If this happens,
Packit Service a721b1
      @c MConverter-\>result is set to @c
Packit Service a721b1
      MCONVERSION_RESULT_INVALID_BYTE or @c
Packit Service a721b1
      MCONVERSION_RESULT_INVALID_CHAR accordingly.
Packit Service a721b1
Packit Service a721b1
      If the conversion is lenient, on decoding, an invalid byte is
Packit Service a721b1
      kept per se, and on encoding, an invalid character is replaced
Packit Service a721b1
      with "<U+XXXX>" (if the character is a Unicode character) or
Packit Service a721b1
      with "<M+XXXXXX>" (otherwise).  */
Packit Service a721b1
Packit Service a721b1
  /***ja 
Packit Service a721b1
      厳密な変換が必要でない場合に値を 0 以外にする。
Packit Service a721b1
      デフォルトでは、変換は厳密である。
Packit Service a721b1
Packit Service a721b1
      変換が厳密とは、デコードの際には最初の不正なバイトでコンバータが止まること、
Packit Service a721b1
      エンコードの際には変換されるコード系でサポートされない最初の文字でコンバータが止まることを指す。
Packit Service a721b1
      これらの場合、@c MConverter-\>result はそれぞれ @c
Packit Service a721b1
      MCONVERSION_RESULT_INVALID_BYTE か@c
Packit Service a721b1
      MCONVERSION_RESULT_INVALID_CHAR となる。
Packit Service a721b1
Packit Service a721b1
      変換が厳密でない場合には、デコードの際の不正なバイトはそのバイトのまま残る。
Packit Service a721b1
      またエンコードの際には、不正な文字が Unicode 文字の場合には "<U+XXXX>"
Packit Service a721b1
      に、そうでない場合には "<M+XXXXXX>" に置き換えられる。  */
Packit Service a721b1
Packit Service a721b1
  int lenient;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Set the value to nonzero before decoding or encoding the last
Packit Service a721b1
      block of the byte sequence or the character sequence
Packit Service a721b1
      respectively.  The value influences the conversion as below.
Packit Service a721b1
Packit Service a721b1
      On decoding, in the case that the last few bytes are too short
Packit Service a721b1
      to form a valid byte sequence:
Packit Service a721b1
Packit Service a721b1
	If the value is nonzero, the conversion terminates by error
Packit Service a721b1
	(MCONVERSION_RESULT_INVALID_BYTE) at the first byte of the
Packit Service a721b1
	sequence.
Packit Service a721b1
Packit Service a721b1
	If the value is zero, the conversion terminates successfully.
Packit Service a721b1
	Those bytes are stored in the converter as carryover and are
Packit Service a721b1
	prepended to the byte sequence of the further conversion.
Packit Service a721b1
Packit Service a721b1
      On encoding, in the case that the coding system is context
Packit Service a721b1
      dependent:
Packit Service a721b1
Packit Service a721b1
	If the value is nonzero, the conversion may produce a byte
Packit Service a721b1
	sequence at the end to reset the context to the initial state
Packit Service a721b1
	even if the source characters are zero.
Packit Service a721b1
Packit Service a721b1
	If the value is zero, the conversion never produce such a byte
Packit Service a721b1
	sequence at the end.  */
Packit Service a721b1
Packit Service a721b1
/***ja 
Packit Service a721b1
Packit Service a721b1
     バイト列の終端のブロックをデコードする際、または文字列の終端のブロックをエンコードする際は、値を
Packit Service a721b1
     0 以外にする。この値は以下のように変換に影響する。
Packit Service a721b1
Packit Service a721b1
     デコーディングの際に最後の数バイトが正しいバイトシークエンスを形成するには短すぎる場合:
Packit Service a721b1
Packit Service a721b1
       値が 0 でなければ、変換はそのシークエンスの最初のバイトにおいて、エラー
Packit Service a721b1
       (MCONVERSION_RESULT_INVALID_BYTE) で終る。
Packit Service a721b1
Packit Service a721b1
       値が 0 ならば、変換は成功して終る。
Packit Service a721b1
       問題の数バイトはキャリーオーバとしてコンバータに保持され、変換の続きを行う際に変換するバイト列の前に付けられる。
Packit Service a721b1
Packit Service a721b1
     エンコーディングの際にコード系が文脈依存の場合、
Packit Service a721b1
Packit Service a721b1
       値が 0 でなければ、コンテキストを最初に戻すためのバイト列がソースの文字とかかわりなく変換の結果生成されることがある。
Packit Service a721b1
Packit Service a721b1
       値が 0 ならば、そのようなバイト列は生成されない。
Packit Service a721b1
Packit Service a721b1
	 */
Packit Service a721b1
Packit Service a721b1
  int last_block;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      If the value is nonzero, it specifies at most how many
Packit Service a721b1
      characters to convert.  */
Packit Service a721b1
  /***ja
Packit Service a721b1
      0 でなければ、変換される最大の文字数を指定する。
Packit Service a721b1
      */
Packit Service a721b1
Packit Service a721b1
  unsigned at_most;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      The following three members are to report the result of the
Packit Service a721b1
      conversion.  */
Packit Service a721b1
  /***ja
Packit Service a721b1
      以下の3つのメンバは変換の結果を表すためのものである。  */
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Number of characters most recently decoded or encoded. */
Packit Service a721b1
  /***ja
Packit Service a721b1
      最近にデコード/エンコードされた文字数。 */
Packit Service a721b1
Packit Service a721b1
  int nchars;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Number of bytes recently decoded or encoded. */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      最近にデコード/エンコードされたバイト数。 */
Packit Service a721b1
Packit Service a721b1
  int nbytes;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Result code of the conversion. */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      コード変換の結果を示すコード。 */
Packit Service a721b1
Packit Service a721b1
  enum MConversionResult result;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Various information about the status of code conversion.  The
Packit Service a721b1
      contents depend on the type of coding system.  It is assured
Packit Service a721b1
      that @c status is aligned so that any type of casting is safe
Packit Service a721b1
      and at least 256 bytes of memory space can be used.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      コード変換の状況に関する種々の情報。内容はコード系のタイプによって異なる。
Packit Service a721b1
      @c status はどのような型へのキャストに対しても安全なようにメモリアラインされており、また最低256バイトのメモリ領域が使えるようになっている。  */
Packit Service a721b1
Packit Service a721b1
  union {
Packit Service a721b1
    void *ptr;
Packit Service a721b1
    double dbl;
Packit Service a721b1
    char c[256];
Packit Service a721b1
  } status;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      This member is for internally use only.  An application program
Packit Service a721b1
      should never touch it.  */
Packit Service a721b1
  /***ja このメンバは内部的に使用され、アプリケーションプログラムは触れてはならない。 */
Packit Service a721b1
  void *internal_info;
Packit Service a721b1
} MConverter;
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nConv */
Packit Service a721b1
/***en 
Packit Service a721b1
    @brief Types of coding system.  */
Packit Service a721b1
/***ja 
Packit Service a721b1
    @brief コード系のタイプ.  */
Packit Service a721b1
Packit Service a721b1
enum MCodingType
Packit Service a721b1
  {
Packit Service a721b1
    /***en
Packit Service a721b1
	A coding system of this type supports charsets directly.
Packit Service a721b1
	The dimension of each charset defines the length of bytes to
Packit Service a721b1
	represent a single character of the charset, and a byte
Packit Service a721b1
	sequence directly represents the code-point of a character.
Packit Service a721b1
	The m17n library provides the default decoding and encoding
Packit Service a721b1
	routines of this type.  */
Packit Service a721b1
Packit Service a721b1
    /***ja
Packit Service a721b1
	このタイプのコード系は文字セットを直接サポートする。
Packit Service a721b1
	各文字セットの次元とは、その文字セットで一文字を表現するために必要なバイト数であり、バイト列は文字のコードポイントを直接表す。
Packit Service a721b1
	m17n ライブラリはこのタイプ用のデフォルトのエンコード/デコードルーティンを提供する。  */
Packit Service a721b1
Packit Service a721b1
    MCODING_TYPE_CHARSET,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	A coding system of this type supports byte sequences of a
Packit Service a721b1
	UTF (UTF-8, UTF-16, UTF-32) like structure.
Packit Service a721b1
	The m17n library provides the default decoding and encoding
Packit Service a721b1
	routines of this type.  */
Packit Service a721b1
Packit Service a721b1
    /***ja
Packit Service a721b1
	このタイプのコード系は、UTF 系 (UTF-8, UTF-16, UTF-32) のバイト列をサポートする。
Packit Service a721b1
	m17n ライブラリはこのタイプ用のデフォルトのエンコード/デコードルーティンを提供する。  */
Packit Service a721b1
Packit Service a721b1
    MCODING_TYPE_UTF,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	A coding system of this type supports byte sequences of an
Packit Service a721b1
	ISO-2022 like structure.  The details of each structure are
Packit Service a721b1
	specified by @c MCodingInfoISO2022 .
Packit Service a721b1
	The m17n library provides decoding and encoding routines of
Packit Service a721b1
	this type.  */
Packit Service a721b1
Packit Service a721b1
    /***ja 
Packit Service a721b1
        このタイプのコード系は、ISO-2022 系のバイト列をサポートする。
Packit Service a721b1
	各コード系の構造の詳細は @c MCodingInfoISO2022 で指定される。
Packit Service a721b1
	m17n ライブラリはこのタイプ用のデフォルトのエンコード/デコードルーティンを提供する。  */
Packit Service a721b1
Packit Service a721b1
    MCODING_TYPE_ISO_2022,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	A coding system of this type is for byte sequences of
Packit Service a721b1
	miscellaneous structures.
Packit Service a721b1
	The m17n library does not provide decoding and encoding
Packit Service a721b1
	routines of this type.  They must be provided by the
Packit Service a721b1
	application program.  */
Packit Service a721b1
Packit Service a721b1
    /***ja
Packit Service a721b1
	このタイプのコード系は、その他の構造のバイト列のためのものである。
Packit Service a721b1
	m17n ライブラリはこのタイプ用のエンコード/デコードルーティンを提供しないので、アプリケーションプログラム側で準備する必要がある。  */
Packit Service a721b1
Packit Service a721b1
    MCODING_TYPE_MISC
Packit Service a721b1
  };
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nConv */
Packit Service a721b1
/***en 
Packit Service a721b1
    @brief  Bit-masks to specify the detail of coding system whose type is MCODING_TYPE_ISO_2022.  */
Packit Service a721b1
/***ja 
Packit Service a721b1
    @brief MCODING_TYPE_ISO_2022 タイプのコード系の詳細を表わすビットマスク.  */
Packit Service a721b1
Packit Service a721b1
enum MCodingFlagISO2022
Packit Service a721b1
  {
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, reset the invocation and designation status to
Packit Service a721b1
	initial at end of line.  */
Packit Service a721b1
    /***ja エンコードの際、行末で呼び出し (invocation) と指示
Packit Service a721b1
	(designation) の状態を初期値に戻す。   */
Packit Service a721b1
    MCODING_ISO_RESET_AT_EOL =		0x1,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, reset the invocation and designation status to
Packit Service a721b1
	initial before any control codes.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	エンコードの際、すべての制御文字の前で、呼び出し
Packit Service a721b1
	(invocation) と指示 (designation) の状態を初期値に戻す。        */
Packit Service a721b1
    MCODING_ISO_RESET_AT_CNTL =		0x2,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use the right graphic plane.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	図形文字集合の右側を使う。  */
Packit Service a721b1
    MCODING_ISO_EIGHT_BIT =		0x4,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use the non-standard 4 bytes format for designation sequence
Packit Service a721b1
	for charsets JISX0208-1978, GB2312, and JISX0208-1983.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	JISX0208-1978, GB2312, JISX0208-1983 
Packit Service a721b1
	の文字集合に対する指示シークエンスとして、非標準の4バイト形式を用いる。 */
Packit Service a721b1
Packit Service a721b1
    MCODING_ISO_LONG_FORM =		0x8,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, unless explicitly specified, designate charsets
Packit Service a721b1
	to G0.  */
Packit Service a721b1
    /***ja 
Packit Service a721b1
        エンコードの際、特に指定されない限り、文字集合を G0 
Packit Service a721b1
	に指示する。*/
Packit Service a721b1
    MCODING_ISO_DESIGNATION_G0 =		0x10,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, unless explicitly specified, designate charsets
Packit Service a721b1
	except for ASCII to G1.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	エンコードの際、特に指定されない限り、ASCII 以外の文字集合を 
Packit Service a721b1
	G1 に指示する。*/
Packit Service a721b1
    MCODING_ISO_DESIGNATION_G1 =		0x20,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, unless explicitly specified, designate 94-chars
Packit Service a721b1
	charsets to G0, 96-chars charsets to G1.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	エンコードの際、特に指定されない限り、94文字集合を G0 
Packit Service a721b1
	に、96文字集合を G1 に指示する。*/
Packit Service a721b1
    MCODING_ISO_DESIGNATION_CTEXT =	0x40,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, encode such charsets not conforming to ISO-2022
Packit Service a721b1
	by ESC % / ..., and encode non-supported Unicode characters by
Packit Service a721b1
	ESC % G ... ESC % @@ .  On decoding, handle those escape
Packit Service a721b1
	sequences.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	エンコードの際、ISO-2022 に合致しない文字集合を ESC % / ... 
Packit Service a721b1
	でエンコードする。サポートされていない Unicode 文字は ESC % G ...
Packit Service a721b1
	ESC % @@ でエンコードする。
Packit Service a721b1
	デコードの際、これらのエスケープ・シーケンスを解釈する。  */
Packit Service a721b1
    MCODING_ISO_DESIGNATION_CTEXT_EXT =	0x80,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use locking shift.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	ロッキングシフトを使う。  */
Packit Service a721b1
    MCODING_ISO_LOCKING_SHIFT =	0x100,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use single shift (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)).  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	シングルシフト (SS2 (0x8E or ESC N), SS3 (0x8F or ESC O)) を使う。  */
Packit Service a721b1
    MCODING_ISO_SINGLE_SHIFT =	0x200,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use 7-bit single shift 2 (SS2 (0x19)).  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	7ビットシングルシフト 2 (SS2 (0x19)) を使う。  */
Packit Service a721b1
    MCODING_ISO_SINGLE_SHIFT_7 =	0x400,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use EUC-TW like special shifting.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	EUC-TW 風の特別なシフトを使う。  */
Packit Service a721b1
    MCODING_ISO_EUC_TW_SHIFT =	0x800,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Use ISO-6429 escape sequences to indicate direction.
Packit Service a721b1
	Not yet implemented.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	ISO-6429 のエスケープシークエンスで方向を指示する。未実装。 */
Packit Service a721b1
    MCODING_ISO_ISO6429 =		0x1000,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	On encoding, if a charset has revision number, produce escape
Packit Service a721b1
	sequences to specify the number.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	エンコードの際、文字セットに revision number 
Packit Service a721b1
	があればそれを表わすエスケープシークエンスを生成する。        */
Packit Service a721b1
    MCODING_ISO_REVISION_NUMBER =	0x2000,
Packit Service a721b1
Packit Service a721b1
    /***en
Packit Service a721b1
	Support all ISO-2022 charsets.  */
Packit Service a721b1
    /***ja
Packit Service a721b1
	ISO-2022 の全文字集合をサポートする。  */
Packit Service a721b1
    MCODING_ISO_FULL_SUPPORT =		0x3000,
Packit Service a721b1
Packit Service a721b1
    MCODING_ISO_FLAG_MAX
Packit Service a721b1
  };
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nConv */
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Structure for a coding system of type #MCODING_TYPE_ISO_2022.
Packit Service a721b1
Packit Service a721b1
    Structure for extra information about a coding system of type
Packit Service a721b1
    MCODING_TYPE_ISO_2022.  */
Packit Service a721b1
Packit Service a721b1
/***ja 
Packit Service a721b1
    @brief #MCODING_TYPE_ISO_2022 タイプのコード系で必要な付加情報用構造体.
Packit Service a721b1
Packit Service a721b1
    MCODING_TYPE_ISO_2022 タイプのコード系で必要な付加情報用を保持するための構造体。
Packit Service a721b1
Packit Service a721b1
    @latexonly \IPAlabel{MCodingInfoISO2022} @endlatexonly  */
Packit Service a721b1
Packit Service a721b1
typedef struct
Packit Service a721b1
{
Packit Service a721b1
  /***en
Packit Service a721b1
      Table of numbers of an ISO2022 code extension element invoked
Packit Service a721b1
      to each graphic plane (Graphic Left and Graphic Right).  -1
Packit Service a721b1
      means no code extension element is invoked to that plane.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      各図形文字領域 (Graphic Left と Graphic Right) に呼び出されている、
Packit Service a721b1
      ISO2022 符合拡張要素の番号のテーブル。-1 
Packit Service a721b1
      はその領域にどの符合拡張要素も呼び出されていないことを示す。   */
Packit Service a721b1
Packit Service a721b1
  int initial_invocation[2];
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Table of code extension elements.  The Nth element corresponds
Packit Service a721b1
      to the Nth charset in $CHARSET_NAMES, which is an argument given
Packit Service a721b1
      to the mconv_define_coding () function.
Packit Service a721b1
Packit Service a721b1
      If an element value is 0..3, it specifies a graphic register
Packit Service a721b1
      number to designate the corresponds charset.  In addition, the
Packit Service a721b1
      charset is initially designated to that graphic register.
Packit Service a721b1
Packit Service a721b1
      If the value is -4..-1, it specifies a graphic register number
Packit Service a721b1
      0..3 respectively to designate the corresponds charset.
Packit Service a721b1
      Initially, the charset is not designated to any graphic
Packit Service a721b1
      register.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      符合拡張要素のテーブル。N番目の要素は、$CHARSET_NAMES の N 
Packit Service a721b1
      番目の文字セットに対応する。$CHARSET_NAMES は関数 
Packit Service a721b1
      mconv_define_coding () の引数となる。
Packit Service a721b1
Packit Service a721b1
      値が 0..3 だったら、対応する文字セットを G0..G3 
Packit Service a721b1
      のそれぞれに指示すること、また初期状態ですでに G0..G3
Packit Service a721b1
      に指示されていることを意味する。
Packit Service a721b1
Packit Service a721b1
      値が -4..-1 だったら、対応する文字セットを G0..G3 
Packit Service a721b1
      のそれぞれに指示すること、しかし初期状態ではどこにも指示されていないことを意味する。
Packit Service a721b1
        */
Packit Service a721b1
Packit Service a721b1
  char designations[32];
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Bitwise OR of @c enum @c MCodingFlagISO2022 .  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @c enum @c MCodingFlagISO2022 のビット単位での論理 OR  */
Packit Service a721b1
Packit Service a721b1
  unsigned flags;
Packit Service a721b1
Packit Service a721b1
} MCodingInfoISO2022;
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nConv */
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Structure for extra information about a coding system of type #MCODING_TYPE_UTF.
Packit Service a721b1
    */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief #MCODING_TYPE_UTF タイプのコード系で必要な付加情報用の構造体.
Packit Service a721b1
Packit Service a721b1
    @latexonly \IPApage{MCodingInfoUTF} @endlatexonly
Packit Service a721b1
Packit Service a721b1
    @latexonly \IPAlabel{MCodingInfoUTF} @endlatexonly  */
Packit Service a721b1
Packit Service a721b1
typedef struct
Packit Service a721b1
{
Packit Service a721b1
  /***en
Packit Service a721b1
      Specify bits of a code unit.  The value must be 8, 16, or 32.  */
Packit Service a721b1
  /***ja
Packit Service a721b1
      コード長(ビット数)の指定。値は 8, 16, 32 のいずれか。  */
Packit Service a721b1
  int code_unit_bits;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Specify how to handle the heading BOM (byte order mark).  The
Packit Service a721b1
      value must be 0, 1, or 2.  The meanings are as follows:
Packit Service a721b1
Packit Service a721b1
      0: On decoding, check the first two byte.  If they are BOM,
Packit Service a721b1
      decide endian by them. If not, decide endian by the member @c
Packit Service a721b1
      endian.  On encoding, produce byte sequence according to
Packit Service a721b1
      @c endian with heading BOM.
Packit Service a721b1
Packit Service a721b1
      1: On decoding, do not handle the first two bytes as BOM, and
Packit Service a721b1
      decide endian by @c endian.  On encoding, produce byte sequence
Packit Service a721b1
      according to @c endian without BOM.
Packit Service a721b1
Packit Service a721b1
      2: On decoding, handle the first two bytes as BOM and decide
Packit Service a721b1
      ending by them.  On encoding, produce byte sequence according to
Packit Service a721b1
      @c endian with heading BOM.
Packit Service a721b1
Packit Service a721b1
      If \<code_unit_bits\> is 8, the value has no meaning.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      先頭の BOM (バイトオーダーマーク) の取り扱いを指定する。値は 0,
Packit Service a721b1
      1, 2 のいずれかであり、それぞれの意味は以下のようになる。
Packit Service a721b1
Packit Service a721b1
      0: デコードの際に最初の 2 バイトを調べる。もしそれが BOM 
Packit Service a721b1
      であれば、エンディアンをそれで判定する。そうでなければ、メンバ @c
Packit Service a721b1
      endian に従ってエンディアンを決定する。エンコードの際には @c
Packit Service a721b1
      endian に従ったバイト列を先頭に BOM 付で生成する。
Packit Service a721b1
Packit Service a721b1
      1: デコードの際、最初の 2 バイトを BOM として扱わず、エンディアンは
Packit Service a721b1
      @c endian で判定する。エンコードの際には、BOM を出力せず、
Packit Service a721b1
      @c endian に応じたバイト列を生成する。
Packit Service a721b1
Packit Service a721b1
      2: デコードの際に最初の2バイトを BOMとして扱い、それに従ってエンディアンを判定する。
Packit Service a721b1
      エンコードの際には @c endian に応じたバイト列を先頭に BOM 付きで生成する。  */
Packit Service a721b1
  int bom;
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      Specify the endian type.  The value must be 0 or 1.  0 means
Packit Service a721b1
      little endian, and 1 means big endian.
Packit Service a721b1
Packit Service a721b1
      If \<code_unit_bits\> is 8, the value has no meaning.  */
Packit Service a721b1
  /***ja
Packit Service a721b1
      エンディアンのタイプを指定する。値は 0 か 1 であり、0 
Packit Service a721b1
      ならばリトルエンディアン、1 ならばビッグエンディアンである。
Packit Service a721b1
Packit Service a721b1
      \<code_unit_bits\> が 8 の場合には、この値は意味を持たない。
Packit Service a721b1
  */
Packit Service a721b1
  int endian;
Packit Service a721b1
} MCodingInfoUTF;
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
extern MSymbol mconv_define_coding (const char *name, MPlist *plist,
Packit Service a721b1
				    int (*resetter) (MConverter *),
Packit Service a721b1
				    int (*decoder) (const unsigned char *, int,
Packit Service a721b1
						    MText *, MConverter *),
Packit Service a721b1
				    int (*encoder) (MText *, int, int,
Packit Service a721b1
						    unsigned char *, int,
Packit Service a721b1
						    MConverter *),
Packit Service a721b1
				    void *extra_info);
Packit Service a721b1
Packit Service a721b1
extern MSymbol mconv_resolve_coding (MSymbol symbol);
Packit Service a721b1
Packit Service a721b1
extern int mconv_list_codings (MSymbol **symbols);
Packit Service a721b1
Packit Service a721b1
extern MConverter *mconv_buffer_converter (MSymbol coding,
Packit Service a721b1
					   const unsigned char *buf,
Packit Service a721b1
					   int n);
Packit Service a721b1
Packit Service a721b1
extern MConverter *mconv_stream_converter (MSymbol coding, FILE *fp);
Packit Service a721b1
Packit Service a721b1
extern int mconv_reset_converter (MConverter *converter);
Packit Service a721b1
Packit Service a721b1
extern void mconv_free_converter (MConverter *converter);
Packit Service a721b1
Packit Service a721b1
extern MConverter *mconv_rebind_buffer (MConverter *converter,
Packit Service a721b1
					const unsigned char *buf, int n);
Packit Service a721b1
Packit Service a721b1
extern MConverter *mconv_rebind_stream (MConverter *converter, FILE *fp);
Packit Service a721b1
Packit Service a721b1
extern MText *mconv_decode (MConverter *converter, MText *mt);
Packit Service a721b1
Packit Service a721b1
MText *mconv_decode_buffer (MSymbol name, const unsigned char *buf, int n);
Packit Service a721b1
Packit Service a721b1
MText *mconv_decode_stream (MSymbol name, FILE *fp);   
Packit Service a721b1
Packit Service a721b1
extern int mconv_encode (MConverter *converter, MText *mt);
Packit Service a721b1
Packit Service a721b1
extern int mconv_encode_range (MConverter *converter, MText *mt,
Packit Service a721b1
			       int from, int to);
Packit Service a721b1
Packit Service a721b1
extern int mconv_encode_buffer (MSymbol name, MText *mt,
Packit Service a721b1
				unsigned char *buf, int n);
Packit Service a721b1
Packit Service a721b1
extern int mconv_encode_stream (MSymbol name, MText *mt, FILE *fp);
Packit Service a721b1
Packit Service a721b1
extern int mconv_getc (MConverter *converter);
Packit Service a721b1
Packit Service a721b1
extern int mconv_ungetc (MConverter *converter, int c);
Packit Service a721b1
Packit Service a721b1
extern int mconv_putc (MConverter *converter, int c);
Packit Service a721b1
Packit Service a721b1
extern MText *mconv_gets (MConverter *converter, MText *mt);
Packit Service a721b1
Packit Service a721b1
/* (S4) Locale related functions corresponding to libc functions */
Packit Service a721b1
/*=*/
Packit Service a721b1
/*** @ingroup m17nShell */
Packit Service a721b1
/***en @defgroup m17nLocale Locale */
Packit Service a721b1
/***ja @defgroup m17nLocale ロケール */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @ingroup m17nLocale */
Packit Service a721b1
/***en
Packit Service a721b1
    @brief @c struct @c MLocale.
Packit Service a721b1
Packit Service a721b1
    The structure @c MLocale is used to hold information about name,
Packit Service a721b1
    language, territory, modifier, codeset, and the corresponding
Packit Service a721b1
    coding system of locales.
Packit Service a721b1
Packit Service a721b1
    The contents of this structure are implementation dependent.  Its
Packit Service a721b1
    internal structure is concealed from application programs.  */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief @c MLocale 構造体.
Packit Service a721b1
Packit Service a721b1
    @c MLocale 構造体は、ロケールの名前、言語、地域、モディファイア、コードセット、および対応するコード系に関する情報を保持するために用いられる。
Packit Service a721b1
Packit Service a721b1
    この構造体の内容は実装に依存する。 
Packit Service a721b1
    内部構造はアプリケーションプログラムからは見えない。  */
Packit Service a721b1
Packit Service a721b1
/***
Packit Service a721b1
    @seealso
Packit Service a721b1
    mlocale_get_prop () */
Packit Service a721b1
Packit Service a721b1
typedef struct MLocale MLocale;
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
extern MSymbol Miso639_1, Miso639_2;
Packit Service a721b1
extern MSymbol Mterritory;
Packit Service a721b1
extern MSymbol Mmodifier;
Packit Service a721b1
extern MSymbol Mcodeset;
Packit Service a721b1
Packit Service a721b1
extern MPlist *mlanguage_list (void);
Packit Service a721b1
Packit Service a721b1
extern MSymbol mlanguage_code (MSymbol language, int len);
Packit Service a721b1
Packit Service a721b1
extern MPlist *mlanguage_name_list (MSymbol language, MSymbol target,
Packit Service a721b1
				    MSymbol script, MSymbol territory);
Packit Service a721b1
Packit Service a721b1
extern MText *mlanguage_text (MSymbol language);
Packit Service a721b1
Packit Service a721b1
extern MPlist *mscript_list (void);
Packit Service a721b1
Packit Service a721b1
extern MPlist *mscript_language_list (MSymbol script);
Packit Service a721b1
Packit Service a721b1
extern MSymbol mlanguage_name (MSymbol language);
Packit Service a721b1
Packit Service a721b1
extern MLocale *mlocale_set (int category, const char *locale);
Packit Service a721b1
Packit Service a721b1
extern MSymbol mlocale_get_prop (MLocale *locale, MSymbol key);
Packit Service a721b1
Packit Service a721b1
extern int mtext_ftime (MText *mt, const char *format, const struct tm *tm,
Packit Service a721b1
			MLocale *locale);
Packit Service a721b1
Packit Service a721b1
extern MText *mtext_getenv (const char *name);
Packit Service a721b1
Packit Service a721b1
extern int mtext_putenv (MText *mt);
Packit Service a721b1
Packit Service a721b1
extern int mtext_coll (MText *mt1, MText *mt2);
Packit Service a721b1
Packit Service a721b1
/*
Packit Service a721b1
 *  (9) Miscellaneous functions of libc level (not yet implemented)
Packit Service a721b1
 */
Packit Service a721b1
Packit Service a721b1
/*
Packit Service a721b1
extern int mtext_width (MText *mt, int n);
Packit Service a721b1
extern MText *mtext_tolower (MText *mt);
Packit Service a721b1
extern MText *mtext_toupper (MText *mt);
Packit Service a721b1
*/
Packit Service a721b1
Packit Service a721b1
/*
Packit Service a721b1
 *  (10) Input method
Packit Service a721b1
 */
Packit Service a721b1
/*=*/
Packit Service a721b1
/*** @ingroup m17nShell */
Packit Service a721b1
/***en @defgroup m17nInputMethod Input Method (basic) */
Packit Service a721b1
/***ja @defgroup m17nInputMethod 入力メソッド (基本部分) */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/*** @addtogroup m17nInputMethod 
Packit Service a721b1
     @{ */
Packit Service a721b1
/*=*/
Packit Service a721b1
/* Struct forward declaration.  */
Packit Service a721b1
/***
Packit Service a721b1
    @brief See struct MInputMethod */
Packit Service a721b1
typedef struct MInputMethod MInputMethod;
Packit Service a721b1
/*=*/
Packit Service a721b1
/***
Packit Service a721b1
    @brief See struct MInputContext */
Packit Service a721b1
typedef struct MInputContext MInputContext;
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Type of input method callback functions.
Packit Service a721b1
Packit Service a721b1
    This is the type of callback functions called from input method
Packit Service a721b1
    drivers.  $IC is a pointer to an input context, $COMMAND is a name
Packit Service a721b1
    of callback for which the function is called.   */
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief 入力メソッドコールバック関数の型宣言.
Packit Service a721b1
Packit Service a721b1
    入力メソッドから呼ばれるコールバック関数の型である。$IC 
Packit Service a721b1
    は入力コンテクストへのポインタ、$COMMAND は関数が呼ばれるコールバックの名前である。  */
Packit Service a721b1
Packit Service a721b1
typedef void (*MInputCallbackFunc) (MInputContext *ic, MSymbol command);
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Structure of input method driver.
Packit Service a721b1
Packit Service a721b1
    The type @c MInputDriver is the structure of an input method driver that
Packit Service a721b1
    contains several functions to handle an input method.  */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief 入力ドライバ用構造体.
Packit Service a721b1
Packit Service a721b1
    @c MInputDriver は、入力メソッドを取り扱う関数を含む入力メソッドドライバの構造体の型である。  */
Packit Service a721b1
Packit Service a721b1
typedef struct MInputDriver
Packit Service a721b1
{
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief Open an input method.
Packit Service a721b1
Packit Service a721b1
      This function opens the input method $IM.  It is called from the
Packit Service a721b1
      function minput_open_im () after all member of $IM but \<info\>
Packit Service a721b1
      set.  If opening $IM succeeds, it returns 0.  Otherwise, it
Packit Service a721b1
      returns -1.  The function can setup $IM->info to keep various
Packit Service a721b1
      information that is referred by the other driver functions.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief 入力メソッドをオープンする.
Packit Service a721b1
Packit Service a721b1
      この関数は、入力メソッド $IM をオープンする。$IM の \<info\> 
Packit Service a721b1
      以外の全メンバーがセットされた後で、関数 minput_open_im () 
Packit Service a721b1
      から呼ばれる。$IM をオープンできれば 0 を、できなければ -1を返す。
Packit Service a721b1
      この関数は $IM->info 
Packit Service a721b1
      を設定して、他のドライバ関数から参照される情報を保持することができる。
Packit Service a721b1
      */
Packit Service a721b1
Packit Service a721b1
  int (*open_im) (MInputMethod *im);
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief Close an input method.
Packit Service a721b1
Packit Service a721b1
      This function closes the input method $IM.  It is called from
Packit Service a721b1
      the function minput_close_im ().  It frees all memory allocated
Packit Service a721b1
      for $IM->info (if any) after finishing all the tasks of closing
Packit Service a721b1
      the input method.  But, the other members of $IM should not be
Packit Service a721b1
      touched.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief 入力メソッドをクローズする.
Packit Service a721b1
Packit Service a721b1
      この関数は、入力メソッド $IM をクローズする。関数 
Packit Service a721b1
      minput_close_im () から呼ばれる。
Packit Service a721b1
      入力メソッドのクローズがすべて終了した時点で、この関数は$IM->info 
Packit Service a721b1
      に割り当てられているメモリを(あれば)すべて開放する。
Packit Service a721b1
      ただし、$IM の他のメンバに影響を与えてはならない。
Packit Service a721b1
        */
Packit Service a721b1
Packit Service a721b1
  void (*close_im) (MInputMethod *im);
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief Create an input context.
Packit Service a721b1
Packit Service a721b1
      This function creates the input context $IC.  It is called from
Packit Service a721b1
      the function minput_create_ic () after all members of $IC but
Packit Service a721b1
      \<info\> are set.  If creating $IC succeeds, it returns 0.
Packit Service a721b1
      Otherwise, it returns -1.  The function can setup $IC->info to
Packit Service a721b1
      keep various information that is referred by the other driver
Packit Service a721b1
      functions.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief 入力コンテクストを生成する.
Packit Service a721b1
Packit Service a721b1
      この関数は入力コンテクスト $IC を生成する。
Packit Service a721b1
      $IC の \<info\> 以外の全メンバーがセットされた後で、関数
Packit Service a721b1
      minput_create_ic () から呼ばれる。
Packit Service a721b1
      $IC を生成できれば 0 を、できなければ -1 を返す。
Packit Service a721b1
      この関数は $IC->info を設定して、他のドライバ関数から参照される情報を保持することができる。  */
Packit Service a721b1
Packit Service a721b1
Packit Service a721b1
  int (*create_ic) (MInputContext *ic);
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief Destroy an input context.
Packit Service a721b1
Packit Service a721b1
      This function is called from the function minput_destroy_ic ()
Packit Service a721b1
      and destroys the input context $IC.  It frees all memory
Packit Service a721b1
      allocated for $IC->info (if any) after finishing all the tasks
Packit Service a721b1
      of destroying the input method.  But, the other members of $IC
Packit Service a721b1
      should not be touched.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief 入力コンテクストを破壊する.
Packit Service a721b1
Packit Service a721b1
      関数 minput_destroy_ic () から呼ばれ、入力コンテクスト $IC 
Packit Service a721b1
      を破壊する。入力コンテクストの破壊がすべて終了した時点で、$IC->info 
Packit Service a721b1
      に割り当てられているメモリを(あれば)すべて開放する。ただし、$IC 
Packit Service a721b1
      の他のメンバに影響を与えてはならない。  */
Packit Service a721b1
Packit Service a721b1
  void (*destroy_ic) (MInputContext *ic);
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief Filter an input key.
Packit Service a721b1
Packit Service a721b1
      This function is called from the function minput_filter () and
Packit Service a721b1
      filters an input key.  $KEY and $ARG are the same as what given
Packit Service a721b1
      to minput_filter ().
Packit Service a721b1
Packit Service a721b1
      The task of the function is to handle $KEY, update the internal
Packit Service a721b1
      state of $IC.  If $KEY is absorbed by the input method and no
Packit Service a721b1
      text is produced, it returns 1.  Otherwise, it returns 0.
Packit Service a721b1
Packit Service a721b1
      It may update $IC->status, $IC->preedit, $IC->cursor_pos,
Packit Service a721b1
      $IC->ncandidates, $IC->candidates, and $IC->produced if that is
Packit Service a721b1
      necessary for the member \<callback\>.
Packit Service a721b1
Packit Service a721b1
      The meaning of $ARG depends on the input method river.  See the
Packit Service a721b1
      documentation of @c minput_default_driver and @c
Packit Service a721b1
      minput_gui_driver for instance.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief 入力キーをフィルタする.
Packit Service a721b1
Packit Service a721b1
      関数 minput_filter () から呼ばれ、入力キーをフィルタする。引数 
Packit Service a721b1
      $KEY, $ARG は関数 minput_filter () のものと同じ。
Packit Service a721b1
Packit Service a721b1
      この関数は $KEY を処理し、$IC の内部状態を更新する。 $KEY 
Packit Service a721b1
      が入力メソッドに吸収されてテキストが生成されなかった場合には、 
Packit Service a721b1
      1 を返す。そうでなければ 0 を返す。
Packit Service a721b1
Packit Service a721b1
      メンバ \<callback\> に必要であれば、$IC->status, $IC->preedit,
Packit Service a721b1
      $IC->cursor_pos, $IC->ncandidates, $IC->candidates,
Packit Service a721b1
      $IC->produced を更新できる。
Packit Service a721b1
Packit Service a721b1
      $ARG の意味は入力メソッドドライバに依存する。例は @c
Packit Service a721b1
      minput_default_driver または @c minput_gui_driver 
Packit Service a721b1
      の説明を参照のこと。 */
Packit Service a721b1
Packit Service a721b1
  int (*filter) (MInputContext *ic, MSymbol key, void *arg);
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief  Lookup a produced text in an input context.
Packit Service a721b1
Packit Service a721b1
      It is called from the function minput_lookup () and looks up a
Packit Service a721b1
      produced text in the input context $IC.  This function
Packit Service a721b1
      concatenate a text produced by the input key $KEY (if any) to
Packit Service a721b1
      M-text $MT.  If $KEY was correctly handled by the input method
Packit Service a721b1
      of $IC, it returns 0.  Otherwise, it returns 1.
Packit Service a721b1
Packit Service a721b1
      The meaning of $ARG depends on the input method driver.  See the
Packit Service a721b1
      documentation of @c minput_default_driver and @c
Packit Service a721b1
      minput_gui_driver for instance.  */
Packit Service a721b1
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief 入力コンテクストで生成されるテキストの獲得.
Packit Service a721b1
Packit Service a721b1
      関数 minput_lookup () から呼ばれ、入力コンテクスト $IC 
Packit Service a721b1
      で生成されるテキストを検索する。入力キー $KEY 
Packit Service a721b1
      によって生成されるテキストがあれば、M-text $MT に追加する。 $KEY
Packit Service a721b1
      が入力メソッド $IC によって正しく処理されれば 0 を返す。そうでなければ 1 を返す。
Packit Service a721b1
Packit Service a721b1
      $ARG の意味は入力メソッドドライバに依存する。例は @c
Packit Service a721b1
      minput_default_driver または @c minput_gui_driver の説明を参照の
Packit Service a721b1
      こと。 */
Packit Service a721b1
Packit Service a721b1
  int (*lookup) (MInputContext *ic, MSymbol key, void *arg, MText *mt);
Packit Service a721b1
Packit Service a721b1
  /***en
Packit Service a721b1
      @brief List of callback functions.
Packit Service a721b1
Packit Service a721b1
      List of callback functions.  Keys are one of
Packit Service a721b1
      @b Minput_preedit_start, @b Minput_preedit_draw,
Packit Service a721b1
      @b Minput_preedit_done, @b Minput_status_start, @b Minput_status_draw,
Packit Service a721b1
      @b Minput_status_done, @b Minput_candidates_start,
Packit Service a721b1
      @b Minput_candidates_draw, @b Minput_candidates_done,
Packit Service a721b1
      @b Minput_set_spot, @b Minput_toggle, @b Minput_reset,
Packit Service a721b1
      @b Minput_get_surrounding_text, @b Minput_delete_surrounding_text.
Packit Service a721b1
      Values are functions of type #MInputCallbackFunc.  */
Packit Service a721b1
  /***ja
Packit Service a721b1
      @brief コールバック関数のリスト.
Packit Service a721b1
Packit Service a721b1
      コールバック関数のリスト。キーは次のいずれか。
Packit Service a721b1
      @b Minput_preedit_start, @b Minput_preedit_draw,
Packit Service a721b1
      @b Minput_preedit_done, @b Minput_status_start, @b Minput_status_draw,
Packit Service a721b1
      @b Minput_status_done, @b Minput_candidates_start,
Packit Service a721b1
      @b Minput_candidates_draw, @b Minput_candidates_done,
Packit Service a721b1
      @b Minput_set_spot, @b Minput_toggle, @b Minput_reset,
Packit Service a721b1
      @b Minput_get_surrounding_text, @b Minput_delete_surrounding_text。
Packit Service a721b1
      値は#MInputCallbackFunc 型の関数。  */
Packit Service a721b1
  MPlist *callback_list;
Packit Service a721b1
Packit Service a721b1
} MInputDriver;
Packit Service a721b1
/*=*/
Packit Service a721b1
/*** @} */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
extern MInputDriver minput_default_driver;
Packit Service a721b1
Packit Service a721b1
extern MSymbol Minput_method;
Packit Service a721b1
extern MSymbol Minput_driver;
Packit Service a721b1
Packit Service a721b1
extern MInputDriver *minput_driver;
Packit Service a721b1
Packit Service a721b1
/** Symbols for callback commands.  */
Packit Service a721b1
extern MSymbol Minput_preedit_start;
Packit Service a721b1
extern MSymbol Minput_preedit_draw;
Packit Service a721b1
extern MSymbol Minput_preedit_done;
Packit Service a721b1
extern MSymbol Minput_status_start;
Packit Service a721b1
extern MSymbol Minput_status_draw;
Packit Service a721b1
extern MSymbol Minput_status_done;
Packit Service a721b1
extern MSymbol Minput_candidates_start;
Packit Service a721b1
extern MSymbol Minput_candidates_draw;
Packit Service a721b1
extern MSymbol Minput_candidates_done;
Packit Service a721b1
extern MSymbol Minput_set_spot;
Packit Service a721b1
extern MSymbol Minput_toggle;
Packit Service a721b1
extern MSymbol Minput_reset;
Packit Service a721b1
extern MSymbol Minput_get_surrounding_text;
Packit Service a721b1
extern MSymbol Minput_delete_surrounding_text;
Packit Service a721b1
Packit Service a721b1
/** Symbols for special input key event.  */
Packit Service a721b1
extern MSymbol Minput_focus_move;
Packit Service a721b1
extern MSymbol Minput_focus_in;
Packit Service a721b1
extern MSymbol Minput_focus_out;
Packit Service a721b1
Packit Service a721b1
/** Symbols describing input method command/variable.  */
Packit Service a721b1
extern MSymbol Minherited;
Packit Service a721b1
extern MSymbol Mcustomized;
Packit Service a721b1
extern MSymbol Mconfigured;
Packit Service a721b1
Packit Service a721b1
/*** @addtogroup m17nInputMethod 
Packit Service a721b1
     @{ */
Packit Service a721b1
/*=*/
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Structure of input method.
Packit Service a721b1
Packit Service a721b1
    The type @c MInputMethod is the structure of input method
Packit Service a721b1
    objects.  */
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief 入力メソッドの構造体.
Packit Service a721b1
Packit Service a721b1
    @c MInputMethod は、入力メソッドオブジェクト用の構造体の型である。  */
Packit Service a721b1
Packit Service a721b1
struct MInputMethod
Packit Service a721b1
{
Packit Service a721b1
  /***en Which language this input method is for.  The value is @c
Packit Service a721b1
      Mnil if the input method is foreign.  */
Packit Service a721b1
  /***ja どの言語用の入力メソッドか。
Packit Service a721b1
      入力メソッドが外部のものである場合の値は @c Mnil 。  */
Packit Service a721b1
  MSymbol language;
Packit Service a721b1
Packit Service a721b1
  /***en Name of the input method.  If the input method is foreign, it
Packit Service a721b1
      must has a property of key @c Minput_driver and the value must be a
Packit Service a721b1
      pointer to a proper input method driver.  */
Packit Service a721b1
  /***ja 入力メソッドの名前。外部メソッドである場合には、@c
Packit Service a721b1
      Minput_driver をキーとするプロパティを持ち、その値は適切な入力メソッドドライバへのポインタでなくてはならない。*/
Packit Service a721b1
  MSymbol name;
Packit Service a721b1
Packit Service a721b1
  /***en Input method driver of the input method.  */
Packit Service a721b1
  /***ja その入力メソッド用の入力メソッドドライバ。  */
Packit Service a721b1
  MInputDriver driver;
Packit Service a721b1
Packit Service a721b1
  /***en The argument given to minput_open_im (). */
Packit Service a721b1
  /***ja minput_open_im () に渡される引数。  */
Packit Service a721b1
  void *arg;
Packit Service a721b1
Packit Service a721b1
  /***en Pointer to extra information that \<driver\>.open_im ()
Packit Service a721b1
      setups. */
Packit Service a721b1
  /***ja \<driver\>.open_im () が設定する追加情報へのポインタ。 */
Packit Service a721b1
  void *info;
Packit Service a721b1
};
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Bit-masks to specify how candidates of input method is changed.  */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief 入力メソッドの入力候補がどう変更されたかを示すビットマスク.  */
Packit Service a721b1
Packit Service a721b1
enum MInputCandidatesChanged
Packit Service a721b1
  {
Packit Service a721b1
    MINPUT_CANDIDATES_LIST_CHANGED = 1,
Packit Service a721b1
    MINPUT_CANDIDATES_INDEX_CHANGED = 2,
Packit Service a721b1
    MINPUT_CANDIDATES_SHOW_CHANGED = 4,
Packit Service a721b1
    MINPUT_CANDIDATES_CHANGED_MAX
Packit Service a721b1
  };
Packit Service a721b1
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
/***en
Packit Service a721b1
    @brief Structure of input context.
Packit Service a721b1
Packit Service a721b1
    The type @c MInputContext is the structure of input context
Packit Service a721b1
    objects.  */
Packit Service a721b1
Packit Service a721b1
/***ja
Packit Service a721b1
    @brief 入力コンテクスト用構造体.
Packit Service a721b1
Packit Service a721b1
    @c MInputContext は、入力コンテクストオブジェクト用の構造体の型である。  */
Packit Service a721b1
Packit Service a721b1
struct MInputContext
Packit Service a721b1
{
Packit Service a721b1
  /***en Backward pointer to the input method.  It is set up by the
Packit Service a721b1
      function minput_create_ic ().  */
Packit Service a721b1
  /***ja 入力メソッドへの逆ポインタ。関数 minput_create_ic () 
Packit Service a721b1
      によって設定される。  */ 
Packit Service a721b1
  MInputMethod *im;
Packit Service a721b1
Packit Service a721b1
  /***en M-text produced by the input method.  It is set up by the
Packit Service a721b1
      function minput_filter () .  */
Packit Service a721b1
  /***ja 入力メソッドによって生成される M-text。関数 minput_filter () 
Packit Service a721b1
      によって設定される。  */
Packit Service a721b1
  MText *produced;
Packit Service a721b1
Packit Service a721b1
  /***en Argument given to the function minput_create_ic (). */
Packit Service a721b1
  /***ja 関数 minput_create_ic () に渡される引数。 */
Packit Service a721b1
  void *arg;
Packit Service a721b1
Packit Service a721b1
  /***en Flag telling whether the input context is currently active or
Packit Service a721b1
      inactive.  The value is set to 1 (active) when the input context
Packit Service a721b1
      is created.  It is toggled by the function minput_toggle ().  */
Packit Service a721b1
  /***ja 入力コンテクストがアクティブかどうかを示すフラグ。
Packit Service a721b1
      入力コンテクストが生成された時点では値は 1 (アクティブ)であり、関数 
Packit Service a721b1
      minput_toggle () によってトグルされる。  */
Packit Service a721b1
  int active;
Packit Service a721b1
Packit Service a721b1
  /***en Spot location and size of the input context.  */
Packit Service a721b1
  /***ja 入力コンテクストのスポットの位置と大きさ.  */
Packit Service a721b1
  struct {
Packit Service a721b1
    /***en X and Y coordinate of the spot.  */
Packit Service a721b1
    /***ja スポットの X, Y 座標.  */
Packit Service a721b1
    int x, y;
Packit Service a721b1
Packit Service a721b1
    /***en Ascent and descent pixels of the line of the spot.  */
Packit Service a721b1
    /***ja スポットのアセントとディセントのピクセル数.  */
Packit Service a721b1
    int ascent, descent;
Packit Service a721b1
Packit Service a721b1
    /***en Font size for preedit text in 1/10 point.  */
Packit Service a721b1
    /***ja preedit テキスト用のフォントサイズ (1/10 ポイント単位).  */
Packit Service a721b1
    int fontsize;
Packit Service a721b1
Packit Service a721b1
    /***en M-text at the spot, or NULL.  */
Packit Service a721b1
    /***ja スポット上の M-text、または NULL.  */
Packit Service a721b1
    MText *mt;
Packit Service a721b1
Packit Service a721b1
    /***en Character position in \<mt\> at the spot.  */
Packit Service a721b1
    /***ja \<mt\> におけるスポットの文字位置.  */
Packit Service a721b1
    int pos;
Packit Service a721b1
  } spot;
Packit Service a721b1
Packit Service a721b1
  /***en The usage of the following members depends on the input
Packit Service a721b1
      method driver.  The descriptions below are for the driver of an
Packit Service a721b1
      internal input method.  They are set by the function
Packit Service a721b1
      \<im\>->driver.filter ().  */
Packit Service a721b1
  /***ja 以下のメンバの使用法は入力メソッドドライバによって異なる。
Packit Service a721b1
      以下の説明は、内部入力メソッド用の入力ドライバに対するものである。
Packit Service a721b1
      これらは関数 \<im\>->driver.filter () によって設定される。  */
Packit Service a721b1
Packit Service a721b1
  /***en Pointer to extra information that \<im\>->driver.create_ic ()
Packit Service a721b1
      setups.  It is used to record the internal state of the input
Packit Service a721b1
      context.  */
Packit Service a721b1
  /***ja \<im\>->driver.create_ic () が設定する追加情報へのポインタ。
Packit Service a721b1
      入力コンテクストの内部状態を記録するために用いられる。 */
Packit Service a721b1
  void *info;
Packit Service a721b1
Packit Service a721b1
  /***en M-text describing the current status of the input
Packit Service a721b1
      context.  */
Packit Service a721b1
  /***ja 入力コンテクストの現在の状態を表す M-text  */
Packit Service a721b1
  MText *status;
Packit Service a721b1
Packit Service a721b1
  /***en The function \<im\>->driver.filter () sets the value to 1 when
Packit Service a721b1
      it changes \<status\>.  */
Packit Service a721b1
  /***ja 関数 \<im\>->driver.filter () は、\<status\> を変えた際にこの値を 1 
Packit Service a721b1
      に設定する。  */
Packit Service a721b1
  int status_changed;
Packit Service a721b1
Packit Service a721b1
  /***en M-text containing the current preedit text.  The function
Packit Service a721b1
      \<im\>->driver.filter () sets the value.  */
Packit Service a721b1
  /***ja 現在の preedit テキストを含む M-text。関数 
Packit Service a721b1
      \<im\>->driver.filter () によって設定される。  */ 
Packit Service a721b1
  MText *preedit;
Packit Service a721b1
Packit Service a721b1
  /***en The function \<im\>->driver.filter () sets the value to 1 when
Packit Service a721b1
      it changes \<preedit\>.  */
Packit Service a721b1
  /***ja 関数 \<im\>->driver.filter () は、\<preedit\> を変えた際にこの値を 
Packit Service a721b1
      1 に設定する。  */
Packit Service a721b1
  int preedit_changed;
Packit Service a721b1
Packit Service a721b1
  /***en Cursor position of \<preedit\>.  */
Packit Service a721b1
  /***ja \<preedit\>のカーソル位置  */
Packit Service a721b1
  int cursor_pos;
Packit Service a721b1
Packit Service a721b1
  /***en The function \<im\>->driver.filter () sets the value to 1 when
Packit Service a721b1
      it changes \<cursor_pos\>.  */
Packit Service a721b1
  /***ja 関数 \<im\>->driver.filter () は、\<cursor_pos\> を変えた際にこの値を 
Packit Service a721b1
      1 に設定する。  */
Packit Service a721b1
  int cursor_pos_changed;
Packit Service a721b1
Packit Service a721b1
  /***en Plist of the current candidate groups.  Each element is an
Packit Service a721b1
      M-text or a plist.  If an element is an M-text (i.e. the key is Mtext),
Packit Service a721b1
      candidates in that group are characters in the M-text.  If it is
Packit Service a721b1
      a plist (i.e. the key is Mplist), each element is an M-text, and
Packit Service a721b1
      candidates in that group are those M-texts.  */
Packit Service a721b1
  /***ja 現在の候補グループの Plist 。各要素は M-text か plist である。
Packit Service a721b1
      要素が M-text の場合(キーが Mtext である場合)には、そのグループの候補はその 
Packit Service a721b1
      M-text 中の各文字である。 要素が plist の場合(キーが Mplist
Packit Service a721b1
      である場合)には、そのリストの各要素は M-text であり、それらがそのグループの候補となる。  */
Packit Service a721b1
  MPlist *candidate_list;
Packit Service a721b1
Packit Service a721b1
  /***en Index number of the currently selected candidate in all the
Packit Service a721b1
      candidates. The index of the first candidate is 0.  If the
Packit Service a721b1
      number is 8, and the first candidate group contains 7
Packit Service a721b1
      candidates, the currently selected candidate is the second element of the
Packit Service a721b1
      second candidate group.  */
Packit Service a721b1
  /***ja 現在選択されている候補が全候補中で何番目かをを示すインデックス。
Packit Service a721b1
      最初の候補のインデックスは 0。最初の候補グループに七つの候補が含まれており、この値が
Packit Service a721b1
      8 ならば、現在の候補は二番目の候補グループの二番目の要素ということになる。
Packit Service a721b1
      */
Packit Service a721b1
  int candidate_index;
Packit Service a721b1
Packit Service a721b1
  /* @{ */
Packit Service a721b1
  /***en Start and the end positions of the preedit text where
Packit Service a721b1
       \<candidate_list\> corresponds to.  */
Packit Service a721b1
  /***ja preedit テキスト中で、\<candidate_list\>に対応する最初と最後の位置。
Packit Service a721b1
       */
Packit Service a721b1
  int candidate_from, candidate_to;
Packit Service a721b1
  /* @} */
Packit Service a721b1
Packit Service a721b1
  /***en Flag telling whether the current candidate group must be
Packit Service a721b1
      shown or not.  The function \<im\>->driver.filter () sets the
Packit Service a721b1
      value to 1 when an input method required to show candidates, and
Packit Service a721b1
      sets the value to 0 otherwise.  */
Packit Service a721b1
  /***ja 現在の候補グループを表示するかどうかを示すフラグ。
Packit Service a721b1
      関数 \<im\>->driver.filter () は、入力メソッドが候補の表示を要求した時この値を
Packit Service a721b1
      1 に、それ以外の時 0 に設定する。  */
Packit Service a721b1
  int candidate_show;
Packit Service a721b1
Packit Service a721b1
  /***en The function \<im\>->driver.filter () sets the value to bitwise
Packit Service a721b1
      OR of @c enum @c MInputCandidatesChanged when it changed any of
Packit Service a721b1
      the above members (\<candidate_XXX\>), and sets the value to 0
Packit Service a721b1
      otherwise.  */
Packit Service a721b1
  /***ja 関数 \<im\>->driver.filter () は、上記のメンバ \<candidate_XXX\>
Packit Service a721b1
      の1つでも変更した際には、この値を @c enum @c
Packit Service a721b1
      MInputCandidatesChanged のビット単位での論理 OR に設定する。そう
Packit Service a721b1
      でなければ 0 に設定する。 */
Packit Service a721b1
  int candidates_changed;
Packit Service a721b1
Packit Service a721b1
  /***en Plist that can be freely used by \<im\>->driver functions.
Packit Service a721b1
      The driver of internal input method uses it to exchange extra
Packit Service a721b1
      arguments and result for callback functions.  The function
Packit Service a721b1
      \<im\>->driver.create_ic () sets this to an empty plist, and the
Packit Service a721b1
      function \<im\>->driver.destroy_ic () frees it by using
Packit Service a721b1
      m17n_object_unref ().  */
Packit Service a721b1
  /***ja \<im\>->driver の関数群によって自由に使用できる plist。
Packit Service a721b1
      内部入力メソッド用ドライバはこれをコールバック関数との引数や返値
Packit Service a721b1
      の受渡しに使用する。関数 \<im\>->driver.create_ic () はこの plist
Packit Service a721b1
      を空に設定する。関数\<im\>->driver.destroy_ic () は
Packit Service a721b1
      m17n_object_unref () を用いてこの plist を解放する。  */
Packit Service a721b1
  MPlist *plist;
Packit Service a721b1
};
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
/*** @} */
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
extern MInputMethod *minput_open_im (MSymbol language, MSymbol name,
Packit Service a721b1
				     void *arg);
Packit Service a721b1
Packit Service a721b1
/*=*/
Packit Service a721b1
Packit Service a721b1
extern void minput_close_im (MInputMethod *im);
Packit Service a721b1
Packit Service a721b1
extern MInputContext *minput_create_ic (MInputMethod *im, void *arg);
Packit Service a721b1
Packit Service a721b1
extern void minput_destroy_ic (MInputContext *ic);
Packit Service a721b1
Packit Service a721b1
extern int minput_filter (MInputContext *ic, MSymbol key, void *arg);
Packit Service a721b1
Packit Service a721b1
extern int minput_lookup (MInputContext *ic, MSymbol key, void *arg,
Packit Service a721b1
			  MText *mt);
Packit Service a721b1
extern void minput_set_spot (MInputContext *ic, int x, int y, int ascent,
Packit Service a721b1
			     int descent, int fontsize, MText *mt, int pos);
Packit Service a721b1
extern void minput_toggle (MInputContext *ic);
Packit Service a721b1
Packit Service a721b1
extern void minput_reset_ic (MInputContext *ic);
Packit Service a721b1
Packit Service a721b1
extern MText *minput_get_description (MSymbol language, MSymbol name);
Packit Service a721b1
Packit Service a721b1
extern MPlist *minput_get_title_icon (MSymbol language, MSymbol name);
Packit Service a721b1
Packit Service a721b1
extern MPlist *minput_get_command (MSymbol language, MSymbol name,
Packit Service a721b1
				   MSymbol command);
Packit Service a721b1
extern int minput_config_command (MSymbol language, MSymbol name,
Packit Service a721b1
				  MSymbol command, MPlist *keyseq);
Packit Service a721b1
extern MPlist *minput_get_variable (MSymbol language, MSymbol name,
Packit Service a721b1
				    MSymbol variable);
Packit Service a721b1
extern int minput_config_variable (MSymbol language, MSymbol name,
Packit Service a721b1
				   MSymbol variable, MPlist *value);
Packit Service a721b1
extern char *minput_config_file (void);
Packit Service a721b1
Packit Service a721b1
extern int minput_save_config (void);
Packit Service a721b1
Packit Service a721b1
extern int minput_callback (MInputContext *ic, MSymbol command);
Packit Service a721b1
Packit Service a721b1
/* obsolete functions */
Packit Service a721b1
extern MPlist *minput_get_commands (MSymbol language, MSymbol name);
Packit Service a721b1
Packit Service a721b1
extern int minput_assign_command_keys (MSymbol language, MSymbol name,
Packit Service a721b1
				       MSymbol command, MPlist *keys);
Packit Service a721b1
extern MPlist *minput_get_variables (MSymbol language, MSymbol name);
Packit Service a721b1
Packit Service a721b1
extern int minput_set_variable (MSymbol language, MSymbol name,
Packit Service a721b1
				MSymbol variable, void *value);
Packit Service a721b1
Packit Service a721b1
extern MPlist *minput_parse_im_names (MText *mt);
Packit Service a721b1
Packit Service a721b1
extern MPlist *minput_list (MSymbol lang);
Packit Service a721b1
Packit Service a721b1
extern MInputMethod *mdebug_dump_im (MInputMethod *im, int indent);
Packit Service a721b1
Packit Service a721b1
M17N_END_HEADER
Packit Service a721b1
Packit Service a721b1
#endif /* _M17N_H_ */
Packit Service a721b1
Packit Service a721b1
/*
Packit Service a721b1
  Local Variables:
Packit Service a721b1
  coding: euc-japan
Packit Service a721b1
  End:
Packit Service a721b1
*/