/* * wchar => ISO-8859-13 */ int mbfl_filt_conv_wchar_8859_13(int c, mbfl_convert_filter *filter) { int s, n; if (c >= 0 && c < 0xa0) { s = c; } else { s = -1; n = 95; while (n >= 0) { if (c == iso8859_13_ucs_table[n]) { s = 0xa0 + n; break; } n--; } if (s <= 0 && (c & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_8859_13) { s = c & MBFL_WCSPLANE_MASK; } } if (s >= 0) { CK((*filter->output_function)(s, filter->data)); } else { if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { CK(mbfl_filt_conv_illegal_output(c, filter)); } } return c; }
/* * wchar => cp1254 */ int mbfl_filt_conv_wchar_cp1254(int c, mbfl_convert_filter *filter) { int s, n; if (c < 0x80) { s = c; } else { s = -1; n = cp1254_ucs_table_len-1; while (n >= 0) { if (c == cp1254_ucs_table[n] && c != 0xfffe) { s = cp1254_ucs_table_min + n; break; } n--; } if (s <= 0 && (c & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_CP1254) { s = c & MBFL_WCSPLANE_MASK; } } if (s >= 0) { CK((*filter->output_function)(s, filter->data)); } else { if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { CK(mbfl_filt_conv_illegal_output(c, filter)); } } return c; }
/* * wchar => armscii8 */ int mbfl_filt_conv_wchar_armscii8(int c, mbfl_convert_filter *filter) { int s, n; if (c >= 0x28 && c < 0x30) { s = ucs_armscii8_table[c-0x28]; } else if (c < armscii8_ucs_table_min) { s = c; } else { s = -1; n = armscii8_ucs_table_len-1; while (n >= 0) { if (c == armscii8_ucs_table[n]) { s = armscii8_ucs_table_min + n; break; } n--; } if (s <= 0 && (c & ~MBFL_WCSPLANE_MASK) == MBFL_WCSPLANE_ARMSCII8) { s = c & MBFL_WCSPLANE_MASK; } } if (s >= 0) { CK((*filter->output_function)(s, filter->data)); } else { if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { CK(mbfl_filt_conv_illegal_output(c, filter)); } } return c; }
static int mbfl_filt_conv_wchar_8bit(int c, mbfl_convert_filter *filter) { if (c >= 0 && c < 0x100) { CK((*filter->output_function)(c, filter->data)); } else { CK(mbfl_filt_conv_illegal_output(c, filter)); } return c; }
/* * wchar => ASCII */ int mbfl_filt_conv_wchar_ascii(int c, mbfl_convert_filter *filter) { if (c >= 0 && c < 0x80) { CK((*filter->output_function)(c, filter->data)); } else { if (filter->illegal_mode != MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { CK(mbfl_filt_conv_illegal_output(c, filter)); } } return c; }