/*
 * 文節の構造seginfoを評価する
 *
 * 文節に対する複数の構造の候補をソートする
 *
 */
#include <stdlib.h>

#include <segment.h>
#include <ordering.h>
#include <splitter.h>
#include "sorter.h"

/*
 * 計算しておいた構造によるscoreに構造による評価を加える
 */
static void
eval_seginfo(struct seg_ent *se, struct seg_info *si)
{
  (void)se;
  si->score = si->struct_ratio;
}

static int
seginfo_compare_func(const void *p1, const void *p2)
{
  const struct seg_info * const *s1 = p1;
  const struct seg_info * const *s2 = p2;
  return (*s2)->score - (*s1)->score;
}

void
anthy_sort_seginfo(struct segment_list *seg)
{
  int i;
  for (i = 0; i < seg->nr_segments; i++) {
    struct seg_ent *se;
    int j;
  /* 各文節の */
    se = anthy_get_nth_segment(seg, i);
    for (j = 0; j < se->nr_seginfo; j++) {
      /* 各seginfoをsortする */
      eval_seginfo(se, se->si[j]);
    }

  }
  for (i = 0; i < seg->nr_segments; i++) {
    struct seg_ent *se = anthy_get_nth_segment(seg, i);
    qsort(se->si, se->nr_seginfo, sizeof(struct seg_info *),
	  seginfo_compare_func);
  }
}
