(linenum→info "unix/slp.c:2238")

anthy/9100e/anthy/segment.h

    1: /* segment(文節) の定義 */
    2: #ifndef _segment_h_included_
    3: #define _segment_h_included_
    4: 
    5: #include <anthy/segclass.h>
    6: #include <anthy/wtype.h>
    7: #include <anthy/xstr.h>
    8: #include <anthy/dic.h>
    9: 
   10: /** 候補の構成要素 */
   11: struct cand_elm {
   12:   int nth; /* -1のときは辞書からの割り当てをやっていない */
   13:   wtype_t wt;
   14:   seq_ent_t se;
   15:   int ratio;/* 頻度を評価する際に使用する比率 */
   16:   xstr str;/* 変換対象の文字列 */
   17:   int id;/* 変換結果の文字列に対するhash値 */
   18: };
   19: 
   20: /** 一つの候補に相当する。
   21:  * anthy_release_cand_ent()で解放する
   22:  */
   23: struct cand_ent {
   24:   /** 候補のスコア */
   25:   int score;
   26:   /** 変換後の文字列 */
   27:   xstr str;
   28:   /** 要素の数 */
   29:   int nr_words;
   30:   /** 候補を構成する要素の配列 */
   31:   struct cand_elm *elm;
   32:   /** 自立語部のインデックス */
   33:   int core_elm_index;
   34:   /** 付属語のhash値 */
   35:   int dep_word_hash;
   36:   /** 候補のフラグ CEF_? */
   37:   unsigned int flag;
   38:   struct meta_word *mw;
   39: };
   40: 
   41: /* 候補(cand_ent)のフラグ */
   42: #define CEF_NONE           0
   43: #define CEF_OCHAIRE        0x00000001
   44: #define CEF_SINGLEWORD     0x00000002
   45: #define CEF_HIRAGANA       0x00000004
   46: #define CEF_KATAKANA       0x00000008
   47: #define CEF_GUESS          0x00000010
   48: #define CEF_USEDICT        0x00000020
   49: #define CEF_COMPOUND       0x00000040
   50: #define CEF_COMPOUND_PART  0x00000080
   51: #define CEF_BEST           0x00000100
   52: #define CEF_CONTEXT        0x00000200
   53: 
   54: /** Context内に存在する文節の列
   55:  * release_seg_entで解放する
   56:  */
   57: struct seg_ent {
   58:   /* strの実体はcontext中にある */
   59:   xstr str;
   60:   /* commitされた候補の番号、負の数の場合はまだコミットされていない */
   61:   int committed;
   62:   
   63:   /* 候補の配列 */
   64:   int nr_cands;/* 候補の数 */
   65:   struct cand_ent **cands;/* 配列 */
   66: 
   67:   int from, len;/* len == str.len */
   68: 
   69:   /* 文節の構成 */
   70:   int nr_metaword;
   71:   struct meta_word **mw_array;
   72: 
   73:   /* 一番成績の良かったクラス */
   74:   enum seg_class best_seg_class;
   75:   /* 一番成績の良かったmeta_word
   76:    * mw_array中にも、含まれることが期待できるが、保証はしない */
   77:   struct meta_word *best_mw;
   78: 
   79:   struct seg_ent *prev, *next;
   80: };
   81: 
   82: /** 文節のリスト */
   83: struct segment_list {
   84:   int nr_segments;
   85:   struct seg_ent list_head;
   86: };
   87: 
   88: /* 候補を解放する(無駄に生成してしまったもの等) */
   89: void anthy_release_cand_ent(struct cand_ent *s);
   90: 
   91: /**/
   92: struct seg_ent *anthy_get_nth_segment(struct segment_list *c, int );
   93: void anthy_print_candidate(struct cand_ent *ce);
   94: 
   95: /* compose.c */
   96: /* 候補を作り出す */
   97: struct splitter_context;
   98: void anthy_do_make_candidates(struct splitter_context *sc,
   99:                               struct seg_ent *e, int is_reverse);
  100: 
  101: #endif
Syntax (Markdown)