예제 #1
0
void solve( boolean light[], boolean heavy[], char left[], char right[], int outcome )
{
    int i, j;
    char scale[MAXL + MAXL];
    j = 0;
    for ( i = 0; left[i] != '\0';  i++ )
        scale[j++] = left[i];
    for ( i = 0; right[i] != '\0';  i++ )
        scale[j++] = right[i];
    scale[j] = '\0';

    if ( outcome == -1 ) /* scale is down */
    {
        clear_comp( light, scale );
        clear_comp( heavy, scale );
        clear_items( heavy, left );
        clear_items( light, right );
    }
    else if ( outcome == 0 ) /* scale is even */
    {
        clear_items( light, scale );
        clear_items( heavy, scale );
    }
    else /* scale is up */
    {
        clear_comp( light, scale );
        clear_comp( heavy, scale );
        clear_items( heavy, right );
        clear_items( light, left );
    }
}
예제 #2
0
void LogCompStr::clear() {
  FOOTMARK();
  clear_read();
  clear_comp();
  clear_result();
  clear_extra();
  fix();
}
예제 #3
0
void LogCompStr::MakeResult() {
  FOOTMARK();

  // setting result_read_clause and result_read_str
  result_read_str.clear();
  const size_t count = extra.hiragana_clauses.size();
  result_read_clause.resize(count + 1);
  for (size_t i = 0; i < count; ++i) {
    result_read_clause[i] = DWORD(result_read_str.size());
    result_read_str +=
      lcmap(extra.hiragana_clauses[i], LCMAP_HALFWIDTH | LCMAP_KATAKANA);
  }
  result_read_clause[count] = DWORD(result_read_str.size());

  result_clause = comp_clause;
  result_str = comp_str;
  clear_read();
  clear_comp();
  clear_extra();
  fix();
}