END_TEST START_TEST(test_hangul_jamo_to_cjamo) { fail_unless( 0x3183 == hangul_jamo_to_cjamo(0x11f2) ); fail_unless( 0x316f == hangul_jamo_to_cjamo(0xa971) ); fail_unless( 0x3149 == hangul_jamo_to_cjamo(0xd7f9) ); }
static int hangul_jaso_to_string(ucschar cho, ucschar jung, ucschar jong, ucschar *buf, int len) { ucschar ch = 0; int n = 0; if (cho) { if (jung) { /* have cho, jung, jong or no jong */ ch = hangul_jamo_to_syllable(cho, jung, jong); buf[n++] = ch; } else { if (jong) { /* have cho, jong */ ch = hangul_jamo_to_cjamo(cho); buf[n++] = ch; ch = hangul_jamo_to_cjamo(jong); buf[n++] = ch; } else { /* have cho */ ch = hangul_jamo_to_cjamo(cho); buf[n++] = ch; } } } else { if (jung) { if (jong) { /* have jung, jong */ ch = hangul_jamo_to_cjamo(jung); buf[n++] = ch; ch = hangul_jamo_to_cjamo(jong); buf[n++] = ch; } else { /* have jung */ ch = hangul_jamo_to_cjamo(jung); buf[n++] = ch; } } else { if (jong) { /* have jong */ ch = hangul_jamo_to_cjamo(jong); buf[n++] = ch; } else { /* have nothing */ buf[n] = 0; } } } buf[n] = 0; return n; }
static int hangul_jaso_to_string(ucschar cho, ucschar jung, ucschar jong, ucschar *buf, int len) { ucschar ch = 0; int n = 0; if (cho) { if (jung) { /* have cho, jung, jong or no jong */ ch = hangul_jamo_to_syllable(cho, jung, jong); if (ch != 0) { buf[n++] = ch; } else { /* 한글 음절로 표현 불가능한 경우 */ buf[n++] = cho; buf[n++] = jung; if (jong != 0) buf[n++] = jong; } } else { if (jong) { /* have cho, jong */ buf[n++] = cho; buf[n++] = HANGUL_JUNGSEONG_FILLER; buf[n++] = jong; } else { /* have cho */ ch = hangul_jamo_to_cjamo(cho); if (hangul_is_cjamo(ch)) { buf[n++] = ch; } else { buf[n++] = cho; buf[n++] = HANGUL_JUNGSEONG_FILLER; } } } } else { if (jung) { if (jong) { /* have jung, jong */ buf[n++] = HANGUL_CHOSEONG_FILLER; buf[n++] = jung; buf[n++] = jong; } else { /* have jung */ ch = hangul_jamo_to_cjamo(jung); if (hangul_is_cjamo(ch)) { buf[n++] = ch; } else { buf[n++] = HANGUL_CHOSEONG_FILLER; buf[n++] = jung; } } } else { if (jong) { /* have jong */ ch = hangul_jamo_to_cjamo(jong); if (hangul_is_cjamo(ch)) { buf[n++] = ch; } else { buf[n++] = HANGUL_CHOSEONG_FILLER; buf[n++] = HANGUL_JUNGSEONG_FILLER; buf[n++] = jong; } } else { /* have nothing */ buf[n] = 0; } } } buf[n] = 0; return n; }